summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/Makefile.am9
-rw-r--r--mysql-test/collections/default.experimental74
-rw-r--r--mysql-test/collections/default.weekly1
-rw-r--r--mysql-test/collections/mysql-next-mr.push5
-rw-r--r--mysql-test/collections/mysql-trunk.push5
-rw-r--r--mysql-test/extra/binlog_tests/binlog.test4
-rw-r--r--mysql-test/extra/binlog_tests/binlog_failure_mixing_engines.test300
-rw-r--r--mysql-test/extra/binlog_tests/blackhole.test2
-rw-r--r--mysql-test/extra/binlog_tests/implicit.test28
-rw-r--r--mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test26
-rw-r--r--mysql-test/extra/rpl_tests/check_type.inc52
-rw-r--r--mysql-test/extra/rpl_tests/create_recursive_construct.inc400
-rw-r--r--mysql-test/extra/rpl_tests/rpl_binlog_max_cache_size.test (renamed from mysql-test/suite/rpl/t/rpl_binlog_max_cache_size.test)132
-rw-r--r--mysql-test/extra/rpl_tests/rpl_charset.test4
-rw-r--r--mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test66
-rw-r--r--mysql-test/extra/rpl_tests/rpl_flsh_tbls.test12
-rw-r--r--mysql-test/extra/rpl_tests/rpl_foreign_key.test1
-rw-r--r--mysql-test/extra/rpl_tests/rpl_implicit_commit_binlog.test656
-rw-r--r--mysql-test/extra/rpl_tests/rpl_innodb.test (renamed from mysql-test/suite/rpl/t/rpl_innodb.test)12
-rw-r--r--mysql-test/extra/rpl_tests/rpl_insert_delayed.test13
-rw-r--r--mysql-test/extra/rpl_tests/rpl_insert_id.test14
-rw-r--r--mysql-test/extra/rpl_tests/rpl_insert_ignore.test2
-rw-r--r--mysql-test/extra/rpl_tests/rpl_loaddata.test10
-rw-r--r--mysql-test/extra/rpl_tests/rpl_log.test8
-rw-r--r--mysql-test/extra/rpl_tests/rpl_mixing_engines.test1918
-rw-r--r--mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test6
-rw-r--r--mysql-test/extra/rpl_tests/rpl_reset_slave.test1
-rw-r--r--mysql-test/extra/rpl_tests/rpl_row_basic.test39
-rw-r--r--mysql-test/extra/rpl_tests/rpl_row_blob.test12
-rw-r--r--mysql-test/extra/rpl_tests/rpl_row_func003.test36
-rw-r--r--mysql-test/extra/rpl_tests/rpl_row_sp003.test5
-rw-r--r--mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc121
-rw-r--r--mysql-test/extra/rpl_tests/rpl_start_stop_slave.test (renamed from mysql-test/suite/rpl/t/rpl_start_stop_slave.test)16
-rw-r--r--mysql-test/extra/rpl_tests/rpl_stm_000001.test6
-rw-r--r--mysql-test/extra/rpl_tests/rpl_stop_middle_group.test147
-rw-r--r--mysql-test/extra/rpl_tests/rpl_trig004.test5
-rw-r--r--mysql-test/extra/rpl_tests/type_conversions.test882
-rw-r--r--mysql-test/include/bug38347.inc21
-rw-r--r--mysql-test/include/check_ipv6.inc14
-rw-r--r--mysql-test/include/check_key_reads.inc6
-rw-r--r--mysql-test/include/check_key_req.inc9
-rw-r--r--mysql-test/include/commit.inc28
-rw-r--r--mysql-test/include/ddl_i18n.check_sp.inc8
-rw-r--r--mysql-test/include/default_client.cnf19
-rw-r--r--mysql-test/include/default_my.cnf18
-rw-r--r--mysql-test/include/default_mysqld.cnf25
-rw-r--r--mysql-test/include/diff_tables.inc1
-rw-r--r--mysql-test/include/have_community_features.inc4
-rw-r--r--mysql-test/include/have_dynamic_loading.inc4
-rw-r--r--mysql-test/include/have_example_plugin.inc20
-rw-r--r--mysql-test/include/have_nodebug.inc4
-rw-r--r--mysql-test/include/have_perfschema.inc20
-rw-r--r--mysql-test/include/have_profiling.inc4
-rw-r--r--mysql-test/include/have_semisync_plugin.inc21
-rw-r--r--mysql-test/include/have_simple_parser.inc21
-rw-r--r--mysql-test/include/have_ssl_communication.inc4
-rw-r--r--mysql-test/include/have_thread_concurrency.inc10
-rw-r--r--mysql-test/include/have_udf.inc21
-rw-r--r--mysql-test/include/index_merge1.inc2
-rw-r--r--mysql-test/include/index_merge2.inc8
-rw-r--r--mysql-test/include/ipv6.inc22
-rw-r--r--mysql-test/include/ipv6_clients.inc7
-rw-r--r--mysql-test/include/master-slave-reset.inc47
-rw-r--r--mysql-test/include/master-slave.inc7
-rw-r--r--mysql-test/include/mtr_warnings.sql10
-rw-r--r--mysql-test/include/mysqld--help.inc41
-rw-r--r--mysql-test/include/not_ndb_default.inc2
-rw-r--r--mysql-test/include/query_cache.inc2
-rw-r--r--mysql-test/include/query_cache_sql_prepare.inc45
-rw-r--r--mysql-test/include/rpl_ip_mix.inc24
-rw-r--r--mysql-test/include/rpl_ip_mix2.inc24
-rw-r--r--mysql-test/include/rpl_ipv6.inc22
-rw-r--r--mysql-test/include/rpl_udf.inc2
-rw-r--r--mysql-test/include/setup_fake_relay_log.inc16
-rw-r--r--mysql-test/include/show_binlog_events.inc29
-rw-r--r--mysql-test/include/show_binlog_events2.inc2
-rw-r--r--mysql-test/include/show_relaylog_events.inc35
-rw-r--r--mysql-test/include/show_slave_status2.inc2
-rw-r--r--mysql-test/include/test_fieldsize.inc2
-rw-r--r--mysql-test/include/wait_for_ndb_to_binlog.inc41
-rw-r--r--mysql-test/include/wait_for_slave_param.inc4
-rw-r--r--mysql-test/include/wait_show_condition.inc74
-rw-r--r--mysql-test/include/wait_until_disconnected.inc2
-rw-r--r--mysql-test/lib/My/ConfigFactory.pm20
-rw-r--r--mysql-test/lib/mtr_cases.pm67
-rwxr-xr-xmysql-test/lib/t/testMyConfigFactory.t6
-rwxr-xr-xmysql-test/lib/v1/mysql-test-run.pl32
-rwxr-xr-xmysql-test/mysql-test-run.pl134
-rw-r--r--mysql-test/r/1st.result1
-rw-r--r--mysql-test/r/alias.result139
-rw-r--r--mysql-test/r/alter_table.result8
-rw-r--r--mysql-test/r/archive.result13
-rw-r--r--mysql-test/r/archive_gis.result8
-rw-r--r--mysql-test/r/bench_count_distinct.result2
-rw-r--r--mysql-test/r/bigint.result6
-rw-r--r--mysql-test/r/bug46080.result2
-rw-r--r--mysql-test/r/cache_innodb.result2
-rw-r--r--mysql-test/r/cast.result12
-rw-r--r--mysql-test/r/change_user.result2
-rw-r--r--mysql-test/r/commit_1innodb.result25
-rw-r--r--mysql-test/r/compare.result4
-rw-r--r--mysql-test/r/create.result38
-rw-r--r--mysql-test/r/csv.result56
-rw-r--r--mysql-test/r/ctype_big5.result278
-rw-r--r--mysql-test/r/ctype_collate.result30
-rw-r--r--mysql-test/r/ctype_cp1251.result11
-rw-r--r--mysql-test/r/ctype_cp932_binlog_stm.result350
-rw-r--r--mysql-test/r/ctype_errors.result32
-rwxr-xr-xmysql-test/r/ctype_eucjpms.result564
-rw-r--r--mysql-test/r/ctype_euckr.result347
-rw-r--r--mysql-test/r/ctype_gb2312.result313
-rw-r--r--mysql-test/r/ctype_gbk.result325
-rw-r--r--mysql-test/r/ctype_ldml.result76
-rw-r--r--mysql-test/r/ctype_recoding.result4
-rw-r--r--mysql-test/r/ctype_sjis.result287
-rw-r--r--mysql-test/r/ctype_ucs2_def.result2
-rw-r--r--mysql-test/r/ctype_ujis.result532
-rw-r--r--mysql-test/r/ctype_utf8.result227
-rw-r--r--mysql-test/r/date_formats.result129
-rw-r--r--mysql-test/r/ddl_i18n_koi8r.result146
-rw-r--r--mysql-test/r/ddl_i18n_utf8.result146
-rw-r--r--mysql-test/r/debug_sync.result2
-rw-r--r--mysql-test/r/delayed.result24
-rw-r--r--mysql-test/r/delete.result143
-rw-r--r--mysql-test/r/deprecated_features.result26
-rw-r--r--mysql-test/r/derived.result2
-rw-r--r--mysql-test/r/dirty_close.result10
-rw-r--r--mysql-test/r/drop-no_root.result28
-rw-r--r--mysql-test/r/drop.result36
-rw-r--r--mysql-test/r/drop_debug.result21
-rw-r--r--mysql-test/r/errors.result65
-rw-r--r--mysql-test/r/events_1.result40
-rw-r--r--mysql-test/r/events_2.result16
-rw-r--r--mysql-test/r/events_bugs.result43
-rw-r--r--mysql-test/r/events_grant.result42
-rw-r--r--mysql-test/r/events_scheduling.result19
-rw-r--r--mysql-test/r/exampledb.result8
-rw-r--r--mysql-test/r/explain.result26
-rw-r--r--mysql-test/r/flush2.result2
-rw-r--r--mysql-test/r/flush_block_commit_notembedded.result4
-rw-r--r--mysql-test/r/fulltext.result10
-rw-r--r--mysql-test/r/func_compress.result14
-rw-r--r--mysql-test/r/func_default.result2
-rw-r--r--mysql-test/r/func_encrypt.result8
-rw-r--r--mysql-test/r/func_encrypt_nossl.result42
-rw-r--r--mysql-test/r/func_gconcat.result64
-rw-r--r--mysql-test/r/func_group.result18
-rw-r--r--mysql-test/r/func_isnull.result5
-rw-r--r--mysql-test/r/func_like.result2
-rw-r--r--mysql-test/r/func_math.result57
-rw-r--r--mysql-test/r/func_regexp.result2
-rw-r--r--mysql-test/r/func_sapdb.result32
-rw-r--r--mysql-test/r/func_str.result393
-rw-r--r--mysql-test/r/func_test.result2
-rw-r--r--mysql-test/r/func_time.result19
-rw-r--r--mysql-test/r/gis.result12
-rw-r--r--mysql-test/r/grant.result759
-rw-r--r--mysql-test/r/grant2.result6
-rw-r--r--mysql-test/r/grant4.result123
-rw-r--r--mysql-test/r/group_by.result3
-rw-r--r--mysql-test/r/group_min_max.result270
-rw-r--r--mysql-test/r/have_community_features.require2
-rw-r--r--mysql-test/r/have_dynamic_loading.require2
-rw-r--r--mysql-test/r/have_example_plugin.require2
-rw-r--r--mysql-test/r/have_nodebug.require2
-rw-r--r--mysql-test/r/have_profiling.require2
-rw-r--r--mysql-test/r/have_simple_parser.require2
-rw-r--r--mysql-test/r/have_udf_example.require2
-rw-r--r--mysql-test/r/having.result2
-rw-r--r--mysql-test/r/index_merge_innodb.result326
-rw-r--r--mysql-test/r/index_merge_myisam.result23
-rw-r--r--mysql-test/r/information_schema-big.result93
-rw-r--r--mysql-test/r/information_schema.result319
-rw-r--r--mysql-test/r/information_schema_db.result19
-rw-r--r--mysql-test/r/information_schema_inno.result26
-rw-r--r--mysql-test/r/information_schema_parameters.result457
-rw-r--r--mysql-test/r/information_schema_part.result56
-rw-r--r--mysql-test/r/information_schema_routines.result737
-rw-r--r--mysql-test/r/innodb-autoinc-44030.result30
-rw-r--r--mysql-test/r/innodb-autoinc.result107
-rw-r--r--mysql-test/r/innodb-consistent.result (renamed from mysql-test/suite/innodb/r/innodb-consistent.result)0
-rw-r--r--mysql-test/r/innodb.result23
-rw-r--r--mysql-test/r/innodb_bug34300.result5
-rw-r--r--mysql-test/r/innodb_bug42101-nonzero.result4
-rw-r--r--mysql-test/r/innodb_bug42101.result4
-rw-r--r--mysql-test/r/innodb_bug44369.result14
-rw-r--r--mysql-test/r/innodb_bug44571.result (renamed from mysql-test/suite/innodb/r/innodb_bug44571.result)0
-rw-r--r--mysql-test/r/innodb_bug46000.result14
-rw-r--r--mysql-test/r/innodb_gis.result8
-rw-r--r--mysql-test/r/innodb_mysql.result20
-rw-r--r--mysql-test/r/insert.result114
-rw-r--r--mysql-test/r/insert_notembedded.result1
-rw-r--r--mysql-test/r/ipv4_as_ipv6.result179
-rw-r--r--mysql-test/r/ipv4_as_ipv6_win.result32
-rw-r--r--mysql-test/r/ipv6.result264
-rw-r--r--mysql-test/r/ipv6_win.result88
-rw-r--r--mysql-test/r/join.result4
-rw-r--r--mysql-test/r/join_optimizer.result37
-rw-r--r--mysql-test/r/join_outer.result12
-rw-r--r--mysql-test/r/key.result8
-rw-r--r--mysql-test/r/key_cache.result21
-rw-r--r--mysql-test/r/loaddata.result6
-rw-r--r--mysql-test/r/loadxml.result75
-rw-r--r--mysql-test/r/locale.result63
-rw-r--r--mysql-test/r/lock.result6
-rw-r--r--mysql-test/r/lock_multi.result10
-rw-r--r--mysql-test/r/lock_sync.result66
-rw-r--r--mysql-test/r/log_state.result24
-rw-r--r--mysql-test/r/log_state_bug33693.result3
-rw-r--r--mysql-test/r/log_tables.result11
-rw-r--r--mysql-test/r/lowercase_fs_off.result4
-rw-r--r--mysql-test/r/lowercase_table2.result71
-rw-r--r--mysql-test/r/merge.result40
-rw-r--r--mysql-test/r/metadata.result96
-rw-r--r--mysql-test/r/multi_update.result4
-rw-r--r--mysql-test/r/myisam-system.result2
-rw-r--r--mysql-test/r/myisam.result2
-rw-r--r--mysql-test/r/myisam_crash_before_flush_keys.result2
-rw-r--r--mysql-test/r/myisampack.result33
-rw-r--r--mysql-test/r/mysql.result202
-rw-r--r--mysql-test/r/mysql_locale_posix.result72
-rw-r--r--mysql-test/r/mysql_upgrade.result1
-rw-r--r--mysql-test/r/mysqlbinlog.result281
-rw-r--r--mysql-test/r/mysqlbinlog2.result823
-rw-r--r--mysql-test/r/mysqlbinlog_row.result2
-rw-r--r--mysql-test/r/mysqlbinlog_row_innodb.result80
-rw-r--r--mysql-test/r/mysqlbinlog_row_myisam.result48
-rw-r--r--mysql-test/r/mysqlbinlog_row_trans.result151
-rw-r--r--mysql-test/r/mysqlcheck.result11
-rw-r--r--mysql-test/r/mysqld--help-notwin.result1001
-rw-r--r--mysql-test/r/mysqld--help-win.result998
-rw-r--r--mysql-test/r/mysqldump.result36
-rw-r--r--mysql-test/r/mysqlshow.result18
-rw-r--r--mysql-test/r/not_partition.result34
-rw-r--r--mysql-test/r/odbc.result4
-rw-r--r--mysql-test/r/optimizer_switch_eng_cond_pushdown1.result5
-rw-r--r--mysql-test/r/optimizer_switch_eng_cond_pushdown2.result5
-rw-r--r--mysql-test/r/outfile.resultbin2149 -> 2137 bytes
-rw-r--r--mysql-test/r/parser.result4
-rw-r--r--mysql-test/r/partition.result64
-rw-r--r--mysql-test/r/partition_archive.result22
-rw-r--r--mysql-test/r/partition_column.result602
-rw-r--r--mysql-test/r/partition_column_prune.result66
-rw-r--r--mysql-test/r/partition_datatype.result8
-rw-r--r--mysql-test/r/partition_error.result13
-rw-r--r--mysql-test/r/partition_hash.result2
-rw-r--r--mysql-test/r/partition_innodb.result46
-rw-r--r--mysql-test/r/partition_innodb_builtin.result39
-rw-r--r--mysql-test/r/partition_innodb_stmt.result2
-rw-r--r--mysql-test/r/partition_key_cache.result415
-rw-r--r--mysql-test/r/partition_list.result11
-rw-r--r--mysql-test/r/partition_mgm_err.result2
-rw-r--r--mysql-test/r/partition_pruning.result348
-rw-r--r--mysql-test/r/partition_range.result130
-rw-r--r--mysql-test/r/partition_sync.result25
-rw-r--r--mysql-test/r/partition_truncate.result18
-rw-r--r--mysql-test/r/partition_utf8.result53
-rw-r--r--mysql-test/r/plugin.result17
-rw-r--r--mysql-test/r/profiling.result9
-rw-r--r--mysql-test/r/ps.result171
-rw-r--r--mysql-test/r/ps_1general.result6
-rw-r--r--mysql-test/r/ps_2myisam.result116
-rw-r--r--mysql-test/r/ps_3innodb.result116
-rw-r--r--mysql-test/r/ps_4heap.result110
-rw-r--r--mysql-test/r/ps_5merge.result232
-rw-r--r--mysql-test/r/query_cache.result132
-rw-r--r--mysql-test/r/query_cache_disabled.result14
-rw-r--r--mysql-test/r/query_cache_notembedded.result1
-rw-r--r--mysql-test/r/query_cache_ps_no_prot.result49
-rw-r--r--mysql-test/r/query_cache_ps_ps_prot.result49
-rw-r--r--mysql-test/r/range.result6
-rw-r--r--mysql-test/r/rpl_mysqldump_slave.result17
-rw-r--r--mysql-test/r/schema.result1
-rw-r--r--mysql-test/r/select.result103
-rw-r--r--mysql-test/r/select_safe.result4
-rw-r--r--mysql-test/r/show_check.result400
-rw-r--r--mysql-test/r/signal.result2362
-rw-r--r--mysql-test/r/signal_code.result35
-rw-r--r--mysql-test/r/signal_demo1.result270
-rw-r--r--mysql-test/r/signal_demo2.result197
-rw-r--r--mysql-test/r/signal_demo3.result143
-rw-r--r--mysql-test/r/signal_sqlmode.result86
-rw-r--r--mysql-test/r/sp-code.result4
-rw-r--r--mysql-test/r/sp-dynamic.result8
-rw-r--r--mysql-test/r/sp-error.result55
-rw-r--r--mysql-test/r/sp-no-code.result4
-rw-r--r--mysql-test/r/sp-security.result4
-rw-r--r--mysql-test/r/sp-ucs2.result112
-rw-r--r--mysql-test/r/sp-vars.result97
-rw-r--r--mysql-test/r/sp.result273
-rw-r--r--mysql-test/r/sp_notembedded.result2
-rw-r--r--mysql-test/r/sp_trans.result31
-rw-r--r--mysql-test/r/sp_trans_log.result10
-rw-r--r--mysql-test/r/sql_mode.result6
-rw-r--r--mysql-test/r/status.result6
-rw-r--r--mysql-test/r/strict.result68
-rw-r--r--mysql-test/r/subselect.result299
-rw-r--r--mysql-test/r/subselect3.result52
-rw-r--r--mysql-test/r/system_mysql_db.result3
-rw-r--r--mysql-test/r/trigger-compat.result6
-rw-r--r--mysql-test/r/trigger.result88
-rw-r--r--mysql-test/r/trigger_notembedded.result16
-rw-r--r--mysql-test/r/type_binary.result2
-rw-r--r--mysql-test/r/type_bit.result2
-rw-r--r--mysql-test/r/type_blob.result34
-rw-r--r--mysql-test/r/type_date.result22
-rw-r--r--mysql-test/r/type_datetime.result4
-rw-r--r--mysql-test/r/type_decimal.result26
-rw-r--r--mysql-test/r/type_float.result82
-rw-r--r--mysql-test/r/type_newdecimal.result200
-rw-r--r--mysql-test/r/type_ranges.result4
-rw-r--r--mysql-test/r/type_time.result25
-rw-r--r--mysql-test/r/type_timestamp.result26
-rw-r--r--mysql-test/r/type_varchar.result25
-rw-r--r--mysql-test/r/udf.result15
-rw-r--r--mysql-test/r/union.result80
-rw-r--r--mysql-test/r/user_limits.result2
-rw-r--r--mysql-test/r/user_var-binlog.result22
-rw-r--r--mysql-test/r/user_var.result2
-rw-r--r--mysql-test/r/variables.result300
-rw-r--r--mysql-test/r/view.result153
-rw-r--r--mysql-test/r/view_grant.result20
-rw-r--r--mysql-test/r/warnings.result7
-rw-r--r--mysql-test/r/warnings_engine_disabled.result4
-rw-r--r--mysql-test/std_data/Index.xml24
-rw-r--r--mysql-test/std_data/loadxml.dat64
-rw-r--r--mysql-test/std_data/loadxml2.dat19
-rw-r--r--mysql-test/std_data/ndb_backup51_data_be/BACKUP-1-0.1.Databin43068 -> 43068 bytes
-rw-r--r--mysql-test/std_data/ndb_backup51_data_le/BACKUP-1-0.2.Databin49556 -> 49556 bytes
-rw-r--r--mysql-test/suite/binlog/r/binlog_database.result9
-rw-r--r--mysql-test/suite/binlog/r/binlog_format_switch_inside_trans.result90
-rw-r--r--mysql-test/suite/binlog/r/binlog_grant.result10
-rw-r--r--mysql-test/suite/binlog/r/binlog_implicit_commit.result345
-rw-r--r--mysql-test/suite/binlog/r/binlog_innodb.result18
-rw-r--r--mysql-test/suite/binlog/r/binlog_killed.result5
-rw-r--r--mysql-test/suite/binlog/r/binlog_killed_simulate.result2
-rw-r--r--mysql-test/suite/binlog/r/binlog_max_extension.result8
-rw-r--r--mysql-test/suite/binlog/r/binlog_mix_innodb_stat.result4
-rw-r--r--mysql-test/suite/binlog/r/binlog_mixed_failure_mixing_engines.result406
-rw-r--r--mysql-test/suite/binlog/r/binlog_multi_engine.result20
-rw-r--r--mysql-test/suite/binlog/r/binlog_row_binlog.result1652
-rw-r--r--mysql-test/suite/binlog/r/binlog_row_ctype_ucs.result2
-rw-r--r--mysql-test/suite/binlog/r/binlog_row_failure_mixing_engines.result440
-rw-r--r--mysql-test/suite/binlog/r/binlog_row_innodb_stat.result4
-rw-r--r--mysql-test/suite/binlog/r/binlog_row_insert_select.result2
-rw-r--r--mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result148
-rw-r--r--mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result13
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_binlog.result872
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_blackhole.result1
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result14
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_do_db.result6
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_innodb_stat.result4
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_insert_select.result2
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result99
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_ps.result8
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_row.result14
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result10
-rw-r--r--mysql-test/suite/binlog/r/binlog_tmp_table.result1
-rw-r--r--mysql-test/suite/binlog/r/binlog_unsafe.result3268
-rw-r--r--mysql-test/suite/binlog/t/binlog_auto_increment_bug33029.test19
-rw-r--r--mysql-test/suite/binlog/t/binlog_format_switch_inside_trans.test98
-rw-r--r--mysql-test/suite/binlog/t/binlog_grant.test4
-rw-r--r--mysql-test/suite/binlog/t/binlog_implicit_commit.test63
-rw-r--r--mysql-test/suite/binlog/t/binlog_incident.test2
-rw-r--r--mysql-test/suite/binlog/t/binlog_innodb.test10
-rw-r--r--mysql-test/suite/binlog/t/binlog_killed.test4
-rw-r--r--mysql-test/suite/binlog/t/binlog_killed_simulate.test4
-rw-r--r--mysql-test/suite/binlog/t/binlog_max_extension.test92
-rw-r--r--mysql-test/suite/binlog/t/binlog_mixed_failure_mixing_engines.test4
-rw-r--r--mysql-test/suite/binlog/t/binlog_multi_engine.test16
-rw-r--r--mysql-test/suite/binlog/t/binlog_row_failure_mixing_engines.test4
-rw-r--r--mysql-test/suite/binlog/t/binlog_statement_insert_delayed.test3
-rw-r--r--mysql-test/suite/binlog/t/binlog_stm_do_db.test6
-rw-r--r--mysql-test/suite/binlog/t/binlog_stm_ps.test4
-rw-r--r--mysql-test/suite/binlog/t/binlog_stm_row.test2
-rw-r--r--mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test2
-rw-r--r--mysql-test/suite/binlog/t/binlog_tmp_table.test1
-rw-r--r--mysql-test/suite/binlog/t/binlog_unsafe-master.opt1
-rw-r--r--mysql-test/suite/binlog/t/binlog_unsafe.test641
-rw-r--r--mysql-test/suite/binlog/t/binlog_write_error.test1
-rw-r--r--mysql-test/suite/binlog/t/disabled.def1
-rw-r--r--mysql-test/suite/federated/federated_debug.test2
-rw-r--r--mysql-test/suite/federated/federated_server.result8
-rw-r--r--mysql-test/suite/federated/my.cnf1
-rw-r--r--mysql-test/suite/funcs_1/datadict/basics_mixed1.inc12
-rw-r--r--mysql-test/suite/funcs_1/datadict/datadict_priv.inc4
-rw-r--r--mysql-test/suite/funcs_1/datadict/is_routines.inc14
-rw-r--r--mysql-test/suite/funcs_1/datadict/is_tables.inc6
-rw-r--r--mysql-test/suite/funcs_1/r/innodb_func_view.result296
-rw-r--r--mysql-test/suite/funcs_1/r/innodb_storedproc_02.result3
-rw-r--r--mysql-test/suite/funcs_1/r/innodb_storedproc_07.result16
-rw-r--r--mysql-test/suite/funcs_1/r/innodb_storedproc_08.result108
-rw-r--r--mysql-test/suite/funcs_1/r/innodb_trig_03.result10
-rw-r--r--mysql-test/suite/funcs_1/r/innodb_trig_03e.result8
-rw-r--r--mysql-test/suite/funcs_1/r/innodb_views.result32
-rw-r--r--mysql-test/suite/funcs_1/r/is_basics_mixed.result20
-rw-r--r--mysql-test/suite/funcs_1/r/is_cml_innodb.result20
-rw-r--r--mysql-test/suite/funcs_1/r/is_cml_memory.result12
-rw-r--r--mysql-test/suite/funcs_1/r/is_cml_myisam.result20
-rw-r--r--mysql-test/suite/funcs_1/r/is_cml_ndb.result20
-rw-r--r--mysql-test/suite/funcs_1/r/is_column_privileges.result138
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns.result44
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_innodb.result652
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_is.result672
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_is_embedded.result672
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_memory.result622
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_myisam.result702
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_myisam_embedded.result702
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_mysql.result435
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result437
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_ndb.result100
-rw-r--r--mysql-test/suite/funcs_1/r/is_events.result6
-rw-r--r--mysql-test/suite/funcs_1/r/is_key_column_usage.result73
-rw-r--r--mysql-test/suite/funcs_1/r/is_routines.result122
-rw-r--r--mysql-test/suite/funcs_1/r/is_schema_privileges.result98
-rw-r--r--mysql-test/suite/funcs_1/r/is_schema_privileges_is_mysql_test.result32
-rw-r--r--mysql-test/suite/funcs_1/r/is_schemata.result23
-rw-r--r--mysql-test/suite/funcs_1/r/is_schemata_is_mysql_test.result10
-rw-r--r--mysql-test/suite/funcs_1/r/is_statistics.result134
-rw-r--r--mysql-test/suite/funcs_1/r/is_statistics_mysql.result96
-rw-r--r--mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result192
-rw-r--r--mysql-test/suite/funcs_1/r/is_table_constraints.result44
-rw-r--r--mysql-test/suite/funcs_1/r/is_table_constraints_mysql.result48
-rw-r--r--mysql-test/suite/funcs_1/r/is_table_constraints_mysql_embedded.result96
-rw-r--r--mysql-test/suite/funcs_1/r/is_table_privileges.result110
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables.result36
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_innodb.result10
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_is.result204
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_memory.result10
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_myisam.result10
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_myisam_embedded.result12
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_mysql.result50
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_mysql_embedded.result100
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_ndb.result10
-rw-r--r--mysql-test/suite/funcs_1/r/is_triggers.result22
-rw-r--r--mysql-test/suite/funcs_1/r/is_user_privileges.result178
-rw-r--r--mysql-test/suite/funcs_1/r/is_views.result18
-rw-r--r--mysql-test/suite/funcs_1/r/memory_func_view.result296
-rw-r--r--mysql-test/suite/funcs_1/r/memory_storedproc_02.result3
-rw-r--r--mysql-test/suite/funcs_1/r/memory_storedproc_07.result16
-rw-r--r--mysql-test/suite/funcs_1/r/memory_storedproc_08.result108
-rw-r--r--mysql-test/suite/funcs_1/r/memory_trig_03.result10
-rw-r--r--mysql-test/suite/funcs_1/r/memory_trig_03e.result8
-rw-r--r--mysql-test/suite/funcs_1/r/memory_views.result32
-rw-r--r--mysql-test/suite/funcs_1/r/myisam_func_view.result296
-rw-r--r--mysql-test/suite/funcs_1/r/myisam_storedproc_02.result3
-rw-r--r--mysql-test/suite/funcs_1/r/myisam_storedproc_07.result16
-rw-r--r--mysql-test/suite/funcs_1/r/myisam_storedproc_08.result108
-rw-r--r--mysql-test/suite/funcs_1/r/myisam_trig_03.result10
-rw-r--r--mysql-test/suite/funcs_1/r/myisam_trig_03e.result8
-rw-r--r--mysql-test/suite/funcs_1/r/myisam_views.result32
-rw-r--r--mysql-test/suite/funcs_1/r/ndb_func_view.result296
-rw-r--r--mysql-test/suite/funcs_1/r/ndb_storedproc_02.result3
-rw-r--r--mysql-test/suite/funcs_1/r/ndb_storedproc_07.result16
-rw-r--r--mysql-test/suite/funcs_1/r/ndb_storedproc_08.result108
-rw-r--r--mysql-test/suite/funcs_1/r/ndb_trig_03.result10
-rw-r--r--mysql-test/suite/funcs_1/r/ndb_trig_03e.result8
-rw-r--r--mysql-test/suite/funcs_1/r/ndb_views.result32
-rw-r--r--mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result8
-rw-r--r--mysql-test/suite/funcs_1/r/processlist_priv_ps.result8
-rw-r--r--mysql-test/suite/funcs_1/r/storedproc.result99
-rw-r--r--mysql-test/suite/funcs_1/storedproc/storedproc_08_show.inc2
-rw-r--r--mysql-test/suite/funcs_1/t/disabled.def2
-rw-r--r--mysql-test/suite/funcs_1/t/is_basics_mixed.test9
-rw-r--r--mysql-test/suite/funcs_1/t/is_columns.test4
-rw-r--r--mysql-test/suite/funcs_1/t/is_columns_is.test2
-rw-r--r--mysql-test/suite/funcs_1/t/is_columns_is_embedded.test2
-rw-r--r--mysql-test/suite/funcs_1/t/is_tables_is.test2
-rw-r--r--mysql-test/suite/funcs_1/t/is_user_privileges.test4
-rw-r--r--mysql-test/suite/im/r/im_cmd_line.result47
-rw-r--r--mysql-test/suite/im/r/im_daemon_life_cycle.result26
-rw-r--r--mysql-test/suite/im/r/im_instance_conf.result225
-rw-r--r--mysql-test/suite/im/r/im_life_cycle.result73
-rw-r--r--mysql-test/suite/im/r/im_options.result151
-rw-r--r--mysql-test/suite/im/r/im_utils.result96
-rw-r--r--mysql-test/suite/im/t/disabled.def20
-rw-r--r--mysql-test/suite/im/t/im_check_env.inc26
-rw-r--r--mysql-test/suite/im/t/im_cmd_line.imtest68
-rw-r--r--mysql-test/suite/im/t/im_daemon_life_cycle-im.opt3
-rw-r--r--mysql-test/suite/im/t/im_daemon_life_cycle.imtest100
-rw-r--r--mysql-test/suite/im/t/im_instance_conf-im.opt1
-rw-r--r--mysql-test/suite/im/t/im_instance_conf.imtest244
-rw-r--r--mysql-test/suite/im/t/im_life_cycle-im.opt1
-rw-r--r--mysql-test/suite/im/t/im_life_cycle.imtest205
-rw-r--r--mysql-test/suite/im/t/im_options-im.opt1
-rw-r--r--mysql-test/suite/im/t/im_options.imtest248
-rw-r--r--mysql-test/suite/im/t/im_utils-im.opt1
-rw-r--r--mysql-test/suite/im/t/im_utils.imtest107
-rwxr-xr-xmysql-test/suite/im/t/kill_n_check.sh147
-rwxr-xr-xmysql-test/suite/im/t/log.sh24
-rw-r--r--mysql-test/suite/im/t/utils.sh55
-rwxr-xr-xmysql-test/suite/im/t/wait_for_process.sh114
-rwxr-xr-xmysql-test/suite/im/t/wait_for_socket.sh94
-rw-r--r--mysql-test/suite/innodb/include/have_innodb_plugin.inc4
-rw-r--r--mysql-test/suite/innodb/r/innodb-zip.result12
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug47167.result8
-rw-r--r--mysql-test/suite/innodb/r/innodb_file_format.result12
-rw-r--r--mysql-test/suite/innodb/t/disabled.def2
-rw-r--r--mysql-test/suite/innodb/t/innodb-analyze.test5
-rw-r--r--mysql-test/suite/innodb/t/innodb-consistent-master.opt1
-rw-r--r--mysql-test/suite/innodb/t/innodb-timeout.test1
-rw-r--r--mysql-test/suite/innodb/t/innodb-use-sys-malloc.test1
-rw-r--r--mysql-test/suite/innodb/t/innodb-zip.test13
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug36169.test8
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug36172.test11
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug47167.test9
-rw-r--r--mysql-test/suite/innodb/t/innodb_file_format.test13
-rw-r--r--mysql-test/suite/innodb/t/innodb_information_schema.test1
-rw-r--r--mysql-test/suite/jp/r/jp_create_db_sjis.result1
-rw-r--r--mysql-test/suite/jp/r/jp_create_db_ucs2.result1
-rw-r--r--mysql-test/suite/jp/r/jp_create_db_ujis.result1
-rw-r--r--mysql-test/suite/jp/r/jp_create_db_utf8.result1
-rw-r--r--mysql-test/suite/large_tests/r/lock_tables_big.result1
-rw-r--r--mysql-test/suite/large_tests/t/lock_tables_big.test32
-rw-r--r--mysql-test/suite/ndb/my.cnf1
-rw-r--r--mysql-test/suite/ndb/r/ndb_basic.result4
-rw-r--r--mysql-test/suite/ndb/r/ndb_binlog_format.result9
-rw-r--r--mysql-test/suite/ndb/r/ndb_bitfield.result4
-rw-r--r--mysql-test/suite/ndb/r/ndb_condition_pushdown.result34
-rw-r--r--mysql-test/suite/ndb/r/ndb_dd_alter.result4
-rw-r--r--mysql-test/suite/ndb/r/ndb_dd_basic.result8
-rw-r--r--mysql-test/suite/ndb/r/ndb_dd_ddl.result79
-rw-r--r--mysql-test/suite/ndb/r/ndb_gis.result22
-rw-r--r--mysql-test/suite/ndb/r/ndb_index_unique.result8
-rw-r--r--mysql-test/suite/ndb/r/ndb_multi_row.result6
-rw-r--r--mysql-test/suite/ndb/r/ndb_partition_error.result2
-rw-r--r--mysql-test/suite/ndb/r/ndb_partition_range.result6
-rw-r--r--mysql-test/suite/ndb/r/ndb_restore.result6
-rw-r--r--mysql-test/suite/ndb/r/ndb_restore_different_endian_data.result4
-rw-r--r--mysql-test/suite/ndb/r/ndb_row_format.result2
-rw-r--r--mysql-test/suite/ndb/r/ndb_single_user.result10
-rw-r--r--mysql-test/suite/ndb/r/ps_7ndb.result116
-rw-r--r--mysql-test/suite/ndb/t/ndb_binlog_format.test2
-rw-r--r--mysql-test/suite/ndb/t/ndb_condition_pushdown.test34
-rw-r--r--mysql-test/suite/ndb/t/ndb_dd_ddl.test102
-rw-r--r--mysql-test/suite/ndb/t/ndb_gis.test2
-rw-r--r--mysql-test/suite/ndb/t/ndb_index_unique.test6
-rw-r--r--mysql-test/suite/parts/inc/partition_alter2_1.inc20
-rw-r--r--mysql-test/suite/parts/inc/partition_alter2_2.inc16
-rw-r--r--mysql-test/suite/parts/inc/partition_alter_13.inc30
-rw-r--r--mysql-test/suite/parts/inc/partition_key_32col.inc2
-rw-r--r--mysql-test/suite/parts/inc/partition_mgm.inc90
-rw-r--r--mysql-test/suite/parts/inc/partition_syntax.inc4
-rw-r--r--mysql-test/suite/parts/r/partition_alter1_1_2_innodb.result28
-rw-r--r--mysql-test/suite/parts/r/partition_alter1_1_2_myisam.result8
-rw-r--r--mysql-test/suite/parts/r/partition_alter1_2_innodb.result28
-rw-r--r--mysql-test/suite/parts/r/partition_alter1_2_myisam.result12
-rw-r--r--mysql-test/suite/parts/r/partition_alter2_1_1_innodb.result20103
-rw-r--r--mysql-test/suite/parts/r/partition_alter2_1_2_innodb.result20089
-rw-r--r--mysql-test/suite/parts/r/partition_alter2_1_innodb.result60196
-rw-r--r--mysql-test/suite/parts/r/partition_alter2_1_myisam.result12472
-rw-r--r--mysql-test/suite/parts/r/partition_alter2_2_1_innodb.result20162
-rw-r--r--mysql-test/suite/parts/r/partition_alter2_2_2_innodb.result20238
-rw-r--r--mysql-test/suite/parts/r/partition_alter2_2_innodb.result60544
-rw-r--r--mysql-test/suite/parts/r/partition_alter2_2_myisam.result12556
-rw-r--r--mysql-test/suite/parts/r/partition_float_innodb.result50
-rw-r--r--mysql-test/suite/parts/r/partition_float_myisam.result50
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc0_archive.result12
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc0_innodb.result164
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc0_memory.result164
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc0_myisam.result164
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc0_ndb.result12
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc1_archive.result12
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc1_innodb.result164
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc1_memory.result164
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc1_myisam.result164
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc1_ndb.result12
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc2_archive.result12
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc2_innodb.result164
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc2_memory.result164
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc2_myisam.result164
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc2_ndb.result12
-rw-r--r--mysql-test/suite/parts/r/partition_special_innodb.result2
-rw-r--r--mysql-test/suite/parts/r/partition_special_myisam.result2
-rw-r--r--mysql-test/suite/parts/r/partition_syntax_innodb.result6
-rw-r--r--mysql-test/suite/parts/r/partition_syntax_myisam.result6
-rw-r--r--mysql-test/suite/parts/r/rpl_partition.result16
-rw-r--r--mysql-test/suite/parts/t/disabled.def2
-rw-r--r--mysql-test/suite/parts/t/partition_alter2_1_1_innodb.test (renamed from mysql-test/suite/parts/t/partition_alter2_1_innodb.test)4
-rw-r--r--mysql-test/suite/parts/t/partition_alter2_1_2_innodb.test82
-rw-r--r--mysql-test/suite/parts/t/partition_alter2_2_1_innodb.test (renamed from mysql-test/suite/parts/t/partition_alter2_2_innodb.test)4
-rw-r--r--mysql-test/suite/parts/t/partition_alter2_2_2_innodb.test82
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc0_archive.test1
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc0_ndb.test2
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc1_archive.test1
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc1_ndb.test2
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc2_archive.test1
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc2_ndb.test2
-rw-r--r--mysql-test/suite/parts/t/partition_repair_myisam.test2
-rw-r--r--mysql-test/suite/parts/t/rpl_partition.test20
-rw-r--r--mysql-test/suite/perfschema/include/binlog_common.inc49
-rw-r--r--mysql-test/suite/perfschema/include/cleanup_helper.inc25
-rw-r--r--mysql-test/suite/perfschema/include/privilege.inc194
-rw-r--r--mysql-test/suite/perfschema/include/setup_helper.inc54
-rw-r--r--mysql-test/suite/perfschema/include/start_server_common.inc62
-rw-r--r--mysql-test/suite/perfschema/r/aggregate.result101
-rw-r--r--mysql-test/suite/perfschema/r/bad_option_1.result2
-rw-r--r--mysql-test/suite/perfschema/r/bad_option_2.result1
-rw-r--r--mysql-test/suite/perfschema/r/binlog_mix.result49
-rw-r--r--mysql-test/suite/perfschema/r/binlog_row.result49
-rw-r--r--mysql-test/suite/perfschema/r/binlog_stmt.result57
-rw-r--r--mysql-test/suite/perfschema/r/cnf_option.result6
-rw-r--r--mysql-test/suite/perfschema/r/column_privilege.result27
-rw-r--r--mysql-test/suite/perfschema/r/ddl_cond_instances.result8
-rw-r--r--mysql-test/suite/perfschema/r/ddl_events_waits_current.result7
-rw-r--r--mysql-test/suite/perfschema/r/ddl_events_waits_history.result7
-rw-r--r--mysql-test/suite/perfschema/r/ddl_events_waits_history_long.result7
-rw-r--r--mysql-test/suite/perfschema/r/ddl_ews_by_event_name.result7
-rw-r--r--mysql-test/suite/perfschema/r/ddl_ews_by_instance.result7
-rw-r--r--mysql-test/suite/perfschema/r/ddl_ews_by_thread_by_event_name.result9
-rw-r--r--mysql-test/suite/perfschema/r/ddl_file_instances.result8
-rw-r--r--mysql-test/suite/perfschema/r/ddl_fs_by_event_name.result7
-rw-r--r--mysql-test/suite/perfschema/r/ddl_fs_by_instance.result7
-rw-r--r--mysql-test/suite/perfschema/r/ddl_mutex_instances.result8
-rw-r--r--mysql-test/suite/perfschema/r/ddl_performance_timers.result8
-rw-r--r--mysql-test/suite/perfschema/r/ddl_processlist.result8
-rw-r--r--mysql-test/suite/perfschema/r/ddl_rwlock_instances.result8
-rw-r--r--mysql-test/suite/perfschema/r/ddl_setup_consumers.result8
-rw-r--r--mysql-test/suite/perfschema/r/ddl_setup_instruments.result8
-rw-r--r--mysql-test/suite/perfschema/r/ddl_setup_objects.result7
-rw-r--r--mysql-test/suite/perfschema/r/ddl_setup_timers.result8
-rw-r--r--mysql-test/suite/perfschema/r/dml_cond_instances.result23
-rw-r--r--mysql-test/suite/perfschema/r/dml_events_waits_current.result28
-rw-r--r--mysql-test/suite/perfschema/r/dml_events_waits_history.result36
-rw-r--r--mysql-test/suite/perfschema/r/dml_events_waits_history_long.result36
-rw-r--r--mysql-test/suite/perfschema/r/dml_ews_by_event_name.result28
-rw-r--r--mysql-test/suite/perfschema/r/dml_ews_by_instance.result45
-rw-r--r--mysql-test/suite/perfschema/r/dml_ews_by_thread_by_event_name.result29
-rw-r--r--mysql-test/suite/perfschema/r/dml_file_instances.result23
-rw-r--r--mysql-test/suite/perfschema/r/dml_file_summary_by_event_name.result28
-rw-r--r--mysql-test/suite/perfschema/r/dml_file_summary_by_instance.result28
-rw-r--r--mysql-test/suite/perfschema/r/dml_mutex_instances.result23
-rw-r--r--mysql-test/suite/perfschema/r/dml_performance_timers.result29
-rw-r--r--mysql-test/suite/perfschema/r/dml_processlist.result27
-rw-r--r--mysql-test/suite/perfschema/r/dml_rwlock_instances.result23
-rw-r--r--mysql-test/suite/perfschema/r/dml_setup_consumers.result45
-rw-r--r--mysql-test/suite/perfschema/r/dml_setup_instruments.result72
-rw-r--r--mysql-test/suite/perfschema/r/dml_setup_objects.result35
-rw-r--r--mysql-test/suite/perfschema/r/dml_setup_timers.result33
-rw-r--r--mysql-test/suite/perfschema/r/func_file_io.result117
-rw-r--r--mysql-test/suite/perfschema/r/func_mutex.result113
-rw-r--r--mysql-test/suite/perfschema/r/global_read_lock.result33
-rw-r--r--mysql-test/suite/perfschema/r/information_schema.result198
-rw-r--r--mysql-test/suite/perfschema/r/misc.result13
-rw-r--r--mysql-test/suite/perfschema/r/myisam_file_io.result59
-rw-r--r--mysql-test/suite/perfschema/r/no_threads.result43
-rw-r--r--mysql-test/suite/perfschema/r/one_thread_per_con.result38
-rw-r--r--mysql-test/suite/perfschema/r/privilege.result577
-rw-r--r--mysql-test/suite/perfschema/r/query_cache.result66
-rw-r--r--mysql-test/suite/perfschema/r/read_only.result49
-rw-r--r--mysql-test/suite/perfschema/r/schema.result211
-rw-r--r--mysql-test/suite/perfschema/r/selects.result97
-rw-r--r--mysql-test/suite/perfschema/r/server_init.result233
-rw-r--r--mysql-test/suite/perfschema/r/start_server_no_cond_class.result74
-rw-r--r--mysql-test/suite/perfschema/r/start_server_no_cond_inst.result77
-rw-r--r--mysql-test/suite/perfschema/r/start_server_no_file_class.result74
-rw-r--r--mysql-test/suite/perfschema/r/start_server_no_file_inst.result77
-rw-r--r--mysql-test/suite/perfschema/r/start_server_no_mutex_class.result74
-rw-r--r--mysql-test/suite/perfschema/r/start_server_no_mutex_inst.result77
-rw-r--r--mysql-test/suite/perfschema/r/start_server_no_rwlock_class.result74
-rw-r--r--mysql-test/suite/perfschema/r/start_server_no_rwlock_inst.result77
-rw-r--r--mysql-test/suite/perfschema/r/start_server_no_thread_class.result74
-rw-r--r--mysql-test/suite/perfschema/r/start_server_no_thread_inst.result73
-rw-r--r--mysql-test/suite/perfschema/r/start_server_off.result73
-rw-r--r--mysql-test/suite/perfschema/r/start_server_on.result73
-rw-r--r--mysql-test/suite/perfschema/r/tampered_perfschema_table1.result6
-rw-r--r--mysql-test/suite/perfschema/t/aggregate.test187
-rw-r--r--mysql-test/suite/perfschema/t/bad_option_1.test45
-rw-r--r--mysql-test/suite/perfschema/t/bad_option_2.test44
-rw-r--r--mysql-test/suite/perfschema/t/binlog_mix.test28
-rw-r--r--mysql-test/suite/perfschema/t/binlog_row.test28
-rw-r--r--mysql-test/suite/perfschema/t/binlog_stmt.test26
-rw-r--r--mysql-test/suite/perfschema/t/cnf_option.cnf25
-rw-r--r--mysql-test/suite/perfschema/t/cnf_option.test24
-rw-r--r--mysql-test/suite/perfschema/t/column_privilege.test82
-rw-r--r--mysql-test/suite/perfschema/t/ddl_cond_instances.test32
-rw-r--r--mysql-test/suite/perfschema/t/ddl_events_waits_current.test31
-rw-r--r--mysql-test/suite/perfschema/t/ddl_events_waits_history.test31
-rw-r--r--mysql-test/suite/perfschema/t/ddl_events_waits_history_long.test31
-rw-r--r--mysql-test/suite/perfschema/t/ddl_ews_by_event_name.test31
-rw-r--r--mysql-test/suite/perfschema/t/ddl_ews_by_instance.test31
-rw-r--r--mysql-test/suite/perfschema/t/ddl_ews_by_thread_by_event_name.test33
-rw-r--r--mysql-test/suite/perfschema/t/ddl_file_instances.test32
-rw-r--r--mysql-test/suite/perfschema/t/ddl_fs_by_event_name.test31
-rw-r--r--mysql-test/suite/perfschema/t/ddl_fs_by_instance.test31
-rw-r--r--mysql-test/suite/perfschema/t/ddl_mutex_instances.test32
-rw-r--r--mysql-test/suite/perfschema/t/ddl_performance_timers.test32
-rw-r--r--mysql-test/suite/perfschema/t/ddl_processlist.test32
-rw-r--r--mysql-test/suite/perfschema/t/ddl_rwlock_instances.test32
-rw-r--r--mysql-test/suite/perfschema/t/ddl_setup_consumers.test33
-rw-r--r--mysql-test/suite/perfschema/t/ddl_setup_instruments.test33
-rw-r--r--mysql-test/suite/perfschema/t/ddl_setup_objects.test32
-rw-r--r--mysql-test/suite/perfschema/t/ddl_setup_timers.test33
-rw-r--r--mysql-test/suite/perfschema/t/disabled.def27
-rw-r--r--mysql-test/suite/perfschema/t/dml_cond_instances.test55
-rw-r--r--mysql-test/suite/perfschema/t/dml_events_waits_current.test62
-rw-r--r--mysql-test/suite/perfschema/t/dml_events_waits_history.test70
-rw-r--r--mysql-test/suite/perfschema/t/dml_events_waits_history_long.test70
-rw-r--r--mysql-test/suite/perfschema/t/dml_ews_by_event_name.test62
-rw-r--r--mysql-test/suite/perfschema/t/dml_ews_by_instance.test79
-rw-r--r--mysql-test/suite/perfschema/t/dml_ews_by_thread_by_event_name.test63
-rw-r--r--mysql-test/suite/perfschema/t/dml_file_instances.test55
-rw-r--r--mysql-test/suite/perfschema/t/dml_file_summary_by_event_name.test62
-rw-r--r--mysql-test/suite/perfschema/t/dml_file_summary_by_instance.test62
-rw-r--r--mysql-test/suite/perfschema/t/dml_mutex_instances.test55
-rw-r--r--mysql-test/suite/perfschema/t/dml_performance_timers.test57
-rw-r--r--mysql-test/suite/perfschema/t/dml_processlist.test61
-rw-r--r--mysql-test/suite/perfschema/t/dml_rwlock_instances.test55
-rw-r--r--mysql-test/suite/perfschema/t/dml_setup_consumers.test59
-rw-r--r--mysql-test/suite/perfschema/t/dml_setup_instruments.test100
-rw-r--r--mysql-test/suite/perfschema/t/dml_setup_objects.test75
-rw-r--r--mysql-test/suite/perfschema/t/dml_setup_timers.test61
-rw-r--r--mysql-test/suite/perfschema/t/func_file_io.test192
-rw-r--r--mysql-test/suite/perfschema/t/func_mutex.test131
-rw-r--r--mysql-test/suite/perfschema/t/global_read_lock.test90
-rw-r--r--mysql-test/suite/perfschema/t/information_schema.test67
-rw-r--r--mysql-test/suite/perfschema/t/misc.test57
-rw-r--r--mysql-test/suite/perfschema/t/myisam_file_io.opt1
-rw-r--r--mysql-test/suite/perfschema/t/myisam_file_io.test63
-rw-r--r--mysql-test/suite/perfschema/t/no_threads-master.opt1
-rw-r--r--mysql-test/suite/perfschema/t/no_threads.test69
-rw-r--r--mysql-test/suite/perfschema/t/one_thread_per_con-master.opt1
-rw-r--r--mysql-test/suite/perfschema/t/one_thread_per_con.test94
-rw-r--r--mysql-test/suite/perfschema/t/pool_of_threads-master.opt1
-rw-r--r--mysql-test/suite/perfschema/t/privilege.test362
-rw-r--r--mysql-test/suite/perfschema/t/query_cache.test68
-rw-r--r--mysql-test/suite/perfschema/t/read_only.test96
-rw-r--r--mysql-test/suite/perfschema/t/schema.test46
-rw-r--r--mysql-test/suite/perfschema/t/selects.test156
-rw-r--r--mysql-test/suite/perfschema/t/server_init.test263
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_cond_class-master.opt1
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_cond_class.test38
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_cond_inst-master.opt1
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_cond_inst.test41
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_file_class-master.opt1
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_file_class.test38
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_file_inst-master.opt1
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_file_inst.test41
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_mutex_class-master.opt1
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_mutex_class.test38
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_mutex_inst-master.opt1
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_mutex_inst.test41
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_rwlock_class-master.opt1
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_rwlock_class.test38
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_rwlock_inst-master.opt1
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_rwlock_inst.test41
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_thread_class-master.opt1
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_thread_class.test38
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_thread_inst-master.opt1
-rw-r--r--mysql-test/suite/perfschema/t/start_server_no_thread_inst.test42
-rw-r--r--mysql-test/suite/perfschema/t/start_server_off-master.opt1
-rw-r--r--mysql-test/suite/perfschema/t/start_server_off.test25
-rw-r--r--mysql-test/suite/perfschema/t/start_server_on-master.opt1
-rw-r--r--mysql-test/suite/perfschema/t/start_server_on.test25
-rw-r--r--mysql-test/suite/perfschema/t/tampered_perfschema_table1-master.opt1
-rw-r--r--mysql-test/suite/perfschema/t/tampered_perfschema_table1.test44
-rw-r--r--mysql-test/suite/perfschema_stress/README34
-rw-r--r--mysql-test/suite/perfschema_stress/include/settings.inc17
-rw-r--r--mysql-test/suite/perfschema_stress/r/modify.result17
-rw-r--r--mysql-test/suite/perfschema_stress/r/read.result29
-rw-r--r--mysql-test/suite/perfschema_stress/r/work.result16
-rw-r--r--mysql-test/suite/perfschema_stress/stress_init.txt1
-rw-r--r--mysql-test/suite/perfschema_stress/stress_tests.txt10
-rw-r--r--mysql-test/suite/perfschema_stress/t/modify.test55
-rw-r--r--mysql-test/suite/perfschema_stress/t/read.test49
-rw-r--r--mysql-test/suite/perfschema_stress/t/setup.test64
-rw-r--r--mysql-test/suite/perfschema_stress/t/work.test47
-rw-r--r--mysql-test/suite/rpl/my.cnf10
-rw-r--r--mysql-test/suite/rpl/r/rpl000017.result3
-rw-r--r--mysql-test/suite/rpl/r/rpl_000015.result46
-rw-r--r--mysql-test/suite/rpl/r/rpl_EE_err.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_begin_commit_rollback.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_binlog_grant.result42
-rw-r--r--mysql-test/suite/rpl/r/rpl_blackhole.result9
-rw-r--r--mysql-test/suite/rpl/r/rpl_bug31076.result3
-rw-r--r--mysql-test/suite/rpl/r/rpl_bug33931.result5
-rw-r--r--mysql-test/suite/rpl/r/rpl_bug41902.result34
-rw-r--r--mysql-test/suite/rpl/r/rpl_change_master.result21
-rw-r--r--mysql-test/suite/rpl/r/rpl_charset.result3
-rw-r--r--mysql-test/suite/rpl/r/rpl_colSize.result3
-rw-r--r--mysql-test/suite/rpl/r/rpl_concurrency_error.result17
-rw-r--r--mysql-test/suite/rpl/r/rpl_deadlock_innodb.result8
-rw-r--r--mysql-test/suite/rpl/r/rpl_empty_master_crash.result11
-rw-r--r--mysql-test/suite/rpl/r/rpl_empty_master_host.result16
-rw-r--r--mysql-test/suite/rpl/r/rpl_err_ignoredtable.result1
-rw-r--r--mysql-test/suite/rpl/r/rpl_events.result90
-rw-r--r--mysql-test/suite/rpl/r/rpl_extraCol_innodb.result379
-rw-r--r--mysql-test/suite/rpl/r/rpl_extraCol_myisam.result379
-rw-r--r--mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result2313
-rw-r--r--mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result2313
-rw-r--r--mysql-test/suite/rpl/r/rpl_flush_logs.result67
-rw-r--r--mysql-test/suite/rpl/r/rpl_flushlog_loop.result3
-rw-r--r--mysql-test/suite/rpl/r/rpl_foreign_key_innodb.result1
-rw-r--r--mysql-test/suite/rpl/r/rpl_get_lock.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result1
-rw-r--r--mysql-test/suite/rpl/r/rpl_grant.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_heartbeat.result143
-rw-r--r--mysql-test/suite/rpl/r/rpl_heartbeat_2slaves.result55
-rw-r--r--mysql-test/suite/rpl/r/rpl_heartbeat_basic.result300
-rw-r--r--mysql-test/suite/rpl/r/rpl_heartbeat_ssl.result27
-rw-r--r--mysql-test/suite/rpl/r/rpl_idempotency.result157
-rw-r--r--mysql-test/suite/rpl/r/rpl_incident.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_insert_id.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_insert_ignore.result1
-rw-r--r--mysql-test/suite/rpl/r/rpl_ip_mix.result164
-rw-r--r--mysql-test/suite/rpl/r/rpl_ip_mix2.result180
-rw-r--r--mysql-test/suite/rpl/r/rpl_ip_mix2_win.result84
-rw-r--r--mysql-test/suite/rpl/r/rpl_ip_mix_win.result84
-rw-r--r--mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6.result110
-rw-r--r--mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6_win.result35
-rw-r--r--mysql-test/suite/rpl/r/rpl_ipv6.result155
-rw-r--r--mysql-test/suite/rpl/r/rpl_ipv6_win.result80
-rw-r--r--mysql-test/suite/rpl/r/rpl_known_bugs_detection.result8
-rw-r--r--mysql-test/suite/rpl/r/rpl_load_from_master.result133
-rw-r--r--mysql-test/suite/rpl/r/rpl_load_table_from_master.result51
-rw-r--r--mysql-test/suite/rpl/r/rpl_loaddata_fatal.result12
-rw-r--r--mysql-test/suite/rpl/r/rpl_loaddata_m.result1
-rw-r--r--mysql-test/suite/rpl/r/rpl_loaddata_map.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_log_pos.result8
-rw-r--r--mysql-test/suite/rpl/r/rpl_mix_found_rows.result (renamed from mysql-test/suite/rpl/r/rpl_found_rows.result)101
-rw-r--r--mysql-test/suite/rpl/r/rpl_mix_insert_delayed.result72
-rw-r--r--mysql-test/suite/rpl/r/rpl_mixed_binlog_max_cache_size.result (renamed from mysql-test/suite/rpl/r/rpl_binlog_max_cache_size.result)27
-rw-r--r--mysql-test/suite/rpl/r/rpl_mixed_ddl_dml.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_mixed_implicit_commit_binlog.result533
-rw-r--r--mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result12107
-rw-r--r--mysql-test/suite/rpl/r/rpl_mixed_row_innodb.result84
-rw-r--r--mysql-test/suite/rpl/r/rpl_multi_delete2.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_mysql_upgrade.result1
-rw-r--r--mysql-test/suite/rpl/r/rpl_optimize.result1
-rw-r--r--mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result17
-rw-r--r--mysql-test/suite/rpl/r/rpl_read_only.result1
-rw-r--r--mysql-test/suite/rpl/r/rpl_replicate_do.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_rotate_logs.result15
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_basic_11bugs-slave.opt1
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result14
-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.result18
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_binlog_max_cache_size.result138
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_colSize.result130
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_conflicts.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_create_table.result132
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_drop.result8
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result10
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_idempotency.result163
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_implicit_commit_binlog.result574
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_insert_delayed.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_loaddata_concurrent.result131
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_log.result15
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_log_innodb.result15
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_max_relay_size.result14
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_mixing_engines.result13731
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result10
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_reset_slave.result11
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_show_relaylog_events.result276
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_sp007_innodb.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_stop_middle_update.result17
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result22
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result22
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_until.result8
-rw-r--r--mysql-test/suite/rpl/r/rpl_semi_sync.result440
-rw-r--r--mysql-test/suite/rpl/r/rpl_semi_sync_event.result46
-rw-r--r--mysql-test/suite/rpl/r/rpl_server_id_ignore.result46
-rw-r--r--mysql-test/suite/rpl/r/rpl_show_slave_hosts.result17
-rw-r--r--mysql-test/suite/rpl/r/rpl_skip_error.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_slave_skip.result14
-rw-r--r--mysql-test/suite/rpl/r/rpl_slow_query_log.result48
-rw-r--r--mysql-test/suite/rpl/r/rpl_sp.result401
-rw-r--r--mysql-test/suite/rpl/r/rpl_spec_variables.result225
-rw-r--r--mysql-test/suite/rpl/r/rpl_ssl.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_ssl1.result6
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_000001.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_auto_increment_bug33029.result40
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_binlog_direct.result200
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_binlog_max_cache_size.result158
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_flsh_tbls.result10
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_found_rows.result107
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result532
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_innodb.result (renamed from mysql-test/suite/rpl/r/rpl_innodb.result)8
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result74
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_loaddata_concurrent.result (renamed from mysql-test/suite/rpl/r/rpl_loaddata_concurrent.result)5
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_loadfile.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_log.result37
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result14
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_mix_show_relaylog_events.result234
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_mixing_engines.result11030
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_multi_query.result10
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_reset_slave.result11
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result (renamed from mysql-test/suite/rpl/r/rpl_start_stop_slave.result)4
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_stop_middle_group.result68
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_until.result12
-rw-r--r--mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_sync.result40
-rw-r--r--mysql-test/suite/rpl/r/rpl_temp_table_mix_row.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_temporary.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_temporary_errors.result3
-rw-r--r--mysql-test/suite/rpl/r/rpl_trigger.result1
-rw-r--r--mysql-test/suite/rpl/r/rpl_typeconv.result558
-rw-r--r--mysql-test/suite/rpl/r/rpl_typeconv_innodb.result18
-rw-r--r--mysql-test/suite/rpl/r/rpl_udf.result161
-rw-r--r--mysql-test/suite/rpl/r/rpl_variables_stm.result6
-rw-r--r--mysql-test/suite/rpl/rpl_1slave_base.cnf1
-rw-r--r--mysql-test/suite/rpl/t/disabled.def3
-rw-r--r--mysql-test/suite/rpl/t/rpl000010.test8
-rw-r--r--mysql-test/suite/rpl/t/rpl000011.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl000013.test8
-rw-r--r--mysql-test/suite/rpl/t/rpl000017-slave.opt1
-rw-r--r--[-rwxr-xr-x]mysql-test/suite/rpl/t/rpl000017-slave.sh0
-rw-r--r--mysql-test/suite/rpl/t/rpl000017.test16
-rw-r--r--mysql-test/suite/rpl/t/rpl_000015-slave.opt2
-rw-r--r--mysql-test/suite/rpl/t/rpl_000015.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_alter.test8
-rw-r--r--mysql-test/suite/rpl/t/rpl_auto_increment_11932.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_begin_commit_rollback.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_binlog_grant.test8
-rw-r--r--mysql-test/suite/rpl/t/rpl_bit.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_bit_npk.test8
-rw-r--r--mysql-test/suite/rpl/t/rpl_blackhole.test20
-rw-r--r--mysql-test/suite/rpl/t/rpl_bug31076.test7
-rw-r--r--mysql-test/suite/rpl/t/rpl_bug33931.test14
-rw-r--r--mysql-test/suite/rpl/t/rpl_bug41902-slave.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_bug41902.test61
-rw-r--r--mysql-test/suite/rpl/t/rpl_change_master.test55
-rw-r--r--mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test3
-rw-r--r--mysql-test/suite/rpl/t/rpl_colSize.test7
-rw-r--r--mysql-test/suite/rpl/t/rpl_concurrency_error.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_cross_version-master.opt2
-rw-r--r--mysql-test/suite/rpl/t/rpl_do_grant.test16
-rw-r--r--mysql-test/suite/rpl/t/rpl_drop.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_drop_view.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_dual_pos_advance.test16
-rw-r--r--mysql-test/suite/rpl/t/rpl_empty_master_crash-master.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_empty_master_crash.test14
-rw-r--r--mysql-test/suite/rpl/t/rpl_empty_master_host.test51
-rw-r--r--mysql-test/suite/rpl/t/rpl_err_ignoredtable.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_events.test12
-rw-r--r--mysql-test/suite/rpl/t/rpl_extraColmaster_innodb.test11
-rw-r--r--mysql-test/suite/rpl/t/rpl_extraColmaster_myisam.test11
-rw-r--r--mysql-test/suite/rpl/t/rpl_flush_logs-master.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_flush_logs.test172
-rw-r--r--[-rwxr-xr-x]mysql-test/suite/rpl/t/rpl_flushlog_loop-master.sh0
-rw-r--r--[-rwxr-xr-x]mysql-test/suite/rpl/t/rpl_flushlog_loop-slave.sh0
-rw-r--r--mysql-test/suite/rpl/t/rpl_flushlog_loop.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_get_lock.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test1
-rw-r--r--mysql-test/suite/rpl/t/rpl_heartbeat.test168
-rw-r--r--mysql-test/suite/rpl/t/rpl_heartbeat_2slaves.cnf17
-rw-r--r--mysql-test/suite/rpl/t/rpl_heartbeat_2slaves.test142
-rw-r--r--mysql-test/suite/rpl/t/rpl_heartbeat_basic.cnf7
-rw-r--r--mysql-test/suite/rpl/t/rpl_heartbeat_basic.test535
-rw-r--r--mysql-test/suite/rpl/t/rpl_heartbeat_ssl.test54
-rw-r--r--mysql-test/suite/rpl/t/rpl_idempotency-slave.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_idempotency.test322
-rw-r--r--mysql-test/suite/rpl/t/rpl_insert.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_insert_id.test1
-rw-r--r--mysql-test/suite/rpl/t/rpl_insert_ignore.test3
-rw-r--r--mysql-test/suite/rpl/t/rpl_invoked_features.test16
-rw-r--r--mysql-test/suite/rpl/t/rpl_ip_mix.cnf56
-rw-r--r--mysql-test/suite/rpl/t/rpl_ip_mix.test93
-rw-r--r--mysql-test/suite/rpl/t/rpl_ip_mix2.cnf56
-rw-r--r--mysql-test/suite/rpl/t/rpl_ip_mix2.test109
-rw-r--r--mysql-test/suite/rpl/t/rpl_ip_mix2_win.cnf56
-rw-r--r--mysql-test/suite/rpl/t/rpl_ip_mix2_win.test78
-rw-r--r--mysql-test/suite/rpl/t/rpl_ip_mix_win.cnf56
-rw-r--r--mysql-test/suite/rpl/t/rpl_ip_mix_win.test65
-rw-r--r--mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6.cnf56
-rw-r--r--mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6.test90
-rw-r--r--mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6_win.cnf56
-rw-r--r--mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6_win.test63
-rw-r--r--mysql-test/suite/rpl/t/rpl_ipv6.cnf56
-rw-r--r--mysql-test/suite/rpl/t/rpl_ipv6.test93
-rw-r--r--mysql-test/suite/rpl/t/rpl_ipv6_win.cnf56
-rw-r--r--mysql-test/suite/rpl/t/rpl_ipv6_win.test65
-rw-r--r--mysql-test/suite/rpl/t/rpl_known_bugs_detection.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_load_from_master.test181
-rw-r--r--mysql-test/suite/rpl/t/rpl_load_table_from_master.test98
-rw-r--r--mysql-test/suite/rpl/t/rpl_loaddata.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_loaddata_charset.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_loaddata_fatal.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_loaddata_m.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_loaddata_s.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_loaddatalocal.test8
-rw-r--r--mysql-test/suite/rpl/t/rpl_log_pos.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_master_pos_wait.test4
-rw-r--r--[-rwxr-xr-x]mysql-test/suite/rpl/t/rpl_misc_functions-slave.sh0
-rw-r--r--mysql-test/suite/rpl/t/rpl_mix_found_rows.test (renamed from mysql-test/suite/rpl/t/rpl_found_rows.test)114
-rw-r--r--mysql-test/suite/rpl/t/rpl_mix_insert_delayed.test5
-rw-r--r--mysql-test/suite/rpl/t/rpl_mixed_binlog_max_cache_size-master.opt (renamed from mysql-test/suite/rpl/t/rpl_binlog_max_cache_size-master.opt)0
-rw-r--r--mysql-test/suite/rpl/t/rpl_mixed_binlog_max_cache_size.test7
-rw-r--r--mysql-test/suite/rpl/t/rpl_mixed_bit_pk.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_mixed_ddl_dml.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_mixed_implicit_commit_binlog.test9
-rw-r--r--mysql-test/suite/rpl/t/rpl_mixed_mixing_engines.test10
-rw-r--r--mysql-test/suite/rpl/t/rpl_mixed_row_innodb.test8
-rw-r--r--mysql-test/suite/rpl/t/rpl_multi_delete.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_multi_delete2.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_mysql_upgrade.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_optimize.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_packet.test9
-rw-r--r--mysql-test/suite/rpl/t/rpl_ps.test24
-rw-r--r--mysql-test/suite/rpl/t/rpl_rbr_to_sbr.test15
-rw-r--r--mysql-test/suite/rpl/t/rpl_read_only.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_relayspace.test1
-rw-r--r--mysql-test/suite/rpl/t/rpl_replicate_do.test8
-rw-r--r--[-rwxr-xr-x]mysql-test/suite/rpl/t/rpl_rotate_logs-slave.sh0
-rw-r--r--mysql-test/suite/rpl/t/rpl_rotate_logs.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test1
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_basic_3innodb.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_binlog_max_cache_size-master.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_binlog_max_cache_size.test7
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_create_table.test24
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_flsh_tbls.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_idempotency.test331
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_implicit_commit_binlog.test9
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_insert_delayed.test9
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_loaddata_concurrent.test (renamed from mysql-test/suite/rpl/t/rpl_loaddata_concurrent.test)1
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_mixing_engines.test11
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test26
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_show_relaylog_events.test18
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_sp001.test12
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_sp005.test7
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_sp008.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_sp009.test12
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_sp010.test8
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_stop_middle_update-master.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_stop_middle_update-slave.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_stop_middle_update.test32
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_trig002.test12
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_trig003.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_until.test24
-rw-r--r--mysql-test/suite/rpl/t/rpl_semi_sync-master.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_semi_sync-slave.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_semi_sync.test585
-rw-r--r--mysql-test/suite/rpl/t/rpl_semi_sync_event-master.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_semi_sync_event-slave.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_semi_sync_event.test109
-rw-r--r--mysql-test/suite/rpl/t/rpl_server_id2.test3
-rw-r--r--mysql-test/suite/rpl/t/rpl_server_id_ignore-slave.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_server_id_ignore.test114
-rw-r--r--mysql-test/suite/rpl/t/rpl_session_var.test26
-rw-r--r--mysql-test/suite/rpl/t/rpl_set_charset.test8
-rw-r--r--mysql-test/suite/rpl/t/rpl_show_slave_hosts.cnf20
-rw-r--r--mysql-test/suite/rpl/t/rpl_show_slave_hosts.test47
-rw-r--r--mysql-test/suite/rpl/t/rpl_slave_skip.test14
-rw-r--r--mysql-test/suite/rpl/t/rpl_slave_status.test1
-rw-r--r--mysql-test/suite/rpl/t/rpl_slow_query_log-slave.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_slow_query_log.test193
-rw-r--r--mysql-test/suite/rpl/t/rpl_sp-master.opt2
-rw-r--r--mysql-test/suite/rpl/t/rpl_sp-slave.opt2
-rw-r--r--mysql-test/suite/rpl/t/rpl_sp.test28
-rw-r--r--mysql-test/suite/rpl/t/rpl_sp004.test12
-rw-r--r--mysql-test/suite/rpl/t/rpl_sp_effects-master.opt2
-rw-r--r--mysql-test/suite/rpl/t/rpl_sp_effects-slave.opt2
-rw-r--r--mysql-test/suite/rpl/t/rpl_spec_variables-slave.opt (renamed from mysql-test/suite/rpl/r/rpl_row_basic_11bugs-master.opt)0
-rw-r--r--mysql-test/suite/rpl/t/rpl_spec_variables.test306
-rw-r--r--mysql-test/suite/rpl/t/rpl_sporadic_master.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_ssl1.test19
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_auto_increment_bug33029.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_binlog_max_cache_size-master.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_binlog_max_cache_size.test7
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_flsh_tbls.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_found_rows.test125
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_implicit_commit_binlog.test9
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_innodb.test8
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_insert_delayed.test20
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_loaddata_concurrent.test15
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_loadfile.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_mix_show_relaylog_events.test18
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_mixing_engines.test5
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_start_stop_slave.test8
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_stop_middle_group.test9
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_until.test5
-rw-r--r--mysql-test/suite/rpl/t/rpl_switch_stm_row_mixed.test20
-rw-r--r--mysql-test/suite/rpl/t/rpl_sync-slave.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_sync.test148
-rw-r--r--mysql-test/suite/rpl/t/rpl_temp_table.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_temporary.test1
-rw-r--r--mysql-test/suite/rpl/t/rpl_temporary_errors.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_timezone.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_trigger.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_typeconv-slave.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_typeconv.test69
-rw-r--r--mysql-test/suite/rpl/t/rpl_typeconv_innodb.test29
-rw-r--r--mysql-test/suite/rpl/t/rpl_udf.test15
-rw-r--r--mysql-test/suite/rpl/t/rpl_user_variables.test9
-rw-r--r--mysql-test/suite/rpl/t/rpl_variables_stm.test11
-rw-r--r--mysql-test/suite/rpl/t/rpl_view.test12
-rw-r--r--mysql-test/suite/rpl_ndb/combinations5
-rw-r--r--mysql-test/suite/rpl_ndb/my.cnf11
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_2innodb.result1
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_2myisam.result1
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_basic.result2
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_binlog_format_errors.result174
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_circular.result4
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_circular_simplex.result4
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_partitions.result2
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result379
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_idempotent.result12
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result15
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_implicit_commit_binlog.result660
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_tables.result246
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result4
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_row_implicit_commit_binlog.result658
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_sync.result2
-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.result68
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_2innodb.test4
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_2myisam.test4
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test3
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_binlog_format_errors-master.opt1
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_binlog_format_errors-slave.opt1
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_binlog_format_errors.test262
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_blob.test3
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_blob2.test5
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test3
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_2ch.cnf5
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test8
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_commit_afterflush.test4
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_ctype_ucs2_def.test3
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_partitions-master.opt2
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_partitions-slave.opt2
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_delete_nowhere.test3
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_do_db.test3
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_do_table.test3
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_func003.test3
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb_trans.test3
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_insert_ignore.test3
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions.test3
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_implicit_commit_binlog.test9
-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.test374
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_multi_update3.test3
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_rep_ignore.test3
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_row_001.test3
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_row_implicit_commit_binlog.test9
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_sp003.test3
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_sp006.test3
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test3
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_trig004.test3
-rw-r--r--mysql-test/suite/sys_vars/README3
-rw-r--r--mysql-test/suite/sys_vars/inc/bulk_insert_buffer_size_basic.inc1
-rw-r--r--mysql-test/suite/sys_vars/inc/delayed_insert_limit_basic.inc1
-rw-r--r--mysql-test/suite/sys_vars/inc/delayed_queue_size_basic.inc1
-rw-r--r--mysql-test/suite/sys_vars/inc/join_buffer_size_basic.inc59
-rw-r--r--mysql-test/suite/sys_vars/inc/key_cache_age_threshold_basic.inc7
-rw-r--r--mysql-test/suite/sys_vars/inc/log_warnings_basic.inc9
-rw-r--r--mysql-test/suite/sys_vars/inc/max_connect_errors_basic.inc4
-rw-r--r--mysql-test/suite/sys_vars/inc/max_seeks_for_key_basic.inc9
-rw-r--r--mysql-test/suite/sys_vars/inc/max_tmp_tables_basic.inc8
-rw-r--r--mysql-test/suite/sys_vars/inc/max_write_lock_count_basic.inc4
-rw-r--r--mysql-test/suite/sys_vars/inc/min_examined_row_limit_basic.inc9
-rw-r--r--mysql-test/suite/sys_vars/inc/myisam_max_sort_file_size_basic.inc9
-rw-r--r--mysql-test/suite/sys_vars/inc/myisam_repair_threads_basic.inc9
-rw-r--r--mysql-test/suite/sys_vars/inc/myisam_sort_buffer_size_basic.inc9
-rw-r--r--mysql-test/suite/sys_vars/inc/net_retry_count_basic.inc10
-rw-r--r--mysql-test/suite/sys_vars/inc/query_alloc_block_size_basic.inc17
-rw-r--r--mysql-test/suite/sys_vars/inc/query_cache_limit_basic.inc1
-rw-r--r--mysql-test/suite/sys_vars/inc/query_cache_min_res_unit_basic.inc3
-rw-r--r--mysql-test/suite/sys_vars/inc/query_cache_size_basic.inc4
-rw-r--r--mysql-test/suite/sys_vars/inc/range_alloc_block_size_basic.inc11
-rw-r--r--mysql-test/suite/sys_vars/inc/rpl_recovery_rank_basic.inc4
-rw-r--r--mysql-test/suite/sys_vars/inc/slave_transaction_retries_basic.inc6
-rw-r--r--mysql-test/suite/sys_vars/inc/sort_buffer_size_basic.inc44
-rw-r--r--mysql-test/suite/sys_vars/inc/transaction_alloc_block_size_basic.inc6
-rw-r--r--mysql-test/suite/sys_vars/inc/transaction_prealloc_size_basic.inc4
-rw-r--r--mysql-test/suite/sys_vars/r/all_vars.result14
-rw-r--r--mysql-test/suite/sys_vars/r/auto_increment_increment_basic.result9
-rw-r--r--mysql-test/suite/sys_vars/r/auto_increment_increment_func.result3
-rw-r--r--mysql-test/suite/sys_vars/r/auto_increment_offset_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/auto_increment_offset_func.result6
-rw-r--r--mysql-test/suite/sys_vars/r/autocommit_basic.result (renamed from mysql-test/suite/sys_vars/r/auto_commit_basic.result)29
-rw-r--r--mysql-test/suite/sys_vars/r/autocommit_func.result1
-rw-r--r--mysql-test/suite/sys_vars/r/automatic_sp_privileges_basic.result7
-rw-r--r--mysql-test/suite/sys_vars/r/back_log_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/big_tables_basic.result17
-rw-r--r--mysql-test/suite/sys_vars/r/binlog_cache_size_basic_32.result6
-rw-r--r--mysql-test/suite/sys_vars/r/binlog_cache_size_basic_64.result8
-rw-r--r--mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_32.result1
-rw-r--r--mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_64.result1
-rw-r--r--mysql-test/suite/sys_vars/r/character_set_client_basic.result10
-rw-r--r--mysql-test/suite/sys_vars/r/character_set_client_func.result13
-rw-r--r--mysql-test/suite/sys_vars/r/character_set_connection_basic.result3
-rw-r--r--mysql-test/suite/sys_vars/r/character_set_database_basic.result2
-rw-r--r--mysql-test/suite/sys_vars/r/character_set_database_func.result3
-rw-r--r--mysql-test/suite/sys_vars/r/character_set_filesystem_basic.result2
-rw-r--r--mysql-test/suite/sys_vars/r/character_set_results_basic.resultbin16478 -> 16478 bytes
-rw-r--r--mysql-test/suite/sys_vars/r/character_set_server_basic.result9
-rw-r--r--mysql-test/suite/sys_vars/r/character_sets_dir_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/collation_database_basic.result5
-rw-r--r--mysql-test/suite/sys_vars/r/collation_database_func.result2
-rw-r--r--mysql-test/suite/sys_vars/r/completion_type_basic.result69
-rw-r--r--mysql-test/suite/sys_vars/r/concurrent_insert_basic.result71
-rw-r--r--mysql-test/suite/sys_vars/r/concurrent_insert_func.result2
-rw-r--r--mysql-test/suite/sys_vars/r/connect_timeout_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/date_format_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/datetime_format_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/debug_basic.result25
-rw-r--r--mysql-test/suite/sys_vars/r/debug_sync_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/default_storage_engine_basic.result117
-rw-r--r--mysql-test/suite/sys_vars/r/default_week_format_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/delay_key_write_basic.result10
-rw-r--r--mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_32.result1
-rw-r--r--mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_64.result1
-rw-r--r--mysql-test/suite/sys_vars/r/delayed_insert_timeout_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/delayed_queue_size_basic_32.result1
-rw-r--r--mysql-test/suite/sys_vars/r/delayed_queue_size_basic_64.result1
-rw-r--r--mysql-test/suite/sys_vars/r/div_precision_increment_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/div_precision_increment_func.result7
-rw-r--r--mysql-test/suite/sys_vars/r/engine_condition_pushdown_basic.result156
-rw-r--r--mysql-test/suite/sys_vars/r/event_scheduler_basic.result5
-rw-r--r--mysql-test/suite/sys_vars/r/expire_logs_days_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/flush_basic.result10
-rw-r--r--mysql-test/suite/sys_vars/r/flush_time_basic.result41
-rw-r--r--mysql-test/suite/sys_vars/r/foreign_key_checks_basic.result27
-rw-r--r--mysql-test/suite/sys_vars/r/foreign_key_checks_func.result3
-rw-r--r--mysql-test/suite/sys_vars/r/ft_boolean_syntax_basic.result3
-rw-r--r--mysql-test/suite/sys_vars/r/ft_boolean_syntax_func.result11
-rw-r--r--mysql-test/suite/sys_vars/r/ft_max_word_len_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/ft_min_word_len_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/ft_query_expansion_limit_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/ft_stopword_file_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/general_log_basic.result4
-rw-r--r--mysql-test/suite/sys_vars/r/general_log_file_basic.result7
-rw-r--r--mysql-test/suite/sys_vars/r/general_log_func.result13
-rw-r--r--mysql-test/suite/sys_vars/r/group_concat_max_len_basic.result9
-rw-r--r--mysql-test/suite/sys_vars/r/group_concat_max_len_func.result11
-rw-r--r--mysql-test/suite/sys_vars/r/have_profiling_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/identity_basic.result9
-rw-r--r--mysql-test/suite/sys_vars/r/ignore_builtin_innodb_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/init_connect_basic.resultbin3580 -> 3867 bytes
-rw-r--r--mysql-test/suite/sys_vars/r/init_file_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_autoextend_increment_basic.result16
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_checksums_basic.result6
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_commit_concurrency_basic.result43
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_concurrency_tickets_basic.result (renamed from mysql-test/suite/sys_vars/r/innodb_concurrency_tickets_basic_64.result)14
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_concurrency_tickets_basic_32.result100
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_doublewrite_basic.result6
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_fast_shutdown_basic.result26
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_file_io_threads_basic.result96
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_file_per_table_basic.result7
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_flush_log_at_trx_commit_basic.result10
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_lock_wait_timeout_basic.result11
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_locks_unsafe_for_binlog_basic.result4
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_max_dirty_pages_pct_basic.result32
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_max_purge_lag_basic.result (renamed from mysql-test/suite/sys_vars/r/innodb_max_purge_lag_basic_64.result)8
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_max_purge_lag_basic_32.result94
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_rollback_on_timeout_basic.result4
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_support_xa_basic.result38
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic.result (renamed from mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_64.result)16
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_32.result94
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_table_locks_basic.result34
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_thread_concurrency_basic.result18
-rw-r--r--mysql-test/suite/sys_vars/r/insert_id_basic.result9
-rw-r--r--mysql-test/suite/sys_vars/r/interactive_timeout_basic.result9
-rw-r--r--mysql-test/suite/sys_vars/r/join_buffer_size_basic_32.result115
-rw-r--r--mysql-test/suite/sys_vars/r/join_buffer_size_basic_64.result123
-rw-r--r--mysql-test/suite/sys_vars/r/keep_files_on_create_basic.result19
-rw-r--r--mysql-test/suite/sys_vars/r/key_buffer_size_basic.result (renamed from mysql-test/suite/sys_vars/r/key_buffer_size_basic_32.result)59
-rw-r--r--mysql-test/suite/sys_vars/r/key_buffer_size_basic_64.result100
-rw-r--r--mysql-test/suite/sys_vars/r/key_buffer_size_func.result3
-rw-r--r--mysql-test/suite/sys_vars/r/key_cache_age_threshold_basic_32.result23
-rw-r--r--mysql-test/suite/sys_vars/r/key_cache_age_threshold_basic_64.result25
-rw-r--r--mysql-test/suite/sys_vars/r/key_cache_block_size_basic.result (renamed from mysql-test/suite/sys_vars/r/key_cache_block_size_basic_64.result)19
-rw-r--r--mysql-test/suite/sys_vars/r/key_cache_block_size_basic_32.result142
-rw-r--r--mysql-test/suite/sys_vars/r/key_cache_division_limit_basic.result (renamed from mysql-test/suite/sys_vars/r/key_cache_division_limit_basic_64.result)14
-rw-r--r--mysql-test/suite/sys_vars/r/key_cache_division_limit_basic_32.result139
-rw-r--r--mysql-test/suite/sys_vars/r/large_files_support_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/large_page_size_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/large_pages_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/last_insert_id_basic.result27
-rw-r--r--mysql-test/suite/sys_vars/r/lc_messages_basic.result46
-rw-r--r--mysql-test/suite/sys_vars/r/lc_messages_dir_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/lc_time_names_basic.result22
-rw-r--r--mysql-test/suite/sys_vars/r/local_infile_basic.result6
-rw-r--r--mysql-test/suite/sys_vars/r/locked_in_memory_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/log_basic.result10
-rw-r--r--mysql-test/suite/sys_vars/r/log_bin_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/log_bin_trust_function_creators_basic.result14
-rw-r--r--mysql-test/suite/sys_vars/r/log_bin_trust_routine_creators_basic.result121
-rw-r--r--mysql-test/suite/sys_vars/r/log_error_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/log_output_basic.result34
-rw-r--r--mysql-test/suite/sys_vars/r/log_queries_not_using_indexes_basic.result30
-rw-r--r--mysql-test/suite/sys_vars/r/log_slave_updates_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/log_slow_queries_basic.result112
-rw-r--r--mysql-test/suite/sys_vars/r/log_warnings_basic_32.result9
-rw-r--r--mysql-test/suite/sys_vars/r/log_warnings_basic_64.result9
-rw-r--r--mysql-test/suite/sys_vars/r/long_query_time_basic.result24
-rw-r--r--mysql-test/suite/sys_vars/r/low_priority_updates_basic.result20
-rw-r--r--mysql-test/suite/sys_vars/r/lower_case_file_system_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/lower_case_table_names_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/max_allowed_packet_basic.result16
-rw-r--r--mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic.result (renamed from mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic_32.result)29
-rw-r--r--mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic_64.result141
-rw-r--r--mysql-test/suite/sys_vars/r/max_binlog_size_basic.result13
-rw-r--r--mysql-test/suite/sys_vars/r/max_connect_errors_basic_32.result3
-rw-r--r--mysql-test/suite/sys_vars/r/max_connect_errors_basic_64.result3
-rw-r--r--mysql-test/suite/sys_vars/r/max_connections_basic.result3
-rw-r--r--mysql-test/suite/sys_vars/r/max_delayed_threads_basic.result34
-rw-r--r--mysql-test/suite/sys_vars/r/max_error_count_basic.result10
-rw-r--r--mysql-test/suite/sys_vars/r/max_heap_table_size_basic.result (renamed from mysql-test/suite/sys_vars/r/max_heap_table_size_basic_32.result)43
-rw-r--r--mysql-test/suite/sys_vars/r/max_heap_table_size_basic_64.result196
-rw-r--r--mysql-test/suite/sys_vars/r/max_insert_delayed_threads_basic.result71
-rw-r--r--mysql-test/suite/sys_vars/r/max_join_size_basic.result51
-rw-r--r--mysql-test/suite/sys_vars/r/max_length_for_sort_data_basic.result8
-rw-r--r--mysql-test/suite/sys_vars/r/max_prepared_stmt_count_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/max_relay_log_size_basic.result15
-rw-r--r--mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_32.result9
-rw-r--r--mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_64.result9
-rw-r--r--mysql-test/suite/sys_vars/r/max_sort_length_basic.result8
-rw-r--r--mysql-test/suite/sys_vars/r/max_sp_recursion_depth_basic.result8
-rw-r--r--mysql-test/suite/sys_vars/r/max_tmp_tables_basic_32.result8
-rw-r--r--mysql-test/suite/sys_vars/r/max_tmp_tables_basic_64.result8
-rw-r--r--mysql-test/suite/sys_vars/r/max_user_connections_basic.result40
-rw-r--r--mysql-test/suite/sys_vars/r/max_write_lock_count_basic_32.result4
-rw-r--r--mysql-test/suite/sys_vars/r/max_write_lock_count_basic_64.result4
-rw-r--r--mysql-test/suite/sys_vars/r/maximum_basic.result18
-rw-r--r--mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_32.result9
-rw-r--r--mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_64.result9
-rw-r--r--mysql-test/suite/sys_vars/r/myisam_data_pointer_size_basic.result5
-rw-r--r--mysql-test/suite/sys_vars/r/myisam_data_pointer_size_func.result1
-rw-r--r--mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_32.result20
-rw-r--r--mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_64.result20
-rw-r--r--mysql-test/suite/sys_vars/r/myisam_mmap_size_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/myisam_recover_options_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_32.result8
-rw-r--r--mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_64.result8
-rw-r--r--mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic.result184
-rw-r--r--mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_32.result8
-rw-r--r--mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_64.result8
-rw-r--r--mysql-test/suite/sys_vars/r/myisam_stats_method_basic.result30
-rw-r--r--mysql-test/suite/sys_vars/r/myisam_use_mmap_basic.result4
-rw-r--r--mysql-test/suite/sys_vars/r/named_pipe_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/net_buffer_length_basic.result16
-rw-r--r--mysql-test/suite/sys_vars/r/net_read_timeout_basic.result9
-rw-r--r--mysql-test/suite/sys_vars/r/net_retry_count_basic_32.result9
-rw-r--r--mysql-test/suite/sys_vars/r/net_retry_count_basic_64.result9
-rw-r--r--mysql-test/suite/sys_vars/r/net_write_timeout_basic.result9
-rw-r--r--mysql-test/suite/sys_vars/r/new_basic.result19
-rw-r--r--mysql-test/suite/sys_vars/r/old_alter_table_basic.result40
-rw-r--r--mysql-test/suite/sys_vars/r/old_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/old_passwords_basic.result19
-rw-r--r--mysql-test/suite/sys_vars/r/open_files_limit_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/optimizer_prune_level_basic.result5
-rw-r--r--mysql-test/suite/sys_vars/r/optimizer_search_depth_basic.result9
-rw-r--r--mysql-test/suite/sys_vars/r/optimizer_switch_basic.result54
-rw-r--r--mysql-test/suite/sys_vars/r/performance_schema_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_events_waits_history_long_size_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_events_waits_history_size_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_cond_classes_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_cond_instances_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_file_classes_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_file_handles_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_file_instances_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_mutex_classes_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_mutex_instances_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_rwlock_classes_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_rwlock_instances_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_table_handles_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_table_instances_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_thread_classes_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_thread_instances_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pid_file_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/plugin_dir_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/port_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/preload_buffer_size_basic.result9
-rw-r--r--mysql-test/suite/sys_vars/r/profiling_basic.result40
-rw-r--r--mysql-test/suite/sys_vars/r/profiling_history_size_basic.result50
-rw-r--r--mysql-test/suite/sys_vars/r/protocol_version_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/pseudo_thread_id_basic.result27
-rw-r--r--mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_32.result31
-rw-r--r--mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_64.result37
-rw-r--r--mysql-test/suite/sys_vars/r/query_cache_limit_basic_32.result1
-rw-r--r--mysql-test/suite/sys_vars/r/query_cache_limit_basic_64.result1
-rw-r--r--mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_32.result3
-rw-r--r--mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_64.result3
-rw-r--r--mysql-test/suite/sys_vars/r/query_cache_type_basic.result35
-rw-r--r--mysql-test/suite/sys_vars/r/query_cache_wlock_invalidate_basic.result34
-rw-r--r--mysql-test/suite/sys_vars/r/query_prealloc_size_basic.result (renamed from mysql-test/suite/sys_vars/r/query_prealloc_size_basic_64.result)12
-rw-r--r--mysql-test/suite/sys_vars/r/query_prealloc_size_basic_32.result166
-rw-r--r--mysql-test/suite/sys_vars/r/rand_seed1_basic.result27
-rw-r--r--mysql-test/suite/sys_vars/r/rand_seed2_basic.result27
-rw-r--r--mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_32.result11
-rw-r--r--mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_64.result21
-rw-r--r--mysql-test/suite/sys_vars/r/read_buffer_size_basic.result86
-rw-r--r--mysql-test/suite/sys_vars/r/read_only_basic.result11
-rw-r--r--mysql-test/suite/sys_vars/r/read_only_func.result2
-rw-r--r--mysql-test/suite/sys_vars/r/read_rnd_buffer_size_basic.result117
-rw-r--r--mysql-test/suite/sys_vars/r/relay_log_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/relay_log_index_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/relay_log_info_file_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/relay_log_purge_basic.result4
-rw-r--r--mysql-test/suite/sys_vars/r/relay_log_recovery_basic.result41
-rw-r--r--mysql-test/suite/sys_vars/r/relay_log_space_limit_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/report_host_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/report_password_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/report_port_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/report_user_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/rpl_init_slave_func.result12
-rw-r--r--mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_32.result32
-rw-r--r--mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_64.result35
-rw-r--r--mysql-test/suite/sys_vars/r/secure_auth_basic.result6
-rw-r--r--mysql-test/suite/sys_vars/r/secure_file_priv_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/server_id_basic.result (renamed from mysql-test/suite/sys_vars/r/server_id_basic_64.result)5
-rw-r--r--mysql-test/suite/sys_vars/r/server_id_basic_32.result121
-rw-r--r--mysql-test/suite/sys_vars/r/shared_memory_base_name_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/shared_memory_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/skip_external_locking_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/skip_networking_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/skip_show_database_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/slave_allow_batching_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/slave_compressed_protocol_basic.result6
-rw-r--r--mysql-test/suite/sys_vars/r/slave_load_tmpdir_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/slave_net_timeout_basic.result5
-rw-r--r--mysql-test/suite/sys_vars/r/slave_skip_errors_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_32.result5
-rw-r--r--mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_64.result5
-rw-r--r--mysql-test/suite/sys_vars/r/slave_type_conversions_basic.result26
-rw-r--r--mysql-test/suite/sys_vars/r/slow_launch_time_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/slow_query_log_basic.result4
-rw-r--r--mysql-test/suite/sys_vars/r/slow_query_log_file_basic.result7
-rw-r--r--mysql-test/suite/sys_vars/r/socket_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/sort_buffer_size_basic_32.result98
-rw-r--r--mysql-test/suite/sys_vars/r/sort_buffer_size_basic_64.result98
-rw-r--r--mysql-test/suite/sys_vars/r/sql_auto_is_null_basic.result62
-rw-r--r--mysql-test/suite/sys_vars/r/sql_big_selects_basic.result28
-rw-r--r--mysql-test/suite/sys_vars/r/sql_big_selects_func.result2
-rw-r--r--mysql-test/suite/sys_vars/r/sql_big_tables_basic.result31
-rw-r--r--mysql-test/suite/sys_vars/r/sql_buffer_result_basic.result41
-rw-r--r--mysql-test/suite/sys_vars/r/sql_log_bin_basic.result26
-rw-r--r--mysql-test/suite/sys_vars/r/sql_log_off_basic.result31
-rw-r--r--mysql-test/suite/sys_vars/r/sql_log_off_func.result1
-rw-r--r--mysql-test/suite/sys_vars/r/sql_log_update_basic.result46
-rw-r--r--mysql-test/suite/sys_vars/r/sql_low_priority_updates_basic.result36
-rw-r--r--mysql-test/suite/sys_vars/r/sql_max_join_size_basic.result61
-rw-r--r--mysql-test/suite/sys_vars/r/sql_max_join_size_func.result14
-rw-r--r--mysql-test/suite/sys_vars/r/sql_mode_basic.result76
-rw-r--r--mysql-test/suite/sys_vars/r/sql_mode_func.result4
-rw-r--r--mysql-test/suite/sys_vars/r/sql_notes_basic.result31
-rw-r--r--mysql-test/suite/sys_vars/r/sql_quote_show_create_basic.result31
-rw-r--r--mysql-test/suite/sys_vars/r/sql_safe_updates_basic.result31
-rw-r--r--mysql-test/suite/sys_vars/r/sql_select_limit_basic.result40
-rw-r--r--mysql-test/suite/sys_vars/r/sql_slave_skip_counter_basic.result13
-rw-r--r--mysql-test/suite/sys_vars/r/sql_warnings_basic.result38
-rw-r--r--mysql-test/suite/sys_vars/r/storage_engine_basic.result18
-rw-r--r--mysql-test/suite/sys_vars/r/sync_binlog_basic.result (renamed from mysql-test/suite/sys_vars/r/sync_binlog_basic_32.result)1
-rw-r--r--mysql-test/suite/sys_vars/r/sync_binlog_basic_64.result109
-rw-r--r--mysql-test/suite/sys_vars/r/sync_frm_basic.result4
-rw-r--r--mysql-test/suite/sys_vars/r/sync_master_info_basic.result47
-rw-r--r--mysql-test/suite/sys_vars/r/sync_relay_log_basic.result47
-rw-r--r--mysql-test/suite/sys_vars/r/sync_relay_log_info_basic.result47
-rw-r--r--mysql-test/suite/sys_vars/r/table_definition_cache_basic.result25
-rw-r--r--mysql-test/suite/sys_vars/r/table_lock_wait_timeout_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/table_open_cache_basic.result11
-rw-r--r--mysql-test/suite/sys_vars/r/thread_cache_size_basic.result47
-rw-r--r--mysql-test/suite/sys_vars/r/thread_concurrency_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/thread_stack_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/time_format_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/timed_mutexes_basic.result6
-rw-r--r--mysql-test/suite/sys_vars/r/timestamp_basic.result (renamed from mysql-test/suite/sys_vars/r/timestamp_basic_32.result)24
-rw-r--r--mysql-test/suite/sys_vars/r/timestamp_basic_64.result68
-rw-r--r--mysql-test/suite/sys_vars/r/tmp_table_size_basic.result2
-rw-r--r--mysql-test/suite/sys_vars/r/transaction_alloc_block_size_basic_32.result10
-rw-r--r--mysql-test/suite/sys_vars/r/transaction_alloc_block_size_basic_64.result20
-rw-r--r--mysql-test/suite/sys_vars/r/tx_isolation_basic.result45
-rw-r--r--mysql-test/suite/sys_vars/r/unique_checks_basic.result11
-rw-r--r--mysql-test/suite/sys_vars/r/updatable_views_with_limit_basic.result2
-rw-r--r--mysql-test/suite/sys_vars/r/wait_timeout_basic.result (renamed from mysql-test/suite/sys_vars/r/wait_timeout_basic_64.result)1
-rw-r--r--mysql-test/suite/sys_vars/r/wait_timeout_basic_32.result129
-rw-r--r--mysql-test/suite/sys_vars/t/all_vars.test60
-rw-r--r--mysql-test/suite/sys_vars/t/auto_increment_increment_basic.test9
-rw-r--r--mysql-test/suite/sys_vars/t/auto_increment_increment_func.test5
-rw-r--r--mysql-test/suite/sys_vars/t/auto_increment_offset_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/auto_increment_offset_func.test7
-rw-r--r--mysql-test/suite/sys_vars/t/autocommit_basic.test (renamed from mysql-test/suite/sys_vars/t/auto_commit_basic.test)15
-rw-r--r--mysql-test/suite/sys_vars/t/autocommit_func-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/autocommit_func.test1
-rw-r--r--mysql-test/suite/sys_vars/t/automatic_sp_privileges_basic.test3
-rw-r--r--mysql-test/suite/sys_vars/t/back_log_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/big_tables_basic.test10
-rw-r--r--mysql-test/suite/sys_vars/t/character_set_client_basic.test13
-rw-r--r--mysql-test/suite/sys_vars/t/character_set_client_func.test6
-rw-r--r--mysql-test/suite/sys_vars/t/character_set_connection_basic.test3
-rw-r--r--mysql-test/suite/sys_vars/t/character_set_database_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/character_set_database_func.test6
-rw-r--r--mysql-test/suite/sys_vars/t/character_set_filesystem_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/character_set_server_basic.test9
-rw-r--r--mysql-test/suite/sys_vars/t/character_sets_dir_basic.test24
-rw-r--r--mysql-test/suite/sys_vars/t/collation_connection_basic.test4
-rw-r--r--mysql-test/suite/sys_vars/t/collation_database_basic.test5
-rw-r--r--mysql-test/suite/sys_vars/t/collation_database_func.test3
-rw-r--r--mysql-test/suite/sys_vars/t/collation_server_basic.test4
-rw-r--r--mysql-test/suite/sys_vars/t/completion_type_basic.test31
-rw-r--r--mysql-test/suite/sys_vars/t/completion_type_func.test4
-rw-r--r--mysql-test/suite/sys_vars/t/concurrent_insert_basic.test36
-rw-r--r--mysql-test/suite/sys_vars/t/connect_timeout_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/date_format_basic.test18
-rw-r--r--mysql-test/suite/sys_vars/t/datetime_format_basic.test18
-rw-r--r--mysql-test/suite/sys_vars/t/debug_basic.test22
-rw-r--r--mysql-test/suite/sys_vars/t/debug_sync_basic.test21
-rw-r--r--mysql-test/suite/sys_vars/t/default_storage_engine_basic.test183
-rw-r--r--mysql-test/suite/sys_vars/t/default_week_format_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/delay_key_write_basic.test7
-rw-r--r--mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test21
-rw-r--r--mysql-test/suite/sys_vars/t/delayed_insert_timeout_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/disabled.def17
-rw-r--r--mysql-test/suite/sys_vars/t/div_precision_increment_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/div_precision_increment_func.test5
-rw-r--r--mysql-test/suite/sys_vars/t/engine_condition_pushdown_basic.test66
-rw-r--r--mysql-test/suite/sys_vars/t/event_scheduler_basic.test4
-rw-r--r--mysql-test/suite/sys_vars/t/expire_logs_days_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/flush_basic.test4
-rw-r--r--mysql-test/suite/sys_vars/t/flush_time_basic.test50
-rw-r--r--mysql-test/suite/sys_vars/t/foreign_key_checks_basic.test13
-rw-r--r--mysql-test/suite/sys_vars/t/foreign_key_checks_func.test3
-rw-r--r--mysql-test/suite/sys_vars/t/ft_boolean_syntax_basic.test3
-rw-r--r--mysql-test/suite/sys_vars/t/ft_boolean_syntax_func.test8
-rw-r--r--mysql-test/suite/sys_vars/t/ft_max_word_len_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/ft_min_word_len_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/ft_query_expansion_limit_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/ft_stopword_file_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/general_log_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/general_log_file_basic.test3
-rw-r--r--mysql-test/suite/sys_vars/t/general_log_func.test17
-rw-r--r--mysql-test/suite/sys_vars/t/group_concat_max_len_basic.test9
-rw-r--r--mysql-test/suite/sys_vars/t/have_profiling_basic.test23
-rw-r--r--mysql-test/suite/sys_vars/t/identity_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/ignore_builtin_innodb_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/init_connect_basic.test5
-rw-r--r--mysql-test/suite/sys_vars/t/init_file_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_checksums_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_commit_concurrency_basic.test31
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_concurrency_tickets_basic.test (renamed from mysql-test/suite/sys_vars/inc/innodb_concurrency_tickets_basic.inc)0
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_concurrency_tickets_basic_32.test9
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_concurrency_tickets_basic_64.test9
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_doublewrite_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_file_io_threads_basic.test70
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_file_per_table_basic.test6
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_lock_wait_timeout_basic.test8
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_locks_unsafe_for_binlog_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_max_dirty_pages_pct_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_max_purge_lag_basic.test (renamed from mysql-test/suite/sys_vars/inc/innodb_max_purge_lag_basic.inc)0
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_max_purge_lag_basic_32.test9
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_max_purge_lag_basic_64.test9
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_rollback_on_timeout_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_support_xa_basic.test12
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_sync_spin_loops_basic.test (renamed from mysql-test/suite/sys_vars/inc/innodb_sync_spin_loops_basic.inc)0
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_sync_spin_loops_basic_32.test9
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_sync_spin_loops_basic_64.test9
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_table_locks_basic.test10
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_thread_concurrency_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/insert_id_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/interactive_timeout_basic.test9
-rw-r--r--mysql-test/suite/sys_vars/t/keep_files_on_create_basic.test15
-rw-r--r--mysql-test/suite/sys_vars/t/key_buffer_size_basic.test (renamed from mysql-test/suite/sys_vars/inc/key_buffer_size_basic.inc)55
-rw-r--r--mysql-test/suite/sys_vars/t/key_buffer_size_basic_32.test9
-rw-r--r--mysql-test/suite/sys_vars/t/key_buffer_size_basic_64.test9
-rw-r--r--mysql-test/suite/sys_vars/t/key_buffer_size_func.test5
-rw-r--r--mysql-test/suite/sys_vars/t/key_cache_block_size_basic.test (renamed from mysql-test/suite/sys_vars/inc/key_cache_block_size_basic.inc)7
-rw-r--r--mysql-test/suite/sys_vars/t/key_cache_block_size_basic_32.test9
-rw-r--r--mysql-test/suite/sys_vars/t/key_cache_block_size_basic_64.test9
-rw-r--r--mysql-test/suite/sys_vars/t/key_cache_division_limit_basic.test (renamed from mysql-test/suite/sys_vars/inc/key_cache_division_limit_basic.inc)5
-rw-r--r--mysql-test/suite/sys_vars/t/key_cache_division_limit_basic_32.test9
-rw-r--r--mysql-test/suite/sys_vars/t/key_cache_division_limit_basic_64.test9
-rw-r--r--mysql-test/suite/sys_vars/t/large_files_support_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/large_page_size_basic.test23
-rw-r--r--mysql-test/suite/sys_vars/t/large_pages_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/last_insert_id_basic.test30
-rw-r--r--mysql-test/suite/sys_vars/t/lc_messages_basic.test35
-rw-r--r--mysql-test/suite/sys_vars/t/lc_messages_dir_basic.test23
-rw-r--r--mysql-test/suite/sys_vars/t/lc_time_names_basic.test36
-rw-r--r--mysql-test/suite/sys_vars/t/local_infile_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/locked_in_memory_basic.test20
-rw-r--r--mysql-test/suite/sys_vars/t/log_basic.test8
-rw-r--r--mysql-test/suite/sys_vars/t/log_bin_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/log_bin_trust_function_creators_basic.test14
-rw-r--r--mysql-test/suite/sys_vars/t/log_bin_trust_routine_creators_basic.test164
-rw-r--r--mysql-test/suite/sys_vars/t/log_error_basic.test18
-rw-r--r--mysql-test/suite/sys_vars/t/log_output_basic.test29
-rw-r--r--mysql-test/suite/sys_vars/t/log_queries_not_using_indexes_basic.test24
-rw-r--r--mysql-test/suite/sys_vars/t/log_slave_updates_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/log_slow_queries_basic.test170
-rw-r--r--mysql-test/suite/sys_vars/t/long_query_time_basic.test8
-rw-r--r--mysql-test/suite/sys_vars/t/low_priority_updates_basic.test16
-rw-r--r--mysql-test/suite/sys_vars/t/lower_case_file_system_basic.test23
-rw-r--r--mysql-test/suite/sys_vars/t/lower_case_table_names_basic.test23
-rw-r--r--mysql-test/suite/sys_vars/t/max_allowed_packet_basic.test12
-rw-r--r--mysql-test/suite/sys_vars/t/max_binlog_cache_size_basic.test (renamed from mysql-test/suite/sys_vars/inc/max_binlog_cache_size_basic.inc)4
-rw-r--r--mysql-test/suite/sys_vars/t/max_binlog_cache_size_basic_32.test9
-rw-r--r--mysql-test/suite/sys_vars/t/max_binlog_cache_size_basic_64.test9
-rw-r--r--mysql-test/suite/sys_vars/t/max_binlog_size_basic.test4
-rw-r--r--mysql-test/suite/sys_vars/t/max_connections_basic.test5
-rw-r--r--mysql-test/suite/sys_vars/t/max_delayed_threads_basic.test14
-rw-r--r--mysql-test/suite/sys_vars/t/max_error_count_basic.test10
-rw-r--r--mysql-test/suite/sys_vars/t/max_heap_table_size_basic.test (renamed from mysql-test/suite/sys_vars/inc/max_heap_table_size_basic.inc)13
-rw-r--r--mysql-test/suite/sys_vars/t/max_heap_table_size_basic_32.test9
-rw-r--r--mysql-test/suite/sys_vars/t/max_heap_table_size_basic_64.test9
-rw-r--r--mysql-test/suite/sys_vars/t/max_insert_delayed_threads_basic.test81
-rw-r--r--mysql-test/suite/sys_vars/t/max_join_size_basic.test42
-rw-r--r--mysql-test/suite/sys_vars/t/max_length_for_sort_data_basic.test8
-rw-r--r--mysql-test/suite/sys_vars/t/max_prepared_stmt_count_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/max_relay_log_size_basic.test5
-rw-r--r--mysql-test/suite/sys_vars/t/max_sort_length_basic.test8
-rw-r--r--mysql-test/suite/sys_vars/t/max_sp_recursion_depth_basic.test8
-rw-r--r--mysql-test/suite/sys_vars/t/max_user_connections_basic.test15
-rw-r--r--mysql-test/suite/sys_vars/t/maximum_basic-master.opt3
-rw-r--r--mysql-test/suite/sys_vars/t/maximum_basic.test20
-rw-r--r--mysql-test/suite/sys_vars/t/myisam_data_pointer_size_basic.test7
-rw-r--r--mysql-test/suite/sys_vars/t/myisam_data_pointer_size_func.test2
-rw-r--r--mysql-test/suite/sys_vars/t/myisam_mmap_size_basic.test23
-rw-r--r--mysql-test/suite/sys_vars/t/myisam_recover_options_basic.test18
-rw-r--r--mysql-test/suite/sys_vars/t/myisam_stats_method_basic.test24
-rw-r--r--mysql-test/suite/sys_vars/t/myisam_use_mmap_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/named_pipe_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/net_buffer_length_basic.test18
-rw-r--r--mysql-test/suite/sys_vars/t/net_read_timeout_basic.test9
-rw-r--r--mysql-test/suite/sys_vars/t/net_write_timeout_basic.test9
-rw-r--r--mysql-test/suite/sys_vars/t/new_basic.test15
-rw-r--r--mysql-test/suite/sys_vars/t/old_alter_table_basic.test33
-rw-r--r--mysql-test/suite/sys_vars/t/old_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/old_passwords_basic.test15
-rw-r--r--mysql-test/suite/sys_vars/t/open_files_limit_basic.test24
-rw-r--r--mysql-test/suite/sys_vars/t/optimizer_prune_level_basic.test5
-rw-r--r--mysql-test/suite/sys_vars/t/optimizer_search_depth_basic.test9
-rw-r--r--mysql-test/suite/sys_vars/t/optimizer_switch_basic.test41
-rw-r--r--mysql-test/suite/sys_vars/t/performance_schema_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/performance_schema_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_events_waits_history_long_size_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_events_waits_history_long_size_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_events_waits_history_size_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_events_waits_history_size_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_cond_classes_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_cond_classes_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_cond_instances_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_cond_instances_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_file_classes_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_file_classes_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_file_handles_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_file_handles_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_file_instances_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_file_instances_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_mutex_classes_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_mutex_classes_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_mutex_instances_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_mutex_instances_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_rwlock_classes_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_rwlock_classes_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_rwlock_instances_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_rwlock_instances_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_table_handles_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_table_handles_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_table_instances_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_table_instances_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_thread_classes_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_thread_classes_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_thread_instances_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_thread_instances_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pid_file_basic.test23
-rw-r--r--mysql-test/suite/sys_vars/t/plugin_dir_basic.test29
-rw-r--r--mysql-test/suite/sys_vars/t/port_basic.test23
-rw-r--r--mysql-test/suite/sys_vars/t/preload_buffer_size_basic.test9
-rw-r--r--mysql-test/suite/sys_vars/t/profiling_basic.test35
-rw-r--r--mysql-test/suite/sys_vars/t/profiling_history_size_basic.test43
-rw-r--r--mysql-test/suite/sys_vars/t/protocol_version_basic.test18
-rw-r--r--mysql-test/suite/sys_vars/t/pseudo_thread_id_basic.test32
-rw-r--r--mysql-test/suite/sys_vars/t/query_cache_type_basic.test31
-rw-r--r--mysql-test/suite/sys_vars/t/query_cache_wlock_invalidate_basic.test18
-rw-r--r--mysql-test/suite/sys_vars/t/query_prealloc_size_basic.test (renamed from mysql-test/suite/sys_vars/inc/query_prealloc_size_basic.inc)9
-rw-r--r--mysql-test/suite/sys_vars/t/query_prealloc_size_basic_32.test9
-rw-r--r--mysql-test/suite/sys_vars/t/query_prealloc_size_basic_64.test9
-rw-r--r--mysql-test/suite/sys_vars/t/rand_seed1_basic.test30
-rw-r--r--mysql-test/suite/sys_vars/t/rand_seed2_basic.test30
-rw-r--r--mysql-test/suite/sys_vars/t/read_buffer_size_basic.test33
-rw-r--r--mysql-test/suite/sys_vars/t/read_only_basic.test7
-rw-r--r--mysql-test/suite/sys_vars/t/read_rnd_buffer_size_basic.test52
-rw-r--r--mysql-test/suite/sys_vars/t/relay_log_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/relay_log_index_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/relay_log_info_file_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/relay_log_purge_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/relay_log_recovery_basic.test39
-rw-r--r--mysql-test/suite/sys_vars/t/relay_log_space_limit_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/report_host_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/report_password_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/report_port_basic.test24
-rw-r--r--mysql-test/suite/sys_vars/t/report_user_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_init_slave_func.test7
-rw-r--r--mysql-test/suite/sys_vars/t/secure_auth_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/secure_file_priv_basic.test23
-rw-r--r--mysql-test/suite/sys_vars/t/server_id_basic.test (renamed from mysql-test/suite/sys_vars/inc/server_id_basic.inc)7
-rw-r--r--mysql-test/suite/sys_vars/t/server_id_basic_32.test9
-rw-r--r--mysql-test/suite/sys_vars/t/server_id_basic_64.test9
-rw-r--r--mysql-test/suite/sys_vars/t/shared_memory_base_name_basic.test24
-rw-r--r--mysql-test/suite/sys_vars/t/shared_memory_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/skip_external_locking_basic.test18
-rw-r--r--mysql-test/suite/sys_vars/t/skip_networking_basic.test18
-rw-r--r--mysql-test/suite/sys_vars/t/skip_show_database_basic.test18
-rw-r--r--mysql-test/suite/sys_vars/t/slave_allow_batching_basic.test4
-rw-r--r--mysql-test/suite/sys_vars/t/slave_compressed_protocol_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/slave_exec_mode_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/slave_load_tmpdir_basic.test24
-rw-r--r--mysql-test/suite/sys_vars/t/slave_net_timeout_basic.test7
-rw-r--r--mysql-test/suite/sys_vars/t/slave_skip_errors_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/slave_type_conversions_basic.test24
-rw-r--r--mysql-test/suite/sys_vars/t/slow_launch_time_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/slow_query_log_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/slow_query_log_file_basic.test3
-rw-r--r--mysql-test/suite/sys_vars/t/socket_basic.test23
-rw-r--r--mysql-test/suite/sys_vars/t/sql_auto_is_null_basic.test59
-rw-r--r--mysql-test/suite/sys_vars/t/sql_big_selects_basic.test14
-rw-r--r--mysql-test/suite/sys_vars/t/sql_big_tables_basic.test15
-rw-r--r--mysql-test/suite/sys_vars/t/sql_buffer_result_basic.test23
-rw-r--r--mysql-test/suite/sys_vars/t/sql_log_bin_basic.test12
-rw-r--r--mysql-test/suite/sys_vars/t/sql_log_off_basic.test15
-rw-r--r--mysql-test/suite/sys_vars/t/sql_log_update_basic.test35
-rw-r--r--mysql-test/suite/sys_vars/t/sql_low_priority_updates_basic.test22
-rw-r--r--mysql-test/suite/sys_vars/t/sql_max_join_size_basic.test42
-rw-r--r--mysql-test/suite/sys_vars/t/sql_mode_basic.test50
-rw-r--r--mysql-test/suite/sys_vars/t/sql_notes_basic.test15
-rw-r--r--mysql-test/suite/sys_vars/t/sql_quote_show_create_basic.test15
-rw-r--r--mysql-test/suite/sys_vars/t/sql_safe_updates_basic.test15
-rw-r--r--mysql-test/suite/sys_vars/t/sql_select_limit_basic.test33
-rw-r--r--mysql-test/suite/sys_vars/t/sql_slave_skip_counter_basic.test9
-rw-r--r--mysql-test/suite/sys_vars/t/sql_warnings_basic.test22
-rw-r--r--mysql-test/suite/sys_vars/t/storage_engine_basic.test17
-rw-r--r--mysql-test/suite/sys_vars/t/sync_binlog_basic.test (renamed from mysql-test/suite/sys_vars/inc/sync_binlog_basic.inc)1
-rw-r--r--mysql-test/suite/sys_vars/t/sync_binlog_basic_32.test9
-rw-r--r--mysql-test/suite/sys_vars/t/sync_binlog_basic_64.test9
-rw-r--r--mysql-test/suite/sys_vars/t/sync_frm_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/sync_master_info_basic.test43
-rw-r--r--mysql-test/suite/sys_vars/t/sync_relay_log_basic.test44
-rw-r--r--mysql-test/suite/sys_vars/t/sync_relay_log_info_basic.test44
-rw-r--r--mysql-test/suite/sys_vars/t/table_definition_cache_basic.test5
-rw-r--r--mysql-test/suite/sys_vars/t/table_lock_wait_timeout_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/table_open_cache_basic.test9
-rw-r--r--mysql-test/suite/sys_vars/t/thread_cache_size_basic.test43
-rw-r--r--mysql-test/suite/sys_vars/t/thread_concurrency_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/thread_stack_basic.test23
-rw-r--r--mysql-test/suite/sys_vars/t/time_format_basic.test18
-rw-r--r--mysql-test/suite/sys_vars/t/timed_mutexes_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/timestamp_basic.test (renamed from mysql-test/suite/sys_vars/inc/timestamp_basic.inc)16
-rw-r--r--mysql-test/suite/sys_vars/t/timestamp_basic_32.test9
-rw-r--r--mysql-test/suite/sys_vars/t/timestamp_basic_64.test9
-rw-r--r--mysql-test/suite/sys_vars/t/tx_isolation_basic.test43
-rw-r--r--mysql-test/suite/sys_vars/t/unique_checks_basic.test12
-rw-r--r--mysql-test/suite/sys_vars/t/updatable_views_with_limit_basic.test2
-rw-r--r--mysql-test/suite/sys_vars/t/wait_timeout_basic.test (renamed from mysql-test/suite/sys_vars/inc/wait_timeout_basic.inc)2
-rw-r--r--mysql-test/suite/sys_vars/t/wait_timeout_basic_32.test9
-rw-r--r--mysql-test/suite/sys_vars/t/wait_timeout_basic_64.test9
-rw-r--r--mysql-test/t/alias.test129
-rw-r--r--mysql-test/t/alter_table.test15
-rw-r--r--mysql-test/t/archive.test16
-rwxr-xr-xmysql-test/t/backup-master.sh5
-rw-r--r--mysql-test/t/backup.test104
-rw-r--r--mysql-test/t/bug46080-master.opt2
-rw-r--r--mysql-test/t/bug46080.test2
-rw-r--r--mysql-test/t/cast.test2
-rw-r--r--mysql-test/t/change_user.test2
-rw-r--r--mysql-test/t/commit_1innodb.test2
-rw-r--r--mysql-test/t/create.test53
-rw-r--r--mysql-test/t/csv.test80
-rw-r--r--mysql-test/t/ctype_big5.test61
-rw-r--r--mysql-test/t/ctype_collate.test12
-rw-r--r--mysql-test/t/ctype_cp1251.test10
-rw-r--r--mysql-test/t/ctype_cp932_binlog_stm.test85
-rw-r--r--mysql-test/t/ctype_errors.test47
-rw-r--r--mysql-test/t/ctype_eucjpms.test86
-rw-r--r--mysql-test/t/ctype_euckr.test65
-rw-r--r--mysql-test/t/ctype_gb2312.test91
-rw-r--r--mysql-test/t/ctype_gbk.test91
-rw-r--r--mysql-test/t/ctype_ldml.test53
-rw-r--r--mysql-test/t/ctype_sjis.test75
-rw-r--r--mysql-test/t/ctype_ujis.test85
-rw-r--r--mysql-test/t/ctype_utf8.test67
-rw-r--r--mysql-test/t/date_formats.test139
-rw-r--r--mysql-test/t/ddl_i18n_koi8r.test26
-rw-r--r--mysql-test/t/ddl_i18n_utf8.test26
-rw-r--r--mysql-test/t/delayed.test37
-rw-r--r--mysql-test/t/delete.test155
-rw-r--r--mysql-test/t/deprecated_features.test27
-rw-r--r--mysql-test/t/derived.test2
-rw-r--r--mysql-test/t/dirty_close.test33
-rw-r--r--mysql-test/t/disabled.def6
-rw-r--r--mysql-test/t/drop-no_root.test85
-rw-r--r--mysql-test/t/drop.test54
-rw-r--r--mysql-test/t/drop_debug.test35
-rw-r--r--mysql-test/t/errors.test73
-rw-r--r--mysql-test/t/events_2.test9
-rw-r--r--mysql-test/t/events_bugs.test8
-rw-r--r--mysql-test/t/events_scheduling.test26
-rw-r--r--mysql-test/t/exampledb.test22
-rw-r--r--mysql-test/t/explain.test12
-rw-r--r--mysql-test/t/fulltext.test9
-rw-r--r--mysql-test/t/func_gconcat.test32
-rw-r--r--mysql-test/t/func_isnull.test12
-rw-r--r--mysql-test/t/func_math.test11
-rw-r--r--mysql-test/t/func_sapdb.test22
-rw-r--r--mysql-test/t/func_str.test41
-rw-r--r--mysql-test/t/func_time.test10
-rw-r--r--mysql-test/t/gis.test3
-rw-r--r--mysql-test/t/grant.test352
-rw-r--r--mysql-test/t/grant4.test146
-rw-r--r--mysql-test/t/group_by.test3
-rw-r--r--mysql-test/t/group_min_max.test125
-rw-r--r--mysql-test/t/index_merge_innodb.test14
-rw-r--r--mysql-test/t/index_merge_myisam.test1
-rw-r--r--mysql-test/t/information_schema-big.test48
-rw-r--r--mysql-test/t/information_schema.test107
-rw-r--r--mysql-test/t/information_schema_db.test12
-rw-r--r--mysql-test/t/information_schema_parameters.test251
-rw-r--r--mysql-test/t/information_schema_routines.test247
-rw-r--r--mysql-test/t/innodb-autoinc-44030.test34
-rw-r--r--mysql-test/t/innodb-autoinc.test71
-rw-r--r--mysql-test/t/innodb-consistent-master.opt1
-rw-r--r--mysql-test/t/innodb-consistent.test (renamed from mysql-test/suite/innodb/t/innodb-consistent.test)117
-rw-r--r--mysql-test/t/innodb-master.opt2
-rw-r--r--mysql-test/t/innodb-semi-consistent-master.opt2
-rw-r--r--mysql-test/t/innodb.test26
-rw-r--r--mysql-test/t/innodb_bug34300.test7
-rw-r--r--mysql-test/t/innodb_bug42101-nonzero-master.opt2
-rw-r--r--mysql-test/t/innodb_bug42101-nonzero.test4
-rw-r--r--mysql-test/t/innodb_bug42101.test4
-rw-r--r--mysql-test/t/innodb_bug44369.test10
-rw-r--r--mysql-test/t/innodb_bug44571.test (renamed from mysql-test/suite/innodb/t/innodb_bug44571.test)1
-rw-r--r--mysql-test/t/innodb_bug46000.test8
-rw-r--r--mysql-test/t/innodb_mysql.test18
-rw-r--r--mysql-test/t/insert.test38
-rw-r--r--mysql-test/t/insert_notembedded.test1
-rw-r--r--mysql-test/t/ipv4_as_ipv6-master.opt1
-rw-r--r--mysql-test/t/ipv4_as_ipv6.test65
-rw-r--r--mysql-test/t/ipv4_as_ipv6_win-master.opt1
-rw-r--r--mysql-test/t/ipv4_as_ipv6_win.test31
-rw-r--r--mysql-test/t/ipv6-master.opt1
-rw-r--r--mysql-test/t/ipv6.test79
-rw-r--r--mysql-test/t/ipv6_win-master.opt1
-rw-r--r--mysql-test/t/ipv6_win.test39
-rw-r--r--mysql-test/t/join_optimizer.test45
-rw-r--r--mysql-test/t/key_cache.test10
-rw-r--r--mysql-test/t/loadxml.test108
-rw-r--r--mysql-test/t/locale.test38
-rw-r--r--mysql-test/t/lock.test6
-rw-r--r--mysql-test/t/lock_multi.test40
-rw-r--r--mysql-test/t/lock_sync.test118
-rw-r--r--mysql-test/t/log_state.test97
-rw-r--r--mysql-test/t/log_state_bug33693-master.opt1
-rw-r--r--mysql-test/t/log_state_bug33693.test18
-rw-r--r--mysql-test/t/log_tables.test21
-rw-r--r--mysql-test/t/lowercase_table2.test72
-rw-r--r--mysql-test/t/merge.test60
-rw-r--r--mysql-test/t/metadata.test57
-rw-r--r--mysql-test/t/myisam.test2
-rw-r--r--mysql-test/t/myisam_crash_before_flush_keys.test3
-rw-r--r--mysql-test/t/myisampack.test114
-rw-r--r--mysql-test/t/mysql-bug45236-master.opt1
-rw-r--r--mysql-test/t/mysql.test13
-rw-r--r--mysql-test/t/mysql_locale_posix.test205
-rw-r--r--mysql-test/t/mysql_upgrade.test8
-rw-r--r--mysql-test/t/mysqladmin.test6
-rw-r--r--mysql-test/t/mysqlbinlog.test46
-rw-r--r--mysql-test/t/mysqlbinlog2.test20
-rw-r--r--mysql-test/t/mysqlcheck.test2
-rw-r--r--mysql-test/t/mysqld--help-notwin.test24
-rw-r--r--mysql-test/t/mysqld--help-win.test24
-rw-r--r--mysql-test/t/mysqldump.test41
-rw-r--r--mysql-test/t/mysqlshow.test2
-rw-r--r--mysql-test/t/odbc.test4
-rw-r--r--mysql-test/t/optimizer_switch_eng_cond_pushdown1-master.opt1
-rw-r--r--mysql-test/t/optimizer_switch_eng_cond_pushdown1.test5
-rw-r--r--mysql-test/t/optimizer_switch_eng_cond_pushdown2-master.opt1
-rw-r--r--mysql-test/t/optimizer_switch_eng_cond_pushdown2.test5
-rw-r--r--mysql-test/t/outfile.test2
-rw-r--r--mysql-test/t/parser.test4
-rw-r--r--mysql-test/t/partition.test68
-rw-r--r--mysql-test/t/partition_archive.test21
-rw-r--r--mysql-test/t/partition_column.test443
-rw-r--r--mysql-test/t/partition_column_prune.test71
-rw-r--r--mysql-test/t/partition_datatype.test9
-rw-r--r--mysql-test/t/partition_error.test16
-rw-r--r--mysql-test/t/partition_innodb.test58
-rw-r--r--mysql-test/t/partition_innodb_builtin.test67
-rw-r--r--mysql-test/t/partition_innodb_plugin.test1
-rw-r--r--mysql-test/t/partition_innodb_stmt.test2
-rw-r--r--mysql-test/t/partition_key_cache.test251
-rw-r--r--mysql-test/t/partition_list.test2
-rw-r--r--mysql-test/t/partition_mgm_err.test2
-rw-r--r--mysql-test/t/partition_pruning.test39
-rw-r--r--mysql-test/t/partition_range.test85
-rw-r--r--mysql-test/t/partition_sync.test41
-rw-r--r--mysql-test/t/partition_truncate.test26
-rw-r--r--mysql-test/t/partition_utf8.test42
-rw-r--r--mysql-test/t/plugin.test6
-rw-r--r--mysql-test/t/profiling.test6
-rw-r--r--mysql-test/t/ps.test205
-rw-r--r--mysql-test/t/ps_1general.test3
-rw-r--r--mysql-test/t/ps_not_windows.test4
-rw-r--r--mysql-test/t/query_cache.test120
-rw-r--r--mysql-test/t/query_cache_disabled-master.opt1
-rw-r--r--mysql-test/t/query_cache_disabled.test15
-rw-r--r--mysql-test/t/query_cache_notembedded.test1
-rw-r--r--mysql-test/t/rpl_mysqldump_slave.test25
-rw-r--r--mysql-test/t/select.test40
-rw-r--r--mysql-test/t/select_safe.test4
-rw-r--r--mysql-test/t/shm.test10
-rw-r--r--mysql-test/t/show_check.test27
-rw-r--r--mysql-test/t/signal.test2685
-rw-r--r--mysql-test/t/signal_code.test57
-rw-r--r--mysql-test/t/signal_demo1.test345
-rw-r--r--mysql-test/t/signal_demo2.test207
-rw-r--r--mysql-test/t/signal_demo3.test159
-rw-r--r--mysql-test/t/signal_sqlmode.test123
-rw-r--r--mysql-test/t/skip_name_resolve.test2
-rw-r--r--mysql-test/t/sp-error.test77
-rw-r--r--mysql-test/t/sp-no-code.test12
-rw-r--r--mysql-test/t/sp-ucs2.test120
-rw-r--r--mysql-test/t/sp-vars.test39
-rw-r--r--mysql-test/t/sp.test199
-rw-r--r--mysql-test/t/sp_trans.test46
-rw-r--r--mysql-test/t/sp_trans_log.test3
-rw-r--r--mysql-test/t/sql_mode.test15
-rw-r--r--mysql-test/t/status.test15
-rw-r--r--mysql-test/t/subselect.test232
-rw-r--r--mysql-test/t/subselect3.test47
-rw-r--r--mysql-test/t/system_mysql_db_fix40123.test6
-rw-r--r--mysql-test/t/system_mysql_db_fix50030.test8
-rw-r--r--mysql-test/t/system_mysql_db_fix50117.test6
-rw-r--r--mysql-test/t/trigger.test92
-rw-r--r--mysql-test/t/type_blob.test34
-rw-r--r--mysql-test/t/type_date.test18
-rw-r--r--mysql-test/t/type_decimal.test22
-rw-r--r--mysql-test/t/type_float.test33
-rw-r--r--mysql-test/t/type_newdecimal.test6
-rw-r--r--mysql-test/t/type_time.test21
-rw-r--r--mysql-test/t/type_timestamp.test13
-rw-r--r--mysql-test/t/type_varchar.test18
-rw-r--r--mysql-test/t/udf.test14
-rw-r--r--mysql-test/t/union.test124
-rw-r--r--mysql-test/t/user_limits.test2
-rw-r--r--mysql-test/t/user_var.test2
-rw-r--r--mysql-test/t/variables+c.test2
-rw-r--r--mysql-test/t/variables.test219
-rw-r--r--mysql-test/t/view.test61
-rw-r--r--mysql-test/t/view_grant.test8
-rw-r--r--mysql-test/t/warnings.test5
1943 files changed, 197439 insertions, 174220 deletions
diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am
index b1d0e85c70e..6d870f4bcdf 100644
--- a/mysql-test/Makefile.am
+++ b/mysql-test/Makefile.am
@@ -1,4 +1,4 @@
-# Copyright (C) 2000-2006 MySQL AB
+# Copyright (C) 2000-2006 MySQL AB, 2008-2009 Sun Microsystems, Inc.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
@@ -75,6 +75,8 @@ EXTRA_DIST = README \
# List of directories containing test + result files and the
# related test data files that should be copied
+# If you want to add a new suite, please check DEFAULT_SUITES in
+# mysql-test-run.pl.
TEST_DIRS = t r include std_data std_data/parts collections \
std_data/ndb_backup50 std_data/ndb_backup51 \
std_data/ndb_backup51_data_be std_data/ndb_backup51_data_le \
@@ -99,7 +101,10 @@ 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/innodb suite/innodb/t suite/innodb/r suite/innodb/include
+ suite/innodb suite/innodb/t suite/innodb/r suite/innodb/include \
+ suite/sys_vars suite/sys_vars/t suite/sys_vars/inc suite/sys_vars/r \
+ suite/perfschema suite/perfschema/t suite/perfschema/r \
+ suite/perfschema/include
# Used by dist-hook and install-data-local to copy all
# test files into either dist or install directory
diff --git a/mysql-test/collections/default.experimental b/mysql-test/collections/default.experimental
index 9c4055cd19e..e62c88db5cb 100644
--- a/mysql-test/collections/default.experimental
+++ b/mysql-test/collections/default.experimental
@@ -1,28 +1,78 @@
# For easier human reading (MTR doesn't care), please keep entries
# in alphabetical order. This also helps with merge conflict resolution.
+binlog.binlog_tmp_table* # Bug#45578:2009-07-10 alik Test binlog_tmp_table fails ramdonly on PB2: Unknown table 't2'
binlog.binlog_multi_engine # joro : NDB tests marked as experimental as agreed with bochklin
funcs_1.charset_collation_1 # depends on compile-time decisions
-funcs_1.is_cml_ndb # joro : NDB tests marked as experimental as agreed with bochklin
-funcs_1.is_columns_ndb # joro : NDB tests marked as experimental as agreed with bochklin
-funcs_1.is_engines_ndb # joro : NDB tests marked as experimental as agreed with bochklin
-funcs_1.is_tables_ndb # joro : NDB tests marked as experimental as agreed with bochklin
-funcs_1.ndb* # joro : NDB tests marked as experimental as agreed with bochklin
-
-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.plugin_load @solaris # Bug#42144
+main.information_schema # Bug#47449 2009-09-19 alik main.information_schema and innodb.innodb_information_schema fail sporadically
+main.lock_multi_bug38499 # Bug#47448 2009-09-19 alik main.lock_multi_bug38499 times out sporadically
+main.lock_multi_bug38691 @solaris # Bug#47792 2009-10-02 alik main.lock_multi_bug38691 times out sporadically on Solaris 10
+main.log_tables # Bug#47924 2009-10-08 alik main.log_tables times out sporadically
+main.outfile_loaddata @solaris # Bug#46895 2010-01-20 alik Test "outfile_loaddata" fails (reproducible)
+main.plugin # Bug#47146 Linking problem with example plugin when dtrace enabled
+main.signal_demo3 @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
+main.sp @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
+
+perfschema.tampered_perfschema_table1 @windows # Bug#50478 2010-01-20 alik perfschema.tampered_perfschema_table1 fails sporadically on Windows and Solaris
+perfschema.tampered_perfschema_table1 @solaris # Bug#50478 2010-01-20 alik perfschema.tampered_perfschema_table1 fails sporadically on Windows and Solaris
-ndb.* # joro : NDB tests marked as experimental as agreed with bochklin
+rpl.rpl_heartbeat_basic # BUG#43828 2009-10-22 luis fails sporadically
+rpl.rpl_heartbeat_2slaves # BUG#43828 2009-10-22 luis fails sporadically
+rpl.rpl_innodb_bug28430* # Bug#46029
+rpl.rpl_innodb_bug30888* @solaris # Bug#47646 2009-09-25 alik rpl.rpl_innodb_bug30888 fails sporadically on Solaris
+rpl.rpl_killed_ddl @windows # Bug#47638 2010-01-20 alik The rpl_killed_ddl test fails on Windows
+rpl.rpl_plugin_load* @solaris # Bug#47146
+rpl.rpl_row_sp011* @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
+rpl.rpl_slave_load_remove_tmpfile* @windows # Bug#50474 2010-01-20 alik rpl_slave_load_remove_tmpfile failed on windows debug enabled binary
+rpl.rpl_sync* @windows # Bug#50473 2010-01-20 alik rpl_sync fails on windows debug enabled binaries
+rpl.rpl_timezone* # Bug#47017 2009-10-27 alik rpl_timezone fails on PB-2 with mismatch error
-rpl.rpl_innodb_bug28430* @solaris # Bug#46029
+sys_vars.max_sp_recursion_depth_func @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
+sys_vars.delayed_insert_limit_func # Bug#50435 2010-01-25 alik sys_vars.delayed_insert_limit_func fails on Ubuntu x86_64 in debug mode
-rpl_ndb.* # joro : NDB tests marked as experimental as agreed with bochklin
+# Declare all NDB-tests in ndb and rpl_ndb test suites experimental.
+# Usually the test cases from ndb and rpl_ndb test suites are not run in PB,
+# but they run by gcov.
+#
+
+ndb.*
+rpl_ndb.*
rpl_ndb.rpl_ndb_log # Bug#38998
-stress.ddl_ndb # joro : NDB tests marked as experimental as agreed with bochklin
+# Declare all NDB-tests in other test suites experimental.
+
+stress.ddl_ndb
+
+sys_vars.ndb_log_update_as_write_basic
+sys_vars.have_ndbcluster_basic
+sys_vars.ndb_log_updated_only_basic
+
+funcs_1.ndb_storedproc_10
+funcs_1.ndb_bitdata
+funcs_1.ndb_trig_03
+funcs_1.ndb_trig_0102
+funcs_1.is_tables_ndb
+funcs_1.is_columns_ndb
+funcs_1.ndb_trig_0407
+funcs_1.ndb_trig_1011ext
+funcs_1.ndb_storedproc_06
+funcs_1.ndb_views
+funcs_1.is_cml_ndb
+funcs_1.ndb_storedproc_02
+funcs_1.ndb_storedproc_03
+funcs_1.ndb_trig_03e
+funcs_1.is_engines_ndb
+funcs_1.ndb_trig_08
+funcs_1.ndb_storedproc_07
+funcs_1.ndb_storedproc_08
+funcs_1.ndb_func_view
+funcs_1.ndb_trig_09
+funcs_1.ndb_cursors
+
+funcs_2.ndb_charset
parts.ndb_dd_backuprestore # joro : NDB tests marked as experimental as agreed with bochklin
parts.part_supported_sql_func_ndb # joro : NDB tests marked as experimental as agreed with bochklin
diff --git a/mysql-test/collections/default.weekly b/mysql-test/collections/default.weekly
index e69de29bb2d..452a79eacbd 100644
--- a/mysql-test/collections/default.weekly
+++ b/mysql-test/collections/default.weekly
@@ -0,0 +1 @@
+perl mysql-test-run.pl --timer --force --comment=1st --experimental=collections/default.experimental 1st
diff --git a/mysql-test/collections/mysql-next-mr.push b/mysql-test/collections/mysql-next-mr.push
new file mode 100644
index 00000000000..b84f43eea7c
--- /dev/null
+++ b/mysql-test/collections/mysql-next-mr.push
@@ -0,0 +1,5 @@
+perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --suite=main,binlog,innodb,federated,rpl,sys_vars,perfschema
+perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=ps_row --vardir=var-ps_row --ps-protocol --mysqld=--binlog-format=row --suite=main,binlog,innodb,federated,rpl,sys_vars,perfschema
+perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=embedded --vardir=var-emebbed --embedded --suite=main,binlog,innodb,federated,rpl,sys_vars,perfschema
+perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=rpl_binlog_row --vardir=var-rpl_binlog_row --mysqld=--binlog-format=row --suite=rpl,binlog
+perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=funcs_1 --vardir=var-funcs_1 --suite=funcs_1
diff --git a/mysql-test/collections/mysql-trunk.push b/mysql-test/collections/mysql-trunk.push
new file mode 100644
index 00000000000..b84f43eea7c
--- /dev/null
+++ b/mysql-test/collections/mysql-trunk.push
@@ -0,0 +1,5 @@
+perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --suite=main,binlog,innodb,federated,rpl,sys_vars,perfschema
+perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=ps_row --vardir=var-ps_row --ps-protocol --mysqld=--binlog-format=row --suite=main,binlog,innodb,federated,rpl,sys_vars,perfschema
+perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=embedded --vardir=var-emebbed --embedded --suite=main,binlog,innodb,federated,rpl,sys_vars,perfschema
+perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=rpl_binlog_row --vardir=var-rpl_binlog_row --mysqld=--binlog-format=row --suite=rpl,binlog
+perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=funcs_1 --vardir=var-funcs_1 --suite=funcs_1
diff --git a/mysql-test/extra/binlog_tests/binlog.test b/mysql-test/extra/binlog_tests/binlog.test
index b819996acb0..b79093b6740 100644
--- a/mysql-test/extra/binlog_tests/binlog.test
+++ b/mysql-test/extra/binlog_tests/binlog.test
@@ -43,10 +43,10 @@ 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;
+show binlog events in 'master-bin.000001' from 107;
--replace_column 2 # 5 #
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
-show binlog events in 'master-bin.000002' from 106;
+show binlog events in 'master-bin.000002' from 107;
#
diff --git a/mysql-test/extra/binlog_tests/binlog_failure_mixing_engines.test b/mysql-test/extra/binlog_tests/binlog_failure_mixing_engines.test
deleted file mode 100644
index 54f3c538c79..00000000000
--- a/mysql-test/extra/binlog_tests/binlog_failure_mixing_engines.test
+++ /dev/null
@@ -1,300 +0,0 @@
-################################################################################
-# Let
-# - B be begin, C commit and R rollback.
-# - T a statement that accesses and changes only transactional tables, i.e.
-# T-tables
-# - N a statement that accesses and changes only non-transactional tables,
-# i.e, N-tables.
-# - M be a mixed statement, i.e. a statement that updates both T- and
-# N-tables.
-# - M* be a mixed statement that fails while updating either a T
-# or N-table.
-# - N* be a statement that fails while updating a N-table.
-#
-# In this test case, when changes are logged as rows either in the RBR or MIXED
-# modes, we check if a M* statement that happens early in a transaction is
-# written to the binary log outside the boundaries of the transaction and
-# wrapped up in a BEGIN/ROLLBACK. This is done to keep the slave consistent with
-# the master as the rollback will keep the changes on N-tables and undo them on
-# T-tables. In particular, we expect the following behavior:
-#
-# 1. B M* T C would generate in the binlog B M* R B T C.
-# 2. B M M* C would generate in the binlog B M M* C.
-# 3. B M* M* T C would generate in the binlog B M* R B M* R B T C.
-#
-# SBR is not considered in this test because a failing statement is written to
-# the binary along with the error code such that a slave executes and rolls it
-# back, thus undoing the effects on T-tables.
-#
-# Note that, in the first case, we are not preserving history from the master as
-# we are introducing a rollback that never happened. However, this seems to be
-# more acceptable than making the slave diverge. In the second case, the slave
-# will diverge as the changes on T-tables that originated from the M statement
-# are rolled back on the master but not on the slave. Unfortunately, we cannot
-# simply roll the transaction back as this would undo any uncommitted changes
-# on T-tables.
-#
-# We check two more cases. First, INSERT...SELECT* which produces the following
-# results:
-#
-# 1. B T INSERT M...SELECT* C" with an error in INSERT M...SELECT* generates in
-# the binlog the following entries: "Nothing".
-# 2. B INSERT M...SELECT* C" with an error in INSERT M...SELECT* generates in
-# the binlog the following entries: B INSERT M...SELECT* R.
-#
-# Finally, we also check if any N statement that happens early in a transaction
-# (i.e. before any T or M statement) is written to the binary log outside the
-# boundaries of the transaction. In particular, we expect the following
-# behavior:
-#
-# 1. B N N T C would generate in the binlog B N C B N C B T C.
-# 2. B N N T R would generate in the binlog B N C B N C B T R.
-# 3. B N* N* T C would generate in the binlog B N R B N R B T C.
-# 4. B N* N* T R would generate in the binlog B N R B N R B T R.
-# 5. B N N T N T C would generate in the binlog B N C B N C B T N T C.
-# 6. B N N T N T R would generate in the binlog the B N C B N C B T N T R.
-#
-# Such issues do not happen in SBR. In RBR and MBR, a full-fledged fix will be
-# pushed after the WL#2687.
-#
-# Please, remove this test case after pushing WL#2687.
-################################################################################
-
-
---echo ###################################################################################
---echo # CONFIGURATION
---echo ###################################################################################
-CREATE TABLE nt_1 (a text, b int PRIMARY KEY) ENGINE = MyISAM;
-CREATE TABLE nt_2 (a text, b int PRIMARY KEY) ENGINE = MyISAM;
-CREATE TABLE tt_1 (a text, b int PRIMARY KEY) ENGINE = Innodb;
-CREATE TABLE tt_2 (a text, b int PRIMARY KEY) ENGINE = Innodb;
-
-DELIMITER |;
-
-CREATE TRIGGER tr_i_tt_1_to_nt_1 BEFORE INSERT ON tt_1 FOR EACH ROW
-BEGIN
- INSERT INTO nt_1 VALUES (NEW.a, NEW.b);
-END|
-
-CREATE TRIGGER tr_i_nt_2_to_tt_2 BEFORE INSERT ON nt_2 FOR EACH ROW
-BEGIN
- INSERT INTO tt_2 VALUES (NEW.a, NEW.b);
-END|
-
-DELIMITER ;|
-
---echo ###################################################################################
---echo # CHECK HISTORY IN BINLOG
---echo ###################################################################################
---echo
---echo
---echo
---echo *** "B M* T C" with error in M* generates in the binlog the "B M* R B T C" entries
---echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
-INSERT INTO nt_1 VALUES ("new text 1", 1);
-BEGIN;
---error ER_DUP_ENTRY
-INSERT INTO tt_1 VALUES (USER(), 2), (USER(), 1);
-INSERT INTO tt_2 VALUES ("new text 3", 3);
-COMMIT;
---source include/show_binlog_events.inc
-
---echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
-INSERT INTO tt_2 VALUES ("new text 4", 4);
-BEGIN;
---error ER_DUP_ENTRY
-INSERT INTO nt_2 VALUES (USER(), 5), (USER(), 4);
-INSERT INTO tt_2 VALUES ("new text 6", 6);
-COMMIT;
---source include/show_binlog_events.inc
-
---echo
---echo
---echo
---echo *** "B M M* T C" with error in M* generates in the binlog the "B M M* T C" entries
---echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
-INSERT INTO nt_1 VALUES ("new text 10", 10);
-BEGIN;
-INSERT INTO tt_1 VALUES ("new text 7", 7), ("new text 8", 8);
---error ER_DUP_ENTRY
-INSERT INTO tt_1 VALUES (USER(), 9), (USER(), 10);
-INSERT INTO tt_2 VALUES ("new text 11", 11);
-COMMIT;
---source include/show_binlog_events.inc
-
---echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
-INSERT INTO tt_2 VALUES ("new text 15", 15);
-BEGIN;
-INSERT INTO nt_2 VALUES ("new text 12", 12), ("new text 13", 13);
---error ER_DUP_ENTRY
-INSERT INTO nt_2 VALUES (USER(), 14), (USER(), 15);
-INSERT INTO tt_2 VALUES ("new text 16", 16);
-COMMIT;
---source include/show_binlog_events.inc
-
-
---echo
---echo
---echo
---echo *** "B M* M* T C" with error in M* generates in the binlog the "B M* R B M* R B T C" entries
---echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
-INSERT INTO nt_1 VALUES ("new text 18", 18);
-INSERT INTO nt_1 VALUES ("new text 20", 20);
-BEGIN;
---error ER_DUP_ENTRY
-INSERT INTO tt_1 VALUES (USER(), 17), (USER(), 18);
---error ER_DUP_ENTRY
-INSERT INTO tt_1 VALUES (USER(), 19), (USER(), 20);
-INSERT INTO tt_2 VALUES ("new text 21", 21);
-COMMIT;
---source include/show_binlog_events.inc
-
---echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
-INSERT INTO tt_2 VALUES ("new text 23", 23);
-INSERT INTO tt_2 VALUES ("new text 25", 25);
-BEGIN;
---error ER_DUP_ENTRY
-INSERT INTO nt_2 VALUES (USER(), 22), (USER(), 23);
---error ER_DUP_ENTRY
-INSERT INTO nt_2 VALUES (USER(), 24), (USER(), 25);
-INSERT INTO tt_2 VALUES ("new text 26", 26);
-COMMIT;
---source include/show_binlog_events.inc
-
---echo
---echo
---echo
---echo *** "B T INSERT M...SELECT* C" with an error in INSERT M...SELECT* generates
---echo *** in the binlog the following entries: "Nothing".
---echo *** There is a bug in that will be fixed after WL#2687. Please, check BUG#47175 for further details.
---echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
-TRUNCATE TABLE nt_2;
-TRUNCATE TABLE tt_2;
-INSERT INTO tt_2 VALUES ("new text 7", 7);
-BEGIN;
-INSERT INTO tt_2 VALUES ("new text 27", 27);
---error ER_DUP_ENTRY
-INSERT INTO nt_2(a, b) SELECT USER(), b FROM nt_1;
-INSERT INTO tt_2 VALUES ("new text 28", 28);
-ROLLBACK;
---source include/show_binlog_events.inc
-
---echo
---echo
---echo
---echo *** "B INSERT M..SELECT* C" with an error in INSERT M...SELECT* generates
---echo *** in the binlog the following entries: "B INSERT M..SELECT* R".
---echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
-TRUNCATE TABLE nt_2;
-TRUNCATE TABLE tt_2;
-INSERT INTO tt_2 VALUES ("new text 7", 7);
-BEGIN;
---error ER_DUP_ENTRY
-INSERT INTO nt_2(a, b) SELECT USER(), b FROM nt_1;
-COMMIT;
---source include/show_binlog_events.inc
-
---echo
---echo
---echo
---echo *** "B N N T C" generates in the binlog the "B N C B N C B T C" entries
---echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
-TRUNCATE TABLE nt_1;
-TRUNCATE TABLE tt_2;
-BEGIN;
-INSERT INTO nt_1 VALUES (USER(), 1);
-INSERT INTO nt_1 VALUES (USER(), 2);
-INSERT INTO tt_2 VALUES (USER(), 3);
-COMMIT;
---source include/show_binlog_events.inc
-
---echo
---echo
---echo
---echo *** "B N N T R" generates in the binlog the "B N C B N C B T R" entries
---echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
-BEGIN;
-INSERT INTO nt_1 VALUES (USER(), 4);
-INSERT INTO nt_1 VALUES (USER(), 5);
-INSERT INTO tt_2 VALUES (USER(), 6);
-ROLLBACK;
---source include/show_binlog_events.inc
-
---echo
---echo
---echo
---echo *** "B N* N* T C" with error in N* generates in the binlog the "B N R B N R B T C" entries
---echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
-BEGIN;
---error ER_DUP_ENTRY
-INSERT INTO nt_1 VALUES (USER(), 7), (USER(), 1);
---error ER_DUP_ENTRY
-INSERT INTO nt_1 VALUES (USER(), 8), (USER(), 1);
-INSERT INTO tt_2 VALUES (USER(), 9);
-COMMIT;
---source include/show_binlog_events.inc
-
---echo
---echo
---echo
---echo *** "B N* N* T R" with error in N* generates in the binlog the "B N R B N R B T R" entries
---echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
-BEGIN;
---error ER_DUP_ENTRY
-INSERT INTO nt_1 VALUES (USER(), 10), (USER(), 1);
---error ER_DUP_ENTRY
-INSERT INTO nt_1 VALUES (USER(), 11), (USER(), 1);
-INSERT INTO tt_2 VALUES (USER(), 12);
-ROLLBACK;
---source include/show_binlog_events.inc
-
---echo
---echo
---echo
---echo *** "B N N T N T C" generates in the binlog the "B N C B N C B T N T C" entries
---echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
-BEGIN;
-INSERT INTO nt_1 VALUES (USER(), 13);
-INSERT INTO nt_1 VALUES (USER(), 14);
-INSERT INTO tt_2 VALUES (USER(), 15);
-INSERT INTO nt_1 VALUES (USER(), 16);
-INSERT INTO tt_2 VALUES (USER(), 17);
-COMMIT;
---source include/show_binlog_events.inc
-
---echo
---echo
---echo
---echo *** "B N N T N T R" generates in the binlog the "B N C B N C B T N T R" entries
---echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
-BEGIN;
-INSERT INTO nt_1 VALUES (USER(), 18);
-INSERT INTO nt_1 VALUES (USER(), 19);
-INSERT INTO tt_2 VALUES (USER(), 20);
-INSERT INTO nt_1 VALUES (USER(), 21);
-INSERT INTO tt_2 VALUES (USER(), 22);
-ROLLBACK;
---source include/show_binlog_events.inc
-
---echo ###################################################################################
---echo # CLEAN
---echo ###################################################################################
-
-DROP TABLE tt_1;
-DROP TABLE tt_2;
-DROP TABLE nt_1;
-DROP TABLE nt_2;
diff --git a/mysql-test/extra/binlog_tests/blackhole.test b/mysql-test/extra/binlog_tests/blackhole.test
index 14c15a58e18..d204700198c 100644
--- a/mysql-test/extra/binlog_tests/blackhole.test
+++ b/mysql-test/extra/binlog_tests/blackhole.test
@@ -6,6 +6,8 @@
-- source include/have_blackhole.inc
-- source include/have_log_bin.inc
+CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
# The server need to be started in $MYSQLTEST_VARDIR since it
# uses ../../std_data/
-- source include/uses_vardir.inc
diff --git a/mysql-test/extra/binlog_tests/implicit.test b/mysql-test/extra/binlog_tests/implicit.test
new file mode 100644
index 00000000000..84d80288d36
--- /dev/null
+++ b/mysql-test/extra/binlog_tests/implicit.test
@@ -0,0 +1,28 @@
+# First part: outside a transaction
+RESET MASTER;
+eval $prepare;
+
+INSERT INTO t1 VALUES (1);
+source include/show_binlog_events.inc;
+eval $statement;
+source include/show_binlog_events.inc;
+if (`select '$cleanup' != ''`) {
+ eval $cleanup;
+}
+
+# Second part: inside a transaction
+RESET MASTER;
+eval $prepare;
+BEGIN;
+INSERT INTO t1 VALUES (2);
+source include/show_binlog_events.inc;
+eval $statement;
+source include/show_binlog_events.inc;
+INSERT INTO t1 VALUES (3);
+source include/show_binlog_events.inc;
+COMMIT;
+source include/show_binlog_events.inc;
+if (`select '$cleanup' != ''`) {
+ eval $cleanup;
+}
+
diff --git a/mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test b/mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test
index 5db79e4f848..4abf21a9930 100644
--- a/mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test
+++ b/mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test
@@ -8,6 +8,7 @@
-- source include/have_log_bin.inc
-- source include/have_innodb.inc
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
--disable_warnings
drop table if exists t1, t2;
@@ -323,23 +324,24 @@ let $MYSQLD_DATADIR= `select @@datadir`;
# and does not make slave to stop)
if (`select @@binlog_format = 'ROW'`)
{
- --exec $MYSQL_BINLOG --start-position=524 $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output
+ --echo This does not matter in ROW mode as the rolled back changes do not contain transactional changes as these
+ --echo were previously flushed upon committing/rolling back each statement.
}
if (`select @@binlog_format = 'STATEMENT' || @@binlog_format = 'MIXED'`)
{
- --exec $MYSQL_BINLOG --start-position=555 $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output
+ --exec $MYSQL_BINLOG --start-position=556 $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output
+
+ --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+ eval select
+ (@a:=load_file("$MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output"))
+ is not null;
+ --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
+ eval select
+ @a like "%#%error_code=0%ROLLBACK\\n/*!*/;%ROLLBACK /* added by mysqlbinlog */;%" OR
+ @a like "%#%error_code=0%ROLLBACK\\r\\n/*!*/;%ROLLBACK /* added by mysqlbinlog */;%",
+ @a not like "%#%error_code=%error_code=%";
}
-
---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
-eval select
-(@a:=load_file("$MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output"))
-is not null;
---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
-eval select
-@a like "%#%error_code=0%ROLLBACK\\n/*!*/;%ROLLBACK /* added by mysqlbinlog */;%" OR
-@a like "%#%error_code=0%ROLLBACK\\r\\n/*!*/;%ROLLBACK /* added by mysqlbinlog */;%",
-@a not like "%#%error_code=%error_code=%";
drop table t1, t2;
#
diff --git a/mysql-test/extra/rpl_tests/check_type.inc b/mysql-test/extra/rpl_tests/check_type.inc
new file mode 100644
index 00000000000..63491d81da4
--- /dev/null
+++ b/mysql-test/extra/rpl_tests/check_type.inc
@@ -0,0 +1,52 @@
+# Helper file to perform one insert of a value into a table with
+# different types on master and slave. The file will insert the
+# result into the type_conversions table *on the slave* to get a
+# summary of failing and succeeding tests.
+
+# Input:
+# $source_type Type on the master
+# $target_type Type on the slave
+# $source_value Value on the master (inserted into the table)
+# $target_value Value on the slave (expected value in the table
+# on the slave)
+# $can_convert True if conversion shall work, false if it
+# shall generate an error
+
+
+connection master;
+disable_warnings;
+DROP TABLE IF EXISTS t1;
+enable_warnings;
+eval CREATE TABLE t1 (a $source_type);
+sync_slave_with_master;
+eval ALTER TABLE t1 MODIFY a $target_type;
+
+connection master;
+eval INSERT INTO t1 VALUES($source_value);
+if ($can_convert) {
+ sync_slave_with_master;
+ eval SELECT a = $target_value into @compare FROM t1;
+ eval INSERT INTO type_conversions SET
+ Source = "$source_type",
+ Target = "$target_type",
+ Flags = @@slave_type_conversions,
+ On_Master = $source_value,
+ Expected = $target_value,
+ Compare = @compare;
+ UPDATE type_conversions
+ SET On_Slave = (SELECT a FROM t1)
+ WHERE TestNo = LAST_INSERT_ID();
+}
+if (!$can_convert) {
+ connection slave;
+ wait_for_slave_to_stop;
+ let $error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
+ eval INSERT INTO type_conversions SET
+ Source = "$source_type",
+ Target = "$target_type",
+ Flags = @@slave_type_conversions,
+ On_Master = $source_value,
+ Error = "$error";
+ SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
+ START SLAVE;
+}
diff --git a/mysql-test/extra/rpl_tests/create_recursive_construct.inc b/mysql-test/extra/rpl_tests/create_recursive_construct.inc
new file mode 100644
index 00000000000..628f1735726
--- /dev/null
+++ b/mysql-test/extra/rpl_tests/create_recursive_construct.inc
@@ -0,0 +1,400 @@
+# ==== Purpose ====
+#
+# Creates a stored routine, stored function, trigger, view, or
+# prepared statement (commonly referred to as "recursive construct")
+# that invokes a given unsafe statement.
+#
+# Then, it invokes the created recursive construct several times:
+#
+# - With SQL_LOG_BIN = 1 and binlog_format = STATEMENT, to verify
+# that it gives a warning.
+#
+# - With SQL_LOG_BIN = 0 and binlog_format = STATEMENT, to verify that
+# there is no warning and nothing is logged.
+#
+# - With SQL_LOG_BIN = 1 and binlog_format = MIXED, to verify that it
+# writes row events to the binlog.
+#
+# - In some cases, the recursive construct can be invoked so that it
+# has no side-effects but returns a value that may be
+# nondeterministic. An example is a function that returns UUID().
+# The function does not have side effects but its a return value
+# that may differ on slave. Such statements are invoked so that
+# the return value is discarded (e.g., SELECT func()), with
+# SQL_LOG_BIN = 1 and binlog_format = STATEMENT. In this case, no
+# warning should be given and nothing should be written to the
+# binlog.
+#
+# This is an auxiliary file particularly targeted to being used by the
+# test binlog_unsafe. In this context, the purpose is to check how
+# warnings for unsafe statements are propagated in recursive
+# constructs.
+#
+# The statement to invoke ("input") is described using mtr variables,
+# and the resulting recursive construct ("output") is stored in mtr
+# variables in a similar fashion. To create several levels of nested
+# recursive constructs, source this file once, then copy the values of
+# appropriate output variables to the input variables, and then source
+# this file again.
+#
+#
+# ==== Usage ====
+#
+# See binlog_unsafe for an example of how to use this file.
+#
+# let $CRC_ARG_level= <level>;
+# let $CRC_ARG_type= <type>;
+# let $CRC_ARG_stmt_sidef= <stmt>;
+# let $CRC_ARG_value= <stmt>;
+# let $CRC_ARG_sel_retval= <stmt>;
+# let $CRC_ARG_sel_sidef= <stmt>;
+# let $CRC_ARG_desc= <desc>;
+# source extra/rpl_tests/create_recursive_construct.inc;
+# let $my_stmt_sidef= $CRC_RET_stmt_sidef;
+# let $my_value= $CRC_RET_value;
+# let $my_sel_sidef= $CRC_RET_sel_sidef;
+# let $my_sel_retval= $CRC_RET_sel_retval;
+# let $my_drop= $CRC_RET_drop;
+# let $my_is_toplevel= $CRC_RET_top_is_toplevel;
+# let $my_desc= $CRC_RET_desc;
+#
+# $CRC_ARG_* are used as input parameters (arguments) to this file:
+#
+# $CRC_ARG_level is the recursion depth: 1 for the innermost
+# statement created, 2 for a statement that invokes a statement on
+# level 1, etc.
+#
+# $CRC_ARG_type is an integer from 0 to 6, indicating what type of
+# statement shall be created:
+# 0 - Create a stored function where the return value depends on
+# the value of the given statement.
+# 1 - Create a stored function that invokes the given statement as
+# a side-effect but may not return a value that depends on it.
+# 2 - Create a stored routine that invokes the given statement.
+# 3 - Create a trigger (on table trigger_table_$CRC_ARG_level) that
+# invokes the given statement.
+# 4 - Create a view that returns a value that depends on the value
+# of the given statement.
+# 5 - Create a view that invokes the given statement but may return
+# a value that does not depend on it.
+# 6 - Create a prepared statement that invokes the given statement.
+#
+# $CRC_ARG_stmt_sidef is the statement to invoke. It should be a
+# statement that can be invoked on its own (not sub-statement),
+# which causes something unsafe to be written to the binlog.
+#
+# $CRC_ARG_value is a sub-statement holding the value of the given
+# statement. Can be empty if the given statement does not have a
+# value. Typically, this is non-empty if the given statement is a
+# function call or user variable, but not if it is a stored routine
+# call, INSERT, SELECT, etc (because none of them has a value).
+# $CRC_ARG_value is used only when $CRC_ARG_type=6.
+#
+# $CRC_ARG_sel_sidef is a SELECT sub-statement that invokes the
+# statement as a side-effect, but returns a result set that may not
+# depend on the statement. Can be empty if the statement cannot
+# produce a result set from a SELECT. $CRC_ARG_sel_sidef is used
+# only if $CRC_ARG_type=2
+#
+# $CRC_ARG_sel_retval is a SELECT sub-statement that does not have
+# side-effects, but returns a result set that depends on the unsafe
+# statement. Can be empty if the statement cannot be invoked from a
+# SELECT. $CRC_ARG_sel_retval is used only if $CRC_ARG_type=3.
+#
+# $CRC_ARG_desc is a human-readable description of the statement to
+# invoke.
+#
+# $CRC_RET_* are used as output parameters (return values) of this
+# file:
+#
+# $CRC_RET_stmt_sidef is a statement invoking the resulting recursive
+# construct.
+#
+# $CRC_RET_value is a sub-statement invoking the resulting recursive
+# construct and returning the value of the recursive construct.
+# This is the empty string if the resulting recursive construct does
+# not have a value. In particular, this is non-empty only if
+# $CRC_ARG_value=7.
+#
+# $CRC_RET_sel_sidef is a SELECT sub-statement that invokes the
+# resulting recursive construct as a side-effect but where the
+# result set may not depend on the recursive construct. This is the
+# empty string if the recursive construct cannot be invoked from a
+# SELECT. In particular, this is non-empty only if $CRC_ARG_value=6
+# or $CRC_ARG_value=2.
+#
+# $CRC_RET_sel_retval is a SELECT sub-statement that does not have
+# side-effects, but returns a result set depending on the unsafe
+# statement. This is the empty string if the recursive construct
+# cannot produce a result set from a SELECT. In particular, this is
+# non-empty only if $CRC_ARG_value=7 or $CRC_ARG_value=3.
+#
+# $CRC_RET_drop is a statement that drops the created object. I.e.,
+# it is one of 'DROP FUNCTION <func>', 'DROP PROCEDURE <proc>', etc.
+#
+# $CRC_RET_top_is_toplevel is 0 normally, or 1 if the resulting
+# recursive construct can only be called from a top-level statement.
+# In particular, this is 1 only when $CRC_ARG_value=1, because
+# prepared statements cannot be invoked from other recursive
+# constructs.
+#
+# $CRC_RET_desc is a text string that describes the invokation of
+# the recursive construct in a human-readable fashion.
+#
+# Assumptions
+#
+# Before sourcing this file with $CRC_ARG_level=X, you need to
+# create three tables: tX, taX and trigger_table_X. These are used
+# as auxiliary tables.
+
+
+#--echo debug: >>>>ENTER create_recursive_construct
+#--echo debug: level=$CRC_ARG_level
+#--echo debug: type=$CRC_ARG_type
+#--echo debug: stmt_sidef=$CRC_ARG_stmt_sidef
+#--echo debug: value=$CRC_ARG_value
+#--echo debug: sel_retval=$CRC_ARG_sel_retval
+#--echo debug: sel_sidef=$CRC_ARG_sel_sidef
+
+--let $CRC_RET_stmt_sidef=
+--let $CRC_RET_value=
+--let $CRC_RET_sel_retval=
+--let $CRC_RET_sel_sidef=
+--let $CRC_RET_drop=
+--let $CRC_RET_is_toplevel= 1
+--let $CRC_RET_desc=
+--let $CRC_name=
+--let $CRC_create=
+
+######## func_retval ########
+if (`SELECT $CRC_ARG_type = 0 AND '$CRC_ARG_value' != ''`) {
+ # It will be safe to call this function and discard the return
+ # value, but it will be unsafe to use return value (e.g., in
+ # INSERT...SELECT).
+ --let $CRC_name= func_retval_$CRC_ARG_level
+ --let $CRC_create= CREATE FUNCTION $CRC_name() RETURNS VARCHAR(100) BEGIN INSERT INTO ta$CRC_ARG_level VALUES (47); RETURN $CRC_ARG_value; END
+ --let $CRC_RET_stmt_sidef= INSERT INTO t$CRC_ARG_level VALUES ($CRC_name())
+ --let $CRC_RET_value= $CRC_name()
+ --let $CRC_RET_sel_sidef=
+ --let $CRC_RET_sel_retval= SELECT $CRC_name()
+ --let $CRC_RET_drop= DROP FUNCTION $CRC_name
+ --let $CRC_RET_is_toplevel= 0
+ --let $CRC_RET_desc= function $CRC_name returning value from $CRC_ARG_desc
+}
+
+######## func_sidef ########
+if (`SELECT $CRC_ARG_type = 1`) {
+ # It will be unsafe to call func even if you discard return value.
+ --let $CRC_name= func_sidef_$CRC_ARG_level
+ --let $CRC_create= CREATE FUNCTION $CRC_name() RETURNS VARCHAR(100) BEGIN INSERT INTO ta$CRC_ARG_level VALUES (47); $CRC_ARG_stmt_sidef; RETURN 0; END
+ --let $CRC_RET_stmt_sidef= INSERT INTO t$CRC_ARG_level SELECT $CRC_name()
+ --let $CRC_RET_value=
+ --let $CRC_RET_sel_retval=
+ --let $CRC_RET_sel_sidef= SELECT $CRC_name()
+ --let $CRC_RET_drop= DROP FUNCTION $CRC_name
+ --let $CRC_RET_is_toplevel= 0
+ --let $CRC_RET_desc= function $CRC_name invoking $CRC_ARG_desc
+}
+
+######## proc ########
+if (`SELECT $CRC_ARG_type = 2`) {
+ # It will be unsafe to call this procedure.
+ --let $CRC_name= proc_$CRC_ARG_level
+ --let $CRC_create= CREATE PROCEDURE $CRC_name() BEGIN INSERT INTO ta$CRC_ARG_level VALUES (47); $CRC_ARG_stmt_sidef; END
+ --let $CRC_RET_stmt_sidef= CALL $CRC_name()
+ --let $CRC_RET_value=
+ --let $CRC_RET_sel_retval=
+ --let $CRC_RET_sel_sidef=
+ --let $CRC_RET_drop= DROP PROCEDURE $CRC_name
+ --let $CRC_RET_is_toplevel= 0
+ --let $CRC_RET_desc= procedure $CRC_name invoking $CRC_ARG_desc
+}
+
+######## trig ########
+if (`SELECT $CRC_ARG_type = 3`) {
+ # It will be unsafe to invoke this trigger.
+ --let $CRC_name= trig_$CRC_ARG_level
+ --let $CRC_create= CREATE TRIGGER $CRC_name BEFORE INSERT ON trigger_table_$CRC_ARG_level FOR EACH ROW BEGIN INSERT INTO ta$CRC_ARG_level VALUES (47); $CRC_ARG_stmt_sidef; END
+ --let $CRC_RET_stmt_sidef= INSERT INTO trigger_table_$CRC_ARG_level VALUES (1)
+ --let $CRC_RET_value=
+ --let $CRC_RET_sel_retval=
+ --let $CRC_RET_sel_sidef=
+ --let $CRC_RET_drop= DROP TRIGGER $CRC_name
+ --let $CRC_RET_is_toplevel= 0
+ --let $CRC_RET_desc= trigger $CRC_name invoking $CRC_ARG_desc
+}
+
+######## view_retval ########
+if (`SELECT $CRC_ARG_type = 4 AND '$CRC_ARG_sel_retval' != ''`) {
+ # It will be safe to select from this view if you discard the result
+ # set, but unsafe to use result set (e.g., in INSERT..SELECT).
+ --let $CRC_name= view_retval_$CRC_ARG_level
+ --let $CRC_create= CREATE VIEW $CRC_name AS $CRC_ARG_sel_retval
+ --let $CRC_RET_stmt_sidef= INSERT INTO t$CRC_ARG_LEVEL SELECT * FROM $CRC_name
+ --let $CRC_RET_value=
+ --let $CRC_RET_sel_retval= SELECT * FROM $CRC_name
+ --let $CRC_RET_sel_sidef=
+ --let $CRC_RET_drop= DROP VIEW $CRC_name
+ --let $CRC_RET_is_toplevel= 0
+ --let $CRC_RET_desc= view $CRC_name returning value from $CRC_ARG_desc
+}
+
+######## view_sidef ########
+if (`SELECT $CRC_ARG_type = 5 AND '$CRC_ARG_sel_sidef' != ''`) {
+ # It will be unsafe to select from this view, even if you discard
+ # the return value.
+ --let $CRC_name= view_sidef_$CRC_ARG_level
+ --let $CRC_create= CREATE VIEW $CRC_name AS $CRC_ARG_sel_sidef
+ --let $CRC_RET_stmt_sidef= INSERT INTO t$CRC_ARG_level SELECT * FROM $CRC_name
+ --let $CRC_RET_value=
+ --let $CRC_RET_sel_retval=
+ --let $CRC_RET_sel_sidef= SELECT * FROM $CRC_name
+ --let $CRC_RET_drop= DROP VIEW $CRC_name
+ --let $CRC_RET_is_toplevel= 0
+ --let $CRC_RET_desc= view $CRC_name invoking $CRC_ARG_desc
+}
+
+######## prep ########
+if (`SELECT $CRC_ARG_type = 6`) {
+ # It will be unsafe to execute this prepared statement
+ --let $CRC_name= prep_$CRC_ARG_level
+ --let $CRC_create= PREPARE $CRC_name FROM "$CRC_ARG_stmt_sidef"
+ --let $CRC_RET_stmt_sidef= EXECUTE $CRC_name
+ --let $CRC_RET_value=
+ --let $CRC_RET_sel_retval=
+ --let $CRC_RET_sel_sidef=
+ --let $CRC_RET_drop= DROP PREPARE $CRC_name
+ --let $CRC_RET_is_toplevel= 1
+ --let $CRC_RET_desc= prepared statement $CRC_name invoking $CRC_ARG_desc
+}
+
+######## no recursive construct: just return the given statement ########
+if (`SELECT $CRC_ARG_type = 7`) {
+ # CRC_ARG_type=7 is a special case. We just set $CRC_RET_x =
+ # $CRC_ARG_x. This way, the $CRC_ARG_stmt gets executed directly
+ # (below). In binlog_unsafe.test, it is used to invoke the unsafe
+ # statement created in the outermost loop directly, without
+ # enclosing it in a recursive construct.
+ --let $CRC_RET_stmt_sidef= $CRC_ARG_stmt_sidef
+ --let $CRC_RET_value= $CRC_ARG_value
+ --let $CRC_RET_sel_retval= $CRC_ARG_sel_retval
+ --let $CRC_RET_sel_sidef= $CRC_ARG_sel_sidef
+ --let $CRC_RET_drop=
+ --let $CRC_RET_is_toplevel= 1
+ --let $CRC_RET_desc= $CRC_ARG_desc
+}
+
+######## execute! ########
+if (`SELECT '$CRC_RET_stmt_sidef' != ''`) {
+ --echo
+ --echo Invoking $CRC_RET_desc.
+ if (`SELECT '$CRC_create' != ''`) {
+ --eval $CRC_create
+ }
+
+ --echo * binlog_format = STATEMENT: expect $CRC_ARG_expected_number_of_warnings warnings.
+ --eval $CRC_RET_stmt_sidef
+ --let $n_warnings= `SHOW COUNT(*) WARNINGS`
+ if (`SELECT '$n_warnings' != '$CRC_ARG_expected_number_of_warnings'`) {
+ --echo ******** Failure! Expected $CRC_ARG_expected_number_of_warnings warnings, got $n_warnings warnings. ********
+ SHOW WARNINGS;
+ SHOW BINLOG EVENTS;
+ --die Wrong number of warnings.
+ }
+
+ # These queries are run without query log, to make result file more
+ # readable. Debug info is only printed if something abnormal
+ # happens.
+ --disable_query_log
+
+ --echo * SQL_LOG_BIN = 0: expect nothing logged and no warning.
+ SET SQL_LOG_BIN = 0;
+ RESET MASTER;
+ --eval $CRC_RET_stmt_sidef
+ --let $n_warnings= `SHOW COUNT(*) WARNINGS`
+ if (`SELECT '$n_warnings' != '0'`) {
+ --echo ******** Failure! Expected 0 warnings, got $n_warnings warnings. ********
+ SHOW WARNINGS;
+ SHOW BINLOG EVENTS;
+ --die Wrong number of warnings.
+ }
+ --let $binlog_event= query_get_value(SHOW BINLOG EVENTS, Event_type, 2)
+ if (`SELECT '$binlog_event' != 'No such row'`) {
+ --enable_query_log
+ --echo ******** Failure! Something was written to the binlog despite SQL_LOG_BIN=0 ********
+ SHOW BINLOG EVENTS;
+ --die Binlog not empty
+ }
+ SET SQL_LOG_BIN = 1;
+
+ --echo * binlog_format = MIXED: expect row events in binlog and no warning.
+ SET binlog_format = MIXED;
+ RESET MASTER;
+ --eval $CRC_RET_stmt_sidef
+ --let $n_warnings= `SHOW COUNT(*) WARNINGS`
+ if (`SELECT '$n_warnings' != '0'`) {
+ --echo ******** Failure! Expected 0 warnings, got $n_warnings warnings. ********
+ SHOW WARNINGS;
+ SHOW BINLOG EVENTS;
+ --die Warnings printed
+ }
+ # The first event is format_description, the second is
+ # Query_event('BEGIN'), and the third should be our Table_map.
+ --let $event_type= query_get_value(SHOW BINLOG EVENTS, Event_type, 3)
+ if (`SELECT '$event_type' != 'Table_map'`) {
+ --enable_query_log
+ --echo ******** Failure! Event number 3 was a '$event_type', not a 'Table_map'. ********
+
+ # Currently, there is a bug causing some statements to be logged
+ # partially in statement format. Hence, we don't fail here, we
+ # just print the events (masking out nondeterministic components
+ # of the output) and continue. When binloggging works perfectly,
+ # we should instead execute:
+ #--enable_query_log
+ #SHOW BINLOG EVENTS;
+ #--die Wrong events in binlog.
+
+ # Here, we should really source
+ # include/show_binlog_events.inc. But due to BUG#41913, that
+ # doesn't work, and we have to inline the entire file here. Sigh
+ # :-(
+ --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR 107 <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 107
+ --disable_query_log
+ }
+ SET binlog_format = STATEMENT;
+
+ --enable_query_log
+}
+
+# Invoke created object, discarding the return value. This should not
+# give any warning.
+if (`SELECT '$CRC_RET_sel_retval' != ''`) {
+ --echo * Invoke statement so that return value is dicarded: expect no warning.
+ --disable_result_log
+ --eval $CRC_RET_sel_retval
+ --enable_result_log
+
+ # Currently, due to a bug, we do get warnings here, so we don't
+ # fail. When the bug is fixed, we should execute the following.
+
+ #--let $n_warnings= `SHOW COUNT(*) WARNINGS`
+ #if (`SELECT '$n_warnings' != '0'`) {
+ # --enable_query_log
+ # --echo Failure! Expected 0 warnings, got $n_warnings warnings.
+ # SHOW WARNINGS;
+ # SHOW BINLOG EVENTS;
+ # --die Wrong number of warnings.
+ #}
+}
+
+#--echo debug: <<<<EXIT create_recursive_construct
+#--echo debug: stmt_sidef=$CRC_RET_stmt_sidef
+#--echo debug: value=$CRC_RET_value
+#--echo debug: sel_retval=$CRC_RET_sel_retval
+#--echo debug: sel_sidef=$CRC_RET_sel_sidef
+#--echo debug: drop=$CRC_RET_drop
+#--echo debug: is_toplevel=$CRC_RET_is_toplevel
+#--echo debug: desc=$CRC_RET_desc
diff --git a/mysql-test/suite/rpl/t/rpl_binlog_max_cache_size.test b/mysql-test/extra/rpl_tests/rpl_binlog_max_cache_size.test
index e1f1f8c54bb..55dc7ca6514 100644
--- a/mysql-test/suite/rpl/t/rpl_binlog_max_cache_size.test
+++ b/mysql-test/extra/rpl_tests/rpl_binlog_max_cache_size.test
@@ -22,13 +22,7 @@
#
########################################################################################
-########################################################################################
-# Configuring the environment
-########################################################################################
---source include/have_innodb.inc
---source include/master-slave.inc
---source include/not_embedded.inc
---source include/not_windows.inc
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
CREATE TABLE t1(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb;
CREATE TABLE t2(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=MyIsam;
@@ -50,30 +44,18 @@ eval INSERT INTO t1 (a, data) VALUES (1,
--enable_query_log
--echo *** Single statement on non-transactional table ***
---echo *** After WL#2687 the difference between STATEMENT/MIXED and ROW will not exist. ***
--disable_query_log
---disable_warnings
-if (`SELECT @@binlog_format = 'STATEMENT' || @@binlog_format = 'MIXED'`)
-{
- eval INSERT INTO t2 (a, data) VALUES (2,
- CONCAT($data, $data, $data, $data, $data, $data));
- --echo Got one of the listed errors
-}
-if (`SELECT @@binlog_format = 'ROW'`)
-{
- --error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
- eval INSERT INTO t2 (a, data) VALUES (2,
+--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
+eval INSERT INTO t2 (a, data) VALUES (2,
CONCAT($data, $data, $data, $data, $data, $data));
-
- connection slave;
- --source include/wait_for_slave_sql_to_stop.inc
- SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
- START SLAVE SQL_THREAD;
- --source include/wait_for_slave_sql_to_start.inc
-}
---enable_warnings
--enable_query_log
+connection slave;
+--source include/wait_for_slave_sql_to_stop.inc
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
+START SLAVE SQL_THREAD;
+--source include/wait_for_slave_sql_to_start.inc
+
connection master;
--disable_query_log
@@ -86,7 +68,6 @@ eval INSERT INTO t2 (a, data) VALUES (5, $data);
--enable_query_log
--echo *** Single statement on both transactional and non-transactional tables. ***
---echo *** After WL#2687 we will be able to change the order of the tables. ***
--disable_query_log
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
eval UPDATE t2, t1 SET t2.data = CONCAT($data, $data, $data, $data),
@@ -95,13 +76,25 @@ eval UPDATE t2, t1 SET t2.data = CONCAT($data, $data, $data, $data),
connection slave;
--source include/wait_for_slave_sql_to_stop.inc
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
+
+if (`SELECT @@binlog_format = 'STATEMENT'`)
+{
+ SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
+}
+if (`SELECT @@binlog_format = 'ROW' || @@binlog_format = 'MIXED'`)
+{
+ SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 2;
+}
START SLAVE SQL_THREAD;
--source include/wait_for_slave_sql_to_start.inc
+connection master;
+
+let $diff_statement= SELECT * FROM t1;
+--source include/diff_master_slave.inc
-#--echo ########################################################################################
-#--echo # 2 - BEGIN - IMPLICIT COMMIT by DDL
-#--echo ########################################################################################
+--echo ########################################################################################
+--echo # 2 - BEGIN - IMPLICIT COMMIT by DDL
+--echo ########################################################################################
connection master;
TRUNCATE TABLE t1;
@@ -149,14 +142,13 @@ BEGIN;
--eval INSERT INTO t1 (a, data) VALUES (21, 's');
--enable_query_log
-if (`SELECT @@binlog_format = 'STATEMENT' || @@binlog_format = 'MIXED'`)
+if (`SELECT @@binlog_format = 'STATEMENT'`)
{
--disable_query_log
CREATE TABLE t4 SELECT * FROM t1;
--enable_query_log
- --echo Got one of the listed errors
}
-if (`SELECT @@binlog_format = 'ROW'`)
+if (`SELECT @@binlog_format = 'ROW' || @@binlog_format = 'MIXED'`)
{
--disable_query_log
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
@@ -186,6 +178,17 @@ BEGIN;
CREATE TABLE t5 (a int);
--enable_query_log
+if (`SELECT @@binlog_format = 'ROW' || @@binlog_format = 'MIXED'` )
+{
+ connection slave;
+ --source include/wait_for_slave_sql_to_stop.inc
+
+ SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
+ START SLAVE SQL_THREAD;
+ --source include/wait_for_slave_sql_to_start.inc
+ connection master;
+}
+
let $diff_statement= SELECT * FROM t1;
--source include/diff_master_slave.inc
@@ -341,16 +344,30 @@ BEGIN;
--eval INSERT INTO t1 (a, data) VALUES (1, $data);
--eval INSERT INTO t1 (a, data) VALUES (2, $data);
--eval INSERT INTO t2 (a, data) VALUES (3, $data);
---error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
---eval INSERT INTO t1 (a, data) VALUES (4, $data);
+if (`SELECT @@binlog_format = 'STATEMENT'`)
+{
+ --error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
+ --eval INSERT INTO t1 (a, data) VALUES (4, $data);
+}
+if (`SELECT @@binlog_format = 'ROW' || @@binlog_format = 'MIXED'`)
+{
+ --eval INSERT INTO t1 (a, data) VALUES (4, $data);
+}
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (5, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (6, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (7, $data);
---error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
---eval UPDATE t2 SET data= CONCAT($data, $data);
+if (`SELECT @@binlog_format = 'STATEMENT'`)
+{
+ --error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
+ --eval UPDATE t2 SET data= CONCAT($data, $data);
+}
+if (`SELECT @@binlog_format = 'ROW' || @@binlog_format = 'MIXED'`)
+{
+ --eval UPDATE t2 SET data= CONCAT($data, $data);
+}
--eval INSERT INTO t1 (a, data) VALUES (8, 's');
--eval INSERT INTO t1 (a, data) VALUES (9, 's');
--eval INSERT INTO t2 (a, data) VALUES (10, 's');
@@ -363,19 +380,38 @@ BEGIN;
--eval INSERT INTO t1 (a, data) VALUES (15, $data);
--eval INSERT INTO t1 (a, data) VALUES (16, $data);
--eval INSERT INTO t2 (a, data) VALUES (17, $data);
+if (`SELECT @@binlog_format = 'STATEMENT'`)
+{
+ --error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
+ --eval INSERT INTO t1 (a, data) VALUES (18, $data);
+}
+if (`SELECT @@binlog_format = 'ROW' || @@binlog_format = 'MIXED'`)
+{
+ --eval INSERT INTO t1 (a, data) VALUES (18, $data);
+}
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
---eval INSERT INTO t1 (a, data) VALUES (18, $data);
+--eval INSERT INTO t1 (a, data) VALUES (19, $data);
--enable_query_log
COMMIT;
-connection slave;
---source include/wait_for_slave_sql_to_stop.inc
+if (`SELECT @@binlog_format = 'STATEMENT'`)
+{
+ connection slave;
+ --source include/wait_for_slave_sql_to_stop.inc
+
+ SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
+ START SLAVE SQL_THREAD;
+ --source include/wait_for_slave_sql_to_start.inc
+ connection master;
+}
+
+let $diff_statement= SELECT * FROM t1;
+--source include/diff_master_slave.inc
--echo ########################################################################################
--echo # CLEAN
--echo ########################################################################################
---disable_warnings
connection master;
DROP TABLE t1;
DROP TABLE t2;
@@ -384,12 +420,4 @@ DROP TABLE IF EXISTS t4;
DROP TABLE IF EXISTS t5;
DROP TABLE IF EXISTS t6;
DROP PROCEDURE p1;
-connection slave;
-DROP TABLE t1;
-DROP TABLE t2;
-DROP TABLE t3;
-DROP TABLE IF EXISTS t4;
-DROP TABLE IF EXISTS t5;
-DROP TABLE IF EXISTS t6;
-DROP PROCEDURE p1;
---enable_warnings
+sync_slave_with_master;
diff --git a/mysql-test/extra/rpl_tests/rpl_charset.test b/mysql-test/extra/rpl_tests/rpl_charset.test
index 8bcb60b0227..d884bd1178c 100644
--- a/mysql-test/extra/rpl_tests/rpl_charset.test
+++ b/mysql-test/extra/rpl_tests/rpl_charset.test
@@ -114,9 +114,7 @@ set @@character_set_server=latin5;
select @@character_set_server;
select @@character_set_server;
-# ONE_SHOT on not charset/collation stuff is not allowed
--- error 1382
-set one_shot max_join_size=10;
+set one_shot max_join_size=1000000;
# Test of wrong character set numbers;
error 1115;
diff --git a/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test b/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test
index 46168d6b97a..49f93a7394c 100644
--- a/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test
+++ b/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test
@@ -36,6 +36,9 @@ sync_slave_with_master;
STOP SLAVE;
RESET SLAVE;
+SET @saved_slave_type_conversions = @@slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
+
eval CREATE TABLE t1 (a INT, b INT PRIMARY KEY, c CHAR(20),
d FLOAT DEFAULT '2.00',
e CHAR(4) DEFAULT 'TEST')
@@ -62,6 +65,8 @@ SELECT * FROM t1 ORDER BY a;
sync_slave_with_master;
SELECT * FROM t1 ORDER BY a;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
+
--echo *** Drop t1 ***
connection master;
DROP TABLE t1;
@@ -97,9 +102,8 @@ SELECT * FROM t2 ORDER BY a;
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 $errno= query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1)
+--echo Slave failed with Error $errno
STOP SLAVE;
RESET SLAVE;
SELECT * FROM t2 ORDER BY a;
@@ -146,13 +150,12 @@ 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 1677 ***
--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 $errno= query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1)
+--echo Slave failed with Error $errno
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
@@ -191,13 +194,12 @@ 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 1677 ***
--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 $errno= query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1)
+--echo Slave failed with Error $errno
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
@@ -236,13 +238,12 @@ 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 1677 ***
--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 $errno= query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1)
+--echo Slave failed with Error $errno
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
@@ -282,13 +283,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 1677 ***
--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 $errno= query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1)
+--echo Slave failed with Error $errno
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
#START SLAVE;
@@ -491,13 +491,12 @@ 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 1677 ***
--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 $errno= query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1)
+--echo Slave failed with Error $errno
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
@@ -515,7 +514,7 @@ sync_slave_with_master;
--echo *** Create t11 on slave ***
STOP SLAVE;
RESET SLAVE;
-eval CREATE TABLE t11 (a INT KEY, b BLOB, f TEXT,
+eval CREATE TABLE t11 (a INT KEY, b BLOB, f INT,
c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE=$engine_type;
--echo *** Create t11 on Master ***
@@ -535,13 +534,12 @@ 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 1677 ***
--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 $errno= query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1)
+--echo Slave failed with Error $errno
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
@@ -811,9 +809,8 @@ ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5;
--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 $errno= query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1)
+--echo Slave failed with Error $errno
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;
@@ -918,13 +915,12 @@ 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 1677 ***
--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 $errno= query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1)
+--echo Slave failed with Error $errno
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
diff --git a/mysql-test/extra/rpl_tests/rpl_flsh_tbls.test b/mysql-test/extra/rpl_tests/rpl_flsh_tbls.test
index 0baf49c9fac..6de4a538e72 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 $binlog_start= $rename_event_pos;
+source include/show_binlog_events.inc;
sync_slave_with_master;
# Check that the slave is not confused.
diff --git a/mysql-test/extra/rpl_tests/rpl_foreign_key.test b/mysql-test/extra/rpl_tests/rpl_foreign_key.test
index 8755bf5aa87..ea16237435c 100644
--- a/mysql-test/extra/rpl_tests/rpl_foreign_key.test
+++ b/mysql-test/extra/rpl_tests/rpl_foreign_key.test
@@ -47,7 +47,6 @@ insert into t1 set b=1;
insert into t2 set a=1, b=1;
set foreign_key_checks=0;
-set @@session.binlog_format=row;
delete from t1;
--echo must sync w/o a problem (could not with the buggy code)
diff --git a/mysql-test/extra/rpl_tests/rpl_implicit_commit_binlog.test b/mysql-test/extra/rpl_tests/rpl_implicit_commit_binlog.test
new file mode 100644
index 00000000000..39d18b7403d
--- /dev/null
+++ b/mysql-test/extra/rpl_tests/rpl_implicit_commit_binlog.test
@@ -0,0 +1,656 @@
+################################################################################
+# In this test case, we verify if some DDL statements implicitly commit a
+# transaction and are written directly to the binary log without going
+# through either the Statement- or Transactional-Cache.
+#
+# As any statement that goes through a cache is written to the binary log
+# wrapped in a BEGIN...COMMIT, we proceed as follows:
+#
+# - create a transaction and insert some values into a transactional table.
+# - execute a DDL statement that is supposed to implicitly commit the previous
+# transaction.
+# - Check in the binary log for a COMMIT mark which is supposed to be written
+# before the DDL statement.
+# - Check in the binary log if the DDL is not wrapped by a BEGIN..COMMIT.
+#
+# For further details, please, read WL#2687 and WL#5072.
+################################################################################
+
+--echo #########################################################################
+--echo # CONFIGURATION
+--echo #########################################################################
+connection master;
+
+eval CREATE TABLE tt_1 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = $engine;
+eval CREATE TABLE tt_2 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = $engine;
+eval CREATE TABLE nt_1 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = MyIsam;
+
+INSERT INTO tt_1(ddl_case) VALUES(0);
+INSERT INTO tt_2(ddl_case) VALUES(0);
+
+--echo #########################################################################
+--echo # CHECK IMPLICT COMMIT
+--echo #########################################################################
+SET AUTOCOMMIT= 0;
+let $ddl_cases= 41;
+while (`SELECT $ddl_cases >= 1`)
+{
+ --echo -b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+ let $in_temporary= "no";
+ let $ok= "yes";
+ #
+ # In SBR and MIXED modes, the commit event is usually the third event in the
+ # binary log:
+ #
+ # 1: BEGIN
+ # 2: INSERT
+ # 3: COMMIT
+ # 4: DDL EVENT which triggered the previous commmit.
+ #
+ if (`select @@binlog_format = 'STATEMENT' || @@binlog_format = 'MIXED'`)
+ {
+ let $commit_event_row_number= 3;
+ }
+ #
+ # In RBR mode, the commit event is usually the fourth event in the binary log:
+ #
+ # 1: BEGIN
+ # 2: TABLE MAP EVENT
+ # 3: ROW EVENT
+ # 4: COMMIT
+ # 5: DDL EVENT which triggered the previous commmit.
+ #
+ if (`select @@binlog_format = 'ROW'`)
+ {
+ let $commit_event_row_number= 4;
+ }
+ #
+ # In NDB (RBR and MIXED modes), the commit event is usually the seventh event
+ # in the binary log:
+ #
+ # 1: COMMAND
+ # 2: BEGIN
+ # 3: TABLE MAP EVENT
+ # 4: TABLE MAP EVENT (ndb_apply_status)
+ # 5: ROW EVENT
+ # 6: ROW EVENT
+ # 7: COMMIT
+ #
+ if (`select '$engine' = 'NDB'`)
+ {
+ let $commit_event_row_number= 7;
+ }
+
+ let $first_binlog_position= query_get_value("SHOW MASTER STATUS", Position, 1);
+ --enable_query_log
+ eval INSERT INTO tt_1(ddl_case) VALUES ($ddl_cases);
+ if (`SELECT $ddl_cases = 41`)
+ {
+ let $cmd= LOAD INDEX INTO CACHE nt_1 IGNORE LEAVES;
+ if (`SELECT '$engine' = 'NDB'`)
+ {
+ # This seems to be related to epochs.
+ # We need to check this against an updated version or avoid it.
+ let $ok= "no";
+ let $commit_event_row_number= 6;
+ }
+ }
+ if (`SELECT $ddl_cases = 40`)
+ {
+ let $cmd= LOAD INDEX INTO CACHE tt_1, tt_2 IGNORE LEAVES;
+ #
+ # In NDB (RBR and MIXED modes), the commit event is the sixth event
+ # in the binary log:
+ #
+ # 1: BEGIN
+ # 2: TABLE MAP EVENT
+ # 3: TABLE MAP EVENT (ndb_apply_status)
+ # 4: ROW EVENT
+ # 5: ROW EVENT
+ # 6: COMMIT
+ #
+ if (`SELECT '$engine' = 'NDB'`)
+ {
+ let $commit_event_row_number= 6;
+ }
+ }
+ if (`SELECT $ddl_cases = 39`)
+ {
+ let $cmd= ANALYZE TABLE nt_1;
+ }
+ if (`SELECT $ddl_cases = 38`)
+ {
+ let $cmd= CHECK TABLE nt_1;
+ #
+ # In NDB (RBR and MIXED modes), the commit event is the sixth event
+ # in the binary log:
+ #
+ # 1: BEGIN
+ # 2: TABLE MAP EVENT
+ # 3: TABLE MAP EVENT (ndb_apply_status)
+ # 4: ROW EVENT
+ # 5: ROW EVENT
+ # 6: COMMIT
+ #
+ if (`SELECT '$engine' = 'NDB'`)
+ {
+ let $commit_event_row_number= 6;
+ }
+ }
+ if (`SELECT $ddl_cases = 37`)
+ {
+ let $cmd= OPTIMIZE TABLE nt_1;
+ }
+ if (`SELECT $ddl_cases = 36`)
+ {
+ let $cmd= REPAIR TABLE nt_1;
+ }
+ if (`SELECT $ddl_cases = 35`)
+ {
+ let $cmd= LOCK TABLES tt_1 WRITE;
+ #
+ # In NDB (RBR and MIXED modes), the commit event is the sixth event
+ # in the binary log:
+ #
+ # 1: BEGIN
+ # 2: TABLE MAP EVENT
+ # 3: TABLE MAP EVENT (ndb_apply_status)
+ # 4: ROW EVENT
+ # 5: ROW EVENT
+ # 6: COMMIT
+ #
+ if (`SELECT '$engine' = 'NDB'`)
+ {
+ let $commit_event_row_number= 6;
+ }
+ }
+ if (`SELECT $ddl_cases = 34`)
+ {
+ let $cmd= UNLOCK TABLES;
+ #
+ # In NDB (RBR and MIXED modes), the commit event is the sixth event
+ # in the binary log:
+ #
+ # 1: BEGIN
+ # 2: TABLE MAP EVENT
+ # 3: TABLE MAP EVENT (ndb_apply_status)
+ # 4: ROW EVENT
+ # 5: ROW EVENT
+ # 6: COMMIT
+ #
+ if (`SELECT '$engine' = 'NDB'`)
+ {
+ let $commit_event_row_number= 6;
+ }
+ }
+ if (`SELECT $ddl_cases = 33`)
+ {
+ let $cmd= CREATE USER 'user'@'localhost';
+ }
+ if (`SELECT $ddl_cases = 32`)
+ {
+ let $cmd= GRANT ALL ON *.* TO 'user'@'localhost';
+ }
+ if (`SELECT $ddl_cases = 31`)
+ {
+ let $cmd= SET PASSWORD FOR 'user'@'localhost' = PASSWORD('newpass');
+ #
+ # In NDB (RBR mode), the commit event is the eleventh event
+ # in the binary log:
+ #
+ # 1: DDL EVENT which triggered the previous commmit.
+ # 2: BEGIN
+ # 3: TABLE MAP EVENT
+ # 4: ROW EVENT
+ # 5: COMMIT
+ # 6: BEGIN
+ # 7: TABLE MAP EVENT
+ # 8: TABLE MAP EVENT (ndb_apply_status)
+ # 9: ROW EVENT
+ # 10: ROW EVENT
+ # 11: COMMIT
+ #
+ if (`SELECT '$engine' = 'NDB' && @@binlog_format = 'ROW'`)
+ {
+ let $commit_event_row_number= 11;
+ }
+ #
+ # In NDB (MIXED mode), the commit event is the eighth event
+ # in the binary log:
+ #
+ # 1: DDL EVENT which triggered the previous commmit.
+ # 2: COMMIT
+ # 3: BEGIN
+ # 4: TABLE MAP EVENT
+ # 5: TABLE MAP EVENT (ndb_apply_status)
+ # 6: ROW EVENT
+ # 7: ROW EVENT
+ # 8: COMMIT
+ #
+ if (`SELECT '$engine' = 'NDB' && @@binlog_format != 'ROW'`)
+ {
+ let $commit_event_row_number= 7;
+ }
+ }
+ if (`SELECT $ddl_cases = 30`)
+ {
+ let $cmd= REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'localhost';
+ }
+ if (`SELECT $ddl_cases = 29`)
+ {
+ let $cmd= RENAME USER 'user'@'localhost' TO 'user_new'@'localhost';
+ }
+ if (`SELECT $ddl_cases = 28`)
+ {
+ let $cmd= DROP USER 'user_new'@'localhost';
+ }
+ if (`SELECT $ddl_cases = 27`)
+ {
+ let $cmd= CREATE EVENT evt ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO SELECT * FROM tt_1;
+ }
+ if (`SELECT $ddl_cases = 26`)
+ {
+ let $cmd= ALTER EVENT evt COMMENT 'evt';
+ }
+ if (`SELECT $ddl_cases = 25`)
+ {
+ let $cmd= DROP EVENT evt;
+ }
+ if (`SELECT $ddl_cases = 24`)
+ {
+ let $cmd= CREATE TRIGGER tr AFTER INSERT ON tt_1 FOR EACH ROW UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case;
+ }
+ if (`SELECT $ddl_cases = 23`)
+ {
+ let $cmd= DROP TRIGGER tr;
+ #
+ # In RBR mode, due to the trigger the tt_2 is also updated:
+ #
+ # 1: BEGIN
+ # 2: TABLE MAP EVENT
+ # 3: TABLE MAP EVENT
+ # 4: ROW EVENT
+ # 5: COMMIT
+ # 6: DDL EVENT which triggered the previous commmit.
+ #
+ if (`select @@binlog_format = 'ROW' && '$engine' != 'NDB'`)
+ {
+ let $commit_event_row_number= 5;
+ }
+ }
+ if (`SELECT $ddl_cases = 22`)
+ {
+ let $cmd= CREATE FUNCTION fc () RETURNS VARCHAR(64) RETURN "fc";
+ }
+ if (`SELECT $ddl_cases = 21`)
+ {
+ let $cmd= ALTER FUNCTION fc COMMENT 'fc';
+ }
+ if (`SELECT $ddl_cases = 20`)
+ {
+ let $cmd= DROP FUNCTION fc;
+ }
+ if (`SELECT $ddl_cases = 19`)
+ {
+ let $cmd= CREATE PROCEDURE pc () UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case;
+ }
+ if (`SELECT $ddl_cases = 18`)
+ {
+ let $cmd= ALTER PROCEDURE pc COMMENT 'pc';
+ }
+ if (`SELECT $ddl_cases = 17`)
+ {
+ let $cmd= DROP PROCEDURE pc;
+ }
+ if (`SELECT $ddl_cases = 16`)
+ {
+ let $cmd= CREATE VIEW v AS SELECT * FROM tt_1;
+ }
+ if (`SELECT $ddl_cases = 15`)
+ {
+ let $cmd= ALTER VIEW v AS SELECT * FROM tt_1;
+ }
+ if (`SELECT $ddl_cases = 14`)
+ {
+ let $cmd= DROP VIEW v;
+ }
+ if (`SELECT $ddl_cases = 13`)
+ {
+ let $cmd= CREATE INDEX ix ON tt_1(ddl_case);
+ #
+ # In NDB (RBR and MIXED modes), the commit event is the sixth event
+ # in the binary log:
+ #
+ # 1: BEGIN
+ # 2: TABLE MAP EVENT
+ # 3: TABLE MAP EVENT (ndb_apply_status)
+ # 4: ROW EVENT
+ # 5: ROW EVENT
+ # 6: COMMIT
+ # 7: DDL EVENT which triggered the previous commmit.
+ #
+ if (`SELECT '$engine' = 'NDB'`)
+ {
+ let $commit_event_row_number= 6;
+ }
+ }
+ if (`SELECT $ddl_cases = 12`)
+ {
+ let $cmd= DROP INDEX ix ON tt_1;
+ #
+ # In NDB (RBR and MIXED modes), the commit event is the sixth event
+ # in the binary log:
+ #
+ # 1: BEGIN
+ # 2: TABLE MAP EVENT
+ # 3: TABLE MAP EVENT (ndb_apply_status)
+ # 4: ROW EVENT
+ # 5: ROW EVENT
+ # 6: COMMIT
+ # 7: DDL EVENT which triggered the previous commmit.
+ #
+ if (`SELECT '$engine' = 'NDB'`)
+ {
+ let $commit_event_row_number= 6;
+ }
+ }
+ if (`SELECT $ddl_cases = 11`)
+ {
+ let $cmd= CREATE TEMPORARY TABLE tt_xx (a int);
+ let $in_temporary= "yes";
+ # In SBR and MIXED modes, the DDL statement is written to the binary log but
+ # does not commit the current transaction.
+ #
+ # 1: BEGIN
+ # 2: INSERT
+ # 3: CREATE TEMPORARY
+ #
+ # In RBR the transaction is not committed either and the statement is not
+ # written to the binary log:
+ #
+ # 1: BEGIN
+ # 2: TABLE MAP EVENT
+ # 3: ROW EVENT
+ #
+ if (`select @@binlog_format = 'STATEMENT' || @@binlog_format = 'MIXED'`)
+ {
+ let $commit_event_row_number= 4;
+ }
+ #
+ # In NDB (RBR mode), the commit event is the sixth event
+ # in the binary log:
+ #
+ # 1: BEGIN
+ # 2: TABLE MAP EVENT
+ # 3: TABLE MAP EVENT (ndb_apply_status)
+ # 4: ROW EVENT
+ # 5: ROW EVENT
+ # 6: COMMIT
+ #
+ if (`SELECT '$engine' = 'NDB' && @@binlog_format = 'ROW'` )
+ {
+ let $commit_event_row_number= 6;
+ }
+ #
+ # In NDB (MIXED mode), the commit event is the nineth event
+ # in the binary log:
+ #
+ # 1: BEGIN
+ # 2: DDL EVENT which triggered the previous commmit.
+ # 3: COMMIT
+ # 4: BEGIN
+ # 5: TABLE MAP EVENT
+ # 6: TABLE MAP EVENT (ndb_apply_status)
+ # 7: ROW EVENT
+ # 8: ROW EVENT
+ # 9: COMMIT
+ #
+ if (`SELECT '$engine' = 'NDB' && @@binlog_format != 'ROW'` )
+ {
+ let $commit_event_row_number= 9;
+ }
+ }
+ if (`SELECT $ddl_cases = 10`)
+ {
+ let $cmd= ALTER TABLE tt_xx ADD COLUMN (b int);
+ #
+ # In MIXED mode, the changes are logged as rows and we have what follows:
+ #
+ # 1: BEGIN
+ # 2: TABLE MAP EVENT
+ # 3: ROW EVENT
+ # 4: COMMIT
+ # 5: DDL EVENT which triggered the previous commmit.
+ #
+ if (`select @@binlog_format = 'MIXED'`)
+ {
+ let $commit_event_row_number= 4;
+ }
+ #
+ # In NDB (RBR and MIXED modes), the commit event is the sixth event
+ # in the binary log:
+ #
+ # 1: BEGIN
+ # 2: TABLE MAP EVENT
+ # 3: TABLE MAP EVENT (ndb_apply_status)
+ # 4: ROW EVENT
+ # 5: ROW EVENT
+ # 6: COMMIT
+ #
+ if (`SELECT '$engine' = 'NDB'`)
+ {
+ let $commit_event_row_number= 6;
+ }
+ }
+ if (`SELECT $ddl_cases = 9`)
+ {
+ let $cmd= ALTER TABLE tt_xx RENAME new_tt_xx;
+ #
+ # In MIXED mode, the changes are logged as rows and we have what follows:
+ #
+ # 1: BEGIN
+ # 2: TABLE MAP EVENT
+ # 3: ROW EVENT
+ # 4: COMMIT
+ # 5: DDL EVENT which triggered the previous commmit.
+ #
+ if (`select @@binlog_format = 'MIXED'`)
+ {
+ let $commit_event_row_number= 4;
+ }
+ #
+ # In NDB (RBR and MIXED modes), the commit event is the sixth event
+ # in the binary log:
+ #
+ # 1: BEGIN
+ # 2: TABLE MAP EVENT
+ # 3: TABLE MAP EVENT (ndb_apply_status)
+ # 4: ROW EVENT
+ # 5: ROW EVENT
+ # 6: COMMIT
+ #
+ if (`SELECT '$engine' = 'NDB'`)
+ {
+ let $commit_event_row_number= 6;
+ }
+ }
+ if (`SELECT $ddl_cases = 8`)
+ {
+ let $cmd= DROP TEMPORARY TABLE IF EXISTS new_tt_xx;
+ let $in_temporary= "yes";
+ #
+ # In SBR and MIXED modes, the DDL statement is written to the binary log
+ # but does not commit the current transaction:
+ #
+ # 1: BEGIN
+ # 2: INSERT
+ # 3: DROP TEMPORARY
+ #
+ # In RBR the transaction is not committed either and the statement is not
+ # written to the binary log:
+ #
+ # 1: BEGIN
+ # 2: TABLE MAP EVENT
+ # 3: ROW EVENT
+ #
+ if (`select @@binlog_format = 'STATEMENT'`)
+ {
+ let $commit_event_row_number= 4;
+ }
+ # In MIXED mode, the changes are logged as rows and we have what follows:
+ #
+ # 1: BEGIN
+ # 2: TABLE MAP EVENT
+ # 3: ROW EVENT
+ # 4: DROP TEMPORARY table IF EXISTS
+ #
+ if (`select @@binlog_format = 'MIXED'`)
+ {
+ let $commit_event_row_number= 5;
+ }
+ #
+ # In NDB (RBR and MIXED modes), the commit event is the sixth event
+ # in the binary log:
+ #
+ # 1: BEGIN
+ # 2: TABLE MAP EVENT
+ # 3: TABLE MAP EVENT (ndb_apply_status)
+ # 4: ROW EVENT
+ # 5: ROW EVENT
+ # 6: COMMIT
+ #
+ if (`SELECT '$engine' = 'NDB'`)
+ {
+ let $commit_event_row_number= 6;
+ }
+ #
+ # In NDB (MIXED mode), the commit event is the nineth event
+ # in the binary log:
+ #
+ # 1: BEGIN
+ # 2: DDL EVENT which triggered the previous commmit.
+ # 3: COMMIT
+ # 4: BEGIN
+ # 5: TABLE MAP EVENT
+ # 6: TABLE MAP EVENT (ndb_apply_status)
+ # 7: ROW EVENT
+ # 8: ROW EVENT
+ # 9: COMMIT
+ #
+ if (`SELECT '$engine' = 'NDB' && @@binlog_format != 'ROW'` )
+ {
+ let $commit_event_row_number= 9;
+ }
+ }
+ if (`SELECT $ddl_cases = 7`)
+ {
+ let $cmd= CREATE TABLE tt_xx (a int);
+ }
+ if (`SELECT $ddl_cases = 6`)
+ {
+ let $cmd= ALTER TABLE tt_xx ADD COLUMN (b int);
+ }
+ if (`SELECT $ddl_cases = 5`)
+ {
+ let $cmd= RENAME TABLE tt_xx TO new_tt_xx;
+ }
+ if (`SELECT $ddl_cases = 4`)
+ {
+ let $cmd= TRUNCATE TABLE new_tt_xx;
+ }
+ if (`SELECT $ddl_cases = 3`)
+ {
+ let $cmd= DROP TABLE IF EXISTS tt_xx, new_tt_xx;
+ }
+ if (`SELECT $ddl_cases = 2`)
+ {
+ let $cmd= CREATE DATABASE db;
+ #
+ # In NDB (RBR and MIXED modes), the commit event is the sixth event
+ # in the binary log:
+ #
+ # 1: BEGIN
+ # 2: TABLE MAP EVENT
+ # 3: TABLE MAP EVENT (ndb_apply_status)
+ # 4: ROW EVENT
+ # 5: ROW EVENT
+ # 6: COMMIT
+ # 7: DDL EVENT which triggered the previous commmit.
+ #
+ if (`SELECT '$engine' = 'NDB'`)
+ {
+ let $commit_event_row_number= 6;
+ }
+ }
+ if (`SELECT $ddl_cases = 1`)
+ {
+ let $cmd= DROP DATABASE IF EXISTS db;
+ #
+ # In NDB (RBR and MIXED modes), the commit event is the sixth event
+ # in the binary log:
+ #
+ # 1: BEGIN
+ # 2: TABLE MAP EVENT
+ # 3: TABLE MAP EVENT (ndb_apply_status)
+ # 4: ROW EVENT
+ # 5: ROW EVENT
+ # 6: COMMIT
+ # 7: DDL EVENT which triggered the previous commmit.
+ #
+ if (`SELECT '$engine' = 'NDB'`)
+ {
+ let $commit_event_row_number= 6;
+ }
+ }
+ --eval $cmd
+ --disable_query_log
+ #
+ # When a temporary table is either created or dropped, there is no implicit
+ # commit. The flag in_temporary is used to avoid aborting the test in such
+ # cases. Thus we force the commit.
+ #
+ if (`SELECT $in_temporary = "yes"`)
+ {
+ --eval COMMIT
+ }
+ let $event_commit= query_get_value("SHOW BINLOG EVENTS FROM $first_binlog_position", Info, $commit_event_row_number);
+ if (`SELECT SUBSTRING("$event_commit",1,6) != "COMMIT"`)
+ {
+ if (`SELECT $ok = "yes"`)
+ {
+ --echo it *does not* commit the current transaction.
+ --echo $cmd
+ --echo $event_commit
+ SHOW BINLOG EVENTS;
+ exit;
+ }
+ }
+ --echo -e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+ let $binlog_start= $first_binlog_position;
+ --echo -b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+ --source include/show_binlog_events.inc
+ --echo -e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+ --echo
+ dec $ddl_cases;
+}
+SET AUTOCOMMIT= 1;
+
+--echo ###################################################################################
+--echo # CHECK CONSISTENCY
+--echo ###################################################################################
+--sync_slave_with_master
+
+--let $diff_table_1= master:test.tt_1
+--let $diff_table_2= slave:test.tt_1
+--source include/diff_tables.inc
+
+--echo ###################################################################################
+--echo # CLEAN
+--echo ###################################################################################
+connection master;
+
+DROP TABLE tt_1;
+DROP TABLE tt_2;
+DROP TABLE nt_1;
+
+sync_slave_with_master;
diff --git a/mysql-test/suite/rpl/t/rpl_innodb.test b/mysql-test/extra/rpl_tests/rpl_innodb.test
index 64a85d27c88..c866b68466d 100644
--- a/mysql-test/suite/rpl/t/rpl_innodb.test
+++ b/mysql-test/extra/rpl_tests/rpl_innodb.test
@@ -1,9 +1,3 @@
-# File for specialities regarding replication from or to InnoDB
-# tables.
-
-source include/master-slave.inc;
-source include/have_innodb.inc;
-
#
# Bug#11401: Load data infile 'REPLACE INTO' fails on slave.
#
@@ -76,7 +70,7 @@ sync_slave_with_master;
connection slave;
# We want to verify that the following transactions are written to the
-# binlog, despite the transaction is rolled back. (The should be
+# binlog, despite the transaction is rolled back. (They should be
# written to the binlog since they contain non-transactional DROP
# TEMPORARY TABLE). To see that, we use the auxiliary table t1, which
# is transactional (InnoDB) on master and MyISAM on slave. t1 should
@@ -84,6 +78,10 @@ connection slave;
# the transaction to be logged. Since t1 is non-transactional on
# slave, the change will not be rolled back, so the inserted rows will
# stay in t1 and we can verify that the transaction was replicated.
+#
+# Note, however, that the previous explanation is not true for ROW and
+# MIXED modes as rollback on a transactional table is not written to
+# the binary log.
ALTER TABLE mysqltest1.t1 ENGINE = MyISAM;
SHOW CREATE TABLE mysqltest1.t1;
diff --git a/mysql-test/extra/rpl_tests/rpl_insert_delayed.test b/mysql-test/extra/rpl_tests/rpl_insert_delayed.test
index e492903afad..a6bf2b294d1 100644
--- a/mysql-test/extra/rpl_tests/rpl_insert_delayed.test
+++ b/mysql-test/extra/rpl_tests/rpl_insert_delayed.test
@@ -38,18 +38,19 @@ connection master;
truncate table t1;
# first scenario: duplicate on first row
insert delayed into t1 values(10, "my name");
-if ($binlog_format_statement)
+flush table t1;
+if (`SELECT @@global.binlog_format = 'STATEMENT'`)
{
# statement below will be converted to non-delayed INSERT and so
# will stop at first error, guaranteeing replication.
--error ER_DUP_ENTRY
insert delayed into t1 values(10, "is Bond"), (20, "James Bond");
}
-if (!$binlog_format_statement)
+if (`SELECT @@global.binlog_format != 'STATEMENT'`)
{
insert delayed into t1 values(10, "is Bond"), (20, "James Bond");
}
-flush table t1; # to wait for INSERT DELAYED to be done
+flush table t1;
select * from t1;
sync_slave_with_master;
# when bug existed in statement-based binlogging, t1 on slave had
@@ -59,7 +60,7 @@ select * from t1;
# second scenario: duplicate on second row
connection master;
delete from t1 where id!=10;
-if ($binlog_format_statement)
+if (`SELECT @@global.binlog_format = 'STATEMENT'`)
{
# statement below will be converted to non-delayed INSERT and so
# will be binlogged with its ER_DUP_ENTRY error code, guaranteeing
@@ -67,7 +68,7 @@ if ($binlog_format_statement)
--error ER_DUP_ENTRY
insert delayed into t1 values(20, "is Bond"), (10, "James Bond");
}
-if (!$binlog_format_statement)
+if (`SELECT @@global.binlog_format != 'STATEMENT'`)
{
insert delayed into t1 values(20, "is Bond"), (10, "James Bond");
}
@@ -108,6 +109,7 @@ if (`SELECT @@global.binlog_format != 'ROW'`)
{
#must show two INSERT DELAYED
--replace_column 1 x 2 x 3 x 4 x 5 x
+ --replace_regex /table_id: [0-9]+/table_id: #/
show binlog events in 'master-bin.000002' LIMIT 2,2;
}
select * from t1;
@@ -118,6 +120,7 @@ if (`SELECT @@global.binlog_format != 'ROW'`)
{
#must show two INSERT DELAYED
--replace_column 1 x 2 x 3 x 4 x 5 x
+ --replace_regex /table_id: [0-9]+/table_id: #/
show binlog events in 'slave-bin.000002' LIMIT 2,2;
}
select * from t1;
diff --git a/mysql-test/extra/rpl_tests/rpl_insert_id.test b/mysql-test/extra/rpl_tests/rpl_insert_id.test
index bd815d9de02..37050741b33 100644
--- a/mysql-test/extra/rpl_tests/rpl_insert_id.test
+++ b/mysql-test/extra/rpl_tests/rpl_insert_id.test
@@ -9,6 +9,8 @@
# column and index but without primary key.
##############################################################
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
--echo #
--echo # Setup
--echo #
@@ -117,6 +119,7 @@ sync_slave_with_master;
--echo #
connection master;
+set @@session.sql_auto_is_null=1;
eval create table t1(a int auto_increment, key(a)) engine=$engine_type;
eval create table t2(a int) engine=$engine_type;
insert into t1 (a) values (null);
@@ -179,13 +182,17 @@ begin
end|
delimiter ;|
+--disable_warnings
insert into t1 (last_id) values (0);
+--enable_warnings
drop trigger t1_bi;
# Check that nested call doesn't affect outer context.
select last_insert_id();
+--disable_warnings
select bug15728_insert();
+--enable_warnings
select last_insert_id();
insert into t1 (last_id) values (bug15728());
# This should be exactly one greater than in the previous call.
@@ -438,7 +445,9 @@ delimiter ;|
INSERT INTO t1 VALUES (NULL, -1);
CALL p1();
+--disable_warnings
SELECT f1();
+--enable_warnings
INSERT INTO t1 VALUES (NULL, f2()), (NULL, LAST_INSERT_ID()),
(NULL, LAST_INSERT_ID()), (NULL, f2()), (NULL, f2());
INSERT INTO t1 VALUES (NULL, f2());
@@ -507,12 +516,16 @@ insert into t2 (id) values(1),(2),(3);
delete from t2;
set sql_log_bin=1;
#inside SELECT, then inside INSERT
+--disable_warnings
select insid();
+--enable_warnings
set sql_log_bin=0;
insert into t2 (id) values(5),(6),(7);
delete from t2 where id>=5;
set sql_log_bin=1;
+--disable_warnings
insert into t1 select insid();
+--enable_warnings
select * from t1 order by id;
select * from t2 order by id;
@@ -548,4 +561,5 @@ connection master;
drop table t1, t2;
drop procedure foo;
SET @@global.concurrent_insert= @old_concurrent_insert;
+set @@session.sql_auto_is_null=default;
sync_slave_with_master;
diff --git a/mysql-test/extra/rpl_tests/rpl_insert_ignore.test b/mysql-test/extra/rpl_tests/rpl_insert_ignore.test
index 43d45ef6c60..ee09c316354 100644
--- a/mysql-test/extra/rpl_tests/rpl_insert_ignore.test
+++ b/mysql-test/extra/rpl_tests/rpl_insert_ignore.test
@@ -55,7 +55,9 @@ INSERT INTO t1 VALUES (2, 2);
INSERT INTO t1 VALUES (3, 3);
INSERT INTO t1 VALUES (4, 4);
+--disable_warnings
INSERT IGNORE INTO t1 SELECT NULL, t2.b FROM t2 ORDER BY t2.a;
+--enable_warnings
SELECT * FROM t1 ORDER BY a;
diff --git a/mysql-test/extra/rpl_tests/rpl_loaddata.test b/mysql-test/extra/rpl_tests/rpl_loaddata.test
index 3f3c3624fa6..0e1005cd6d9 100644
--- a/mysql-test/extra/rpl_tests/rpl_loaddata.test
+++ b/mysql-test/extra/rpl_tests/rpl_loaddata.test
@@ -1,6 +1,3 @@
-# Requires statement logging
--- source include/have_binlog_format_mixed_or_statement.inc
-
# See if replication of a "LOAD DATA in an autoincrement column"
# Honours autoincrement values
# i.e. if the master and slave have the same sequence
@@ -163,8 +160,11 @@ eval $lower_stmt_head infile '../../std_data/rpl_loaddata2.dat' into table t2 fi
terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by
'\n##\n' starting by '>' ignore 1 lines;
connection slave;
---source include/wait_for_slave_sql_to_stop.inc
-drop table t1, t2;
+if (`SELECT @@global.binlog_format != 'ROW'`)
+{
+ --source include/wait_for_slave_sql_to_stop.inc
+ drop table t1, t2;
+}
connection master;
drop table t1, t2;
diff --git a/mysql-test/extra/rpl_tests/rpl_log.test b/mysql-test/extra/rpl_tests/rpl_log.test
index e4ebfd68761..7efcb67b033 100644
--- a/mysql-test/extra/rpl_tests/rpl_log.test
+++ b/mysql-test/extra/rpl_tests/rpl_log.test
@@ -37,13 +37,13 @@ select count(*) from t1;
show binlog events;
--replace_column 2 # 5 #
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
-show binlog events from 106 limit 1;
+show binlog events from 107 limit 1;
--replace_column 2 # 5 #
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
-show binlog events from 106 limit 2;
+show binlog events from 107 limit 2;
--replace_column 2 # 5 #
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
-show binlog events from 106 limit 2,1;
+show binlog events from 107 limit 1,4;
flush logs;
# We need an extra update before doing save_master_pos.
@@ -104,7 +104,7 @@ show binlog events in 'slave-bin.000001' from 4;
--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;
+source include/show_slave_status2.inc;
# Need to recode the following
diff --git a/mysql-test/extra/rpl_tests/rpl_mixing_engines.test b/mysql-test/extra/rpl_tests/rpl_mixing_engines.test
index cbda85527f1..b8b2b1bc01b 100644
--- a/mysql-test/extra/rpl_tests/rpl_mixing_engines.test
+++ b/mysql-test/extra/rpl_tests/rpl_mixing_engines.test
@@ -1,710 +1,1776 @@
-###################################################################################
-# This test checks if transactions that mixes transactional and non-transactional
-# tables are correctly handled in statement mode. In an nutshell, we have what
-# follows:
+################################################################################
+# - Introduction
+# This checks if transactions that mixes transactional and non-transactional
+# are correctly handled. There are several types of statements that require
+# attention because of their special behavior in transactions:
#
-# 1) "B T T C" generates in binlog the "B T T C" entries.
+# * Non-transactional updates that take place inside a transaction present
+# problems for logging because (1) they are visible to other clients before
+# the transaction is committed, and (2) they are not rolled back even if the
+# transaction is rolled back. It is not always possible to log correctly in
+# statement format when both transactional and non-transactional tables are
+# used in the same transaction.
#
-# 2) "B T T R" generates in binlog an "empty" entry.
+# * Statements that do an implicit commit (i.e., most but not all DDL, and
+# some utility commands) are logged specially due to unspecified requirements by
+# NDB.
+#
+# * Statements that update temporary tables need special treatment since they
+# are not logged in row format.
#
-# 3) "B T N C" generates in binlog the "B T N C" entries.
+# - Definitions
#
-# 4) "B T N R" generates in binlog the "B T N R" entries.
+# To reason about logging different table types, we make some preliminary
+# definitions.
#
-# 5) "T" generates in binlog the "B T C" entry.
+# * A table that has a transactional engine is called a T-table.
#
-# 6) "N" generates in binlog the "N" entry.
+# * A table that has a non-transactional engine is called an N-table.
#
-# 7) "M" generates in binglog the "B M C" entries.
+# * A statement makes an N-write if it makes any type of change to the server
+# state that will not be changed by a ROLLBACK.
#
-# 8) "B N N T C" generates in binglog the "N N B T C" entries.
+# * Events are either appended to the Transaction Cache (TC) or to the
+# Statement Cache (SC) or written directly to the binlog.
#
-# 9) "B N N T R" generates in binlog the "N N B T R" entries.
+# - Preliminary Rules
#
-# 10) "B N N C" generates in binglog the "N N" entries.
+# The following preliminary rules are actually consequences of the principle
+# that statements shall be correctly logged when binlog_format=MIXED or ROW.
+# They also apply when binlog_format=STATEMENT: this makes statement format
+# work in many practical cases.
#
-# 11) "B N N R" generates in binlog the "N N" entries.
+# * (Causality) If statement A is executed before statement B, and B is logged
+# in statement format, and B reads tables that A may modifies, then B shall be
+# logged after A.
#
-# 12) "B M T C" generates in the binlog the "B M T C" entries.
+# * (Durability) Events shall be written to the binary log at the moment they
+# take effect. In particular, changes to N-tables shall be written to the
+# binary log when they have been executed, and changes to T-tables shall be
+# written to the binary log on commit. If --sync-binlog has been specified,
+# then it suffices that events are be written to the binary log at the next
+# synchronization point.
#
-# 13) "B M T R" generates in the binlog the "B M T R" entries.
-###################################################################################
-
---echo ###################################################################################
---echo # CONFIGURATION
---echo ###################################################################################
-connection master;
+# * (causality-precedence) If causality and durability cannot both be
+# fulfilled, then casuality is considered more important.
+#
+# - Rules for non-committing statements, except CREATE TEMPORARY TABLE...SELECT
+#
+# The preliminary rules above, together with the principles for logging format
+# , have been used to construct the following rules.
+#
+# CALL statements are unrolled, so that each statement executed by the stored
+# procedure is logged separately. (If a stored procedure A invokes a stored
+# procedure B, then B is unrolled recursively). In the following, we assume
+# that unrolling has already been done, and the word "statement" refers to a
+# non-CALL top-level statement or a non-CALL sub-statement.
+#
+# Let S be a logged statement that does not have an implicit commit, except
+# CREATE TEMPORARY TABLE...SELECT (This includes all "pure DML": INSERT,
+# UPDATE, DELETE, REPLACE, TRUNCATE, SELECT, DO, CALL, EXECUTE, LOAD DATA
+# INFILE, and BINLOG. It also includes CREATE TEMPORARY TABLE without SELECT,
+# and DROP TEMPORARY TABLE. CREATE TEMPORARY TABLE...SELECT is handled in the
+# next subsection).
+#
+# Before executing S, determine unsafeness:
+#
+# * If S either makes N-writes or reads from an N-table, and either S or a
+# previous statement in the same transaction reads or writes to a T-table,
+# then S is marked as unsafe.
+#
+# When logging S, determine where to log it by applying the following rules in
+# order:
+#
+# * If S is to be logged in statement format (i.e., if one of the following
+# holds: (1) STATEMENT; (2) MIXED and S is safe; (3) S is of DDL type, i.e.,
+# CREATE TEMPORARY TABLE):
+# 1. If S produces an error and does not do any N-write, do not log.
+# 2. Otherwise, if either S or any previous statement in the same
+# transaction reads or writes in any T-tables, log to TC.
+# 3. Otherwise, log to SC.
+#
+# * If S is to be logged in row format (i.e., if S is DML and one of the
+# following holds: (1) ROW; (2) MIXED and S is unsafe):
+# 1. Do not log row events that write to temporary tables.
+# 2. Log row events that write to non-temporary N-tables to SC.
+# 3. Log row events that write to non-temporary T-tables to TC, except
+# rows that are rolled back due to an error. (Note: if there is an error,
+# rows written to a T-table are kept if there are subsequent rows written
+# to an N-table.)
+#
+# * At the end of S, write BEGIN + SC + COMMIT to the binlog and clear the
+# SC.
+#
+# At end of transaction:
+#
+# * At COMMIT or implicit commit, where all XA tables in the transaction
+# succeed in the "prepare" phase:
+# 1. If the TC is non-empty, write BEGIN + TC + COMMIT to the binlog.
+# 2. If the TC is empty, do nothing.
+#
+# * At ROLLBACK; or at COMMIT or implicit commit where some XA table fails
+# in the "prepare" phase:
+# 1. If the TC contains any N-write, write BEGIN + TC + ROLLBACK to the
+# binlog.
+# 2. If the TC does not contain any N-write, do nothing.
+#
+# * At ROLLBACK TO SAVEPOINT:
+# 1. If the TC contains any N-write after the savepoint, write ROLLBACK TO
+# SAVEPOINT to the TC.
+# 2. Otherwise, clear the part of the TC that starts at the savepoint and
+# extends to the end of the TC. (Bug#47327 breaks this rule)
+#
+# * Clear the TC at the end of the transaction.
+#
+# - Rules for CREATE [TEMPORARY] TABLE...SELECT
+#
+# First, unsafeness is determined as above (R-unsafe-transaction). Then the
+# logging format is decided. Then the following rules apply.
+#
+# * If logging in statement format (i.e., one of the following holds: (1)
+# STATEMENT; (2) MIXED and statement is safe):
+# 1. If there is an error, do not write anything.
+# 2. If there is no error and the TEMPORARY keyword is used, write the
+# entire CREATE...SELECT statement to the TC.
+# 3. If there is no error and the TEMPORARY keyword is not used, write the
+# entire CREATE...SELECT directly to the binlog.
+#
+# * If logging in row format (i.e., one of the following holds: (1) ROW; (2)
+# MIXED and statement is unsafe):
+# 1. If the TEMPORARY keyword is used, do not write anything.
+# 2. If the TEMPORARY keyword is not used, write CREATE TABLE (without
+# select) + BEGIN + row events + COMMIT to the TC. If there is an error,
+# clear the TC; otherwise flush the TC to the binlog at the end of the
+# statement and then clear the TC. (Note: currently Bug#47899 breaks this
+# rule)
+#
+# - Rules for committing statements, except CREATE [TEMPORARY] TABLE...SELECT
+#
+# * All other statements that have a pre-commit are written directly to the
+# binlog. (Note: this is semantically equivalent to writing it to the SC and
+# flushing the SC. However, due to requirements by NDB (which have not been
+# clarified), we write directly to the binlog.)
+#
+# We use the include file rpl_mixing_engines.inc to generate sql commands from a
+# format string. The format string consists of a sequence of 'codes' separated
+# by spaces. The following codes exist:
+#
+# - Define the scope of a transaction:
+# B - Begin.
+# C - Commit.
+# R - Rollback.
+# S1 - Savepoint.
+# R1 - Rollback to S1.
+#
+# - Change only T-Tables:
+# T - Updates a T-Table.
+# T-trig - Updates T-Tables through a trigger.
+# T-func - Updates T-Tables through a function.
+# T-proc - Updates T-Tables through a procedure.
+# eT - Fails while updating the first tuple in a T-Table.
+# Te - Fails while updating an n-tuple (n > 1) in a T-Table.
+# Te-trig - Fails while updating an n-tuple (n > 1) in a T-Table.
+# Te-func - Fails while updating an n-tuple (n > 1) in a T-Table.
+#
+# - Change only N-Tables
+# N - Updates a N-Table.
+# N-trig - Updates N-Tables through a trigger.
+# N-func - Updates N-Tables through a function.
+# N-proc - Updates N-Tables through a procedure.
+# eN - Fails while updating the first tuple in a N-Table.
+# Ne - Fails while updating an n-tuple (n > 1) in a N-Table.
+# Ne-trig - Fails while updating an n-tuple (n > 1) in a N-Table.
+# Ne-func - Fails while updating an n-tuple (n > 1) in a N-Table.
+#
+# - Read T-table and write N-table:
+# tN - Updates a N-Table
+# tNe - Fails while updating an n-tuple (n > 1) in a N-Table.
+#
+# - Read N-table and write T-table:
+# nT - Updates a T-Table.
+# nTe - Fails while updating an n-tuple (n > 1) in a T-Table.
+#
+# - Update both types of tables. First a N-Table and the a T-Table:
+# NT - Upates both types of tables through an update statement.
+# NT-trig - Updates both types of tables through a trigger.
+# NT-func - Updates both types of tables through a procedure.
+# NeT-trig - Fails while updating an n-tuple (n > 1) in a T-Table.
+# NeT-func - Fails while updating an n-tuple (n > 1) in a T-Table.
+#
+# - Update both types of tables. First a T-Table and the a N-Table:
+# TN - Upates both types of tables through an update statement.
+# TN-trig - Updates both types of tables through a trigger.
+# TN-func - Updates both types of tables through a procedure.
+# TeN-trig - Fails while updating an n-tuple (n > 1) in a N-Table.
+# TeN-func - Fails while updating an n-tuple (n > 1) in a N-Table.
+#
+# - This is CREATE...SELECT:
+# CS-T->T - Creates a T-table selecting from a T-table.
+# CS-N->N - Creates a N-table selecting from a N-table.
+# CS-T->N - Creates a T-table selecting form a N-table.
+# CS-N->T - Creates a N-table selecting from a T-table.
+# CSe-T->T - Fails while creating a T-table selecting from a T-table.
+# CSe-N->N - Fails while creating a N-table selecting from a N-table.
+# CSe-T->N - Fails while creating a T-table selecting from a a N-table.
+# CSe-N->T - Fails while creating a N-table selecting from a T-table.
+# drop-CS - Drops any of the tables previously created.
+# trunc-CS-T - Truncates a T-table previously created.
+# trunc-CS-N - Truncates a N-table previously created.
+# CT - Creates a temporary T-table.
+# drop-CT - Drops a temporary T-table.
+#
+# - This is INSERT...SELECT:
+# IS-T<-T - Inserts data from a T-table into a T-table.
+# IS-T<-N - Inserts data from a N-table into a T-table.
+# IS-N<-T - Inserts data from a T-table into a N-table.
+# IS-N<-N - Inserts data from a N-table into a N-table.
+# ISe-T<-T - Fails while inserting data from a T-table into a T-table.
+# ISe-T<-N - Fails while inserting data from a N-table into a T-table.
+# ISe-N<-T - Fails while inserting data from a T-table into a N-table.
+# ISe-N<-N - Fails while inserting data from a N-table into a N-table.
+#
+# For the CREATE...SELECT and INSERT...SELECT, the table names are defined based
+# on the variable $tb_id which is automatically incremented after each drop.
+# This indirectly means that two tables cannot co-exist unless we manually keep
+# the variable $tb_id.
+#
+# The format of the entries in the binlog depends on the mode and on the type
+# statements: S - statement and R - row. And when it is clear from the context
+# which statement is referred to, we sometimes use "M" to denote a "Mixed"
+# statement, i.e., one that accesses both a T-table and an N-table.
+#
+# For further details, please, read WL#2687 and WL#5072.
+################################################################################
+--echo #########################################################################
+--echo # CONFIGURATION
+--echo #########################################################################
-SET SQL_LOG_BIN=0;
-CREATE TABLE nt_1 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
-CREATE TABLE nt_2 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
-CREATE TABLE nt_3 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
-CREATE TABLE nt_4 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
-CREATE TABLE tt_1 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
-CREATE TABLE tt_2 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
-CREATE TABLE tt_3 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
-CREATE TABLE tt_4 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
-SET SQL_LOG_BIN=1;
-
-connection slave;
-
-SET SQL_LOG_BIN=0;
-CREATE TABLE nt_1 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
-CREATE TABLE nt_2 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
-CREATE TABLE nt_3 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
-CREATE TABLE nt_4 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
-CREATE TABLE tt_1 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
-CREATE TABLE tt_2 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
-CREATE TABLE tt_3 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
-CREATE TABLE tt_4 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
-SET SQL_LOG_BIN=1;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+SET @commands= 'configure';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+--echo #########################################################################
+--echo # 1 - MIXING TRANSACTIONAL and NON-TRANSACTIONAL TABLES
+--echo #########################################################################
connection master;
-DELIMITER |;
+--echo
+--echo
+--echo
+--echo
+--echo #
+--echo #1) Generates in the binlog what follows:
+--echo # --> STMT "B T C" entries, format S.
+--echo # --> ROW "B T C" entries, format R.
+--echo # --> MIXED "B T C" entries, format S.
+--echo #
+SET @commands= 'T';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-CREATE FUNCTION f1 () RETURNS VARCHAR(64)
-BEGIN
- RETURN "Testing...";
-END|
+SET @commands= 'T-trig';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-CREATE FUNCTION f2 () RETURNS VARCHAR(64)
-BEGIN
- RETURN f1();
-END|
+SET @commands= 'T-func';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-CREATE PROCEDURE pc_i_tt_3 (IN x INT, IN y VARCHAR(64))
-BEGIN
- INSERT INTO tt_3 VALUES (y,x,x);
-END|
+SET @commands= 'T-proc';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-CREATE TRIGGER tr_i_tt_3_to_nt_3 BEFORE INSERT ON tt_3 FOR EACH ROW
-BEGIN
- INSERT INTO nt_3 VALUES (NEW.a, NEW.b, NEW.c);
-END|
-CREATE TRIGGER tr_i_nt_4_to_tt_4 BEFORE INSERT ON nt_4 FOR EACH ROW
-BEGIN
- INSERT INTO tt_4 VALUES (NEW.a, NEW.b, NEW.c);
-END|
+--echo
+--echo
+--echo
+--echo
+--echo #
+--echo #1.e) Generates in the binlog what follows:
+--echo # --> STMT empty.
+--echo # --> ROW empty.
+--echo # --> MIXED empty.
+--echo #
+SET @commands= 'eT';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-DELIMITER ;|
+SET @commands= 'Te';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---echo ###################################################################################
---echo # MIXING TRANSACTIONAL and NON-TRANSACTIONAL TABLES
---echo ###################################################################################
-connection master;
+SET @commands= 'Te-trig';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'Te-func';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+--echo
+--echo
+--echo
+--echo
+--echo #
+--echo #2) Generates in the binlog what follows:
+--echo # --> STMT "B N C" entry, format S.
+--echo # --> ROW "B N C" entry, format R.
+--echo # --> MIXED "B N C" entry, format S.
+--echo #
+SET @commands= 'N';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'N-trig';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'N-func';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'N-proc';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+
+--echo
+--echo
+--echo
+--echo
+--echo #
+--echo #2.e) Generates in the binlog what follows if a N-table is changed:
+--echo # --> STMT "B N C" entry, format S.
+--echo # --> ROW "B N C" entry, format R.
+--echo # --> MIXED "B N C" entry, format S.
+--echo #
+SET @commands= 'eN';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'Ne';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'Ne-trig';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'Ne-func';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+--echo
+--echo
+--echo
+--echo
+--echo #
+--echo #3) Generates in the binlog what follows:
+--echo # --> STMT "B M C" entry if only N-Table is changed, format S.
+--echo # --> STMT "B M C" entries, format S.
+--echo # --> ROW "B N T B T C" entries, format R.
+--echo # --> MIXED "B N T B T C" entries, format R.
+--echo #
+SET @commands= 'tN';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'nT';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'NT';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'NT-trig';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'NT-func';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'TN';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'TN-trig';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'TN-func';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+
+--echo
+--echo
+--echo
+--echo
+--echo #
+--echo #3.e) Generates in the binlog what follows:
+--echo # --> STMT "B M C" entry if only N-Table is changed, format S.
+--echo # --> STMT "B M R" entries, format S.
+--echo # --> ROW "B N C" entry, format R.
+--echo # --> MIXED "B N C" entry, format R.
+SET @commands= 'tNe';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'nTe';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'NeT-trig';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'NeT-func';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'TeN-trig';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'TeN-func';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+--echo
+--echo
+--echo
+--echo
+--echo #
+--echo #4) Generates in the binlog what follows:
+--echo # --> STMT "B T T C" entries, format S.
+--echo # --> ROW "B T T C" entries, format R.
+--echo # --> MIXED "B T T C" entries, format S
+--echo #
+SET @commands= 'B T T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T T-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T T-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T T-proc C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-trig T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-trig T-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-trig T-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-trig T-proc C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+SET @commands= 'B T-func T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-func T-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-func T-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-func T-proc C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-proc T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-proc T-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-proc T-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-proc T-proc C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+
+--echo
+--echo
+--echo
+--echo
--echo #
---echo #1) "B T T C" generates in binlog the "B T T C" entries.
+--echo #4.e) Generates in the binlog what follows:
+--echo # --> STMT "B T C" entries, format S.
+--echo # --> ROW "B T C" entries, format R.
+--echo # --> MIXED "B T C" entries, format S.
--echo #
-BEGIN;
-INSERT INTO tt_1 VALUES ("new text 4", 4, "new text 4");
-INSERT INTO tt_2 VALUES ("new text 4", 4, "new text 4");
-COMMIT;
+SET @commands= 'B T eT C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T Te C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T Te-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T Te-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B eT T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B Te T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B Te-trig T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B Te-func T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #1.e) "B T T C" with error in T generates in binlog the "B T T C" entries.
+--echo #5) Generates in the binlog what follows:
+--echo # --> STMT empty.
+--echo # --> ROW empty.
+--echo # --> MIXED empty.
--echo #
-INSERT INTO tt_1 VALUES ("new text -2", -2, "new text -2");
-BEGIN;
---error ER_DUP_ENTRY
-INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1"), ("new text -2", -2, "new text -2");
-INSERT INTO tt_2 VALUES ("new text -3", -3, "new text -3");
-COMMIT;
+SET @commands= 'B T T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T T-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T T-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T T-proc R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-trig T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-trig T-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-INSERT INTO tt_2 VALUES ("new text -5", -5, "new text -5");
---error ER_DUP_ENTRY
-INSERT INTO tt_2 VALUES ("new text -4", -4, "new text -4"), ("new text -5", -5, "new text -5");
-COMMIT;
+SET @commands= 'B T-trig T-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-trig T-proc R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-func T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-func T-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-func T-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-func T-proc R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-proc T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-proc T-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-proc T-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-proc T-proc R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #2) "B T T R" generates in binlog an "empty" entry.
+--echo #5.e) Generates in the binlog what follows:
+--echo # --> STMT empty.
+--echo # --> ROW empty.
+--echo # --> MIXED empty.
--echo #
-BEGIN;
-INSERT INTO tt_1 VALUES ("new text 5", 5, "new text 5");
-INSERT INTO tt_2 VALUES ("new text 5", 5, "new text 5");
-ROLLBACK;
+SET @commands= 'B T eT R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T Te R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T Te-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T Te-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B eT T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B Te T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B Te-trig T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B Te-func T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #2.e) "B T T R" with error in T generates in binlog an "empty" entry.
+--echo #6) Generates in the binlog what follows:
+--echo # --> STMT "B N C B N C" entries, format S.
+--echo # --> ROW "B N C B N C" entries, format R.
+--echo # --> MIXED "B N C B N C" entries, format S.
--echo #
-INSERT INTO tt_1 VALUES ("new text -7", -7, "new text -7");
-BEGIN;
---error ER_DUP_ENTRY
-INSERT INTO tt_1 VALUES ("new text -6", -6, "new text -6"), ("new text -7", -7, "new text -7");
-INSERT INTO tt_2 VALUES ("new text -8", -8, "new text -8");
-ROLLBACK;
+SET @commands= 'B N N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N N-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N N-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N N-proc C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-trig N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-trig N-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-trig N-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-trig N-proc C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-func N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-func N-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-INSERT INTO tt_2 VALUES ("new text -10", -10, "new text -10");
---error ER_DUP_ENTRY
-INSERT INTO tt_2 VALUES ("new text -9", -9, "new text -9"), ("new text -10", -10, "new text -10");
-ROLLBACK;
+SET @commands= 'B N-func N-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-func N-proc C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-proc N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-proc N-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-proc N-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-proc N-proc C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #3) "B T N C" generates in binlog the "B T N C" entries.
+--echo #6.e) Generates in the binlog what follows if a N-Table is changed:
+--echo # --> STMT "B N C B N C" entries, format S.
+--echo # --> ROW "B N C B N C" entries, format R.
+--echo # --> MIXED "B N C B N C" entries, format S.
--echo #
-BEGIN;
-INSERT INTO tt_1 VALUES ("new text 6", 6, "new text 6");
-INSERT INTO nt_1 VALUES ("new text 6", 6, "new text 6");
-COMMIT;
+SET @commands= 'B N eN C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N Ne C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N Ne-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N Ne-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B eN N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B Ne N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B Ne-trig N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B Ne-func N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #3.e) "B T N C" with error in either T or N generates in binlog the "B T N C" entries.
+--echo #7) Generates in the binlog what follows:
+--echo # --> STMT "B N C B N C" entries, format S.
+--echo # --> ROW "B N C B N C" entries, format R.
+--echo # --> MIXED "B N C B N C" entries, format S.
--echo #
-INSERT INTO tt_1 VALUES ("new text -12", -12, "new text -12");
-BEGIN;
---error ER_DUP_ENTRY
-INSERT INTO tt_1 VALUES ("new text -11", -11, "new text -11"), ("new text -12", -12, "new text -12");
-INSERT INTO nt_1 VALUES ("new text -13", -13, "new text -13");
-COMMIT;
+SET @commands= 'B N N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-INSERT INTO tt_1 VALUES ("new text -14", -14, "new text -14");
-INSERT INTO nt_1 VALUES ("new text -16", -16, "new text -16");
---error ER_DUP_ENTRY
-INSERT INTO nt_1 VALUES ("new text -15", -15, "new text -15"), ("new text -16", -16, "new text -16");
-COMMIT;
+SET @commands= 'B N N-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N N-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N N-proc R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-trig N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-trig N-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-trig N-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-trig N-proc R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-func N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-func N-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-func N-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-func N-proc R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-proc N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-proc N-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-proc N-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-proc N-proc R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #4) "B T N R" generates in binlog the "B T N R" entries.
+--echo #7.e) Generates in the binlog what follows if a N-Table is changed:
+--echo # --> STMT "B N C B N C" entries, format S.
+--echo # --> ROW "B N C B N C" entries, format R.
+--echo # --> MIXED "B N C B N C" entries, format S.
--echo #
-BEGIN;
-INSERT INTO tt_1 VALUES ("new text 7", 7, "new text 7");
-INSERT INTO nt_1 VALUES ("new text 7", 7, "new text 7");
-ROLLBACK;
+SET @commands= 'B N eN R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N Ne R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N Ne-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N Ne-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B eN N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B Ne N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B Ne-trig N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B Ne-func N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #4.e) "B T N R" with error in either T or N generates in binlog the "B T N R" entries.
+--echo #8) Generates in the binlog what follows:
+--echo # --> STMT "B T N C" entries, format S.
+--echo # --> ROW "B N C B T C" entries, format R.
+--echo # --> MIXED "B N C B T C" entries, format R in N and S in T.
--echo #
-INSERT INTO tt_1 VALUES ("new text -17", -17, "new text -17");
-BEGIN;
---error ER_DUP_ENTRY
-INSERT INTO tt_1 VALUES ("new text -16", -16, "new text -16"), ("new text -17", -17, "new text -17");
-INSERT INTO nt_1 VALUES ("new text -18", -18, "new text -18");
-ROLLBACK;
+SET @commands= 'B T N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T N-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T N-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T N-proc C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-trig N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-INSERT INTO tt_1 VALUES ("new text -19", -19, "new text -19");
-INSERT INTO nt_1 VALUES ("new text -21", -21, "new text -21");
---error ER_DUP_ENTRY
-INSERT INTO nt_1 VALUES ("new text -20", -20, "new text -20"), ("new text -21", -21, "new text -21");
-ROLLBACK;
+SET @commands= 'B T-trig N-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-trig N-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-trig N-proc C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-func N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-func N-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-func N-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-func N-proc C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-proc N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-proc N-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-proc N-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-proc N-proc C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #5) "T" generates in binlog the "B T C" entry.
+--echo #8.e) Generates in the binlog what follows if T-* fails:
+--echo # --> STMT "B N C" entry, format S.
+--echo # --> ROW "B N C" entry, format R.
+--echo # --> MIXED "B N C" entry, format R.
+--echo # Otherwise, what follows if N-* fails and a N-Table is changed:
+--echo # --> STMT "B T N C" entries, format S.
+--echo # --> ROW "B N C B T C" entries, format R.
+--echo # --> MIXED "B N C B T C" entries, format R in N and S in T.
--echo #
-INSERT INTO tt_1 VALUES ("new text 8", 8, "new text 8");
+SET @commands= 'B eT N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B Te N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T eN C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T Ne C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #5.e) "T" with error in T generates in binlog an "empty" entry.
+--echo #9) Generates in the binlog what follows:
+--echo # --> STMT "B T N R" entries, format S.
+--echo # --> ROW "B N C" entry, format R.
+--echo # --> MIXED "B N C" entry, format R.
--echo #
-INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1");
---error ER_DUP_ENTRY
-INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1"), ("new text -22", -22, "new text -22");
---error ER_DUP_ENTRY
-INSERT INTO tt_1 VALUES ("new text -23", -23, "new text -23"), ("new text -1", -1, "new text -1");
+SET @commands= 'B T N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T N-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T N-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T N-proc R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-trig N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-trig N-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-trig N-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-trig N-proc R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-func N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-func N-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-func N-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-func N-proc R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-proc N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-proc N-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-proc N-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T-proc N-proc R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #6) "N" generates in binlog the "N" entry.
+--echo #9.e) Generates in the binlog what follows if T* fails:
+--echo # --> STMT "B N C" entry, format S.
+--echo # --> ROW "B N C" entry, format R.
+--echo # --> MIXED "B N C" entry, format R.
+--echo # Otherwise, what follows if N* fails and a N-Table is changed:
+--echo # --> STMT "B T N R" entries, format S.
+--echo # --> ROW "B N C" entry, format R.
+--echo # --> MIXED "B N C" entry, format R.
--echo #
-INSERT INTO nt_1 VALUES ("new text 9", 9, "new text 9");
+SET @commands= 'B eT N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B Te N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T eN R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T Ne R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #6.e) "N" with error in N generates in binlog an empty entry if the error
---echo # happens in the first tuple. Otherwise, generates the "N" entry and
---echo # the error is appended.
+--echo #10) Generates in the binlog:
+--echo # --> STMT "B N C B T C" entries, format S.
+--echo # --> ROW "B N C B T C" entries, format R.
+--echo # --> MIXED "B N C B T C" entries, format S.
--echo #
-INSERT INTO nt_1 VALUES ("new text -1", -1, "new text -1");
---error ER_DUP_ENTRY
-INSERT INTO nt_1 VALUES ("new text -1", -1, "new text -1");
---error ER_DUP_ENTRY
-INSERT INTO nt_1 VALUES ("new text -24", -24, "new text -24"), ("new text -1", -1, "new text -1");
+SET @commands= 'B N T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N T-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N T-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N T-proc C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-trig T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-trig T-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-trig T-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-trig T-proc C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-func T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-func T-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-func T-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-func T-proc C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-proc T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-proc T-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-proc T-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N-proc T-proc C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #7) "M" generates in binglog the "B M C" entries.
+--echo #11) Generates in the binlog what follows:
+--echo # --> STMT "B N C" entries, format S.
+--echo # --> ROW "B N C" entries, format R.
+--echo # --> MIXED "B N C" entries, format S.
--echo #
-DELETE FROM nt_1;
+SET @commands= 'B N T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-INSERT INTO nt_1 SELECT * FROM tt_1;
+SET @commands= 'B N T-proc R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-DELETE FROM tt_1;
+SET @commands= 'B N T-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-INSERT INTO tt_1 SELECT * FROM nt_1;
+SET @commands= 'B N T-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-INSERT INTO tt_3 VALUES ("new text 000", 000, '');
+SET @commands= 'B N-trig T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-INSERT INTO tt_3 VALUES("new text 100", 100, f1());
+SET @commands= 'B N-trig T-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-INSERT INTO nt_4 VALUES("new text 100", 100, f1());
+SET @commands= 'B N-trig T-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-INSERT INTO tt_3 VALUES("new text 200", 200, f2());
+SET @commands= 'B N-trig T-proc R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-INSERT INTO nt_4 VALUES ("new text 300", 300, '');
+SET @commands= 'B N-func T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-INSERT INTO nt_4 VALUES ("new text 400", 400, f1());
+SET @commands= 'B N-func T-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-INSERT INTO nt_4 VALUES ("new text 500", 500, f2());
+SET @commands= 'B N-func T-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-CALL pc_i_tt_3(600, "Testing...");
+SET @commands= 'B N-func T-proc R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 1", nt_4.a= "new text 1", tt_3.a= "new text 1", tt_4.a= "new text 1" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
+SET @commands= 'B N-proc T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 2", tt_4.a= "new text 2", nt_3.a= "new text 2", nt_4.a = "new text 2" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
+SET @commands= 'B N-proc T-proc R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 3", nt_3.a= "new text 3", nt_4.a= "new text 3", tt_4.a = "new text 3" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
+SET @commands= 'B N-proc T-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 4", nt_3.a= "new text 4", nt_4.a= "new text 4", tt_4.a = "new text 4" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
+SET @commands= 'B N-proc T-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #7.e) "M" with error in M generates in binglog the "B M R" entries.
+--echo #12) Generates in the binlog what follows:
+--echo # --> STMT "B M C B T C" entries if in M only N-Table is changed, format S.
+--echo # --> STMT "B M T C" entries, format S.
+--echo # --> ROW "B N C B T T C" entries, format R.
+--echo # --> MIXED "B N C B T T C" entries, format R in N/T and format S in T.
+--echo #
+SET @commands= 'B tN T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B nT T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B NT T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B NT-trig T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B NT-func T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B TN T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B TN-trig T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B TN-func T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+
+--echo
+--echo
+--echo
+--echo
--echo #
+--echo #12.e) Generates in the binlog what follows if a N-Table is changed:
+--echo # --> STMT "B M C B T C" entries if in M only N-Table is changed, format S.
+--echo # --> STMT "B M T C" entries, format S.
+--echo # --> ROW "B N C B T T C" entries, format R.
+--echo # --> MIXED "B N C B T T C" entries, format R in N/T and format S in T.
+ --echo #
+SET @commands= 'B tNe T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B nTe T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B NeT-trig T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-INSERT INTO nt_3 VALUES ("new text -26", -26, '');
-SELECT * FROM tt_3;
---error ER_DUP_ENTRY
-INSERT INTO tt_3 VALUES ("new text -25", -25, ''), ("new text -26", -26, '');
-SELECT * FROM tt_3;
+SET @commands= 'B NeT-func T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-INSERT INTO tt_4 VALUES ("new text -26", -26, '');
-SELECT * FROM nt_4;
---error ER_DUP_ENTRY
-INSERT INTO nt_4 VALUES ("new text -25", -25, ''), ("new text -26", -26, '');
-SELECT * FROM nt_4;
+SET @commands= 'B TeN-trig T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B TeN-func T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #8) "B N N T C" generates in binglog the "N N B T C" entries.
+--echo #13) "B M T R" generates in the binlog:
+--echo # --> STMT "B M C B T R" entries if in M only N-Table is changed, format S.
+--echo # --> STMT "B M T R" entries, format S.
+--echo # --> ROW "B N C" entry, format R.
+--echo # --> MIXED "B N C" entry, format R.
--echo #
-BEGIN;
-INSERT INTO nt_1 VALUES ("new text 10", 10, "new text 10");
-INSERT INTO nt_2 VALUES ("new text 10", 10, "new text 10");
-INSERT INTO tt_1 VALUES ("new text 10", 10, "new text 10");
-COMMIT;
+SET @commands= 'B tN T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B nT T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B NT T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B NT-trig T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B NT-func T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B TN T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B TN-trig T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B TN-func T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
--echo #
---echo #8.e) "B N N T R" See 6.e and 9.e.
+--echo #13.e) Generates in the binlog what follows if a N-Table is changed:
+--echo # --> STMT "B M C B T R" entries if in M only N-Table is changed, format S.
+--echo # --> STMT "B M T R" entries, format S.
+--echo # --> ROW "B N C" entry, format R.
+--echo # --> MIXED "B N C" entry, format R.
--echo #
+SET @commands= 'B tNe T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B nTe T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B NeT-trig T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B NeT-func T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B TeN-trig T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B TeN-func T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #9) "B N N T R" generates in binlog the "N N B T R" entries.
+--echo #14) Generates in the binlog what follows if a N-Table is changed:
+--echo # --> STMT "B T M C" entries, format S.
+--echo # --> ROW "B N C B T T C" entries, format R.
+--echo # --> MIXED "B N C B T T C" entries, format R in N/T and format S in T.
--echo #
-BEGIN;
-INSERT INTO nt_1 VALUES ("new text 11", 11, "new text 11");
-INSERT INTO nt_2 VALUES ("new text 11", 11, "new text 11");
-INSERT INTO tt_1 VALUES ("new text 11", 11, "new text 11");
-ROLLBACK;
+SET @commands= 'B T tN C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T nT C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T NT C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T NT-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T NT-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T TN C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T TN-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T TN-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #9.e) "B N N T R" with error in N generates in binlog the "N N B T R" entries.
+--echo #14.e) Generates in the binlog what follows if a N-Table is changed:
+--echo # --> STMT "B T M C" entries, format S.
+--echo # --> ROW "B N C B T C" entry, format R.
+--echo # --> MIXED "B N C B T C" entry, format R.
--echo #
-BEGIN;
-INSERT INTO nt_1 VALUES ("new text -25", -25, "new text -25");
-INSERT INTO nt_2 VALUES ("new text -25", -25, "new text -25");
---error ER_DUP_ENTRY
-INSERT INTO nt_2 VALUES ("new text -26", -26, "new text -26"), ("new text -25", -25, "new text -25");
-INSERT INTO tt_1 VALUES ("new text -27", -27, "new text -27");
-ROLLBACK;
+SET @commands= 'B T tNe C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T nTe C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T NeT-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T NeT-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T TeN-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
+SET @commands= 'B T TeN-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #10) "B N N C" generates in binglog the "N N" entries.
+--echo #15) Generates in the binlog what follows if a N-Table is changed:
+--echo # --> STMT "B T M R" entries, format S.
+--echo # --> ROW "B N C" entry, format R.
+--echo # --> MIXED "B N C" entry, format R.
--echo #
-BEGIN;
-INSERT INTO nt_1 VALUES ("new text 12", 12, "new text 12");
-INSERT INTO nt_2 VALUES ("new text 12", 12, "new text 12");
-COMMIT;
+SET @commands= 'B T tN R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T nT R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T NT R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T NT-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T NT-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T TN R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T TN-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T TN-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
--echo #
---echo #10.e) "B N N C" See 6.e and 9.e.
+--echo #15.e) Generates in the binlog what follows if a N-Table is changed:
+--echo # --> STMT "B T M R" entries, format S.
+--echo # --> ROW "B N C" entry, format R.
+--echo # --> MIXED "B N C" entry, format R.
--echo #
+SET @commands= 'B T tNe R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T nTe R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T NeT-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T NeT-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T TeN-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T TeN-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #11) "B N N R" generates in binlog the "N N" entries.
+--echo #16) Generates in the binlog what follows if a N-Table is changed:
+--echo # --> STMT "B M C B N C" entries if in M only N-Table is changed, format S.
+--echo # --> STMT "B M N C" entries, format S.
+--echo # --> ROW "B N C B N C B T C" entries, format R.
+--echo # --> MIXED "B M C B N C" entries if in M only N-Table is changed, format S.
+--echo # --> MIXED "B N C B N C B T C" entries, format R.
--echo #
-BEGIN;
-INSERT INTO nt_1 VALUES ("new text 13", 13, "new text 13");
-INSERT INTO nt_2 VALUES ("new text 13", 13, "new text 13");
-ROLLBACK;
+SET @commands= 'B tN N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B nT N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B NT N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B NT-trig N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B NT-func N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B TN N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B TN-trig N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B TN-func N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
--echo #
---echo #11.e) "B N N R" See 6.e and 9.e.
+--echo #16.e) Generates in the binlog what follows if a N-Table is changed:
+--echo # --> STMT "B M C B N C" entries if in M only N-Table is changed, format S.
+--echo # --> STMT "B M N C" entries, format S.
+--echo # --> ROW "B N C B N C B T C" entries, format R.
+--echo # --> MIXED "B M C B N C" entries if in M only N-Table is changed, format S.
+--echo # --> MIXED "B N C B N C B T C" entries, format R.
--echo #
+SET @commands= 'B tNe N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B nTe N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B NeT-trig N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B NeT-func N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B TeN-trig N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B TeN-func N C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #12) "B M T C" generates in the binlog the "B M T C" entries.
+--echo #17) Generates in the binlog what follows if a N-Table is changed:
+--echo # --> STMT "B M C B N C" entries if in M only N-Table is changed, format S.
+--echo # --> STMT "B M N R" entries, format S.
+--echo # --> ROW "B N C B N C" entries, format R.
+--echo # --> MIXED "B M C B N C" entries if in M only N-Table is changed, format S.
+--echo # --> MIXED "B N C B N C" entries, format R.
--echo #
-DELETE FROM nt_1;
-BEGIN;
-INSERT INTO nt_1 SELECT * FROM tt_1;
-INSERT INTO tt_2 VALUES ("new text 14", 14, "new text 14");
-COMMIT;
+SET @commands= 'B tN N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-DELETE FROM tt_1;
-BEGIN;
-INSERT INTO tt_1 SELECT * FROM nt_1;
-INSERT INTO tt_2 VALUES ("new text 15", 15, "new text 15");
-COMMIT;
+SET @commands= 'B nT N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-INSERT INTO tt_3 VALUES ("new text 700", 700, '');
-INSERT INTO tt_1 VALUES ("new text 800", 800, '');
-COMMIT;
+SET @commands= 'B NT N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-INSERT INTO tt_3 VALUES("new text 900", 900, f1());
-INSERT INTO tt_1 VALUES ("new text 1000", 1000, '');
-COMMIT;
+SET @commands= 'B NT-trig N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-INSERT INTO tt_3 VALUES(1100, 1100, f2());
-INSERT INTO tt_1 VALUES ("new text 1200", 1200, '');
-COMMIT;
+SET @commands= 'B NT-func N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-INSERT INTO nt_4 VALUES ("new text 1300", 1300, '');
-INSERT INTO tt_1 VALUES ("new text 1400", 1400, '');
-COMMIT;
+SET @commands= 'B TN N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-INSERT INTO nt_4 VALUES("new text 1500", 1500, f1());
-INSERT INTO tt_1 VALUES ("new text 1600", 1600, '');
-COMMIT;
+SET @commands= 'B TN-trig N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-INSERT INTO nt_4 VALUES("new text 1700", 1700, f2());
-INSERT INTO tt_1 VALUES ("new text 1800", 1800, '');
-COMMIT;
+SET @commands= 'B TN-func N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-CALL pc_i_tt_3(1900, "Testing...");
-INSERT INTO tt_1 VALUES ("new text 2000", 2000, '');
-COMMIT;
-BEGIN;
-UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 5", nt_4.a= "new text 5", tt_3.a= "new text 5", tt_4.a= "new text 5" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-INSERT INTO tt_1 VALUES ("new text 2100", 2100, '');
-COMMIT;
+--echo
+--echo
+--echo
+--echo
+--echo #
+--echo #17.e) Generates in the binlog what follows if a N-Table is changed:
+--echo # --> STMT "B M C B N C" entries if in M only N-Table is changed, format S.
+--echo # --> STMT "B M N R" entries, format S.
+--echo # --> ROW "B N C B N C" entries, format R.
+--echo # --> MIXED "B M C B N C" entries if in M only N-Table is changed, format S.
+--echo # --> MIXED "B N C B N C" entries, format R.
+--echo #
+SET @commands= 'B tNe N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 6", tt_4.a= "new text 6", nt_3.a= "new text 6", nt_4.a = "new text 6" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-INSERT INTO tt_1 VALUES ("new text 2200", 2200, '');
-COMMIT;
+SET @commands= 'B nTe N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 7", nt_3.a= "new text 7", nt_4.a= "new text 7", tt_4.a = "new text 7" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-INSERT INTO tt_1 VALUES ("new text 2300", 2300, '');
-COMMIT;
+SET @commands= 'B NeT-trig N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 8", nt_3.a= "new text 8", nt_4.a= "new text 8", tt_4.a = "new text 8" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-INSERT INTO tt_1 VALUES ("new text 2400", 2400, '');
-COMMIT;
+SET @commands= 'B NeT-func N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B TeN-trig N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B TeN-func N R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #12.e) "B M T C" with error in M generates in the binlog the "B M T C" entries.
---echo #
+--echo #18) Generates in the binlog what follows if a N-Table is changed:
+--echo # --> STMT "B N C B M C" entries if in M only N-Table is changed, format S.
+--echo # --> STMT "B N C B M C" entries, format S.
+--echo # --> ROW "B N C B N C B T C" entries, format R.
+--echo # --> MIXED "B N C B N C B T C" entries, format S in first N and format R in the other.
+--echo #
+
+SET @commands= 'B N tN C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N nT C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N NT C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---echo # There is a bug in the slave that needs to be fixed before enabling
---echo # this part of the test. A bug report will be filed referencing this
---echo # test case.
+SET @commands= 'B N NT-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-INSERT INTO nt_3 VALUES ("new text -28", -28, '');
---error ER_DUP_ENTRY
-INSERT INTO tt_3 VALUES ("new text -27", -27, ''), ("new text -28", -28, '');
-INSERT INTO tt_1 VALUES ("new text -27", -27, '');
-COMMIT;
+SET @commands= 'B N NT-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N TN C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N TN-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N TN-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-INSERT INTO tt_4 VALUES ("new text -28", -28, '');
---error ER_DUP_ENTRY
-INSERT INTO nt_4 VALUES ("new text -27", -27, ''), ("new text -28", -28, '');
-INSERT INTO tt_1 VALUES ("new text -28", -28, '');
-COMMIT;
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #13) "B M T R" generates in the binlog the "B M T R" entries
+--echo #18.e) Generates in the binlog what follows if a N-Table is changed:
+--echo # --> STMT "B N C B M C" entries if in M only N-Table is changed, format S.
+--echo # --> STMT "B N C B M C" entries, format S.
+--echo # --> ROW "B N C B N C" entries, format R.
+--echo # --> MIXED "B N C B N C" entries, format S in first N and format R in the other.
--echo #
+SET @commands= 'B N tNe C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-DELETE FROM nt_1;
-BEGIN;
-INSERT INTO nt_1 SELECT * FROM tt_1;
-INSERT INTO tt_2 VALUES ("new text 17", 17, "new text 17");
-ROLLBACK;
+SET @commands= 'B N nTe C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-DELETE FROM tt_1;
-BEGIN;
-INSERT INTO tt_1 SELECT * FROM nt_1;
-INSERT INTO tt_2 VALUES ("new text 18", 18, "new text 18");
-ROLLBACK;
-INSERT INTO tt_1 SELECT * FROM nt_1;
+SET @commands= 'B N NeT-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-INSERT INTO tt_3 VALUES ("new text 2500", 2500, '');
-INSERT INTO tt_1 VALUES ("new text 2600", 2600, '');
-ROLLBACK;
+SET @commands= 'B N NeT-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-INSERT INTO tt_3 VALUES("new text 2700", 2700, f1());
-INSERT INTO tt_1 VALUES ("new text 2800", 2800, '');
-ROLLBACK;
+SET @commands= 'B N TeN-trig C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-INSERT INTO tt_3 VALUES(2900, 2900, f2());
-INSERT INTO tt_1 VALUES ("new text 3000", 3000, '');
-ROLLBACK;
+SET @commands= 'B N TeN-func C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-INSERT INTO nt_4 VALUES ("new text 3100", 3100, '');
-INSERT INTO tt_1 VALUES ("new text 3200", 3200, '');
-ROLLBACK;
-BEGIN;
-INSERT INTO nt_4 VALUES("new text 3300", 3300, f1());
-INSERT INTO tt_1 VALUES ("new text 3400", 3400, '');
-ROLLBACK;
+--echo
+--echo
+--echo
+--echo
+--echo #
+--echo #19) Generates in the binlog what follows if a N-Table is changed:
+--echo # --> STMT "B N C B M C" entries if in M only N-Table is changed, format S.
+--echo # --> STMT "B N C B M R" entries, format S.
+--echo # --> ROW "B N C B N C" entries, format R.
+--echo # --> MIXED "B N C B N C" entries, format S in first N and format R in the other.
+--echo #
+
+SET @commands= 'B N tN R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-INSERT INTO nt_4 VALUES("new text 3500", 3500, f2());
-INSERT INTO tt_1 VALUES ("new text 3600", 3600, '');
-ROLLBACK;
+SET @commands= 'B N nT R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-CALL pc_i_tt_3(3700, "Testing...");
-INSERT INTO tt_1 VALUES ("new text 3700", 3700, '');
-ROLLBACK;
+SET @commands= 'B N NT R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 9", nt_4.a= "new text 9", tt_3.a= "new text 9", tt_4.a= "new text 9" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-INSERT INTO tt_1 VALUES ("new text 3800", 3800, '');
-ROLLBACK;
+SET @commands= 'B N NT-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 10", tt_4.a= "new text 10", nt_3.a= "new text 10", nt_4.a = "new text 10" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-INSERT INTO tt_1 VALUES ("new text 3900", 3900, '');
-ROLLBACK;
+SET @commands= 'B N NT-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 11", nt_3.a= "new text 11", nt_4.a= "new text 11", tt_4.a = "new text 11" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-INSERT INTO tt_1 VALUES ("new text 4000", 4000, '');
-ROLLBACK;
+SET @commands= 'B N TN R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 12", nt_3.a= "new text 12", nt_4.a= "new text 12", tt_4.a = "new text 12" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-INSERT INTO tt_1 VALUES ("new text 4100", 4100, '');
-ROLLBACK;
+SET @commands= 'B N TN-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N TN-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
-let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
---echo #13.e) "B M T R" with error in M generates in the binlog the "B M T R" entries.
+--echo #19.e) Generates in the binlog what follows if a N-Table is changed:
+--echo # --> STMT "B N C B M C" entries if in M only N-Table is changed, format S.
+--echo # --> STMT "B N C B M R" entries, format S.
+--echo # --> ROW "B N C B N C" entries, format R.
+--echo # --> MIXED "B N C B N C" entries, format S in first N and format R in the other.
--echo #
+SET @commands= 'B N tNe R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-INSERT INTO nt_3 VALUES ("new text -30", -30, '');
---error ER_DUP_ENTRY
-INSERT INTO tt_3 VALUES ("new text -29", -29, ''), ("new text -30", -30, '');
-INSERT INTO tt_1 VALUES ("new text -30", -30, '');
-ROLLBACK;
+SET @commands= 'B N nTe R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-BEGIN;
-INSERT INTO tt_4 VALUES ("new text -30", -30, '');
---error ER_DUP_ENTRY
-INSERT INTO nt_4 VALUES ("new text -29", -29, ''), ("new text -30", -30, '');
-INSERT INTO tt_1 VALUES ("new text -31", -31, '');
-ROLLBACK;
+SET @commands= 'B N NeT-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---source include/show_binlog_events.inc
+SET @commands= 'B N NeT-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-connection master;
-sync_slave_with_master;
+SET @commands= 'B N TeN-trig R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
---exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-master.sql
---exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-slave.sql
---diff_files $MYSQLTEST_VARDIR/tmp/test-master.sql $MYSQLTEST_VARDIR/tmp/test-slave.sql
+SET @commands= 'B N TeN-func R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
--echo ###################################################################################
---echo # CLEAN
+--echo # 2 - SAVEPOINT
--echo ###################################################################################
+SET @commands= 'B T S1 T R1 C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
-connection master;
-DROP TABLE tt_1;
-DROP TABLE tt_2;
-DROP TABLE tt_3;
-DROP TABLE tt_4;
-DROP TABLE nt_1;
-DROP TABLE nt_2;
-DROP TABLE nt_3;
-DROP TABLE nt_4;
-DROP PROCEDURE pc_i_tt_3;
-DROP FUNCTION f1;
-DROP FUNCTION f2;
+SET @commands= 'B N T S1 T R1 C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T N S1 T R1 C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T S1 N T R1 C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+--echo ###################################################################################
+--echo # 3 - CREATE TABLE...SELECT
+--echo ###################################################################################
+SET @commands= 'CSe-T->T CS-T->T drop-CS';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'CSe-N->N CS-N->N drop-CS';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'CSe-T->N CS-T->N drop-CS';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'CSe-N->T CS-N->T drop-CS';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'CSe-N->T CS-N->T drop-CS';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'CSe-N->T CS-N->T drop-CS';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+--echo ###################################################################################
+--echo # 4 - INSERT TABLE...SELECT
+--echo ###################################################################################
+
+SET @commands= 'CS-T->T';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'trunc-CS-T B T IS-T<-N T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'trunc-CS-T B T ISe-T<-N T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'trunc-CS-T B IS-T<-N T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'trunc-CS-T B ISe-T<-N T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'drop-CS';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'CS-T->T';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'trunc-CS-T B T IS-T<-T T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'trunc-CS-T B T ISe-T<-T T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'trunc-CS-T B IS-T<-T T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'trunc-CS-T B ISe-T<-T T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'drop-CS';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'CS-N->N';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'trunc-CS-N B T IS-N<-T T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'trunc-CS-N B T ISe-N<-T T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'trunc-CS-N B IS-N<-T T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'trunc-CS-N B ISe-N<-T T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'drop-CS';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'CS-N->N';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'trunc-CS-N B T IS-N<-N T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'trunc-CS-N B T ISe-N<-N T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'trunc-CS-N B IS-N<-N T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'trunc-CS-N B ISe-N<-N T C';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'drop-CS';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+
+--echo ###################################################################################
+--echo # 5 - ROLLBACK TEMPORARY TABLE
+--echo ###################################################################################
+SET @commands= 'B T CT R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'drop-CT';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T S1 T CT R1 R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'drop-CT';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B T CT T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'drop-CT';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B tN CT T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'drop-CT';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B CT T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'drop-CT';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'B N CT T R';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+SET @commands= 'drop-CT';
+--source extra/rpl_tests/rpl_mixing_engines.inc
+
+
+--echo ###################################################################################
+--echo # CHECK CONSISTENCY
+--echo ###################################################################################
+connection master;
sync_slave_with_master;
+
+--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-nmt-master.sql
+--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-nmt-slave.sql
+--diff_files $MYSQLTEST_VARDIR/tmp/test-nmt-master.sql $MYSQLTEST_VARDIR/tmp/test-nmt-slave.sql
+
+--echo ###################################################################################
+--echo # CLEAN
+--echo ###################################################################################
+SET @commands= 'clean';
+--source extra/rpl_tests/rpl_mixing_engines.inc
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..7ab99ef65dd 100644
--- a/mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test
+++ b/mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test
@@ -141,7 +141,9 @@ let $run= 5;
while ($run)
{
START TRANSACTION;
+ --disable_warnings
--eval CALL tpcb.trans($rpl_format);
+ --enable_warnings
eval SET @my_errno= $mysql_errno;
let $run_good= `SELECT @my_errno = 0`;
let $run_bad= `SELECT @my_errno <> 0`;
@@ -190,7 +192,9 @@ let $run= 5;
while ($run)
{
START TRANSACTION;
+ --disable_warnings
--eval CALL tpcb.trans($rpl_format);
+ --enable_warnings
eval SET @my_errno= $mysql_errno;
let $run_good= `SELECT @my_errno = 0`;
let $run_bad= `SELECT @my_errno <> 0`;
@@ -240,7 +244,9 @@ let $run= 5;
while ($run)
{
START TRANSACTION;
+ --disable_warnings
--eval CALL tpcb.trans($rpl_format);
+ --enable_warnings
eval SET @my_errno= $mysql_errno;
let $run_good= `SELECT @my_errno = 0`;
let $run_bad= `SELECT @my_errno <> 0`;
diff --git a/mysql-test/extra/rpl_tests/rpl_reset_slave.test b/mysql-test/extra/rpl_tests/rpl_reset_slave.test
index 1f88c792fce..428554ac598 100644
--- a/mysql-test/extra/rpl_tests/rpl_reset_slave.test
+++ b/mysql-test/extra/rpl_tests/rpl_reset_slave.test
@@ -22,6 +22,7 @@ source include/show_slave_status2.inc;
reset slave;
source include/show_slave_status2.inc;
+change master to master_user='root';
start slave;
sync_with_master;
source include/show_slave_status2.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..a45527848be 100644
--- a/mysql-test/extra/rpl_tests/rpl_row_basic.test
+++ b/mysql-test/extra/rpl_tests/rpl_row_basic.test
@@ -6,6 +6,7 @@
# First we test tables with only an index.
#
+connection master;
eval CREATE TABLE t1 (C1 CHAR(1), C2 CHAR(1), INDEX (C1)$extra_index_t1) ENGINE = $type ;
SELECT * FROM t1;
sync_slave_with_master;
@@ -156,6 +157,12 @@ SELECT * FROM t5,t2,t3 WHERE t5.C2='Q' AND t2.c12='R' AND t3.C3 ='S' ORDER BY t5
# Testing special column types
#
+if (`select char_length('$bit_field_special') > 0`) {
+ SET @saved_slave_type_conversions = @@SLAVE_TYPE_CONVERSIONS;
+ connection slave;
+ eval SET GLOBAL SLAVE_TYPE_CONVERSIONS = '$bit_field_special';
+}
+
connection master;
eval CREATE TABLE t4 (C1 CHAR(1) PRIMARY KEY, B1 BIT(1), B2 BIT(1) NOT NULL DEFAULT 0, C2 CHAR(1) NOT NULL DEFAULT 'A') ENGINE = $type ;
@@ -164,6 +171,10 @@ SELECT C1,HEX(B1),HEX(B2) FROM t4 ORDER BY C1;
sync_slave_with_master;
SELECT C1,HEX(B1),HEX(B2) FROM t4 ORDER BY C1;
+if (`select char_length('$bit_field_special') > 0`) {
+ SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
+}
+
#
# Testing conflicting operations
#
@@ -350,6 +361,10 @@ eval CREATE TABLE t7 (i INT NOT NULL,
c CHAR(255) CHARACTER SET utf8 NOT NULL,
j INT NOT NULL) ENGINE = $type ;
+connection slave;
+SET @saved_slave_type_conversions = @@slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
+
--echo [expecting slave to replicate correctly]
connection master;
INSERT INTO t1 VALUES (1, "", 1);
@@ -370,17 +385,9 @@ let $diff_table_1=master:test.t2;
let $diff_table_2=slave:test.t2;
source include/diff_tables.inc;
---echo [expecting slave to stop]
-connection master;
-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;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
+
connection master;
RESET MASTER;
connection slave;
@@ -600,7 +607,15 @@ sync_slave_with_master;
connection master;
+# Since t1 contain a bit field, we have to do this trick to handle InnoDB
+if (`select char_length('$bit_field_special') > 0`) {
+ SET @saved_slave_type_conversions = @@SLAVE_TYPE_CONVERSIONS;
+ connection slave;
+ eval SET GLOBAL SLAVE_TYPE_CONVERSIONS = '$bit_field_special';
+}
+
--disable_warnings
+connection master;
eval CREATE TABLE t1 (a bit) ENGINE=$type;
INSERT IGNORE INTO t1 VALUES (NULL);
INSERT INTO t1 ( a ) VALUES ( 0 );
@@ -645,6 +660,10 @@ UPDATE t1 SET a = 9 WHERE a < 5 LIMIT 3;
sync_slave_with_master;
+if (`select char_length('$bit_field_special') > 0`) {
+ SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
+}
+
let $diff_table_1=master:test.t1;
let $diff_table_2=slave:test.t1;
source include/diff_tables.inc;
diff --git a/mysql-test/extra/rpl_tests/rpl_row_blob.test b/mysql-test/extra/rpl_tests/rpl_row_blob.test
index 080df7d75dd..762daa816c0 100644
--- a/mysql-test/extra/rpl_tests/rpl_row_blob.test
+++ b/mysql-test/extra/rpl_tests/rpl_row_blob.test
@@ -36,7 +36,7 @@ SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3;
save_master_pos;
connection slave;
sync_with_master;
-sleep 5;
+--source include/wait_for_ndb_to_binlog.inc
--echo
--echo **** Data Insert Validation Slave Section test.t1 ****
--echo
@@ -56,12 +56,10 @@ UPDATE t1 set data=repeat('c',17*1024) where c1 = 2;
--echo
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
-# Sleep is needed for NDB to allow time for
-# Injector thread to populate the bin log.
save_master_pos;
connection slave;
sync_with_master;
-sleep 5;
+--source include/wait_for_ndb_to_binlog.inc
--echo
--echo **** Data Update Validation Slave Section test.t1 ****
--echo
@@ -132,7 +130,7 @@ FROM test.t2 WHERE c1=2;
save_master_pos;
connection slave;
sync_with_master;
-sleep 5;
+--source include/wait_for_ndb_to_binlog.inc
--echo
--echo **** Data Insert Validation Slave Section test.t2 ****
--echo
@@ -155,12 +153,10 @@ SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
FROM test.t2 WHERE c1=1;
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
FROM test.t2 WHERE c1=2;
-# Sleep is needed for NDB to allow time for
-# Injector thread to populate the bin log.
save_master_pos;
connection slave;
sync_with_master;
-sleep 5;
+--source include/wait_for_ndb_to_binlog.inc
--echo
--echo **** Data Update Validation Slave Section test.t2 ****
--echo
diff --git a/mysql-test/extra/rpl_tests/rpl_row_func003.test b/mysql-test/extra/rpl_tests/rpl_row_func003.test
index b77465de39e..6b58dc11644 100644
--- a/mysql-test/extra/rpl_tests/rpl_row_func003.test
+++ b/mysql-test/extra/rpl_tests/rpl_row_func003.test
@@ -3,10 +3,7 @@
# Original Date: Aug/15/2005 #
# Update: 08/29/2005 Comment out sleep. Only needed for debugging #
#############################################################################
-# Note: Many lines are commented out in this test case. These were used for #
-# creating the test case and debugging and are being left for #
-# debugging, but they can not be used for the regular testing as the #
-# Time changes and is not deteministic, so instead we dump both the #
+# Note: Time changes and is not deteministic, so instead we dump both the #
# master and slave and diff the dumps. If the dumps differ then the #
# test case will fail. To run during diff failuers, comment out the #
# diff. #
@@ -28,7 +25,6 @@ DROP TABLE IF EXISTS test.t1;
--enable_warnings
-
eval CREATE TABLE test.t1 (a INT NOT NULL AUTO_INCREMENT, c CHAR(16),PRIMARY KEY(a))ENGINE=$engine_type;
delimiter |;
@@ -47,17 +43,9 @@ delimiter ;|
--disable_warnings
INSERT INTO test.t1 VALUES (null,test.f1()),(null,test.f1()),(null,test.f1());
-sleep 6;
INSERT INTO test.t1 VALUES (null,test.f1()),(null,test.f1()),(null,test.f1());
-sleep 6;
--enable_warnings
-#Select in this test are used for debugging
-#select * from test.t1;
-#connection slave;
-#select * from test.t1;
-
-connection master;
SET AUTOCOMMIT=0;
START TRANSACTION;
--disable_warnings
@@ -65,18 +53,17 @@ INSERT INTO test.t1 VALUES (null,test.f1());
--enable_warnings
ROLLBACK;
SET AUTOCOMMIT=1;
-#select * from test.t1;
-#sleep 6;
-
-#connection slave;
-#select * from test.t1;
-
-#connection master;
-#used for debugging
-#show binlog events;
+# Sync master and slave for all engines except NDB
+if (`SELECT UPPER(LEFT('$engine_type', 3)) != 'NDB'`) {
+ sync_slave_with_master;
+ connection master;
+}
+# Sync master and slave for NDB engine
+let $wait_time= 6;
+--source include/wait_for_ndb_to_binlog.inc
-# time to dump the databases and so we can see if they match
+# Time to dump the databases and so we can see if they match
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/func003_master.sql
--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/func003_slave.sql
@@ -93,5 +80,8 @@ DROP TABLE test.t1;
diff_files $MYSQLTEST_VARDIR/tmp/func003_master.sql $MYSQLTEST_VARDIR/tmp/func003_slave.sql;
+# Clean up
+remove_file $MYSQLTEST_VARDIR/tmp/func003_master.sql;
+remove_file $MYSQLTEST_VARDIR/tmp/func003_slave.sql;
# End of 5.0 test case
diff --git a/mysql-test/extra/rpl_tests/rpl_row_sp003.test b/mysql-test/extra/rpl_tests/rpl_row_sp003.test
index 7cf3d0fa19c..7bc326a3791 100644
--- a/mysql-test/extra/rpl_tests/rpl_row_sp003.test
+++ b/mysql-test/extra/rpl_tests/rpl_row_sp003.test
@@ -41,10 +41,7 @@ CALL test.p2();
SELECT release_lock("test");
SELECT * FROM test.t1;
#show binlog events;
-# Added sleep for use with NDB to ensure that
-# the injector thread will populate log before
-# we switch to the slave.
-sleep 5;
+--source include/wait_for_ndb_to_binlog.inc
sync_slave_with_master;
connection slave;
SELECT * FROM test.t1;
diff --git a/mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc b/mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc
new file mode 100644
index 00000000000..cf68ba53caf
--- /dev/null
+++ b/mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc
@@ -0,0 +1,121 @@
+-- connection master
+
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (1);
+INSERT INTO t1 VALUES (2);
+INSERT INTO t1 VALUES (3);
+INSERT INTO t1 VALUES (4);
+INSERT INTO t1 VALUES (5);
+INSERT INTO t1 VALUES (6);
+
+-- echo [MASTER] ********* SOW BINLOG EVENTS IN ... *********
+let $binary_log_file= master-bin.000001;
+-- source include/show_binlog_events.inc
+
+-- echo [MASTER] ********* SOW BINLOG EVENTS *********
+let $binary_log_file= ;
+-- source include/show_binlog_events.inc
+
+-- echo [MASTER] ********* SOW BINLOG EVENTS ... LIMIT rows *********
+let $binary_log_file= ;
+let $binary_log_limit_row= 3;
+-- source include/show_binlog_events.inc
+
+-- echo [MASTER] ********* SOW BINLOG EVENTS ... LIMIT offset,rows *********
+let $binary_log_file= ;
+let $binary_log_limit_row= 4;
+let $binary_log_limit_offset= 1;
+-- source include/show_binlog_events.inc
+
+# clear show_binlog_event/show_relaylog_events parameters
+let $binary_log_file= ;
+let $binary_log_limit_row= ;
+let $binary_log_limit_offset= ;
+
+-- sync_slave_with_master
+
+-- echo [SLAVE] ********* SOW BINLOG EVENTS IN ... *********
+let $binary_log_file= slave-bin.000001;
+-- source include/show_binlog_events.inc
+
+-- echo [SLAVE] ********* SOW BINLOG EVENTS *********
+let $binary_log_file= ;
+-- source include/show_binlog_events.inc
+
+-- echo [SLAVE] ********* SOW BINLOG EVENTS ... LIMIT rows *********
+let $binary_log_file= ;
+let $binary_log_limit_row= 3;
+-- source include/show_binlog_events.inc
+
+-- echo [SLAVE] ********* SOW BINLOG EVENTS ... LIMIT offset,rows *********
+let $binary_log_file= ;
+let $binary_log_limit_row= 4;
+let $binary_log_limit_offset= 1;
+-- source include/show_binlog_events.inc
+
+# clear show_binlog_event/show_relaylog_events parameters
+let $binary_log_file= ;
+let $binary_log_limit_row= ;
+let $binary_log_limit_offset= ;
+
+-- echo [SLAVE] ********* SOW RELAYLOG EVENTS IN ... *********
+let $binary_log_file= slave-relay-bin.000003;
+-- source include/show_relaylog_events.inc
+
+-- echo [SLAVE] ********* SOW RELAYLOG EVENTS *********
+let $binary_log_file= ;
+-- source include/show_relaylog_events.inc
+
+-- echo [MASTER] ********* SOW RELAYLOG EVENTS ... LIMIT rows *********
+let $binary_log_file= slave-relay-bin.000003;
+let $binary_log_limit_row= 3;
+let $binary_log_limit_offset= ;
+-- source include/show_relaylog_events.inc
+
+-- echo [MASTER] ********* SOW RELAYLOG EVENTS ... LIMIT offset,rows *********
+let $binary_log_file= slave-relay-bin.000003;
+let $binary_log_limit_offset= 1;
+let $binary_log_limit_row= 3;
+-- source include/show_relaylog_events.inc
+
+FLUSH LOGS;
+
+-- connection master
+FLUSH LOGS;
+DROP TABLE t1;
+
+# clear show_binlog_event/show_relaylog_events parameters
+let $binary_log_file= ;
+let $binary_log_limit_row= ;
+let $binary_log_limit_offset= ;
+
+-- echo [MASTER] ********* SOW BINLOG EVENTS IN ... *********
+let $binary_log_file= master-bin.000002;
+-- source include/show_binlog_events.inc
+
+-- echo [MASTER] ********* SOW BINLOG EVENTS *********
+let $binary_log_file= ;
+-- source include/show_binlog_events.inc
+
+-- sync_slave_with_master
+
+-- echo [SLAVE] ********* SOW BINLOG EVENTS IN ... *********
+let $binary_log_file= slave-bin.000002;
+-- source include/show_binlog_events.inc
+
+-- echo [SLAVE] ********* SOW BINLOG EVENTS *********
+let $binary_log_file= ;
+-- source include/show_binlog_events.inc
+
+-- echo [SLAVE] ********* SOW RELAYLOG EVENTS IN ... *********
+let $binary_log_file= slave-relay-bin.000005;
+-- source include/show_relaylog_events.inc
+
+-- echo [SLAVE] ********* SOW RELAYLOG EVENTS *********
+let $binary_log_file= ;
+-- source include/show_relaylog_events.inc
+
+# clear show_binlog_event/show_relaylog_events parameters
+let $binary_log_name= ;
+let $binary_log_limit_row= ;
+let $binary_log_limit_offset= ;
diff --git a/mysql-test/suite/rpl/t/rpl_start_stop_slave.test b/mysql-test/extra/rpl_tests/rpl_start_stop_slave.test
index d9b87427321..e548e691429 100644
--- a/mysql-test/suite/rpl/t/rpl_start_stop_slave.test
+++ b/mysql-test/extra/rpl_tests/rpl_start_stop_slave.test
@@ -1,14 +1,19 @@
-source include/master-slave.inc;
-source include/have_innodb.inc;
-
#
# Bug#6148 ()
#
# Let the master do lots of insertions
+
+connection master;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
+connection slave;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
connection master;
create table t1(n int);
sync_slave_with_master;
stop slave;
+--source include/wait_for_slave_to_stop.inc
connection master;
let $1=5000;
disable_query_log;
@@ -31,10 +36,7 @@ sync_with_master;
connection master;
drop table t1;
-save_master_pos;
-
-connection slave;
-sync_with_master;
+sync_slave_with_master;
#
diff --git a/mysql-test/extra/rpl_tests/rpl_stm_000001.test b/mysql-test/extra/rpl_tests/rpl_stm_000001.test
index 4397e81aadf..07ca6f6a38f 100644
--- a/mysql-test/extra/rpl_tests/rpl_stm_000001.test
+++ b/mysql-test/extra/rpl_tests/rpl_stm_000001.test
@@ -3,7 +3,7 @@
-- source include/have_binlog_format_statement.inc
-- source include/master-slave.inc
-CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
+CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
# Load some data into t1
create table t1 (word char(20) not null);
@@ -67,8 +67,8 @@ enable_query_log;
connection slave;
lock tables t1 read;
start slave;
-#hope this is long enough for I/O thread to fetch over 16K relay log data
-sleep 3;
+connection master;
+--source include/sync_slave_io_with_master.inc
unlock tables;
#test handling of aborted connection in the middle of update
diff --git a/mysql-test/extra/rpl_tests/rpl_stop_middle_group.test b/mysql-test/extra/rpl_tests/rpl_stop_middle_group.test
new file mode 100644
index 00000000000..96ae314bee5
--- /dev/null
+++ b/mysql-test/extra/rpl_tests/rpl_stop_middle_group.test
@@ -0,0 +1,147 @@
+# Proving that stopping in the middle of applying a group of events
+# does not have immediate effect if a non-transaction table has been changed.
+# The slave sql thread has to try to finish applying first.
+# The tests rely on simulation of the killed status.
+# The matter of testing correlates to some of `rpl_start_stop_slave' that does
+# not require `have_debug'.
+
+connection master;
+
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
+create table tm (a int auto_increment primary key) engine=myisam;
+create table ti (a int auto_increment primary key) engine=innodb;
+
+sync_slave_with_master;
+set @@global.debug="+d,stop_slave_middle_group";
+
+connection master;
+
+begin;
+insert into ti set a=null;
+insert into tm set a=null; # to simulate killed status on the slave
+commit;
+
+connection slave;
+
+# slave will catch the killed status but won't shut down immediately
+# only after the whole group has done (commit)
+
+source include/wait_for_slave_sql_to_stop.inc;
+
+# checking: no error and the group is finished
+
+let $error= query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
+let $read = query_get_value("SHOW SLAVE STATUS", Read_Master_Log_Pos, 1);
+let $exec = query_get_value("SHOW SLAVE STATUS", Exec_Master_Log_Pos, 1);
+--disable_query_log
+eval SELECT $read = $exec into @check;
+--enable_query_log
+eval SELECT "NO$error" AS Last_SQL_Error, @check as `true`;
+select count(*) as one from tm;
+select count(*) as one from ti;
+
+set @@global.debug="-d";
+
+#
+# bug#45940 issues around rli->last_event_start_time
+# Testing of slave stopped after it had waited (in vain) for
+# the group be finished.
+# It could not be finished because of simulation of failure to
+# receive the terminal part
+# The test relay on simulation of the incomplete group in the relay log
+
+# Two cases are verified: a mixed transacton and a mixed multi-table update.
+#
+# The mixed transacton.
+#
+source include/start_slave.inc;
+
+connection master;
+
+truncate table tm; # cleanup of former tests
+truncate table ti;
+
+#connection slave;
+sync_slave_with_master;
+
+set @@global.debug="+d,stop_slave_middle_group";
+set @@global.debug="+d,incomplete_group_in_relay_log";
+
+connection master;
+
+begin;
+insert into ti set a=null;
+insert into tm set a=null;
+commit;
+
+connection slave;
+
+# slave will catch the killed status, won't shut down immediately
+# but does it eventually having the whole group unfinished (not committed)
+
+source include/wait_for_slave_sql_to_stop.inc;
+
+# checking: the error and group unfinished
+
+let $error= query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
+let $read = query_get_value("SHOW SLAVE STATUS", Read_Master_Log_Pos, 1);
+let $exec = query_get_value("SHOW SLAVE STATUS", Exec_Master_Log_Pos, 1);
+--disable_query_log
+eval SELECT $read - $exec > 0 into @check;
+--enable_query_log
+eval SELECT "$error" AS Last_SQL_Error, @check as `true`;
+select count(*) as one from tm;
+select count(*) as zero from ti;
+
+set @@global.debug="-d";
+
+#
+# The mixed multi-table update
+#
+stop slave;
+truncate table tm;
+source include/start_slave.inc;
+
+connection master;
+
+#connection slave;
+sync_slave_with_master;
+set @@global.debug="+d,stop_slave_middle_group";
+set @@global.debug="+d,incomplete_group_in_relay_log";
+
+connection master;
+update tm as t1, ti as t2 set t1.a=t1.a * 2, t2.a=t2.a * 2;
+
+connection slave;
+
+# slave will catch the killed status, won't shut down immediately
+# but does it eventually having the whole group unfinished (not committed)
+#
+
+source include/wait_for_slave_sql_to_stop.inc;
+
+# checking: the error and group unfinished
+
+let $error= query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
+let $read = query_get_value("SHOW SLAVE STATUS", Read_Master_Log_Pos, 1);
+let $exec = query_get_value("SHOW SLAVE STATUS", Exec_Master_Log_Pos, 1);
+--disable_query_log
+eval SELECT $read - $exec > 0 into @check;
+--enable_query_log
+eval SELECT "$error" AS Last_SQL_Error, @check as `true`;
+select max(a) as two from tm;
+select max(a) as one from ti;
+
+set @@global.debug="-d";
+
+#
+# clean-up
+#
+
+connection master;
+drop table tm, ti;
+
+connection slave; # slave SQL thread is stopped
+source include/stop_slave.inc;
+drop table tm, ti;
diff --git a/mysql-test/extra/rpl_tests/rpl_trig004.test b/mysql-test/extra/rpl_tests/rpl_trig004.test
index 45cb11f2787..1a738db27fc 100644
--- a/mysql-test/extra/rpl_tests/rpl_trig004.test
+++ b/mysql-test/extra/rpl_tests/rpl_trig004.test
@@ -35,9 +35,8 @@ INSERT INTO test.t2 VALUES (1, 0.0);
#show binlog events;
select * from test.t1;
select * from test.t2;
-# Have to sleep for a few seconds to allow
-# NDB injector thread to populate binlog
-sleep 10;
+let $wait_time= 10;
+--source include/wait_for_ndb_to_binlog.inc
sync_slave_with_master;
connection slave;
select * from test.t1;
diff --git a/mysql-test/extra/rpl_tests/type_conversions.test b/mysql-test/extra/rpl_tests/type_conversions.test
new file mode 100644
index 00000000000..731eef8f41e
--- /dev/null
+++ b/mysql-test/extra/rpl_tests/type_conversions.test
@@ -0,0 +1,882 @@
+# File containing different lossy and non-lossy type conversions.
+
+# Integral conversion testing, we do not reduce the test using
+# transitivity of conversions since the implementation is not using a
+# transitivity strategy. Instead we do an exhaustive testing.
+
+disable_query_log;
+connection slave;
+--let $conv = `select @@slave_type_conversions`
+--echo **** Running tests with @@SLAVE_TYPE_CONVERSIONS = '$conv' ****
+
+let $if_is_lossy = `SELECT FIND_IN_SET('ALL_LOSSY', @@SLAVE_TYPE_CONVERSIONS)`;
+let $if_is_non_lossy = `SELECT FIND_IN_SET('ALL_NON_LOSSY', @@SLAVE_TYPE_CONVERSIONS)`;
+
+# TINYBLOB
+
+let $source_type = TINYBLOB;
+let $target_type = TINYBLOB;
+let $source_value = 'aaa';
+let $target_value = 'aaa';
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= TINYBLOB;
+let $target_type= BLOB;
+let $source_value= 'aaa';
+let $target_value= 'aaa';
+let $can_convert= $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= TINYBLOB;
+let $target_type= MEDIUMBLOB;
+let $source_value= 'aaa';
+let $target_value= 'aaa';
+let $can_convert= $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= TINYBLOB;
+let $target_type= LONGBLOB;
+let $source_value= 'aaa';
+let $target_value= 'aaa';
+let $can_convert= $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+# BLOB
+
+let $source_type = BLOB;
+let $target_type = TINYBLOB;
+let $source_value = 'aaa';
+let $target_value = 'aaa';
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= BLOB;
+let $target_type= BLOB;
+let $source_value= 'aaa';
+let $target_value= 'aaa';
+let $can_convert= 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= BLOB;
+let $target_type= MEDIUMBLOB;
+let $source_value= 'aaa';
+let $target_value= 'aaa';
+let $can_convert= $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= BLOB;
+let $target_type= LONGBLOB;
+let $source_value= 'aaa';
+let $target_value= 'aaa';
+let $can_convert= $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+# MEDIUMBLOB
+
+let $source_type = MEDIUMBLOB;
+let $target_type = TINYBLOB;
+let $source_value = 'aaa';
+let $target_value = 'aaa';
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= MEDIUMBLOB;
+let $target_type= BLOB;
+let $source_value= 'aaa';
+let $target_value= 'aaa';
+let $can_convert= $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= MEDIUMBLOB;
+let $target_type= MEDIUMBLOB;
+let $source_value= 'aaa';
+let $target_value= 'aaa';
+let $can_convert= 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= MEDIUMBLOB;
+let $target_type= LONGBLOB;
+let $source_value= 'aaa';
+let $target_value= 'aaa';
+let $can_convert= $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+# LONGBLOB
+
+let $source_type = LONGBLOB;
+let $target_type = TINYBLOB;
+let $source_value = 'aaa';
+let $target_value = 'aaa';
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= LONGBLOB;
+let $target_type= BLOB;
+let $source_value= 'aaa';
+let $target_value= 'aaa';
+let $can_convert= $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= LONGBLOB;
+let $target_type= MEDIUMBLOB;
+let $source_value= 'aaa';
+let $target_value= 'aaa';
+let $can_convert= $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= LONGBLOB;
+let $target_type= LONGBLOB;
+let $source_value= 'aaa';
+let $target_value= 'aaa';
+let $can_convert= 1;
+source extra/rpl_tests/check_type.inc;
+
+# BUG#49836 (additional tests - GEOMETRY TYPE)
+
+let $source_type = GEOMETRY;
+let $target_type = BLOB;
+let $source_value = PointFromText('POINT(10 10)');
+let $target_value = PointFromText('POINT(10 10)');
+let $can_convert = 0;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type = BLOB;
+let $target_type = GEOMETRY;
+let $source_value = 'aaa';
+let $target_value = 'aaa';
+let $can_convert = 0;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type = GEOMETRY;
+let $target_type = GEOMETRY;
+let $source_value = PointFromText('POINT(10 10)');
+let $target_value = PointFromText('POINT(10 10)');
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type = BIT(1);
+let $target_type = BIT(1);
+let $source_value = b'1';
+let $target_value = b'1';
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type = DATE;
+let $target_type = DATE;
+let $source_value = '2009-11-21';
+let $target_value = '2009-11-21';
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type = ENUM('master','slave');
+let $target_type = ENUM('master','slave');
+let $source_value = 'master';
+let $target_value = 'master';
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type = CHAR(10);
+let $target_type = ENUM('master','slave');
+let $source_value = 'master';
+let $target_value = 'master';
+let $can_convert = 0;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type = CHAR(10);
+let $target_type = SET('master','slave');
+let $source_value = 'master';
+let $target_value = 'master';
+let $can_convert = 0;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type = ENUM('master','slave');
+let $target_type = CHAR(10);
+let $source_value = 'master';
+let $target_value = 'master';
+let $can_convert = 0;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type = SET('master','slave');
+let $target_type = CHAR(10);
+let $source_value = 'master';
+let $target_value = 'master';
+let $can_convert = 0;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type = SET('master','slave');
+let $target_type = SET('master','slave');
+let $source_value = '';
+let $target_value = '';
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type = SET('master','slave');
+let $target_type = SET('master','slave');
+let $source_value = 'master,slave';
+let $target_value = 'master,slave';
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type = SET('0','1','2','3','4','5','6');
+let $target_type = SET('0','1','2','3','4','5','6');
+let $source_value = '5';
+let $target_value = '5';
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type = SET('0','1','2','3','4','5','6');
+let $target_type = SET('0','1','2','3','4','5','6','7','8','9','10');
+let $source_value = '5';
+let $target_value = '5';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type = SET('0','1','2','3','4','5','6','7','8','9','10');
+let $target_type = SET('0','1','2','3','4','5','6');
+let $source_value = '5';
+let $target_value = '5';
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type = SET('0','1','2','3','4','5','6','7','8','9','10');
+let $target_type = SET('0','1','2','3','4','5','6');
+let $source_value = '7';
+let $target_value = '';
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type = TINYINT;
+let $target_type = TINYINT;
+let $source_value = 1;
+let $target_value = 1;
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type = TINYINT;
+let $target_type = SMALLINT;
+let $source_value = 1;
+let $target_value = 1;
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= TINYINT;
+let $target_type= MEDIUMINT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= TINYINT;
+let $target_type= INT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= TINYINT;
+let $target_type= BIGINT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= SMALLINT;
+let $target_type= TINYINT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= SMALLINT;
+let $target_type= TINYINT;
+let $source_value= 1 << 9;
+let $target_value= (1 << 7) - 1;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= SMALLINT;
+let $target_type= TINYINT UNSIGNED;
+let $source_value= 1 << 9;
+let $target_value= (1 << 8) - 1;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= SMALLINT;
+let $target_type= SMALLINT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= SMALLINT;
+let $target_type= MEDIUMINT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= SMALLINT;
+let $target_type= INT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= SMALLINT;
+let $target_type= BIGINT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= MEDIUMINT;
+let $target_type= TINYINT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= MEDIUMINT;
+let $target_type= TINYINT;
+let $source_value= 1 << 20;
+let $target_value= (1 << 7) - 1;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= MEDIUMINT;
+let $target_type= TINYINT UNSIGNED;
+let $source_value= 1 << 20;
+let $target_value= (1 << 8) - 1;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= MEDIUMINT;
+let $target_type= SMALLINT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= MEDIUMINT;
+let $target_type= MEDIUMINT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= MEDIUMINT;
+let $target_type= INT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= MEDIUMINT;
+let $target_type= BIGINT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= INT;
+let $target_type= TINYINT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= INT;
+let $target_type= TINYINT;
+let $source_value= (1 << 30);
+let $target_value= (1 << 7) - 1;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= INT;
+let $target_type= TINYINT UNSIGNED;
+let $source_value= (1 << 30);
+let $target_value= (1 << 8) - 1;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= INT;
+let $target_type= SMALLINT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= INT;
+let $target_type= MEDIUMINT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= INT;
+let $target_type= INT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= INT;
+let $target_type= BIGINT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= BIGINT;
+let $target_type= TINYINT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= BIGINT;
+let $target_type= SMALLINT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= BIGINT;
+let $target_type= MEDIUMINT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= BIGINT;
+let $target_type= INT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= BIGINT;
+let $target_type= BIGINT;
+let $source_value= 1;
+let $target_value= 1;
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= CHAR(20);
+let $target_type= CHAR(20);
+let $source_value= 'Smoothnoodlemaps';
+let $target_value= 'Smoothnoodlemaps';
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= CHAR(20);
+let $target_type= CHAR(30);
+let $source_value= 'Smoothnoodlemaps';
+let $target_value= 'Smoothnoodlemaps';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= CHAR(20);
+let $target_type= CHAR(10);
+let $source_value= 'Smoothnoodlemaps';
+let $target_value= 'Smoothnood';
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= CHAR(20);
+let $target_type= VARCHAR(20);
+let $source_value= 'Smoothnoodlemaps';
+let $target_value= 'Smoothnoodlemaps';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= CHAR(20);
+let $target_type= VARCHAR(30);
+let $source_value= 'Smoothnoodlemaps';
+let $target_value= 'Smoothnoodlemaps';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= CHAR(20);
+let $target_type= VARCHAR(10);
+let $source_value= 'Smoothnoodlemaps';
+let $target_value= 'Smoothnood';
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= CHAR(20);
+let $target_type= TINYTEXT;
+let $source_value= 'Smoothnoodlemaps';
+let $target_value= 'Smoothnoodlemaps';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= CHAR(20);
+let $target_type= TEXT;
+let $source_value= 'Smoothnoodlemaps';
+let $target_value= 'Smoothnoodlemaps';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= CHAR(20);
+let $target_type= MEDIUMTEXT;
+let $source_value= 'Smoothnoodlemaps';
+let $target_value= 'Smoothnoodlemaps';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= CHAR(20);
+let $target_type= LONGTEXT;
+let $source_value= 'Smoothnoodlemaps';
+let $target_value= 'Smoothnoodlemaps';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= VARCHAR(20);
+let $target_type= VARCHAR(20);
+let $source_value= 'Smoothnoodlemaps';
+let $target_value= 'Smoothnoodlemaps';
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= VARCHAR(20);
+let $target_type= VARCHAR(30);
+let $source_value= 'Smoothnoodlemaps';
+let $target_value= 'Smoothnoodlemaps';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= VARCHAR(20);
+let $target_type= VARCHAR(10);
+let $source_value= 'Smoothnoodlemaps';
+let $target_value= 'Smoothnood';
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= VARCHAR(20);
+let $target_type= CHAR(30);
+let $source_value= 'Smoothnoodlemaps';
+let $target_value= 'Smoothnoodlemaps';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= VARCHAR(20);
+let $target_type= CHAR(10);
+let $source_value= 'Smoothnoodlemaps';
+let $target_value= 'Smoothnood';
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= VARCHAR(20);
+let $target_type= TINYTEXT;
+let $source_value= 'Smoothnoodlemaps';
+let $target_value= 'Smoothnoodlemaps';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= VARCHAR(20);
+let $target_type= TEXT;
+let $source_value= 'Smoothnoodlemaps';
+let $target_value= 'Smoothnoodlemaps';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= VARCHAR(20);
+let $target_type= MEDIUMTEXT;
+let $source_value= 'Smoothnoodlemaps';
+let $target_value= 'Smoothnoodlemaps';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= VARCHAR(20);
+let $target_type= LONGTEXT;
+let $source_value= 'Smoothnoodlemaps';
+let $target_value= 'Smoothnoodlemaps';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $blob = `select repeat('abcd', 125)`;
+let $truncated_blob = `select left('$blob', 255)`;
+
+let $source_type= VARCHAR(500);
+let $target_type= VARCHAR(500);
+let $source_value= '$blob';
+let $target_value= '$blob';
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= VARCHAR(500);
+let $target_type= VARCHAR(510);
+let $source_value= '$blob';
+let $target_value= '$blob';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= VARCHAR(500);
+let $target_type= VARCHAR(255);
+let $source_value= '$blob';
+let $target_value= '$truncated_blob';
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= VARCHAR(500);
+let $target_type= TINYTEXT;
+let $source_value= '$blob';
+let $target_value= '$truncated_blob';
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= VARCHAR(500);
+let $target_type= TEXT;
+let $source_value= '$blob';
+let $target_value= '$blob';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= VARCHAR(500);
+let $target_type= MEDIUMTEXT;
+let $source_value= '$blob';
+let $target_value= '$blob';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= VARCHAR(500);
+let $target_type= LONGTEXT;
+let $source_value= '$blob';
+let $target_value= '$blob';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $tiny_blob = `select repeat('tiny blob ', 25)`;
+let $truncated_tiny_blob = `select left('$tiny_blob', 254)`;
+
+let $source_type= TINYTEXT;
+let $target_type= VARCHAR(500);
+let $source_value= '$tiny_blob';
+let $target_value= '$tiny_blob';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= TEXT;
+let $target_type= VARCHAR(500);
+let $source_value= '$blob';
+let $target_value= '$blob';
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= MEDIUMTEXT;
+let $target_type= VARCHAR(500);
+let $source_value= '$blob';
+let $target_value= '$blob';
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= LONGTEXT;
+let $target_type= VARCHAR(500);
+let $source_value= '$blob';
+let $target_value= '$blob';
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= TINYTEXT;
+let $target_type= CHAR(255);
+let $source_value= '$tiny_blob';
+let $target_value= '$tiny_blob';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= TINYTEXT;
+let $target_type= CHAR(250);
+let $source_value= '$tiny_blob';
+let $target_value= left('$tiny_blob', 250);
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= TEXT;
+let $target_type= CHAR(255);
+let $source_value= '$blob';
+let $target_value= left('$blob', 255);
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= MEDIUMTEXT;
+let $target_type= CHAR(255);
+let $source_value= '$blob';
+let $target_value= left('$blob', 255);
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= LONGTEXT;
+let $target_type= CHAR(255);
+let $source_value= '$blob';
+let $target_value= left('$blob', 255);
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= TINYTEXT;
+let $target_type= TINYTEXT;
+let $source_value= '$tiny_blob';
+let $target_value= '$tiny_blob';
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= TINYTEXT;
+let $target_type= TEXT;
+let $source_value= '$tiny_blob';
+let $target_value= '$tiny_blob';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= TEXT;
+let $target_type= TINYTEXT;
+let $source_value= '$blob';
+let $target_value= left('$blob',255);
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= DECIMAL(10,5);
+let $target_type= DECIMAL(10,5);
+let $source_value= 3.14159;
+let $target_value= 3.14159;
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= DECIMAL(10,5);
+let $target_type= DECIMAL(10,6);
+let $source_value= 3.14159;
+let $target_value= 3.141590;
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= DECIMAL(10,5);
+let $target_type= DECIMAL(11,5);
+let $source_value= 3.14159;
+let $target_value= 3.14159;
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= DECIMAL(10,5);
+let $target_type= DECIMAL(11,6);
+let $source_value= 3.14159;
+let $target_value= 3.141590;
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= DECIMAL(10,5);
+let $target_type= DECIMAL(10,4);
+let $source_value= 3.14159;
+let $target_value= 3.1416;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= DECIMAL(10,5);
+let $target_type= DECIMAL(9,5);
+let $source_value= 3.14159;
+let $target_value= 3.14159;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= DECIMAL(10,5);
+let $target_type= DECIMAL(9,4);
+let $source_value= 3.14159;
+let $target_value= 3.1416;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= FLOAT;
+let $target_type= DECIMAL(10,5);
+let $source_value= 3.15625;
+let $target_value= 3.15625;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= DOUBLE;
+let $target_type= DECIMAL(10,5);
+let $source_value= 3.15625;
+let $target_value= 3.15625;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= DECIMAL(10,5);
+let $target_type= FLOAT;
+let $source_value= 3.15625;
+let $target_value= 3.15625;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= DECIMAL(10,5);
+let $target_type= DOUBLE;
+let $source_value= 3.15625;
+let $target_value= 3.15625;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= FLOAT;
+let $target_type= FLOAT;
+let $source_value= 3.15625;
+let $target_value= 3.15625;
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= DOUBLE;
+let $target_type= DOUBLE;
+let $source_value= 3.15625;
+let $target_value= 3.15625;
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= FLOAT;
+let $target_type= DOUBLE;
+let $source_value= 3.15625;
+let $target_value= 3.15625;
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= DOUBLE;
+let $target_type= FLOAT;
+let $source_value= 3.15625;
+let $target_value= 3.15625;
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= BIT(5);
+let $target_type= BIT(5);
+let $source_value= b'11001';
+let $target_value= b'11001';
+let $can_convert = 1;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= BIT(5);
+let $target_type= BIT(6);
+let $source_value= b'11001';
+let $target_value= b'11001';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= BIT(6);
+let $target_type= BIT(5);
+let $source_value= b'111001';
+let $target_value= b'11111';
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= BIT(5);
+let $target_type= BIT(12);
+let $source_value= b'11001';
+let $target_value= b'11001';
+let $can_convert = $if_is_non_lossy;
+source extra/rpl_tests/check_type.inc;
+
+let $source_type= BIT(12);
+let $target_type= BIT(5);
+let $source_value= b'101100111000';
+let $target_value= b'11111';
+let $can_convert = $if_is_lossy;
+source extra/rpl_tests/check_type.inc;
+
+
+disable_warnings;
+source include/reset_master_and_slave.inc;
+enable_warnings;
+enable_query_log;
diff --git a/mysql-test/include/bug38347.inc b/mysql-test/include/bug38347.inc
new file mode 100644
index 00000000000..ca1dbfa1bd2
--- /dev/null
+++ b/mysql-test/include/bug38347.inc
@@ -0,0 +1,21 @@
+
+--echo
+SHOW GRANTS FOR mysqltest_u1@localhost;
+
+--echo
+--echo # connection: con1 (mysqltest_u1@mysqltest_db1)
+--connect (con1,localhost,mysqltest_u1,,mysqltest_db1)
+--connection con1
+
+--echo
+SHOW CREATE TABLE t1;
+
+--echo
+--echo # connection: default
+--connection default
+
+--disconnect con1
+
+--echo
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
diff --git a/mysql-test/include/check_ipv6.inc b/mysql-test/include/check_ipv6.inc
new file mode 100644
index 00000000000..14d04b11e83
--- /dev/null
+++ b/mysql-test/include/check_ipv6.inc
@@ -0,0 +1,14 @@
+# Check if ipv6 is available. If not, server is crashing (see BUG#48915).
+--disable_query_log
+--disable_abort_on_error
+connect (checkcon123456789,::1,root,,test);
+if($mysql_errno)
+{
+skip wrong IP;
+}
+connection default;
+disconnect checkcon123456789;
+--enable_abort_on_error
+--enable_query_log
+# end check
+
diff --git a/mysql-test/include/check_key_reads.inc b/mysql-test/include/check_key_reads.inc
new file mode 100644
index 00000000000..cfb754bccd4
--- /dev/null
+++ b/mysql-test/include/check_key_reads.inc
@@ -0,0 +1,6 @@
+# include file for checking if variable key_reads is zero
+let $key_reads= query_get_value(SHOW STATUS LIKE 'key_reads',Value,1);
+--disable_query_log
+eval SELECT IF($key_reads = 0, "Yes!", "No!") as 'Zero key reads?';
+FLUSH STATUS;
+--enable_query_log
diff --git a/mysql-test/include/check_key_req.inc b/mysql-test/include/check_key_req.inc
new file mode 100644
index 00000000000..92a81f09d91
--- /dev/null
+++ b/mysql-test/include/check_key_req.inc
@@ -0,0 +1,9 @@
+# include file for checking if variable key_reads = key_read_requests
+let $key_reads= query_get_value(SHOW STATUS LIKE 'key_reads',Value,1);
+let $key_r_req= query_get_value(SHOW STATUS LIKE 'key_read_requests',Value,1);
+let $key_writes= query_get_value(SHOW STATUS LIKE 'key_writes',Value,1);
+let $key_w_req= query_get_value(SHOW STATUS LIKE 'key_write_requests',Value,1);
+--disable_query_log
+eval SELECT IF($key_reads = $key_r_req, "reads == requests", "reads != requests") as 'reads vs requests';
+eval SELECT IF($key_writes = $key_w_req, "writes == requests", "writes != requests") as 'writes vs requests';
+--enable_query_log
diff --git a/mysql-test/include/commit.inc b/mysql-test/include/commit.inc
index d91ba8291fd..4336d3be0ed 100644
--- a/mysql-test/include/commit.inc
+++ b/mysql-test/include/commit.inc
@@ -547,9 +547,9 @@ call p_verify_status_increment(0, 0, 0, 0);
--echo # the binary log.
--echo #
select f1();
-call p_verify_status_increment(0, 0, 1, 0);
+call p_verify_status_increment(1, 0, 1, 0);
commit;
-call p_verify_status_increment(0, 0, 1, 0);
+call p_verify_status_increment(1, 0, 1, 0);
--echo # 17. Read-only statement, a function changes non-trans-table.
--echo #
@@ -557,15 +557,19 @@ call p_verify_status_increment(0, 0, 1, 0);
--echo # non-transactional changes saved in the transaction cache to
--echo # the binary log.
--echo #
+--disable_warnings
select f1() from t1;
-call p_verify_status_increment(1, 0, 2, 0);
+--enable_warnings
+call p_verify_status_increment(2, 0, 2, 0);
commit;
-call p_verify_status_increment(1, 0, 2, 0);
+call p_verify_status_increment(2, 0, 2, 0);
--echo # 18. Read-write statement: UPDATE, change 0 (transactional) rows.
--echo #
select count(*) from t2;
+--disable_warnings
update t1 set a=2 where a=f1()+10;
+--enable_warnings
select count(*) from t2;
call p_verify_status_increment(2, 0, 2, 0);
commit;
@@ -579,7 +583,7 @@ call p_verify_status_increment(2, 0, 2, 0);
drop table t2;
set sql_mode=no_engine_substitution;
create temporary table t2 (a int);
-call p_verify_status_increment(0, 0, 0, 0);
+call p_verify_status_increment(1, 0, 0, 0);
set sql_mode=default;
--echo # 19. A function changes temp-trans-table.
--echo #
@@ -636,9 +640,9 @@ call p_verify_status_increment(2, 0, 1, 0);
--echo # 25. DDL: DROP TEMPORARY TABLE, does not start a transaction
--echo #
drop temporary table t2;
-call p_verify_status_increment(0, 0, 0, 0);
+call p_verify_status_increment(1, 0, 0, 0);
commit;
-call p_verify_status_increment(0, 0, 0, 0);
+call p_verify_status_increment(1, 0, 0, 0);
--echo # 26. Verify that SET AUTOCOMMIT issues an implicit commit
--echo #
@@ -719,17 +723,17 @@ call p_verify_status_increment(4, 4, 4, 4);
--echo # Sic: no table is created.
create table if not exists t2 (a int) select 6 union select 7;
--echo # Sic: first commits the statement, and then the transaction.
-call p_verify_status_increment(4, 4, 4, 4);
+call p_verify_status_increment(2, 0, 4, 4);
create table t3 select a from t2;
-call p_verify_status_increment(4, 4, 4, 4);
+call p_verify_status_increment(2, 0, 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);
+call p_verify_status_increment(2, 0, 2, 0);
create view v1 as select * from t2;
call p_verify_status_increment(1, 0, 1, 0);
check table t1;
diff --git a/mysql-test/include/ddl_i18n.check_sp.inc b/mysql-test/include/ddl_i18n.check_sp.inc
index bb1657d7072..c182f797847 100644
--- a/mysql-test/include/ddl_i18n.check_sp.inc
+++ b/mysql-test/include/ddl_i18n.check_sp.inc
@@ -36,19 +36,19 @@ SHOW PROCEDURE STATUS LIKE 'p4'|
--echo
--echo
---replace_column 16 CREATED 17 ALTERED
+--replace_column 23 CREATED 24 ALTERED
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'|
--echo
---replace_column 16 CREATED 17 ALTERED
+--replace_column 23 CREATED 24 ALTERED
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'|
--echo
---replace_column 16 CREATED 17 ALTERED
+--replace_column 23 CREATED 24 ALTERED
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'|
--echo
---replace_column 16 CREATED 17 ALTERED
+--replace_column 23 CREATED 24 ALTERED
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'|
# - Initialize the used variables (actual values don't matter);
diff --git a/mysql-test/include/default_client.cnf b/mysql-test/include/default_client.cnf
new file mode 100644
index 00000000000..38f0d39127a
--- /dev/null
+++ b/mysql-test/include/default_client.cnf
@@ -0,0 +1,19 @@
+#
+# We use default-character-set=latin1 to avoid character set auto-detection
+# when running tests - not to depend on the current machine localization.
+#
+
+[mysql]
+default-character-set=latin1
+
+[mysqlshow]
+default-character-set=latin1
+
+[mysqlimport]
+default-character-set=latin1
+
+[mysqlcheck]
+default-character-set=latin1
+
+[mysql_upgrade]
+default-character-set=latin1
diff --git a/mysql-test/include/default_my.cnf b/mysql-test/include/default_my.cnf
index d77fee0e200..6888a69b0a4 100644
--- a/mysql-test/include/default_my.cnf
+++ b/mysql-test/include/default_my.cnf
@@ -1,5 +1,21 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
# Use default setting for mysqld processes
!include default_mysqld.cnf
+!include default_client.cnf
[mysqld.1]
@@ -8,6 +24,8 @@
log-bin= master-bin
+# Run tests with the performance schema instrumentation
+loose-enable-performance-schema
[mysqlbinlog]
disable-force-if-open
diff --git a/mysql-test/include/default_mysqld.cnf b/mysql-test/include/default_mysqld.cnf
index ad0090aaf36..def14abf55a 100644
--- a/mysql-test/include/default_mysqld.cnf
+++ b/mysql-test/include/default_mysqld.cnf
@@ -1,3 +1,18 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
# Default values that applies to all MySQL Servers
[mysqld]
open-files-limit= 1024
@@ -14,8 +29,18 @@ sort_buffer= 256K
max_heap_table_size= 1M
loose-innodb_data_file_path= ibdata1:10M:autoextend
+loose-innodb_buffer_pool_size= 8M
+loose-innodb_write_io_threads= 2
+loose-innodb_read_io_threads= 2
+loose-innodb_log_buffer_size= 1M
+loose-innodb_log_file_size= 5M
+loose-innodb_additional_mem_pool_size= 1M
+loose-innodb_log_files_in_group= 2
slave-net-timeout=120
log-bin=mysqld-bin
+# Run tests with the performance schema instrumentation
+loose-enable-performance-schema
+
diff --git a/mysql-test/include/diff_tables.inc b/mysql-test/include/diff_tables.inc
index d15dd56b35d..ad42615511a 100644
--- a/mysql-test/include/diff_tables.inc
+++ b/mysql-test/include/diff_tables.inc
@@ -60,6 +60,7 @@ disable_query_log;
--error 0,1
--remove_file $MYSQLTEST_VARDIR/tmp/diff_table_2
+
let $_diff_table=$diff_table_2;
let $_diff_i=2;
while ($_diff_i) {
diff --git a/mysql-test/include/have_community_features.inc b/mysql-test/include/have_community_features.inc
deleted file mode 100644
index 66697d8dd00..00000000000
--- a/mysql-test/include/have_community_features.inc
+++ /dev/null
@@ -1,4 +0,0 @@
---require r/have_community_features.require
---disable_query_log
-show variables like 'have_community_features';
---enable_query_log
diff --git a/mysql-test/include/have_dynamic_loading.inc b/mysql-test/include/have_dynamic_loading.inc
index 1b2c85b3904..3ce9641d87c 100644
--- a/mysql-test/include/have_dynamic_loading.inc
+++ b/mysql-test/include/have_dynamic_loading.inc
@@ -1,7 +1,9 @@
#
# Whether server supports dynamic loading.
#
---require r/have_dynamic_loading.require
+if (`SELECT @@have_dynamic_loading != 'YES'`) {
+ --skip The test requires dynamic loading
+}
disable_query_log;
show variables like 'have_dynamic_loading';
enable_query_log;
diff --git a/mysql-test/include/have_example_plugin.inc b/mysql-test/include/have_example_plugin.inc
index a2fffc17b97..3a667d2e21a 100644
--- a/mysql-test/include/have_example_plugin.inc
+++ b/mysql-test/include/have_example_plugin.inc
@@ -1,13 +1,21 @@
#
-# Check if server has support for loading udf's
-# i.e it will support dlopen
+# Check if server has support for loading plugins
#
---source include/have_dynamic_loading.inc
+if (`SELECT @@have_dynamic_loading != 'YES'`) {
+ --skip Example plugin requires dynamic loading
+}
#
# Check if the variable EXAMPLE_PLUGIN is set
#
---require r/have_example_plugin.require
-disable_query_log;
-eval select LENGTH('$EXAMPLE_PLUGIN') > 0 as 'have_example_plugin';
+if (`SELECT LENGTH('$EXAMPLE_PLUGIN') = 0`) {
+ --skip Example plugin requires the environment variable \$EXAMPLE_PLUGIN to be set (normally done by mtr)
+}
+
+#
+# Check if --plugin-dir was setup for exampledb
+#
+if (`SELECT CONCAT('--plugin-dir=', @@plugin_dir) != '$EXAMPLE_PLUGIN_OPT'`) {
+ --skip Example plugin requires that --plugin-dir is set to the example plugin dir (either the .opt file does not contain \$EXAMPLE_PLUGIN_OPT or another plugin is in use)
+}
enable_query_log;
diff --git a/mysql-test/include/have_nodebug.inc b/mysql-test/include/have_nodebug.inc
new file mode 100644
index 00000000000..3a5b073cd2e
--- /dev/null
+++ b/mysql-test/include/have_nodebug.inc
@@ -0,0 +1,4 @@
+-- require r/have_nodebug.require
+disable_query_log;
+select (version() like '%debug%') as debug;
+enable_query_log;
diff --git a/mysql-test/include/have_perfschema.inc b/mysql-test/include/have_perfschema.inc
new file mode 100644
index 00000000000..6d52a53b6b1
--- /dev/null
+++ b/mysql-test/include/have_perfschema.inc
@@ -0,0 +1,20 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# 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 (!`SELECT count(*) FROM information_schema.engines WHERE
+ (support = 'YES' OR support = 'DEFAULT') AND
+ engine = 'PERFORMANCE_SCHEMA'`){
+ skip Need performance schema compiled in;
+}
diff --git a/mysql-test/include/have_profiling.inc b/mysql-test/include/have_profiling.inc
new file mode 100644
index 00000000000..48f6668ff92
--- /dev/null
+++ b/mysql-test/include/have_profiling.inc
@@ -0,0 +1,4 @@
+--require r/have_profiling.require
+--disable_query_log
+show variables like 'have_profiling';
+--enable_query_log
diff --git a/mysql-test/include/have_semisync_plugin.inc b/mysql-test/include/have_semisync_plugin.inc
new file mode 100644
index 00000000000..d3b42dbf5fb
--- /dev/null
+++ b/mysql-test/include/have_semisync_plugin.inc
@@ -0,0 +1,21 @@
+#
+# Check if server has support for loading plugins
+#
+if (`SELECT @@have_dynamic_loading != 'YES'`) {
+ --skip Requires dynamic loading
+}
+
+#
+# Check if the variable SEMISYNC_MASTER_PLUGIN is set
+#
+if (`select LENGTH('$SEMISYNC_MASTER_PLUGIN') = 0`)
+{
+ skip Need semisync plugins;
+}
+
+#
+# Check if --plugin-dir was setup for semisync
+#
+if (`SELECT CONCAT('--plugin-dir=', @@plugin_dir) != '$SEMISYNC_PLUGIN_OPT'`) {
+ --skip SEMISYNC plugin requires that --plugin-dir is set to the semisync plugin dir (either the .opt file does not contain \$SEMISYNC_PLUGIN_OPT or another plugin is in use)
+}
diff --git a/mysql-test/include/have_simple_parser.inc b/mysql-test/include/have_simple_parser.inc
index 5a4dc93ec81..745f68603fe 100644
--- a/mysql-test/include/have_simple_parser.inc
+++ b/mysql-test/include/have_simple_parser.inc
@@ -1,13 +1,20 @@
#
-# Check if server has support for loading udf's
-# i.e it will support dlopen
+# Check if server has support for loading plugins
#
---source include/have_dynamic_loading.inc
+if (`SELECT @@have_dynamic_loading != 'YES'`) {
+ --skip simple parser requires dynamic loading
+}
#
# Check if the variable SIMPLE_PARSER is set
#
---require r/have_simple_parser.require
-disable_query_log;
-eval select LENGTH('$SIMPLE_PARSER') > 0 as 'have_simple_parser';
-enable_query_log;
+if (`SELECT LENGTH('$SIMPLE_PARSER') = 0`) {
+ --skip simple parser requires the environment variable \$SIMPLE_PARSER to be set (normally done by mtr)
+}
+
+#
+# Check if --plugin-dir was setup for simple parser
+#
+if (`SELECT CONCAT('--plugin-dir=', @@plugin_dir) != '$SIMPLE_PARSER_OPT'`) {
+ --skip simple parser requires that --plugin-dir is set to the udf plugin dir (either the .opt file does not contain \$UDF_EXAMPLE_LIB_OPT or another plugin is in use)
+}
diff --git a/mysql-test/include/have_ssl_communication.inc b/mysql-test/include/have_ssl_communication.inc
new file mode 100644
index 00000000000..6f2d5587a75
--- /dev/null
+++ b/mysql-test/include/have_ssl_communication.inc
@@ -0,0 +1,4 @@
+-- require r/have_ssl.require
+disable_query_log;
+show variables like 'have_ssl';
+enable_query_log;
diff --git a/mysql-test/include/have_thread_concurrency.inc b/mysql-test/include/have_thread_concurrency.inc
new file mode 100644
index 00000000000..730edbf4895
--- /dev/null
+++ b/mysql-test/include/have_thread_concurrency.inc
@@ -0,0 +1,10 @@
+disable_query_log;
+disable_result_log;
+set @have_thread_concurrency=0;
+select @have_thread_concurrency:=1 from information_schema.global_variables where variable_name='thread_concurrency';
+if (`select @have_thread_concurrency = 0`)
+{
+ skip Need @@thread_concurrency;
+}
+enable_result_log;
+enable_query_log;
diff --git a/mysql-test/include/have_udf.inc b/mysql-test/include/have_udf.inc
index 7be57bbb7a9..d9ca1450043 100644
--- a/mysql-test/include/have_udf.inc
+++ b/mysql-test/include/have_udf.inc
@@ -1,13 +1,20 @@
#
-# Check if server has support for loading udf's
-# i.e it will support dlopen
+# Check if server has support for loading plugins
#
---source include/have_dynamic_loading.inc
+if (`SELECT @@have_dynamic_loading != 'YES'`) {
+ --skip UDF requires dynamic loading
+}
#
# Check if the variable UDF_EXAMPLE_LIB is set
#
---require r/have_udf_example.require
-disable_query_log;
-eval select LENGTH('$UDF_EXAMPLE_LIB') > 0 as 'have_udf_example_lib';
-enable_query_log;
+if (`SELECT LENGTH('$UDF_EXAMPLE_LIB') = 0`) {
+ --skip UDF requires the environment variable \$UDF_EXAMPLE_LIB to be set (normally done by mtr)
+}
+
+#
+# Check if --plugin-dir was setup for udf
+#
+if (`SELECT CONCAT('--plugin-dir=', @@plugin_dir) != '$UDF_EXAMPLE_LIB_OPT'`) {
+ --skip UDF requires that --plugin-dir is set to the udf plugin dir (either the .opt file does not contain \$UDF_EXAMPLE_LIB_OPT or another plugin is in use)
+}
diff --git a/mysql-test/include/index_merge1.inc b/mysql-test/include/index_merge1.inc
index d137b0957c0..ef116c5addc 100644
--- a/mysql-test/include/index_merge1.inc
+++ b/mysql-test/include/index_merge1.inc
@@ -303,7 +303,7 @@ drop table t4;
create table t4 (a int);
insert into t4 values (1),(4),(3);
set @save_join_buffer_size=@@join_buffer_size;
-set join_buffer_size= 4000;
+set join_buffer_size= 4096;
explain select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5)
from t0 as A force index(i1,i2), t0 as B force index (i1,i2)
where (A.key1 < 500000 or A.key2 < 3)
diff --git a/mysql-test/include/index_merge2.inc b/mysql-test/include/index_merge2.inc
index d65115eac0f..9b98eb3ebf2 100644
--- a/mysql-test/include/index_merge2.inc
+++ b/mysql-test/include/index_merge2.inc
@@ -122,12 +122,20 @@ insert into t1 (key1a, key1b, key2a, key2b, key3a, key3b)
analyze table t1;
select count(*) from t1;
+if ($index_merge_random_rows_in_EXPLAIN)
+{
+ --replace_column 9 #
+}
explain select count(*) from t1 where
key1a = 2 and key1b is null and key2a = 2 and key2b is null;
select count(*) from t1 where
key1a = 2 and key1b is null and key2a = 2 and key2b is null;
+if ($index_merge_random_rows_in_EXPLAIN)
+{
+ --replace_column 9 #
+}
explain select count(*) from t1 where
key1a = 2 and key1b is null and key3a = 2 and key3b is null;
diff --git a/mysql-test/include/ipv6.inc b/mysql-test/include/ipv6.inc
new file mode 100644
index 00000000000..378733dd03a
--- /dev/null
+++ b/mysql-test/include/ipv6.inc
@@ -0,0 +1,22 @@
+eval CREATE USER testuser@'$IPv6' identified by '1234';
+eval GRANT ALL ON test.* TO testuser@'$IPv6';
+eval SHOW GRANTS FOR testuser@'$IPv6';
+# deliver NULL instead of a valid number, see bug#34037
+eval SET @nip= inet_aton('$IPv6');
+SELECT @nip;
+SELECT inet_ntoa(@nip);
+# delivers a wrong value, see bug#34037
+SELECT USER();
+SELECT current_user();
+--disable_result_log
+SHOW PROCESSLIST;
+--enable_result_log
+connect (con1, $IPv6, root, , test, $MASTER_MYPORT);
+connection default;
+disconnect con1;
+eval REVOKE ALL ON test.* FROM testuser@'$IPv6';
+eval RENAME USER testuser@'$IPv6' to testuser1@'$IPv6';
+eval SET PASSWORD FOR testuser1@'$IPv6' = PASSWORD ('9876');
+SELECT USER();
+eval DROP USER testuser1@'$IPv6';
+
diff --git a/mysql-test/include/ipv6_clients.inc b/mysql-test/include/ipv6_clients.inc
new file mode 100644
index 00000000000..3f2b35d811a
--- /dev/null
+++ b/mysql-test/include/ipv6_clients.inc
@@ -0,0 +1,7 @@
+--exec $MYSQLADMIN --no-defaults --default-character-set=latin1 -h $IPv6 -P $MASTER_MYPORT -u root ping
+--disable_result_log
+--exec $MYSQL_CHECK -h $IPv6 -P $MASTER_MYPORT -u root test
+--exec $MYSQL_DUMP -h $IPv6 -P $MASTER_MYPORT -u root test
+--exec $MYSQL_SHOW -h $IPv6 -P $MASTER_MYPORT -u root
+--exec $MYSQL --host=$IPv6 --port=$MASTER_MYPORT --user=root test -e "SELECT current_user();SELECT user();"
+--enable_result_log
diff --git a/mysql-test/include/master-slave-reset.inc b/mysql-test/include/master-slave-reset.inc
index 938eb2c074a..f54f5b83eb5 100644
--- a/mysql-test/include/master-slave-reset.inc
+++ b/mysql-test/include/master-slave-reset.inc
@@ -6,12 +6,29 @@
# Since we expect STOP SLAVE to produce a warning as the slave is
# stopped (the server was started with skip-slave-start), we disable
# warnings when doing STOP SLAVE.
+#
+# $no_change_master If true, no change master will be done nor any reset slave.
+# This is to avoid touching the relay-log.info file allowing
+# the test to create one itself.
+# $skip_slave_start If true, the slave will not be started
connection slave;
+
+#we expect STOP SLAVE to produce a warning as the slave is stopped
+#(the server was started with skip-slave-start)
--disable_warnings
stop slave;
+--disable_query_log
+if (!$no_change_master) {
+ eval CHANGE MASTER TO MASTER_USER='root',
+ MASTER_CONNECT_RETRY=1,
+ MASTER_HOST='127.0.0.1',
+ MASTER_PORT=$MASTER_MYPORT;
+}
+--enable_query_log
source include/wait_for_slave_to_stop.inc;
--enable_warnings
+
connection master;
--disable_warnings
--disable_query_log
@@ -20,17 +37,39 @@ use test;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
--enable_warnings
reset master;
+
--disable_query_log
-reset slave;
+if (!$no_change_master) {
+ reset slave;
+}
--enable_query_log
connection slave;
-reset slave;
+
+--disable_warnings
+# the first RESET SLAVE may produce a warning about non-existent
+# 'ndb_apply_status' table, because this table is created
+# asynchronously at the server startup and may not exist yet
+# if RESET SLAVE comes too soon after the server startup
+if (!$no_change_master) {
+ reset slave;
+}
+--enable_warnings
+
# Clean up old test tables
--disable_warnings
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
--enable_warnings
+
--disable_query_log
+#eval CHANGE MASTER TO MASTER_USER='root',
+# MASTER_CONNECT_RETRY=1,
+# MASTER_HOST='127.0.0.1',
+# MASTER_PORT=$MASTER_MYPORT;
reset master;
--enable_query_log
-start slave;
-source include/wait_for_slave_to_start.inc;
+
+if (!$skip_slave_start) {
+ start slave;
+ source include/wait_for_slave_to_start.inc;
+}
+
diff --git a/mysql-test/include/master-slave.inc b/mysql-test/include/master-slave.inc
index e0eb87f02f7..134bb61ddab 100644
--- a/mysql-test/include/master-slave.inc
+++ b/mysql-test/include/master-slave.inc
@@ -1,4 +1,6 @@
# Replication tests need binlog
+#
+# $skip_slave_start If true, the slave will not be started
source include/have_log_bin.inc;
connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
@@ -8,5 +10,10 @@ connect (slave1,127.0.0.1,root,,test,$SLAVE_MYPORT,);
-- source include/master-slave-reset.inc
+if (!$skip_slave_start) {
+ connection master;
+ sync_slave_with_master;
+}
+
# Set the default connection to 'master'
connection master;
diff --git a/mysql-test/include/mtr_warnings.sql b/mysql-test/include/mtr_warnings.sql
index b2cc86fbd46..00e8c4e6c95 100644
--- a/mysql-test/include/mtr_warnings.sql
+++ b/mysql-test/include/mtr_warnings.sql
@@ -175,6 +175,16 @@ INSERT INTO global_suppressions VALUES
("Can't find file: '.\\\\test\\\\\\?{8}.frm'"),
("Slave: Unknown table 't1' Error_code: 1051"),
+ /* Added 2009-08-XX after fixing Bug #42408 */
+
+ ("Although a path was specified for the .* option, log tables are used"),
+ ("Backup: Operation aborted"),
+ ("Restore: Operation aborted"),
+ ("Restore: The grant .* was skipped because the user does not exist"),
+ ("The path specified for the variable .* is not a directory or cannot be written:"),
+ ("Master server does not support or not configured semi-sync replication, fallback to asynchronous"),
+ (": The MySQL server is running with the --secure-backup-file-priv option so it cannot execute this statement"),
+ ("Slave: Unknown table 't1' Error_code: 1051"),
/*
Transient network failures that cause warnings on reconnect.
BUG#47743 and BUG#47983.
diff --git a/mysql-test/include/mysqld--help.inc b/mysql-test/include/mysqld--help.inc
new file mode 100644
index 00000000000..3c8d19107c9
--- /dev/null
+++ b/mysql-test/include/mysqld--help.inc
@@ -0,0 +1,41 @@
+#
+# mysqld --help
+#
+--source include/not_embedded.inc
+
+#
+# force lower-case-table-names=1 (linux/macosx have different defaults)
+# force symbolic-links=0 (valgrind build has a different default)
+#
+exec $MYSQLD_BOOTSTRAP_CMD --symbolic-links=0 --lower-case-table-names=1 --help --verbose > $MYSQL_TMP_DIR/mysqld--help.txt 2>&1;
+
+perl;
+ @skipvars=qw/basedir open-files-limit general-log-file log
+ log-slow-queries pid-file slow-query-log-file
+ datadir slave-load-tmpdir tmpdir/;
+ @plugins=qw/innodb ndb ndbcluster safemalloc debug temp-pool ssl des-key-file
+ thread-concurrency super-large-pages mutex-deadlock-detector/;
+ @env=qw/MYSQLTEST_VARDIR MYSQL_TEST_DIR MYSQL_LIBDIR MYSQL_SHAREDIR/;
+ $re1=join('|', @skipvars, @plugins);
+ $re2=join('|', @plugins);
+ $skip=0;
+ open(F, '<', "$ENV{MYSQL_TMP_DIR}/mysqld--help.txt") or die;
+ while (<F>) {
+ next if 1../The following groups are read/;
+ next if /^($re1) /;
+ next if /^($re2)-/;
+ $skip=0 if /^ -/;
+ $skip=1 if / --($re2)\b/;
+ # fixes for 32-bit
+ y!\\!/!;
+ s/\b4294967295\b/18446744073709551615/;
+ s/\b2146435072\b/9223372036853727232/;
+ s/\b196608\b/262144/;
+ foreach $var (@env) { s/$ENV{$var}/$var/ }
+ next if /use --skip-(use-)?symbolic-links to disable/; # for valgrind, again
+ next if $skip;
+ print;
+ }
+ close F;
+EOF
+
diff --git a/mysql-test/include/not_ndb_default.inc b/mysql-test/include/not_ndb_default.inc
index ca3c57a671a..682a2944171 100644
--- a/mysql-test/include/not_ndb_default.inc
+++ b/mysql-test/include/not_ndb_default.inc
@@ -1,4 +1,4 @@
--require r/not_ndb_default.require
disable_query_log;
-select convert(@@table_type using latin1) NOT IN ("ndbcluster","NDBCLUSTER") as "TRUE";
+select convert(@@storage_engine using latin1) NOT IN ("ndbcluster","NDBCLUSTER") as "TRUE";
enable_query_log;
diff --git a/mysql-test/include/query_cache.inc b/mysql-test/include/query_cache.inc
index 7ce97b42158..0cc1ebb21d6 100644
--- a/mysql-test/include/query_cache.inc
+++ b/mysql-test/include/query_cache.inc
@@ -114,7 +114,7 @@ connection default;
# This should be 'YES'.
SHOW VARIABLES LIKE 'have_query_cache';
-SET GLOBAL query_cache_size = 200000;
+SET GLOBAL query_cache_size = 204800;
flush status;
SET @@autocommit=1;
eval SET SESSION STORAGE_ENGINE = $engine_type;
diff --git a/mysql-test/include/query_cache_sql_prepare.inc b/mysql-test/include/query_cache_sql_prepare.inc
index 1842d5412bb..769cd535f37 100644
--- a/mysql-test/include/query_cache_sql_prepare.inc
+++ b/mysql-test/include/query_cache_sql_prepare.inc
@@ -1,11 +1,13 @@
############### include/query_cache_sql_prepare.inc ################
#
# This is to see how statements prepared via the PREPARE SQL command
-# go into the query cache: if using parameters they cannot; if not
-# using parameters they can.
+# go into the query cache.
# Query cache is abbreviated as "QC"
#
# Last update:
+# 2008-05-26 Kostja
+# - Add test coverage for automatic statement reprepare
+#
# 2007-05-03 ML - Move t/query_cache_sql_prepare.test
# to include/query_cache_sql_prepare.inc
# - Create two toplevel tests sourcing this routine
@@ -25,7 +27,7 @@ connect (con1,localhost,root,,test,$MASTER_MYPORT,);
connection default;
set @initial_query_cache_size = @@global.query_cache_size;
-set @@global.query_cache_size=100000;
+set @@global.query_cache_size=102400;
flush status;
--disable_warnings
drop table if exists t1;
@@ -176,7 +178,7 @@ show status like 'Qcache_hits';
# then QC is re-enabled for more EXECUTE.
--echo ---- switch to connection default ----
connection default;
-set global query_cache_size=100000;
+set global query_cache_size=102400;
# Expect to see additional Qcache_hits.
# The fact that the QC was temporary disabled should have no affect
# except that the first execute will not hit results from the
@@ -233,7 +235,7 @@ prepare stmt3 from "select * from t1 where c1=10";
--echo ---- switch to connection default ----
connection default;
# then QC is enabled at EXECUTE
-set global query_cache_size=100000;
+set global query_cache_size=102400;
show status like 'Qcache_hits';
execute stmt1;
show status like 'Qcache_hits';
@@ -258,7 +260,7 @@ connection default;
set global query_cache_size=0;
prepare stmt1 from "select * from t1 where c1=?";
# then QC is enabled at EXECUTE
-set global query_cache_size=100000;
+set global query_cache_size=102400;
show status like 'Qcache_hits';
set @a=1;
execute stmt1 using @a;
@@ -490,6 +492,37 @@ use test;
--echo
--echo ########################################################################
+--echo #
+--echo # Bug#27430 Crash in subquery code when in PS and table DDL changed
+--echo # after PREPARE
+--echo # Check the effect of automatic reprepare on query cache
+--echo #
+--echo ########################################################################
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+create table t1 (a varchar(255));
+insert into t1 (a) values ("Pack my box with five dozen liquor jugs.");
+flush status;
+prepare stmt from "select a from t1";
+execute stmt;
+set @@global.query_cache_size=0;
+alter table t1 add column b int;
+execute stmt;
+set @@global.query_cache_size=102400;
+execute stmt;
+execute stmt;
+--echo #
+--echo # Sic: ALTER TABLE caused an automatic reprepare
+--echo # of the prepared statement. Since the query cache was disabled
+--echo # at the time of reprepare, the new prepared statement doesn't
+--echo # work with it.
+--echo #
+show status like 'Qcache_hits';
+show status like 'Qcache_queries_in_cache';
+--echo # Cleanup
+deallocate prepare stmt;
+drop table t1;
###############################################################################
diff --git a/mysql-test/include/rpl_ip_mix.inc b/mysql-test/include/rpl_ip_mix.inc
new file mode 100644
index 00000000000..96766e7dbdd
--- /dev/null
+++ b/mysql-test/include/rpl_ip_mix.inc
@@ -0,0 +1,24 @@
+--echo connect (master,$IPv6,root,,test,MASTER_MYPORT);
+connect (master,$IPv6,root,,test,$MASTER_MYPORT);
+--echo connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT);
+--echo connection master;
+connection master;
+reset master;
+source include/show_master_status.inc;
+save_master_pos;
+--echo connection slave;
+connection slave;
+reset slave;
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='$IPv6';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+--echo disconnect slave;
+disconnect slave;
+--echo disconnect master;
+disconnect master;
+--echo connection default;
+connection default;
+
diff --git a/mysql-test/include/rpl_ip_mix2.inc b/mysql-test/include/rpl_ip_mix2.inc
new file mode 100644
index 00000000000..390c788a461
--- /dev/null
+++ b/mysql-test/include/rpl_ip_mix2.inc
@@ -0,0 +1,24 @@
+--echo connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (master,127.0.0.1,root,,test,$MASTER_MYPORT);
+--echo connect (slave,$IPv6,root,,test,SLAVE_MYPORT);
+connect (slave,$IPv6,root,,test,$SLAVE_MYPORT);
+--echo connection master;
+connection master;
+reset master;
+source include/show_master_status.inc;
+save_master_pos;
+--echo connection slave;
+connection slave;
+reset slave;
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='$IPv6';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+--echo disconnect slave;
+disconnect slave;
+--echo disconnect master;
+disconnect master;
+--echo connection default;
+connection default;
+
diff --git a/mysql-test/include/rpl_ipv6.inc b/mysql-test/include/rpl_ipv6.inc
new file mode 100644
index 00000000000..d2d53a4841a
--- /dev/null
+++ b/mysql-test/include/rpl_ipv6.inc
@@ -0,0 +1,22 @@
+--echo connect (master,$IPv6,root,,test,MASTER_MYPORT);
+connect (master,$IPv6,root,,test,$MASTER_MYPORT);
+--echo connect (slave,$IPv6,root,,test,SLAVE_MYPORT);
+connect (slave,$IPv6,root,,test,$SLAVE_MYPORT);
+--echo connection master;
+connection master;
+reset master;
+source include/show_master_status.inc;
+save_master_pos;
+--echo connection slave;
+connection slave;
+reset slave;
+eval change master to master_host='$IPv6';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+--echo disconnect slave;
+disconnect slave;
+--echo disconnect master;
+disconnect master;
+--echo connection default;
+connection default;
+
diff --git a/mysql-test/include/rpl_udf.inc b/mysql-test/include/rpl_udf.inc
index 30f39d79d49..8be866613cb 100644
--- a/mysql-test/include/rpl_udf.inc
+++ b/mysql-test/include/rpl_udf.inc
@@ -55,11 +55,13 @@ connection master;
--echo "Running on the master"
--enable_info
eval CREATE TABLE t1(sum INT, price FLOAT(24)) ENGINE=$engine_type;
+--disable_warnings
INSERT INTO t1 VALUES(myfunc_int(100), myfunc_double(50.00));
INSERT INTO t1 VALUES(myfunc_int(10), myfunc_double(5.00));
INSERT INTO t1 VALUES(myfunc_int(200), myfunc_double(25.00));
INSERT INTO t1 VALUES(myfunc_int(1), myfunc_double(500.00));
SELECT * FROM t1 ORDER BY sum;
+--enable_warnings
--disable_info
sync_slave_with_master;
diff --git a/mysql-test/include/setup_fake_relay_log.inc b/mysql-test/include/setup_fake_relay_log.inc
index f88806e1079..b11e6afbeca 100644
--- a/mysql-test/include/setup_fake_relay_log.inc
+++ b/mysql-test/include/setup_fake_relay_log.inc
@@ -69,7 +69,21 @@ let $_fake_relay_log_purge= `SELECT @@global.relay_log_purge`;
# Create relay log file.
copy_file $fake_relay_log $_fake_relay_log;
# Create relay log index.
---exec echo $_fake_filename-fake.000001 > $_fake_relay_index
+
+# After patch for BUG#12190, the filename used in CHANGE MASTER
+# RELAY_LOG_FILE will be automatically added the directory of the
+# relay log before comparison, thus we need to added the directory
+# part (./ on unix .\ on windows) when faking the relay-log-bin.index.
+
+if (`select convert(@@version_compile_os using latin1) IN ("Win32","Win64","Windows") = 0`)
+{
+ eval select './$_fake_filename-fake.000001\n' into dumpfile '$_fake_relay_index';
+}
+
+if (`select convert(@@version_compile_os using latin1) IN ("Win32","Win64","Windows") != 0`)
+{
+ eval select '.\\\\$_fake_filename-fake.000001\n' into dumpfile '$_fake_relay_index';
+}
# Setup replication from existing relay log.
eval CHANGE MASTER TO MASTER_HOST='dummy.localdomain', RELAY_LOG_FILE='$_fake_filename-fake.000001', RELAY_LOG_POS=4;
diff --git a/mysql-test/include/show_binlog_events.inc b/mysql-test/include/show_binlog_events.inc
index 68f913a16a3..fcdc52eaf14 100644
--- a/mysql-test/include/show_binlog_events.inc
+++ b/mysql-test/include/show_binlog_events.inc
@@ -1,10 +1,35 @@
# $binlog_start can be set by caller or take a default value
+# $binary_log_file the name of the log file show
+# $binary_log_limit_row - sets the number of binlog rows to be returned
+# $binary_log_limit_offset - sets the offset where to start returning events
+
+let $show_binlog_events= show binlog events;
if (!$binlog_start)
{
- let $binlog_start=106;
+ # defaults to chop the first event in the binary log
+ let $binlog_start=107;
}
+
+if (!`SELECT '$binary_log_file' = ''`)
+{
+ let $show_binlog_events= $show_binlog_events in '$binary_log_file';
+}
+let $show_binlog_events= $show_binlog_events from $binlog_start;
+
+if ($binary_log_limit_row)
+{
+ let $limit= limit;
+ if ($binary_log_limit_offset)
+ {
+ let $limit= $limit $binary_log_limit_offset, ;
+ }
+
+ let $limit= $limit $binary_log_limit_row;
+ let $show_binlog_events= $show_binlog_events $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 $show_binlog_events
diff --git a/mysql-test/include/show_binlog_events2.inc b/mysql-test/include/show_binlog_events2.inc
index 5dd272c562d..0e1a889bacc 100644
--- a/mysql-test/include/show_binlog_events2.inc
+++ b/mysql-test/include/show_binlog_events2.inc
@@ -1,4 +1,4 @@
---let $binlog_start=106
+--let $binlog_start=107
--replace_result $binlog_start <binlog_start>
--replace_column 2 # 5 #
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
diff --git a/mysql-test/include/show_relaylog_events.inc b/mysql-test/include/show_relaylog_events.inc
new file mode 100644
index 00000000000..6f63b055d58
--- /dev/null
+++ b/mysql-test/include/show_relaylog_events.inc
@@ -0,0 +1,35 @@
+# $binlog_start can be set by caller or take a default value
+# $binary_log_file the name of the log file show
+# $binary_log_limit_row - sets the number of binlog rows to be returned
+# $binary_log_limit_offset - sets the offset where to start returning events
+
+let $show_binlog_events= show relaylog events;
+
+if (!$binlog_start)
+{
+ # defaults to chop the first event in the binary log
+ let $binlog_start=106;
+}
+
+if (!`SELECT '$binary_log_file' = ''`)
+{
+ let $show_binlog_events= $show_binlog_events in '$binary_log_file';
+}
+let $show_binlog_events= $show_binlog_events from $binlog_start;
+
+if ($binary_log_limit_row)
+{
+ let $limit= limit;
+ if ($binary_log_limit_offset)
+ {
+ let $limit= $limit $binary_log_limit_offset, ;
+ }
+
+ let $limit= $limit $binary_log_limit_row;
+ let $show_binlog_events= $show_binlog_events $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=#/ /Server ver:.*$/SERVER_VERSION, BINLOG_VERSION/
+--eval $show_binlog_events
diff --git a/mysql-test/include/show_slave_status2.inc b/mysql-test/include/show_slave_status2.inc
index 9c4e14c62c2..7e970b31d8e 100644
--- a/mysql-test/include/show_slave_status2.inc
+++ b/mysql-test/include/show_slave_status2.inc
@@ -3,6 +3,6 @@
# masked out log positions
---replace_result $MASTER_MYPORT MASTER_PORT
+--replace_result $MASTER_MYPORT MASTER_PORT $DEFAULT_MASTER_PORT 3306
--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 cbe63e26318..606bc63779d 100644
--- a/mysql-test/include/test_fieldsize.inc
+++ b/mysql-test/include/test_fieldsize.inc
@@ -22,7 +22,7 @@ eval $test_insert;
connection slave;
START SLAVE;
-wait_for_slave_to_stop;
+--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
diff --git a/mysql-test/include/wait_for_ndb_to_binlog.inc b/mysql-test/include/wait_for_ndb_to_binlog.inc
new file mode 100644
index 00000000000..77da6d62154
--- /dev/null
+++ b/mysql-test/include/wait_for_ndb_to_binlog.inc
@@ -0,0 +1,41 @@
+# ==== Purpose ====
+#
+# Several test primitives from mysql-test/extra/rpl_tests
+# shared for test cases for MyISAM, InnoDB, NDB and other
+# engines. But for NDB all events will be added by NDB
+# injector and now there are no way to detect the state of
+# NDB injector therefore this primitive waits 5 sec
+# if engine type is NDB.
+# In future that should be fixed by waiting of proper
+# state of NDB injector.
+#
+# ==== Usage ====
+#
+# let $engine_type= NDB;
+# --source include/wait_for_ndb_to_binlog.inc
+#
+# ==== Parameters =====
+#
+# $engine_type
+# Type of engine. If type is NDB then it waits $wait_time sec
+#
+# $wait_time
+# Test will wait $wait_time seconds
+
+let $_wait_time= 5;
+
+if (!$wait_time) {
+ let $_wait_time= $wait_time;
+}
+
+if (`SELECT UPPER(LEFT('$engine_type',3)) = 'NDB'`) {
+ while (!$_wait_time) {
+ let $_wait_time_internal= 10;
+ while (!$_wait_time_internal) {
+ sleep 0.1;
+ dec $_wait_time_internal;
+ }
+ dec $_wait_time;
+ }
+}
+
diff --git a/mysql-test/include/wait_for_slave_param.inc b/mysql-test/include/wait_for_slave_param.inc
index 82e57922913..1e690bdfe9c 100644
--- a/mysql-test/include/wait_for_slave_param.inc
+++ b/mysql-test/include/wait_for_slave_param.inc
@@ -49,6 +49,8 @@ if (!$_slave_timeout_counter)
{
let $_slave_timeout_counter= 3000;
}
+# Save resulting counter for later use.
+let $slave_tcnt= $_slave_timeout_counter;
let $_slave_param_comparison= $slave_param_comparison;
if (`SELECT '$_slave_param_comparison' = ''`)
@@ -70,7 +72,7 @@ while (`SELECT NOT('$_show_slave_status_value' $_slave_param_comparison '$slave_
# This has to be outside the loop until BUG#41913 has been fixed
if (!$_slave_timeout_counter)
{
- --echo **** ERROR: timeout after $slave_timeout seconds while waiting for slave parameter $slave_param $_slave_param_comparison $slave_param_value ****
+ --echo **** ERROR: timeout after $slave_tcnt deci-seconds while waiting for slave parameter $slave_param $_slave_param_comparison $slave_param_value ****
if (`SELECT '$slave_error_message' != ''`)
{
--echo Message: $slave_error_message
diff --git a/mysql-test/include/wait_show_condition.inc b/mysql-test/include/wait_show_condition.inc
index 253101d1e07..f683ca7b47b 100644
--- a/mysql-test/include/wait_show_condition.inc
+++ b/mysql-test/include/wait_show_condition.inc
@@ -2,13 +2,16 @@
#
# SUMMARY
#
-# Waits until the show statement ($show_statement) has at least within one of
-# the rows of the result set for the field ($field) a value which fulfils
+# Waits until the show statement ($show_statement) has one or all of the
+# rows of the result set for the field ($field) a value which fulfils
# a condition ($condition), or the operation times out.
#
#
# USAGE
#
+# All rows of the result must fulfil the condition if $all_rows_fulfil is 1
+# else at least one of the result must fulfil the condition.
+# let $wait_for_all= 1;
# let $show_statement= SHOW PROCESSLIST;
# let $field= State;
# let $condition= = 'Updating';
@@ -46,27 +49,56 @@ inc $max_run_time;
let $found= 0;
let $max_end_time= `SELECT UNIX_TIMESTAMP() + $max_run_time`;
-while (`SELECT UNIX_TIMESTAMP() <= $max_end_time AND $found = 0`)
+
+if (`SELECT '$wait_for_all' != '1'`)
{
- # Sleep a bit to avoid too heavy load.
- real_sleep 0.2;
- let $rowno= 1;
- let $process_result= 1;
- while (`SELECT $process_result = 1 AND $found = 0`)
- {
- let $field_value= query_get_value($show_statement, $field, $rowno);
- if (`SELECT '$field_value' $condition`)
- {
- let $found= 1;
- }
- if (`SELECT '$field_value' = 'No such row'`)
- {
- # We are behind the last row of the result set.
- let $process_result= 0;
- }
- inc $rowno;
- }
+ while (`SELECT UNIX_TIMESTAMP() <= $max_end_time AND $found = 0`)
+ {
+ # Sleep a bit to avoid too heavy load.
+ real_sleep 0.2;
+ let $rowno= 1;
+ let $process_result= 1;
+ while (`SELECT $process_result = 1 AND $found = 0`)
+ {
+ let $field_value= query_get_value($show_statement, $field, $rowno);
+ if (`SELECT '$field_value' $condition`)
+ {
+ let $found= 1;
+ }
+ if (`SELECT '$field_value' = 'No such row'`)
+ {
+ # We are behind the last row of the result set.
+ let $process_result= 0;
+ }
+ inc $rowno;
+ }
+ }
}
+
+if (`SELECT '$wait_for_all' = '1'`)
+{
+ while (`SELECT UNIX_TIMESTAMP() <= $max_end_time AND $found = 0`)
+ {
+ # Sleep a bit to avoid too heavy load.
+ real_sleep 0.2;
+ let $rowno= 1;
+ let $process_result= 1;
+ while (`SELECT $process_result = 1 AND $found = 0`)
+ {
+ let $field_value= query_get_value($show_statement, $field, $rowno);
+ if (`SELECT '$field_value' = 'No such row'`)
+ {
+ let $found= 1;
+ }
+ if (`SELECT $found = 0 AND NOT '$field_value' $condition`)
+ {
+ let process_result= 0;
+ }
+ inc $rowno;
+ }
+ }
+}
+
if (!$found)
{
echo # Timeout in include/wait_show_condition.inc for $wait_condition;
diff --git a/mysql-test/include/wait_until_disconnected.inc b/mysql-test/include/wait_until_disconnected.inc
index a4362e52d01..8a989becc18 100644
--- a/mysql-test/include/wait_until_disconnected.inc
+++ b/mysql-test/include/wait_until_disconnected.inc
@@ -7,7 +7,7 @@ let $counter= 500;
let $mysql_errno= 0;
while (!$mysql_errno)
{
- --error 0,1053,2002,2006,2013
+ --error 0,1040,1053,2002,2003,2006,2013
show status;
dec $counter;
diff --git a/mysql-test/lib/My/ConfigFactory.pm b/mysql-test/lib/My/ConfigFactory.pm
index c4d68e7127c..8431a88ef1e 100644
--- a/mysql-test/lib/My/ConfigFactory.pm
+++ b/mysql-test/lib/My/ConfigFactory.pm
@@ -40,7 +40,7 @@ sub fix_charset_dir {
sub fix_language {
my ($self, $config, $group_name, $group)= @_;
return my_find_dir($self->get_basedir($group),
- \@share_locations, "english");
+ \@share_locations);
}
sub fix_datadir {
@@ -142,8 +142,9 @@ sub fix_secure_file_priv {
sub fix_std_data {
my ($self, $config, $group_name, $group)= @_;
- my $basedir= $self->get_basedir($group);
- return "$basedir/mysql-test/std_data";
+ return my_find_dir($self->get_basedir($group),
+ ["share/mysql-test", "mysql-test"],
+ "std_data");
}
sub ssl_supported {
@@ -198,7 +199,7 @@ my @mysqld_rules=
{ 'basedir' => sub { return shift->{ARGS}->{basedir}; } },
{ 'tmpdir' => \&fix_tmpdir },
{ 'character-sets-dir' => \&fix_charset_dir },
- { 'language' => \&fix_language },
+ { 'lc-messages-dir' => \&fix_language },
{ 'datadir' => \&fix_datadir },
{ 'pid-file' => \&fix_pidfile },
{ '#host' => \&fix_host },
@@ -357,11 +358,14 @@ sub post_check_client_group {
if (IS_WINDOWS)
{
- # Shared memory base may or may not be defined (e.g not defined in embedded)
- my $shm = $group_to_copy_from->option("shared-memory-base-name");
- if (defined $shm)
+ if (! $self->{ARGS}->{embedded})
{
- $config->insert($client_group_name,"shared-memory-base-name", $shm->value());
+ # Shared memory base may or may not be defined (e.g not defined in embedded)
+ my $shm = $group_to_copy_from->option("shared-memory-base-name");
+ if (defined $shm)
+ {
+ $config->insert($client_group_name,"shared-memory-base-name", $shm->value());
+ }
}
}
}
diff --git a/mysql-test/lib/mtr_cases.pm b/mysql-test/lib/mtr_cases.pm
index ef3c2a43e87..8d02914c1e3 100644
--- a/mysql-test/lib/mtr_cases.pm
+++ b/mysql-test/lib/mtr_cases.pm
@@ -259,7 +259,8 @@ sub collect_one_suite($)
else
{
$suitedir= my_find_dir($::basedir,
- ["mysql-test/suite",
+ ["share/mysql-test/suite",
+ "mysql-test/suite",
"mysql-test",
# Look in storage engine specific suite dirs
"storage/*/mysql-test-suites"
@@ -496,70 +497,6 @@ sub collect_one_suite($)
}
}
- # ----------------------------------------------------------------------
- # Testing InnoDB plugin.
- # ----------------------------------------------------------------------
- if ($do_innodb_plugin)
- {
- my @new_cases;
- my $sep= (IS_WINDOWS) ? ';' : ':';
-
- foreach my $test (@cases)
- {
- next if (!$test->{'innodb_test'});
- # If skipped due to no builtin innodb, we can still run it with plugin
- next if ($test->{'skip'} && $test->{comment} ne "No innodb support");
- # Exceptions
- next if ($test->{'name'} eq 'main.innodb'); # Failed with wrong errno (fk)
- next if ($test->{'name'} eq 'main.index_merge_innodb'); # Explain diff
- # innodb_file_per_table is rw with innodb_plugin
- next if ($test->{'name'} eq 'sys_vars.innodb_file_per_table_basic');
- # innodb_lock_wait_timeout is rw with innodb_plugin
- next if ($test->{'name'} eq 'sys_vars.innodb_lock_wait_timeout_basic');
- # Diff around innodb_thread_concurrency variable
- next if ($test->{'name'} eq 'sys_vars.innodb_thread_concurrency_basic');
- # Can't work with InnoPlug. Test framework needs to be re-designed.
- next if ($test->{'name'} eq 'main.innodb_bug46000');
- # Fails with innodb plugin
- next if ($test->{'name'} eq 'main.innodb-autoinc');
- # Fails with innodb plugin: r6185 Testcases changes not included
- next if ($test->{'name'} eq 'main.innodb_bug44369');
- # Copy test options
- my $new_test= My::Test->new();
- while (my ($key, $value) = each(%$test))
- {
- if (ref $value eq "ARRAY")
- {
- push(@{$new_test->{$key}}, @$value);
- }
- else
- {
- $new_test->{$key}= $value unless ($key eq 'skip');
- }
- }
- my $plugin_filename= basename($lib_innodb_plugin);
- my $plugin_list= "innodb=$plugin_filename" . $sep . "innodb_locks=$plugin_filename";
- push(@{$new_test->{master_opt}}, '--ignore-builtin-innodb');
- push(@{$new_test->{master_opt}}, '--plugin-dir=' . dirname($lib_innodb_plugin));
- push(@{$new_test->{master_opt}}, "--plugin_load=$plugin_list");
- push(@{$new_test->{slave_opt}}, '--ignore-builtin-innodb');
- push(@{$new_test->{slave_opt}}, '--plugin-dir=' . dirname($lib_innodb_plugin));
- push(@{$new_test->{slave_opt}}, "--plugin_load=$plugin_list");
- if ($new_test->{combination})
- {
- $new_test->{combination}.= '+innodb_plugin';
- }
- else
- {
- $new_test->{combination}= 'innodb_plugin';
- }
- push(@new_cases, $new_test);
- }
- push(@cases, @new_cases);
- }
- # ----------------------------------------------------------------------
- # End of testing InnoDB plugin.
- # ----------------------------------------------------------------------
optimize_cases(\@cases);
#print_testcases(@cases);
diff --git a/mysql-test/lib/t/testMyConfigFactory.t b/mysql-test/lib/t/testMyConfigFactory.t
index 16fdd9db539..e3ab5d54b5b 100755
--- a/mysql-test/lib/t/testMyConfigFactory.t
+++ b/mysql-test/lib/t/testMyConfigFactory.t
@@ -67,11 +67,11 @@ is( $config->value('client', 'host'),
ok ( $config->value("mysqld.1", 'character-sets-dir') =~ /$basedir.*charsets$/,
"'character-sets-dir' generated");
-ok ( $config->value("mysqld.1", 'language') =~ /$basedir.*english$/,
- "'language' generated");
+ok ( $config->value("mysqld.1", 'lc-messages-dir') =~ /$basedir.*share$/,
+ "'lc-messages-dir' generated");
ok ( $config->value("ENV", 'MASTER_MY_PORT') =~ /\d/,
- "'language' generated");
+ "'lc-messages-dir' generated");
my $gen2_cnf= "$dir/gen2.cnf";
open(OUT, ">", $gen2_cnf) or die;
diff --git a/mysql-test/lib/v1/mysql-test-run.pl b/mysql-test/lib/v1/mysql-test-run.pl
index 86ad5c485c1..4202334a244 100755
--- a/mysql-test/lib/v1/mysql-test-run.pl
+++ b/mysql-test/lib/v1/mysql-test-run.pl
@@ -3911,7 +3911,7 @@ sub mysqld_arguments ($$$$) {
if ( $opt_valgrind_mysqld )
{
- mtr_add_arg($args, "%s--skip-safemalloc", $prefix);
+ mtr_add_arg($args, "%s--loose-skip-safemalloc", $prefix);
if ( $mysql_version_id < 50100 )
{
@@ -4024,15 +4024,26 @@ sub mysqld_arguments ($$$$) {
}
else
{
- if ($mysql_version_id < 50200)
- {
- mtr_add_arg($args, "%s--master-user=root", $prefix);
- mtr_add_arg($args, "%s--master-connect-retry=1", $prefix);
- mtr_add_arg($args, "%s--master-host=127.0.0.1", $prefix);
- mtr_add_arg($args, "%s--master-password=", $prefix);
- mtr_add_arg($args, "%s--master-port=%d", $prefix,
- $master->[0]->{'port'}); # First master
- }
+# NOTE: the backport (see BUG#48048) originally removed the
+# commented out lines below. However, given that they are
+# protected with a version check (< 50200) now, it should be
+# safe to keep them. The problem is that the backported patch
+# was into a 5.1 GA codebase - mysql-5.1-rep+2 tree - so
+# version is 501XX, consequently check becomes worthless. It
+# should be safe to uncomment them when merging up to 5.5.
+#
+# RQG semisync test runs on the 5.1 GA tree and needs MTR v1.
+# This was causing the test to fail (slave would not start
+# due to unrecognized option(s)).
+# if ($mysql_version_id < 50200)
+# {
+# mtr_add_arg($args, "%s--master-user=root", $prefix);
+# mtr_add_arg($args, "%s--master-connect-retry=1", $prefix);
+# mtr_add_arg($args, "%s--master-host=127.0.0.1", $prefix);
+# mtr_add_arg($args, "%s--master-password=", $prefix);
+# mtr_add_arg($args, "%s--master-port=%d", $prefix,
+# $master->[0]->{'port'}); # First master
+# }
my $slave_server_id= 2 + $idx;
my $slave_rpl_rank= $slave_server_id;
mtr_add_arg($args, "%s--server-id=%d", $prefix, $slave_server_id);
@@ -5197,7 +5208,6 @@ sub valgrind_arguments {
else
{
mtr_add_arg($args, "--tool=memcheck"); # From >= 2.1.2 needs this option
- mtr_add_arg($args, "--alignment=8");
mtr_add_arg($args, "--leak-check=yes");
mtr_add_arg($args, "--num-callers=16");
mtr_add_arg($args, "--suppressions=%s/valgrind.supp", $glob_mysql_test_dir)
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
index 4d8d178e092..02404af5eea 100755
--- a/mysql-test/mysql-test-run.pl
+++ b/mysql-test/mysql-test-run.pl
@@ -1,6 +1,21 @@
#!/usr/bin/perl
# -*- cperl -*-
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
#
##############################################################################
#
@@ -68,8 +83,8 @@ use My::File::Path; # Patched version of File::Path
use File::Basename;
use File::Copy;
use File::Find;
-use File::Temp qw / tempdir /;
-use File::Spec::Functions qw / splitdir /;
+use File::Temp qw/tempdir/;
+use File::Spec::Functions qw/splitdir/;
use My::Platform;
use My::SafeProcess;
use My::ConfigFactory;
@@ -118,6 +133,8 @@ END {
}
}
+sub env_or_val($$) { defined $ENV{$_[0]} ? $ENV{$_[0]} : $_[1] }
+
my $path_config_file; # The generated config file, var/my.cnf
# Visual Studio produces executables in different sub-directories based on the
@@ -126,7 +143,9 @@ 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,rpl_ndb,ndb,innodb";
+# If you add a new suite, please check TEST_DIRS in Makefile.am.
+#
+my $DEFAULT_SUITES= "main,sys_vars,binlog,federated,rpl,rpl_ndb,ndb,innodb,perfschema";
my $opt_suites;
our $opt_verbose= 0; # Verbose output, enable with --verbose
@@ -213,7 +232,7 @@ my $start_only;
my $opt_wait_all;
my $opt_repeat= 1;
my $opt_retry= 3;
-my $opt_retry_failure= 2;
+my $opt_retry_failure= env_or_val(MTR_RETRY_FAILURE => 2);
my $opt_strace_client;
@@ -242,9 +261,9 @@ our %mysqld_variables;
my $source_dist= 0;
-my $opt_max_save_core= $ENV{MTR_MAX_SAVE_CORE} || 5;
-my $opt_max_save_datadir= $ENV{MTR_MAX_SAVE_DATADIR} || 20;
-my $opt_max_test_fail= $ENV{MTR_MAX_TEST_FAIL} || 10;
+my $opt_max_save_core= env_or_val(MTR_MAX_SAVE_CORE => 5);
+my $opt_max_save_datadir= env_or_val(MTR_MAX_SAVE_DATADIR => 20);
+my $opt_max_test_fail= env_or_val(MTR_MAX_TEST_FAIL => 10);
my $opt_parallel= $ENV{MTR_PARALLEL} || 1;
@@ -783,11 +802,12 @@ sub set_vardir {
sub command_line_setup {
my $opt_comment;
my $opt_usage;
+ my $opt_list_options;
# Read the command line options
# Note: Keep list, and the order, in sync with usage at end of this file
Getopt::Long::Configure("pass_through");
- GetOptions(
+ my %options=(
# Control what engine/variation to run
'embedded-server' => \$opt_embedded_server,
'ps-protocol' => \$opt_ps_protocol,
@@ -820,7 +840,6 @@ sub command_line_setup {
'combination=s' => \@opt_combinations,
'skip-combinations' => \&collect_option,
'experimental=s' => \$opt_experimental,
- 'skip-im' => \&ignore_option,
# Specify ports
'build-thread|mtr-build-thread=i' => \$opt_build_thread,
@@ -906,9 +925,13 @@ sub command_line_setup {
'timediff' => \&report_option,
'help|h' => \$opt_usage,
- ) or usage("Can't read options");
+ 'list-options' => \$opt_list_options,
+ );
+
+ GetOptions(%options) or usage("Can't read options");
usage("") if $opt_usage;
+ list_options(\%options) if $opt_list_options;
# --------------------------------------------------------------------------
# Setup verbosity
@@ -961,12 +984,12 @@ sub command_line_setup {
}
# Look for language files and charsetsdir, use same share
- $path_language= mtr_path_exists("$basedir/share/mysql/english",
- "$basedir/sql/share/english",
- "$basedir/share/english");
+ $path_language= mtr_path_exists("$basedir/share/mysql",
+ "$basedir/sql/share",
+ "$basedir/share");
- my $path_share= dirname($path_language);
+ my $path_share= $path_language;
$path_charsetsdir= mtr_path_exists("$path_share/charsets");
if (using_extern())
@@ -1441,7 +1464,7 @@ sub collect_mysqld_features {
mtr_init_args(\$args);
mtr_add_arg($args, "--no-defaults");
mtr_add_arg($args, "--datadir=%s", mixed_path($tmpdir));
- mtr_add_arg($args, "--language=%s", $path_language);
+ mtr_add_arg($args, "--lc-messages-dir=%s", $path_language);
mtr_add_arg($args, "--skip-grant-tables");
mtr_add_arg($args, "--verbose");
mtr_add_arg($args, "--help");
@@ -1822,6 +1845,54 @@ sub environment_setup {
$ENV{'HA_EXAMPLE_SO'}="'".$plugin_filename."'";
$ENV{'EXAMPLE_PLUGIN_LOAD'}="--plugin_load=EXAMPLE=".$plugin_filename;
}
+ else
+ {
+ # Some ".opt" files use some of these variables, so they must be defined
+ $ENV{'EXAMPLE_PLUGIN'}= "";
+ $ENV{'EXAMPLE_PLUGIN_OPT'}= "";
+ $ENV{'HA_EXAMPLE_SO'}= "";
+ $ENV{'EXAMPLE_PLUGIN_LOAD'}= "";
+ }
+
+ # --------------------------------------------------------------------------
+ # Add the path where mysqld will find semisync plugins
+ # --------------------------------------------------------------------------
+ if (!$opt_embedded_server) {
+ my $semisync_master_filename;
+ my $semisync_slave_filename;
+ if (IS_WINDOWS)
+ {
+ $semisync_master_filename = "semisync_master.dll";
+ $semisync_slave_filename = "semisync_slave.dll";
+ }
+ else
+ {
+ $semisync_master_filename = "semisync_master.so";
+ $semisync_slave_filename = "semisync_slave.so";
+ }
+ my $lib_semisync_master_plugin=
+ mtr_file_exists(vs_config_dirs('plugin/semisync',$semisync_master_filename),
+ "$basedir/plugin/semisync/.libs/" . $semisync_master_filename,
+ "$basedir/lib/mysql/plugin/" . $semisync_master_filename,
+ "$basedir/lib/plugin/" . $semisync_master_filename);
+ my $lib_semisync_slave_plugin=
+ mtr_file_exists(vs_config_dirs('plugin/semisync',$semisync_slave_filename),
+ "$basedir/plugin/semisync/.libs/" . $semisync_slave_filename,
+ "$basedir/lib/mysql/plugin/" . $semisync_slave_filename,
+ "$basedir/lib/plugin/" . $semisync_slave_filename);
+ if ($lib_semisync_master_plugin && $lib_semisync_slave_plugin)
+ {
+ $ENV{'SEMISYNC_MASTER_PLUGIN'}= basename($lib_semisync_master_plugin);
+ $ENV{'SEMISYNC_SLAVE_PLUGIN'}= basename($lib_semisync_slave_plugin);
+ $ENV{'SEMISYNC_PLUGIN_OPT'}= "--plugin-dir=".dirname($lib_semisync_master_plugin);
+ }
+ else
+ {
+ $ENV{'SEMISYNC_MASTER_PLUGIN'}= "";
+ $ENV{'SEMISYNC_SLAVE_PLUGIN'}= "";
+ $ENV{'SEMISYNC_PLUGIN_OPT'}="--plugin-dir=";
+ }
+ }
# ----------------------------------------------------
# Add the path where mysqld will find mypluglib.so
@@ -1878,7 +1949,6 @@ sub environment_setup {
split(':', $ENV{'LIBPATH'}) : ());
mtr_debug("LIBPATH: $ENV{'LIBPATH'}");
- $ENV{'CHARSETSDIR'}= $path_charsetsdir;
$ENV{'UMASK'}= "0660"; # The octal *string*
$ENV{'UMASK_DIR'}= "0770"; # The octal *string*
@@ -1896,9 +1966,11 @@ sub environment_setup {
$ENV{'LC_COLLATE'}= "C";
$ENV{'USE_RUNNING_SERVER'}= using_extern();
$ENV{'MYSQL_TEST_DIR'}= $glob_mysql_test_dir;
- $ENV{'DEFAULT_MASTER_PORT'}= $mysqld_variables{'master-port'} || 3306;
+ $ENV{'DEFAULT_MASTER_PORT'}= $mysqld_variables{'port'};
$ENV{'MYSQL_TMP_DIR'}= $opt_tmpdir;
$ENV{'MYSQLTEST_VARDIR'}= $opt_vardir;
+ $ENV{'MYSQL_LIBDIR'}= "$basedir/lib";
+ $ENV{'MYSQL_SHAREDIR'}= $path_language;
# ----------------------------------------------------
# Setup env for NDB
@@ -2701,7 +2773,7 @@ sub mysql_install_db {
my $install_datadir= $datadir || $mysqld->value('datadir');
my $install_basedir= $mysqld->value('basedir');
- my $install_lang= $mysqld->value('language');
+ my $install_lang= $mysqld->value('lc-messages-dir');
my $install_chsdir= $mysqld->value('character-sets-dir');
mtr_report("Installing system database...");
@@ -2712,7 +2784,7 @@ sub mysql_install_db {
mtr_add_arg($args, "--bootstrap");
mtr_add_arg($args, "--basedir=%s", $install_basedir);
mtr_add_arg($args, "--datadir=%s", $install_datadir);
- mtr_add_arg($args, "--loose-skip-innodb");
+ mtr_add_arg($args, "--loose-innodb=OFF");
mtr_add_arg($args, "--loose-skip-falcon");
mtr_add_arg($args, "--loose-skip-ndbcluster");
mtr_add_arg($args, "--tmpdir=%s", "$opt_vardir/tmp/");
@@ -2724,7 +2796,7 @@ sub mysql_install_db {
$path_vardir_trace);
}
- mtr_add_arg($args, "--language=%s", $install_lang);
+ mtr_add_arg($args, "--lc-messages-dir=%s", $install_lang);
mtr_add_arg($args, "--character-sets-dir=%s", $install_chsdir);
# If DISABLE_GRANT_OPTIONS is defined when the server is compiled (e.g.,
@@ -3737,7 +3809,7 @@ sub start_check_warnings ($$) {
mtr_add_arg($args, "--defaults-file=%s", $path_config_file);
mtr_add_arg($args, "--defaults-group-suffix=%s", $mysqld->after('mysqld'));
- mtr_add_arg($args, "--skip-safemalloc");
+ mtr_add_arg($args, "--loose-skip-safemalloc");
mtr_add_arg($args, "--test-file=%s", "include/check-warnings.test");
mtr_add_arg($args, "--verbose");
@@ -4161,7 +4233,7 @@ sub mysqld_arguments ($$$) {
if ( $opt_valgrind_mysqld )
{
- mtr_add_arg($args, "--skip-safemalloc");
+ mtr_add_arg($args, "--loose-skip-safemalloc");
if ( $mysql_version_id < 50100 )
{
@@ -4946,7 +5018,7 @@ sub gdb_arguments {
my $type= shift;
# Write $args to gdb init file
- my $str= join(" ", @$$args);
+ my $str= join " ", map { s/"/\\"/g; "\"$_\""; } @$$args;
my $gdb_init_file= "$opt_vardir/tmp/gdbinit.$type";
# Remove the old gdbinit file
@@ -5010,7 +5082,7 @@ sub ddd_arguments {
my $type= shift;
# Write $args to ddd init file
- my $str= join(" ", @$$args);
+ my $str= join " ", map { s/"/\\"/g; "\"$_\""; } @$$args;
my $gdb_init_file= "$opt_vardir/tmp/gdbinit.$type";
# Remove the old gdbinit file
@@ -5075,8 +5147,8 @@ sub debugger_arguments {
# vc[express] /debugexe exe arg1 .. argn
# Add /debugexe and name of the exe before args
- unshift(@$$args, "/debugexe");
unshift(@$$args, "$$exe");
+ unshift(@$$args, "/debugexe");
# Set exe to debuggername
$$exe= $debugger;
@@ -5345,3 +5417,15 @@ HERE
}
+sub list_options ($) {
+ my $hash= shift;
+
+ for (keys %$hash) {
+ s/([:=].*|[+!])$//;
+ s/\|/\n--/g;
+ print "--$_\n" unless /list-options/;
+ }
+
+ exit(1);
+}
+
diff --git a/mysql-test/r/1st.result b/mysql-test/r/1st.result
index 4a82f8c66e9..ae9989ce563 100644
--- a/mysql-test/r/1st.result
+++ b/mysql-test/r/1st.result
@@ -3,6 +3,7 @@ Database
information_schema
mtr
mysql
+performance_schema
test
show tables in mysql;
Tables_in_mysql
diff --git a/mysql-test/r/alias.result b/mysql-test/r/alias.result
index 6f0315da234..3190e8994e5 100644
--- a/mysql-test/r/alias.result
+++ b/mysql-test/r/alias.result
@@ -73,3 +73,142 @@ UPDATE t1 SET t1.xstatus_vor = Greatest(t1.xstatus_vor,1) WHERE t1.aufnr =
"40004712" AND t1.plnfl = "000001" AND t1.vornr > "0010" ORDER BY t1.vornr
ASC LIMIT 1;
drop table t1;
+drop table if exists t1,t2,t3;
+create table t1 (a int, b int, c int);
+create table t2 (d int);
+create table t3 (a1 int, b1 int, c1 int);
+insert into t1 values(1,2,3);
+insert into t1 values(11,22,33);
+insert into t2 values(99);
+select t1.* as 'with_alias' 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 'as 'with_alias' from t1' at line 1
+select t2.* as 'with_alias' from t2;
+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 'as 'with_alias' from t2' at line 1
+select t1.*, t1.* as 'with_alias' 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 'as 'with_alias' from t1' at line 1
+select t1.* as 'with_alias', t1.* 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 'as 'with_alias', t1.* from t1' at line 1
+select t1.* as 'with_alias', t1.* as 'alias2' 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 'as 'with_alias', t1.* as 'alias2' from t1' at line 1
+select t1.* as 'with_alias', a, t1.* as 'alias2' 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 'as 'with_alias', a, t1.* as 'alias2' from t1' at line 1
+select a, t1.* as 'with_alias' 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 'as 'with_alias' from t1' at line 1
+select t1.* as 'with_alias', a 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 'as 'with_alias', a from t1' at line 1
+select a, t1.* as 'with_alias', b 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 'as 'with_alias', b from t1' at line 1
+select (select d from t2 where d > a), t1.* as 'with_alias' 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 'as 'with_alias' from t1' at line 1
+select t1.* as 'with_alias', (select a from t2 where d > a) 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 'as 'with_alias', (select a from t2 where d > a) from t1' at line 1
+select a as 'x', t1.* as 'with_alias' 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 'as 'with_alias' from t1' at line 1
+select t1.* as 'with_alias', a as 'x' 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 'as 'with_alias', a as 'x' from t1' at line 1
+select a as 'x', t1.* as 'with_alias', b as 'x' 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 'as 'with_alias', b as 'x' from t1' at line 1
+select (select d from t2 where d > a) as 'x', t1.* as 'with_alias' 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 'as 'with_alias' from t1' at line 1
+select t1.* as 'with_alias', (select a from t2 where d > a) as 'x' 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 'as 'with_alias', (select a from t2 where d > a) as 'x' from t1' at line 1
+select (select t2.* as 'x' from t2) 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 'as 'x' from t2) from t1' at line 1
+select a, (select t2.* as 'x' from t2) 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 'as 'x' from t2) from t1' at line 1
+select t1.*, (select t2.* as 'x' from t2) 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 'as 'x' from t2) from t1' at line 1
+insert into t3 select t1.* as 'with_alias' 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 'as 'with_alias' from t1' at line 1
+insert into t3 select t2.* as 'with_alias', 1, 2 from t2;
+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 'as 'with_alias', 1, 2 from t2' at line 1
+insert into t3 select t2.* as 'with_alias', d as 'x', d as 'z' from t2;
+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 'as 'with_alias', d as 'x', d as 'z' from t2' at line 1
+insert into t3 select t2.*, t2.* as 'with_alias', 3 from t2;
+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 'as 'with_alias', 3 from t2' at line 1
+create table t3 select t1.* as 'with_alias' 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 'as 'with_alias' from t1' at line 1
+create table t3 select t2.* as 'with_alias', 1, 2 from t2;
+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 'as 'with_alias', 1, 2 from t2' at line 1
+create table t3 select t2.* as 'with_alias', d as 'x', d as 'z' from t2;
+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 'as 'with_alias', d as 'x', d as 'z' from t2' at line 1
+create table t3 select t2.*, t2.* as 'with_alias', 3 from t2;
+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 'as 'with_alias', 3 from t2' at line 1
+select t1.* from t1;
+a b c
+1 2 3
+11 22 33
+select t2.* from t2;
+d
+99
+select t1.*, t1.* from t1;
+a b c a b c
+1 2 3 1 2 3
+11 22 33 11 22 33
+select t1.*, a, t1.* from t1;
+a b c a a b c
+1 2 3 1 1 2 3
+11 22 33 11 11 22 33
+select a, t1.* from t1;
+a a b c
+1 1 2 3
+11 11 22 33
+select t1.*, a from t1;
+a b c a
+1 2 3 1
+11 22 33 11
+select a, t1.*, b from t1;
+a a b c b
+1 1 2 3 2
+11 11 22 33 22
+select (select d from t2 where d > a), t1.* from t1;
+(select d from t2 where d > a) a b c
+99 1 2 3
+99 11 22 33
+select t1.*, (select a from t2 where d > a) from t1;
+a b c (select a from t2 where d > a)
+1 2 3 1
+11 22 33 11
+select a as 'x', t1.* from t1;
+x a b c
+1 1 2 3
+11 11 22 33
+select t1.*, a as 'x' from t1;
+a b c x
+1 2 3 1
+11 22 33 11
+select a as 'x', t1.*, b as 'x' from t1;
+x a b c x
+1 1 2 3 2
+11 11 22 33 22
+select (select d from t2 where d > a) as 'x', t1.* from t1;
+x a b c
+99 1 2 3
+99 11 22 33
+select t1.*, (select a from t2 where d > a) as 'x' from t1;
+a b c x
+1 2 3 1
+11 22 33 11
+select (select t2.* from t2) from t1;
+(select t2.* from t2)
+99
+99
+select a, (select t2.* from t2) from t1;
+a (select t2.* from t2)
+1 99
+11 99
+select t1.*, (select t2.* from t2) from t1;
+a b c (select t2.* from t2)
+1 2 3 99
+11 22 33 99
+insert into t3 select t1.* from t1;
+insert into t3 select t2.*, 1, 2 from t2;
+insert into t3 select t2.*, d as 'x', d as 'z' from t2;
+insert into t3 select t2.*, t2.*, 3 from t2;
+create table t4 select t1.* from t1;
+drop table t4;
+create table t4 select t2.*, 1, 2 from t2;
+drop table t4;
+create table t4 select t2.*, d as 'x', d as 'z' from t2;
+drop table t4;
+drop table t1,t2,t3;
diff --git a/mysql-test/r/alter_table.result b/mysql-test/r/alter_table.result
index 004e2031fb1..db80e9d2eea 100644
--- a/mysql-test/r/alter_table.result
+++ b/mysql-test/r/alter_table.result
@@ -1346,3 +1346,11 @@ CREATE TABLE t1 (a TEXT, id INT, b INT);
ALTER TABLE t1 DROP COLUMN a, ADD COLUMN c TEXT FIRST;
DROP TABLE t1;
End of 5.1 tests
+CREATE TABLE t1(c CHAR(10),
+i INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY);
+INSERT INTO t1 VALUES('a',2),('b',4),('c',6);
+ALTER TABLE t1
+DROP i,
+ADD i INT UNSIGNED NOT NULL AUTO_INCREMENT,
+AUTO_INCREMENT = 1;
+DROP TABLE t1;
diff --git a/mysql-test/r/archive.result b/mysql-test/r/archive.result
index c620eb97cab..aaab9d27edb 100644
--- a/mysql-test/r/archive.result
+++ b/mysql-test/r/archive.result
@@ -1,3 +1,4 @@
+CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
DROP TABLE if exists t1,t2,t3,t4,t5,t6;
SET storage_engine=ARCHIVE;
CREATE TABLE t1 (
@@ -12707,7 +12708,7 @@ DATA_LENGTH AVG_ROW_LENGTH
8700 4350
DROP TABLE t1;
SET @save_join_buffer_size= @@join_buffer_size;
-SET @@join_buffer_size= 8228;
+SET @@join_buffer_size= 8192;
CREATE TABLE t1(a CHAR(255)) ENGINE=archive;
INSERT INTO t1 VALUES('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),
('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),
@@ -12717,6 +12718,16 @@ COUNT(t1.a)
729
DROP TABLE t1;
SET @@join_buffer_size= @save_join_buffer_size;
+End of 5.1 tests
+CREATE TABLE t1(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(128) NOT NULL, PRIMARY KEY(id)) ENGINE=archive;
+INSERT INTO t1 VALUES(NULL,'a'),(NULL,'a');
+CREATE TABLE t2(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(128) NOT NULL, PRIMARY KEY(id)) ENGINE=archive;
+INSERT INTO t2 VALUES(NULL,'b'),(NULL,'b');
+SELECT t1.id, t2.id, t1.name, t2.name FROM t1,t2 WHERE t1.id = t2.id;
+id id name name
+1 1 a b
+2 2 a b
+DROP TABLE t1,t2;
SHOW CREATE TABLE t1;
ERROR HY000: Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
SELECT * FROM t1;
diff --git a/mysql-test/r/archive_gis.result b/mysql-test/r/archive_gis.result
index 178c5716911..ad7bd374629 100644
--- a/mysql-test/r/archive_gis.result
+++ b/mysql-test/r/archive_gis.result
@@ -266,7 +266,7 @@ fid AsText(EndPoint(g))
107 POINT(40 10)
SELECT fid, GLength(g) FROM gis_line ORDER by fid;
fid GLength(g)
-105 24.142135623731
+105 24.14213562373095
106 40
107 30
SELECT fid, NumPoints(g) FROM gis_line ORDER by fid;
@@ -292,7 +292,7 @@ Note 1003 select astext(startpoint(`test`.`gis_line`.`g`)) AS `AsText(StartPoint
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)
+109 POINT(25.416666666666668 25.416666666666668)
110 POINT(20 10)
SELECT fid, Area(g) FROM gis_polygon ORDER by fid;
fid Area(g)
@@ -326,8 +326,8 @@ fid IsClosed(g)
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)
+117 POINT(55.58852775304245 17.426536064113982)
+118 POINT(55.58852775304245 17.426536064113982)
119 POINT(2 2)
SELECT fid, Area(g) FROM gis_multi_polygon ORDER by fid;
fid Area(g)
diff --git a/mysql-test/r/bench_count_distinct.result b/mysql-test/r/bench_count_distinct.result
index 79e12afd237..8b67e4be38a 100644
--- a/mysql-test/r/bench_count_distinct.result
+++ b/mysql-test/r/bench_count_distinct.result
@@ -5,7 +5,7 @@ count(distinct n)
100
explain extended select count(distinct n) from t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 index NULL n 4 NULL 200 100.00 Using index
+1 SIMPLE t1 range NULL n 4 NULL 10 100.00 Using index for group-by
Warnings:
Note 1003 select count(distinct `test`.`t1`.`n`) AS `count(distinct n)` from `test`.`t1`
drop table t1;
diff --git a/mysql-test/r/bigint.result b/mysql-test/r/bigint.result
index 4a5b8fcf4aa..6b0954655e9 100644
--- a/mysql-test/r/bigint.result
+++ b/mysql-test/r/bigint.result
@@ -362,12 +362,12 @@ select cast(19999999999999999999 as signed);
cast(19999999999999999999 as signed)
9223372036854775807
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select cast(-19999999999999999999 as signed);
cast(-19999999999999999999 as signed)
-9223372036854775808
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select -9223372036854775808;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def -9223372036854775808 8 20 20 N 32897 0 63
@@ -385,7 +385,7 @@ def -((9223372036854775808)) 8 20 20 N 32897 0 63
-9223372036854775808
select -(-(9223372036854775808));
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def -(-(9223372036854775808)) 246 21 19 N 129 0 63
+def -(-(9223372036854775808)) 246 21 19 N 32897 0 63
-(-(9223372036854775808))
9223372036854775808
select --9223372036854775808, ---9223372036854775808, ----9223372036854775808;
diff --git a/mysql-test/r/bug46080.result b/mysql-test/r/bug46080.result
index 2173768cdad..f1abcde7766 100644
--- a/mysql-test/r/bug46080.result
+++ b/mysql-test/r/bug46080.result
@@ -8,6 +8,8 @@ CREATE TABLE t1(a CHAR(255));
INSERT INTO t1 VALUES ('a');
SET @@SESSION.sort_buffer_size=5*16*1000000;
SET @@SESSION.max_heap_table_size=5*1000000;
+Warnings:
+Warning 1292 Truncated incorrect max_heap_table_size value: '5000000'
# Must not crash.
SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a;
DROP TABLE t1;
diff --git a/mysql-test/r/cache_innodb.result b/mysql-test/r/cache_innodb.result
index b59298727c5..600ed84c3c9 100644
--- a/mysql-test/r/cache_innodb.result
+++ b/mysql-test/r/cache_innodb.result
@@ -134,7 +134,7 @@ connection default
SHOW VARIABLES LIKE 'have_query_cache';
Variable_name Value
have_query_cache YES
-SET GLOBAL query_cache_size = 200000;
+SET GLOBAL query_cache_size = 204800;
flush status;
SET @@autocommit=1;
SET SESSION STORAGE_ENGINE = InnoDB;
diff --git a/mysql-test/r/cast.result b/mysql-test/r/cast.result
index dd61396e485..3e1ea824db5 100644
--- a/mysql-test/r/cast.result
+++ b/mysql-test/r/cast.result
@@ -342,11 +342,11 @@ INSERT INTO t1 SET f1 = -1.0e+30 ;
INSERT INTO t1 SET f1 = +1.0e+30 ;
SELECT f1 AS double_val, CAST(f1 AS SIGNED INT) AS cast_val FROM t1;
double_val cast_val
--1e+30 -9223372036854775808
-1e+30 9223372036854775807
+-1e30 -9223372036854775808
+1e30 9223372036854775807
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1e+30'
-Warning 1292 Truncated incorrect INTEGER value: '1e+30'
+Warning 1292 Truncated incorrect INTEGER value: '-1e30'
+Warning 1292 Truncated incorrect INTEGER value: '1e30'
DROP TABLE t1;
select isnull(date(NULL)), isnull(cast(NULL as DATE));
isnull(date(NULL)) isnull(cast(NULL as DATE))
@@ -363,7 +363,7 @@ cast('1.2' as decimal(3,2))
1.20
select 1e18 * cast('1.2' as decimal(3,2));
1e18 * cast('1.2' as decimal(3,2))
-1.2e+18
+1.2e18
select cast(cast('1.2' as decimal(3,2)) as signed);
cast(cast('1.2' as decimal(3,2)) as signed)
1
@@ -380,7 +380,7 @@ select cast(s1 as decimal(7,2)) from t1;
cast(s1 as decimal(7,2))
99999.99
Warnings:
-Error 1264 Out of range value for column 'cast(s1 as decimal(7,2))' at row 1
+Warning 1264 Out of range value for column 'cast(s1 as decimal(7,2))' at row 1
drop table t1;
CREATE TABLE t1 (v varchar(10), tt tinytext, t text,
mt mediumtext, lt longtext);
diff --git a/mysql-test/r/change_user.result b/mysql-test/r/change_user.result
index f8d5d900a80..1ed7fcbb8fa 100644
--- a/mysql-test/r/change_user.result
+++ b/mysql-test/r/change_user.result
@@ -18,7 +18,7 @@ change_user
SELECT @@session.sql_big_selects;
@@session.sql_big_selects
0
-SET @@global.max_join_size = -1;
+SET @@global.max_join_size = 18446744073709551615;
SET @@session.max_join_size = default;
change_user
SELECT @@session.sql_big_selects;
diff --git a/mysql-test/r/commit_1innodb.result b/mysql-test/r/commit_1innodb.result
index 51c4ac3002c..cf8c0e085c9 100644
--- a/mysql-test/r/commit_1innodb.result
+++ b/mysql-test/r/commit_1innodb.result
@@ -1,3 +1,4 @@
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
set sql_mode=no_engine_substitution;
set storage_engine = InnoDB;
set autocommit=1;
@@ -578,11 +579,11 @@ SUCCESS
select f1();
f1()
2
-call p_verify_status_increment(0, 0, 1, 0);
+call p_verify_status_increment(1, 0, 1, 0);
SUCCESS
commit;
-call p_verify_status_increment(0, 0, 1, 0);
+call p_verify_status_increment(1, 0, 1, 0);
SUCCESS
# 17. Read-only statement, a function changes non-trans-table.
@@ -595,11 +596,11 @@ select f1() from t1;
f1()
2
2
-call p_verify_status_increment(1, 0, 2, 0);
+call p_verify_status_increment(2, 0, 2, 0);
SUCCESS
commit;
-call p_verify_status_increment(1, 0, 2, 0);
+call p_verify_status_increment(2, 0, 2, 0);
SUCCESS
# 18. Read-write statement: UPDATE, change 0 (transactional) rows.
@@ -627,7 +628,7 @@ SUCCESS
drop table t2;
set sql_mode=no_engine_substitution;
create temporary table t2 (a int);
-call p_verify_status_increment(0, 0, 0, 0);
+call p_verify_status_increment(1, 0, 0, 0);
SUCCESS
set sql_mode=default;
@@ -708,11 +709,11 @@ SUCCESS
# 25. DDL: DROP TEMPORARY TABLE, does not start a transaction
#
drop temporary table t2;
-call p_verify_status_increment(0, 0, 0, 0);
+call p_verify_status_increment(1, 0, 0, 0);
SUCCESS
commit;
-call p_verify_status_increment(0, 0, 0, 0);
+call p_verify_status_increment(1, 0, 0, 0);
SUCCESS
# 26. Verify that SET AUTOCOMMIT issues an implicit commit
@@ -829,11 +830,11 @@ create table if not exists t2 (a int) select 6 union select 7;
Warnings:
Note 1050 Table 't2' already exists
# Sic: first commits the statement, and then the transaction.
-call p_verify_status_increment(4, 4, 4, 4);
+call p_verify_status_increment(2, 0, 4, 4);
SUCCESS
create table t3 select a from t2;
-call p_verify_status_increment(4, 4, 4, 4);
+call p_verify_status_increment(2, 0, 4, 4);
SUCCESS
alter table t3 add column (b int);
@@ -841,15 +842,15 @@ 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;
-call p_verify_status_increment(4, 4, 4, 4);
+call p_verify_status_increment(2, 0, 2, 0);
SUCCESS
create view v1 as select * from t2;
diff --git a/mysql-test/r/compare.result b/mysql-test/r/compare.result
index f9563b89b76..d931879ce23 100644
--- a/mysql-test/r/compare.result
+++ b/mysql-test/r/compare.result
@@ -47,11 +47,11 @@ insert into t1 values (0x01,0x01);
select * from t1 where a=b;
a b
Warnings:
-Warning 1292 Truncated incorrect DOUBLE value: ''
+Warning 1292 Truncated incorrect DOUBLE value: '\x01'
select * from t1 where a=b and b=0x01;
a b
Warnings:
-Warning 1292 Truncated incorrect DOUBLE value: ''
+Warning 1292 Truncated incorrect DOUBLE value: '\x01'
drop table if exists t1;
CREATE TABLE t1 (b int(2) zerofill, c int(2) zerofill);
INSERT INTO t1 (b,c) VALUES (1,2), (1,1), (2,2);
diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result
index cfdf2565c9c..55e8e15b6a9 100644
--- a/mysql-test/r/create.result
+++ b/mysql-test/r/create.result
@@ -228,7 +228,7 @@ t1 CREATE TABLE `t1` (
) ENGINE=MEMORY DEFAULT CHARSET=latin1
drop table t1;
SET SESSION storage_engine="gemini";
-ERROR 42000: Unknown table engine 'gemini'
+ERROR 42000: Unknown storage engine 'gemini'
SELECT @@storage_engine;
@@storage_engine
MEMORY
@@ -389,7 +389,7 @@ t1 CREATE TABLE `t1` (
) ENGINE=MEMORY DEFAULT CHARSET=latin1
drop table t1;
SET SESSION storage_engine="gemini";
-ERROR 42000: Unknown table engine 'gemini'
+ERROR 42000: Unknown storage engine 'gemini'
SELECT @@storage_engine;
@@storage_engine
MEMORY
@@ -1919,3 +1919,37 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp
# -- End of Bug#45829
End of 5.1 tests
+
+# --
+# -- Bug #43054 Assertion `!table->auto_increment_field_not_null'
+# -- failed when redefining trigger
+
+CREATE TABLE B (
+pk INTEGER AUTO_INCREMENT,
+int_key INTEGER NOT NULL,
+PRIMARY KEY (pk),
+KEY (int_key)
+);
+INSERT IGNORE INTO B VALUES ('9', '9');
+CREATE TABLE IF NOT EXISTS t1 (
+`pk` INTEGER NOT NULL AUTO_INCREMENT ,
+`int` INTEGER ,
+PRIMARY KEY ( `pk` )
+) SELECT `pk` , `int_key` FROM B ;
+CREATE TRIGGER f BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+INSERT INTO t1 ( `int` ) VALUES (4 ),( 8 ),( 2 ) ;
+END ; |
+CREATE TABLE IF NOT EXISTS t1 (
+`pk` INTEGER NOT NULL AUTO_INCREMENT ,
+`int` INTEGER ,
+PRIMARY KEY ( `pk` )
+) SELECT `pk` , `int_key` FROM B ;
+ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
+CREATE TRIGGER f BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+UPDATE A SET `pk`=1 WHERE `pk`=0 ;
+END ;|
+ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
+DROP TABLE t1;
+DROP TABLE B;
diff --git a/mysql-test/r/csv.result b/mysql-test/r/csv.result
index 4b96f5a5ed0..97996b484bb 100644
--- a/mysql-test/r/csv.result
+++ b/mysql-test/r/csv.result
@@ -5407,4 +5407,60 @@ test.t1 repair status OK
select * from t1 limit 1;
a
drop table t1;
+#
+# Test for the following cases
+# 1) integers and strings enclosed in quotes
+# 2) integers and strings not enclosed in quotes
+# 3) \X characters with quotes
+# 4) \X characters outside quotes
+#
+CREATE TABLE t1(c1 INT NOT NULL, c2 VARCHAR(50) NOT NULL) ENGINE=csv;
+# remove the already existing .CSV file if any
+# create the .CSV file that contains the hard-coded data used in
+# testing
+1,"integer sans quotes"
+1,string sans quotes
+1,quotes"in between" strings
+"1",Integer with quote and string with no quote
+1,"escape sequence \n \" \\ \r \a within quotes"
+1,escape sequence \n \" \\ \r \a without quotes
+# select from the table in which the data has been filled in using
+# the hard-coded .CSV file
+SELECT * FROM t1;
+c1 c2
+1 integer sans quotes
+1 string sans quotes
+1 quotes"in between" strings
+1 Integer with quote and string with no quote
+1 escape sequence
+ " \ \a within quotes
+1 escape sequence
+ " \ \a without quotes
+DROP TABLE t1;
+# Test for the case when a field begins with a quote, but does not end in a
+# quote.
+# Note: This results in an error.
+CREATE TABLE t1(c1 INT NOT NULL, c2 VARCHAR(50) NOT NULL) ENGINE=csv;
+# remove the already existing .CSV file if any
+# create the .CSV file that contains the hard-coded data used in
+# testing
+1,"string only at the beginning quotes
+# select from the table in which the data has been filled in using
+# the hard-coded .CSV file
+SELECT * FROM t1;
+ERROR HY000: Table 't1' is marked as crashed and should be repaired
+DROP TABLE t1;
+# Test for the case when a field ends with a quote, but does not begin in a
+# quote.
+# Note: This results in an error.
+CREATE TABLE t1(c1 INT NOT NULL, c2 VARCHAR(50) NOT NULL) ENGINE=csv;
+# remove the already existing .CSV file if any
+# create the .CSV file that contains the hard-coded data used in
+# testing
+1,string with only ending quotes"
+# select from the table in which the data has been filled in using
+# the hard-coded .CSV file
+SELECT * FROM t1;
+ERROR HY000: Table 't1' is marked as crashed and should be repaired
+DROP TABLE t1;
End of 5.1 tests
diff --git a/mysql-test/r/ctype_big5.result b/mysql-test/r/ctype_big5.result
index 2efcf549608..d81534ac84e 100644
--- a/mysql-test/r/ctype_big5.result
+++ b/mysql-test/r/ctype_big5.result
@@ -277,3 +277,281 @@ hex(a)
EE00
drop table t1;
End of 5.0 tests
+#
+# Start of 5.5 tests
+#
+#
+# Testing WL#4583 Case conversion in Asian character sets
+#
+SET NAMES utf8;
+SET collation_connection=big5_chinese_ci;
+CREATE TABLE t1 (b VARCHAR(2));
+INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
+INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
+CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
+CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
+DROP TABLE t1;
+CREATE TABLE t1 AS
+SELECT concat(head, tail) AS code, ' ' AS a
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF')
+ORDER BY head, tail;
+DROP TEMPORARY TABLE head, tail;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `code` varchar(8) DEFAULT NULL,
+ `a` varchar(1) CHARACTER SET big5 NOT NULL DEFAULT ''
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+28672
+UPDATE t1 SET a=unhex(code) ORDER BY code;
+Warnings:
+Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
+Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
+Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
+Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
+Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
+Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
+Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
+Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
+Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
+Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
+Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
+Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
+Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
+Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
+Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
+Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
+Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
+Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
+Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
+Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
+Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
+Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
+Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
+Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
+Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
+Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
+Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
+Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
+Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
+Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
+Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
+Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
+Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
+Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
+Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
+Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
+Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
+Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
+Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
+Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
+Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
+Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
+Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
+Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
+Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
+Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
+Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
+Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
+Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
+Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
+Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
+Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
+Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
+Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
+Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
+Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
+Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
+Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
+Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
+Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
+Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
+Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
+Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
+Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
+SELECT COUNT(*) FROM t1 WHERE a<>'';
+COUNT(*)
+13973
+SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a));
+code hex(upper(a)) hex(lower(a)) a upper(a) lower(a)
+A2CF A2CF A2E9 A A ï½
+A2D0 A2D0 A2EA B B b
+A2D1 A2D1 A2EB C C c
+A2D2 A2D2 A2EC D D d
+A2D3 A2D3 A2ED ï¼¥ ï¼¥ ï½…
+A2D4 A2D4 A2EE F F f
+A2D5 A2D5 A2EF G G g
+A2D6 A2D6 A2F0 H H h
+A2D7 A2D7 A2F1 I I i
+A2D8 A2D8 A2F2 J J j
+A2D9 A2D9 A2F3 K K k
+A2DA A2DA A2F4 L L l
+A2DB A2DB A2F5 ï¼­ ï¼­ ï½
+A2DC A2DC A2F6 N N n
+A2DD A2DD A2F7 O O ï½
+A2DE A2DE A2F8 ï¼° ï¼° ï½
+A2DF A2DF A2F9 Q Q q
+A2E0 A2E0 A2FA ï¼² ï¼² ï½’
+A2E1 A2E1 A2FB S S s
+A2E2 A2E2 A2FC ï¼´ ï¼´ ï½”
+A2E3 A2E3 A2FD U U u
+A2E4 A2E4 A2FE ï¼¶ ï¼¶ ï½–
+A2E5 A2E5 A340 ï¼· ï¼· ï½—
+A2E6 A2E6 A341 X X x
+A2E7 A2E7 A342 ï¼¹ ï¼¹ ï½™
+A2E8 A2E8 A343 Z Z z
+A2E9 A2CF A2E9 ï½ ï¼¡ ï½
+A2EA A2D0 A2EA b B b
+A2EB A2D1 A2EB c C c
+A2EC A2D2 A2EC d D d
+A2ED A2D3 A2ED ï½… ï¼¥ ï½…
+A2EE A2D4 A2EE f F f
+A2EF A2D5 A2EF g G g
+A2F0 A2D6 A2F0 h H h
+A2F1 A2D7 A2F1 i I i
+A2F2 A2D8 A2F2 j J j
+A2F3 A2D9 A2F3 k K k
+A2F4 A2DA A2F4 l L l
+A2F5 A2DB A2F5 ï½ ï¼­ ï½
+A2F6 A2DC A2F6 n N n
+A2F7 A2DD A2F7 ï½ ï¼¯ ï½
+A2F8 A2DE A2F8 ï½ ï¼° ï½
+A2F9 A2DF A2F9 q Q q
+A2FA A2E0 A2FA ï½’ ï¼² ï½’
+A2FB A2E1 A2FB s S s
+A2FC A2E2 A2FC ï½” ï¼´ ï½”
+A2FD A2E3 A2FD u U u
+A2FE A2E4 A2FE ï½– ï¼¶ ï½–
+A340 A2E5 A340 ï½— ï¼· ï½—
+A341 A2E6 A341 x X x
+A342 A2E7 A342 ï½™ ï¼¹ ï½™
+A343 A2E8 A343 z Z z
+A344 A344 A35C Α Α α
+A345 A345 A35D Β Β β
+A346 A346 A35E Γ Γ γ
+A347 A347 A35F Δ Δ δ
+A348 A348 A360 Ε Ε ε
+A349 A349 A361 Ζ Ζ ζ
+A34A A34A A362 Η Η η
+A34B A34B A363 Θ Θ θ
+A34C A34C A364 Ι Ι ι
+A34D A34D A365 Κ Κ κ
+A34E A34E A366 Λ Λ λ
+A34F A34F A367 Μ Μ μ
+A350 A350 A368 ΠΠν
+A351 A351 A369 Ξ Ξ ξ
+A352 A352 A36A Ο Ο ο
+A353 A353 A36B Π Π π
+A354 A354 A36C Ρ Ρ Ï
+A355 A355 A36D Σ Σ σ
+A356 A356 A36E Τ Τ τ
+A357 A357 A36F Υ Υ υ
+A358 A358 A370 Φ Φ φ
+A359 A359 A371 Χ Χ χ
+A35A A35A A372 Ψ Ψ ψ
+A35B A35B A373 Ω Ω ω
+A35C A344 A35C α Α α
+A35D A345 A35D β Β β
+A35E A346 A35E γ Γ γ
+A35F A347 A35F δ Δ δ
+A360 A348 A360 ε Ε ε
+A361 A349 A361 ζ Ζ ζ
+A362 A34A A362 η Η η
+A363 A34B A363 θ Θ θ
+A364 A34C A364 ι Ι ι
+A365 A34D A365 κ Κ κ
+A366 A34E A366 λ Λ λ
+A367 A34F A367 μ Μ μ
+A368 A350 A368 ν Πν
+A369 A351 A369 ξ Ξ ξ
+A36A A352 A36A ο Ο ο
+A36B A353 A36B π Π π
+A36C A354 A36C Ï Î¡ Ï
+A36D A355 A36D σ Σ σ
+A36E A356 A36E τ Τ τ
+A36F A357 A36F υ Υ υ
+A370 A358 A370 φ Φ φ
+A371 A359 A371 χ Χ χ
+A372 A35A A372 ψ Ψ ψ
+A373 A35B A373 ω Ω ω
+C7B1 C7B1 C7CC Д Д д
+C7B2 C7B2 C7CD Е Е е
+C7B3 C7B3 C7CE Ð Ð Ñ‘
+C7B4 C7B4 C7CF Ж Ж ж
+C7B5 C7B5 C7D0 З З з
+C7B6 C7B6 C7D1 И И и
+C7B7 C7B7 C7D2 Й Й й
+C7B8 C7B8 C7D3 К К к
+C7B9 C7B9 C7D4 Л Л л
+C7BA C7BA C7D5 М М м
+C7BB C7BB C7DC У У у
+C7BC C7BC C7DD Ф Ф ф
+C7BD C7BD C7DE Х Х х
+C7BE C7BE C7DF Ц Ц ц
+C7BF C7BF C7E0 Ч Ч ч
+C7C0 C7C0 C7E1 Ш Ш ш
+C7C1 C7C1 C7E2 Щ Щ щ
+C7C2 C7C2 C7E3 Ъ Ъ ъ
+C7C3 C7C3 C7E4 Ы Ы ы
+C7C4 C7C4 C7E5 Ь Ь ь
+C7C5 C7C5 C7E6 Э Э Ñ
+C7C6 C7C6 C7E7 Ю Ю ю
+C7C7 C7C7 C7E8 Я Я Ñ
+C7CC C7B1 C7CC д Д д
+C7CD C7B2 C7CD е Е е
+C7CE C7B3 C7CE Ñ‘ Ð Ñ‘
+C7CF C7B4 C7CF ж Ж ж
+C7D0 C7B5 C7D0 з З з
+C7D1 C7B6 C7D1 и И и
+C7D2 C7B7 C7D2 й Й й
+C7D3 C7B8 C7D3 к К к
+C7D4 C7B9 C7D4 л Л л
+C7D5 C7BA C7D5 м М м
+C7DC C7BB C7DC у У у
+C7DD C7BC C7DD ф Ф ф
+C7DE C7BD C7DE х Х х
+C7DF C7BE C7DF ц Ц ц
+C7E0 C7BF C7E0 ч Ч ч
+C7E1 C7C0 C7E1 ш Ш ш
+C7E2 C7C1 C7E2 щ Щ щ
+C7E3 C7C2 C7E3 ъ Ъ ъ
+C7E4 C7C3 C7E4 ы Ы ы
+C7E5 C7C4 C7E5 ь Ь ь
+C7E6 C7C5 C7E6 Ñ Ð­ Ñ
+C7E7 C7C6 C7E7 ю Ю ю
+C7E8 C7C7 C7E8 Ñ Ð¯ Ñ
+SELECT * FROM t1
+WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
+HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+code a
+A2B9 â… 
+A2BA â…¡
+A2BB â…¢
+A2BC â…£
+A2BD â…¤
+A2BE â…¥
+A2BF â…¦
+A2C0 â…§
+A2C1 â…¨
+A2C2 â…©
+SELECT * FROM t1
+WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
+HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+code a
+C7C8 а
+C7C9 б
+C7CA в
+C7CB г
+C7D6 н
+C7D7 о
+C7D8 п
+C7D9 р
+C7DA Ñ
+C7DB Ñ‚
+DROP TABLE t1;
+#
+# End of 5.5 tests
+#
diff --git a/mysql-test/r/ctype_collate.result b/mysql-test/r/ctype_collate.result
index b42094550bd..67262a4935d 100644
--- a/mysql-test/r/ctype_collate.result
+++ b/mysql-test/r/ctype_collate.result
@@ -548,6 +548,36 @@ SELECT * FROM t1 WHERE s2 = s3;
s1 s2 s3
a A A
DROP TABLE t1;
+create table t1 (a varchar(1) character set latin1 collate latin1_general_ci);
+insert into t1 values ('A'),('a'),('B'),('b'),('C'),('c');
+select * from t1 where a > 'B' collate latin1_bin;
+a
+a
+b
+C
+c
+select * from t1 where a <> 'B' collate latin1_bin;
+a
+A
+a
+b
+C
+c
+create index i on t1 (a);
+select * from t1 where a > 'B' collate latin1_bin;
+a
+a
+b
+C
+c
+select * from t1 where a <> 'B' collate latin1_bin;
+a
+A
+a
+b
+C
+c
+drop table t1;
SET NAMES latin1;
CREATE TABLE t1
(s1 char(10) COLLATE latin1_german1_ci,
diff --git a/mysql-test/r/ctype_cp1251.result b/mysql-test/r/ctype_cp1251.result
index 47797af3cbe..bf0bc07c50e 100644
--- a/mysql-test/r/ctype_cp1251.result
+++ b/mysql-test/r/ctype_cp1251.result
@@ -70,3 +70,14 @@ we_ivo NULL
we_martin NULL
we_toshko NULL
drop table t1;
+CREATE TABLE t1 (
+e1 enum('ÿáúëêà'),
+e2 enum('ìëÿêî')
+) ENGINE=MYISAM character set cp1251;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `e1` enum('ÿáúëêà') DEFAULT NULL,
+ `e2` enum('ìëÿêî') DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=cp1251
+DROP TABLE t1;
diff --git a/mysql-test/r/ctype_cp932_binlog_stm.result b/mysql-test/r/ctype_cp932_binlog_stm.result
index 044885d1ea7..47ff51a9c44 100644
--- a/mysql-test/r/ctype_cp932_binlog_stm.result
+++ b/mysql-test/r/ctype_cp932_binlog_stm.result
@@ -9,11 +9,14 @@ EXECUTE stmt1 USING @var1;
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(f1 blob)
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES(0x8300)
+master-bin.000001 # Query # # COMMIT
SELECT HEX(f1) FROM t1;
HEX(f1)
8300
DROP table t1;
+call mtr.add_suppression('Error in Log_event::read_log_event()');
CREATE TABLE t4 (s1 CHAR(50) CHARACTER SET latin1,
s2 CHAR(50) CHARACTER SET cp932,
d DECIMAL(10,2))|
@@ -29,22 +32,27 @@ HEX(s1) HEX(s2) d
466F6F2773206120426172 ED40ED41ED42 47.93
DROP PROCEDURE bug18293|
DROP TABLE t4|
-SHOW BINLOG EVENTS FROM 370|
+SHOW BINLOG EVENTS FROM 514|
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 514 Query 1 581 BEGIN
+master-bin.000001 581 Query 1 788 use `mtr`; INSERT INTO test_suppressions (pattern) VALUES ( NAME_CONST('pattern',_latin1'Error in Log_event::read_log_event()' COLLATE 'latin1_swedish_ci'))
+master-bin.000001 788 Query 1 856 COMMIT
+master-bin.000001 856 Query 1 1019 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 1019 Query 1 1265 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 1265 Query 1 1333 BEGIN
+master-bin.000001 1333 Query 1 1597 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 1597 Query 1 1666 COMMIT
+master-bin.000001 1666 Query 1 1752 use `test`; DROP PROCEDURE bug18293
+master-bin.000001 1752 Query 1 1828 use `test`; DROP TABLE t4
End of 5.0 tests
-SHOW BINLOG EVENTS FROM 365;
+SHOW BINLOG EVENTS FROM 490;
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Wrong offset or I/O error
Bug#44352 UPPER/LOWER function doesn't work correctly on cp932 and sjis environment.
CREATE TABLE t1 (a varchar(16)) character set cp932;
@@ -55,3 +63,331 @@ hex(a) hex(lower(a)) hex(upper(a))
8372835E 8372835E 8372835E
DROP TABLE t1;
End of 5.1 tests
+#
+# Start of 5.5 tests
+#
+#
+# Testing WL#4583 Case conversion in Asian character sets
+#
+SET NAMES utf8;
+SET collation_connection=cp932_japanese_ci;
+CREATE TABLE t1 (b VARCHAR(2));
+INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
+INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
+CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
+CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
+DROP TABLE t1;
+CREATE TABLE t1 AS
+SELECT concat(head, tail) AS code, ' ' AS a
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN 'A1' AND 'DF')
+AND (tail BETWEEN '20' AND 'FF')
+ORDER BY head, tail;
+INSERT t1 (code) SELECT head FROM head
+WHERE (head BETWEEN 'A1' AND 'DF')
+ORDER BY head;
+DROP TEMPORARY TABLE head, tail;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `code` varchar(8) DEFAULT NULL,
+ `a` varchar(1) CHARACTER SET cp932 NOT NULL DEFAULT ''
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+UPDATE t1 SET a=unhex(code) ORDER BY code;
+Warnings:
+Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
+Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
+Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
+Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
+Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
+Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
+Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
+Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
+Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
+Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
+Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
+Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
+Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
+Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
+Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
+Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
+Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
+Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
+Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
+Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
+Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
+Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
+Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
+Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
+Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
+Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
+Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
+Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
+Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
+Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
+Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
+Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
+Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
+Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
+Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
+Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
+Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
+Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
+Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
+Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
+Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
+Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
+Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
+Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
+Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
+Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
+Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
+Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
+Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
+Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
+Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
+Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
+Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
+Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
+Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
+Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
+Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
+Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
+Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
+Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
+Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
+Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
+Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
+Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+14623
+SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=1;
+COUNT(*)
+63
+SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2;
+COUNT(*)
+11280
+SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1
+WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a))
+ORDER BY code;
+code hex(upper(a)) hex(lower(a)) a upper(a) lower(a)
+8260 8260 8281 A A ï½
+8261 8261 8282 B B b
+8262 8262 8283 C C c
+8263 8263 8284 D D d
+8264 8264 8285 ï¼¥ ï¼¥ ï½…
+8265 8265 8286 F F f
+8266 8266 8287 G G g
+8267 8267 8288 H H h
+8268 8268 8289 I I i
+8269 8269 828A J J j
+826A 826A 828B K K k
+826B 826B 828C L L l
+826C 826C 828D ï¼­ ï¼­ ï½
+826D 826D 828E N N n
+826E 826E 828F O O ï½
+826F 826F 8290 ï¼° ï¼° ï½
+8270 8270 8291 Q Q q
+8271 8271 8292 ï¼² ï¼² ï½’
+8272 8272 8293 S S s
+8273 8273 8294 ï¼´ ï¼´ ï½”
+8274 8274 8295 U U u
+8275 8275 8296 ï¼¶ ï¼¶ ï½–
+8276 8276 8297 ï¼· ï¼· ï½—
+8277 8277 8298 X X x
+8278 8278 8299 ï¼¹ ï¼¹ ï½™
+8279 8279 829A Z Z z
+8281 8260 8281 ï½ ï¼¡ ï½
+8282 8261 8282 b B b
+8283 8262 8283 c C c
+8284 8263 8284 d D d
+8285 8264 8285 ï½… ï¼¥ ï½…
+8286 8265 8286 f F f
+8287 8266 8287 g G g
+8288 8267 8288 h H h
+8289 8268 8289 i I i
+828A 8269 828A j J j
+828B 826A 828B k K k
+828C 826B 828C l L l
+828D 826C 828D ï½ ï¼­ ï½
+828E 826D 828E n N n
+828F 826E 828F ï½ ï¼¯ ï½
+8290 826F 8290 ï½ ï¼° ï½
+8291 8270 8291 q Q q
+8292 8271 8292 ï½’ ï¼² ï½’
+8293 8272 8293 s S s
+8294 8273 8294 ï½” ï¼´ ï½”
+8295 8274 8295 u U u
+8296 8275 8296 ï½– ï¼¶ ï½–
+8297 8276 8297 ï½— ï¼· ï½—
+8298 8277 8298 x X x
+8299 8278 8299 ï½™ ï¼¹ ï½™
+829A 8279 829A z Z z
+839F 839F 83BF Α Α α
+83A0 83A0 83C0 Β Β β
+83A1 83A1 83C1 Γ Γ γ
+83A2 83A2 83C2 Δ Δ δ
+83A3 83A3 83C3 Ε Ε ε
+83A4 83A4 83C4 Ζ Ζ ζ
+83A5 83A5 83C5 Η Η η
+83A6 83A6 83C6 Θ Θ θ
+83A7 83A7 83C7 Ι Ι ι
+83A8 83A8 83C8 Κ Κ κ
+83A9 83A9 83C9 Λ Λ λ
+83AA 83AA 83CA Μ Μ μ
+83AB 83AB 83CB ΠΠν
+83AC 83AC 83CC Ξ Ξ ξ
+83AD 83AD 83CD Ο Ο ο
+83AE 83AE 83CE Π Π π
+83AF 83AF 83CF Ρ Ρ Ï
+83B0 83B0 83D0 Σ Σ σ
+83B1 83B1 83D1 Τ Τ τ
+83B2 83B2 83D2 Υ Υ υ
+83B3 83B3 83D3 Φ Φ φ
+83B4 83B4 83D4 Χ Χ χ
+83B5 83B5 83D5 Ψ Ψ ψ
+83B6 83B6 83D6 Ω Ω ω
+83BF 839F 83BF α Α α
+83C0 83A0 83C0 β Β β
+83C1 83A1 83C1 γ Γ γ
+83C2 83A2 83C2 δ Δ δ
+83C3 83A3 83C3 ε Ε ε
+83C4 83A4 83C4 ζ Ζ ζ
+83C5 83A5 83C5 η Η η
+83C6 83A6 83C6 θ Θ θ
+83C7 83A7 83C7 ι Ι ι
+83C8 83A8 83C8 κ Κ κ
+83C9 83A9 83C9 λ Λ λ
+83CA 83AA 83CA μ Μ μ
+83CB 83AB 83CB ν Πν
+83CC 83AC 83CC ξ Ξ ξ
+83CD 83AD 83CD ο Ο ο
+83CE 83AE 83CE π Π π
+83CF 83AF 83CF Ï Î¡ Ï
+83D0 83B0 83D0 σ Σ σ
+83D1 83B1 83D1 τ Τ τ
+83D2 83B2 83D2 υ Υ υ
+83D3 83B3 83D3 φ Φ φ
+83D4 83B4 83D4 χ Χ χ
+83D5 83B5 83D5 ψ Ψ ψ
+83D6 83B6 83D6 ω Ω ω
+8440 8440 8470 РРа
+8441 8441 8471 Б Б б
+8442 8442 8472 В В в
+8443 8443 8473 Г Г г
+8444 8444 8474 Д Д д
+8445 8445 8475 Е Е е
+8446 8446 8476 Ð Ð Ñ‘
+8447 8447 8477 Ж Ж ж
+8448 8448 8478 З З з
+8449 8449 8479 И И и
+844A 844A 847A Й Й й
+844B 844B 847B К К к
+844C 844C 847C Л Л л
+844D 844D 847D М М м
+844E 844E 847E РРн
+844F 844F 8480 О О о
+8450 8450 8481 П П п
+8451 8451 8482 Р Р р
+8452 8452 8483 С С Ñ
+8453 8453 8484 Т Т т
+8454 8454 8485 У У у
+8455 8455 8486 Ф Ф ф
+8456 8456 8487 Х Х х
+8457 8457 8488 Ц Ц ц
+8458 8458 8489 Ч Ч ч
+8459 8459 848A Ш Ш ш
+845A 845A 848B Щ Щ щ
+845B 845B 848C Ъ Ъ ъ
+845C 845C 848D Ы Ы ы
+845D 845D 848E Ь Ь ь
+845E 845E 848F Э Э Ñ
+845F 845F 8490 Ю Ю ю
+8460 8460 8491 Я Я Ñ
+8470 8440 8470 а Ра
+8471 8441 8471 б Б б
+8472 8442 8472 в В в
+8473 8443 8473 г Г г
+8474 8444 8474 д Д д
+8475 8445 8475 е Е е
+8476 8446 8476 Ñ‘ Ð Ñ‘
+8477 8447 8477 ж Ж ж
+8478 8448 8478 з З з
+8479 8449 8479 и И и
+847A 844A 847A й Й й
+847B 844B 847B к К к
+847C 844C 847C л Л л
+847D 844D 847D м М м
+847E 844E 847E н Рн
+8480 844F 8480 о О о
+8481 8450 8481 п П п
+8482 8451 8482 р Р р
+8483 8452 8483 Ñ Ð¡ Ñ
+8484 8453 8484 т Т т
+8485 8454 8485 у У у
+8486 8455 8486 ф Ф ф
+8487 8456 8487 х Х х
+8488 8457 8488 ц Ц ц
+8489 8458 8489 ч Ч ч
+848A 8459 848A ш Ш ш
+848B 845A 848B щ Щ щ
+848C 845B 848C ъ Ъ ъ
+848D 845C 848D ы Ы ы
+848E 845D 848E ь Ь ь
+848F 845E 848F Ñ Ð­ Ñ
+8490 845F 8490 ю Ю ю
+8491 8460 8491 Ñ Ð¯ Ñ
+8754 8754 EEEF â…  â…  â…°
+8755 8755 EEF0 â…¡ â…¡ â…±
+8756 8756 EEF1 â…¢ â…¢ â…²
+8757 8757 EEF2 â…£ â…£ â…³
+8758 8758 EEF3 â…¤ â…¤ â…´
+8759 8759 EEF4 â…¥ â…¥ â…µ
+875A 875A EEF5 â…¦ â…¦ â…¶
+875B 875B EEF6 â…§ â…§ â…·
+875C 875C EEF7 â…¨ â…¨ â…¸
+875D 875D EEF8 â…© â…© â…¹
+EEEF 8754 EEEF â…° â…  â…°
+EEF0 8755 EEF0 â…± â…¡ â…±
+EEF1 8756 EEF1 â…² â…¢ â…²
+EEF2 8757 EEF2 â…³ â…£ â…³
+EEF3 8758 EEF3 â…´ â…¤ â…´
+EEF4 8759 EEF4 â…µ â…¥ â…µ
+EEF5 875A EEF5 â…¶ â…¦ â…¶
+EEF6 875B EEF6 â…· â…§ â…·
+EEF7 875C EEF7 â…¸ â…¨ â…¸
+EEF8 875D EEF8 â…¹ â…© â…¹
+FA40 FA4A FA40 â…° â…  â…°
+FA41 FA4B FA41 â…± â…¡ â…±
+FA42 FA4C FA42 â…² â…¢ â…²
+FA43 FA4D FA43 â…³ â…£ â…³
+FA44 FA4E FA44 â…´ â…¤ â…´
+FA45 FA4F FA45 â…µ â…¥ â…µ
+FA46 FA50 FA46 â…¶ â…¦ â…¶
+FA47 FA51 FA47 â…· â…§ â…·
+FA48 FA52 FA48 â…¸ â…¨ â…¸
+FA49 FA53 FA49 â…¹ â…© â…¹
+FA4A FA4A FA40 â…  â…  â…°
+FA4B FA4B FA41 â…¡ â…¡ â…±
+FA4C FA4C FA42 â…¢ â…¢ â…²
+FA4D FA4D FA43 â…£ â…£ â…³
+FA4E FA4E FA44 â…¤ â…¤ â…´
+FA4F FA4F FA45 â…¥ â…¥ â…µ
+FA50 FA50 FA46 â…¦ â…¦ â…¶
+FA51 FA51 FA47 â…§ â…§ â…·
+FA52 FA52 FA48 â…¨ â…¨ â…¸
+FA53 FA53 FA49 â…© â…© â…¹
+SELECT * FROM t1
+WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
+HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+code a
+81F0 â„«
+SELECT * FROM t1
+WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
+HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+code a
+DROP TABLE t1;
+#
+# End of 5.5 tests
+#
diff --git a/mysql-test/r/ctype_errors.result b/mysql-test/r/ctype_errors.result
new file mode 100644
index 00000000000..d8218e40e6f
--- /dev/null
+++ b/mysql-test/r/ctype_errors.result
@@ -0,0 +1,32 @@
+Start of 5.4 tests
+CREATE TABLE t1(f1 INT);
+SET lc_messages=ru_RU;
+SHOW VARIABLES LIKE 'lc_messages';
+Variable_name Value
+lc_messages ru_RU
+CREATE TABLE t1(f1 INT);
+ERROR 42S01: \0422\0430\0431\043B\0438\0446\0430 't1' \0443\0436\0435 \0441\0443\0449\0435\0441\0442\0432\0443\0435\0442
+SET NAMES utf8;
+CREATE TABLE t1(f1 INT);
+ERROR 42S01: Таблица 't1' уже ÑущеÑтвует
+SHOW VARIABLES LIKE 'lc_messages';
+Variable_name Value
+lc_messages en_US
+CREATE TABLE t1(f1 INT);
+ERROR 42S01: Table 't1' already exists
+SHOW GLOBAL VARIABLES LIKE 'lc_messages';
+Variable_name Value
+lc_messages en_US
+SET GLOBAL lc_messages=ru_RU;
+SHOW GLOBAL VARIABLES LIKE 'lc_messages';
+Variable_name Value
+lc_messages ru_RU
+SET GLOBAL lc_messages=en_US;
+DROP TABLE t1;
+drop table `×§`;
+ERROR 42S02: Unknown table '×§'
+SET lc_messages=cs_CZ;
+SET NAMES UTF8;
+USE nonexistant;
+ERROR 42000: Nezn-Bámá databáze 'nonexistant'
+End of 5.4 tests
diff --git a/mysql-test/r/ctype_eucjpms.result b/mysql-test/r/ctype_eucjpms.result
index 21aa38b7fe6..c8ece9a28cd 100755
--- a/mysql-test/r/ctype_eucjpms.result
+++ b/mysql-test/r/ctype_eucjpms.result
@@ -9859,3 +9859,567 @@ hex(convert(_eucjpms 0xA5FE41 using ucs2))
select hex(convert(_eucjpms 0x8FABF841 using ucs2));
hex(convert(_eucjpms 0x8FABF841 using ucs2))
003F0041
+#
+# Start of 5.5 tests
+#
+#
+# Testing WL#4583 Case conversion in Asian character sets
+#
+SET NAMES utf8;
+SET collation_connection=eucjpms_japanese_ci;
+CREATE TABLE t1 (b VARCHAR(2));
+INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
+INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
+CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
+CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
+DROP TABLE t1;
+CREATE TABLE t1 AS SELECT 'XXXXXX' AS code, ' ' AS a LIMIT 0;
+INSERT INTO t1 (code) SELECT concat('8E', head) FROM head
+WHERE (head BETWEEN 'A1' AND 'DF') ORDER BY head;
+INSERT INTO t1 (code) SELECT concat(head, tail)
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN '8E' AND '8F')
+AND (tail BETWEEN '20' AND 'FF')
+ORDER BY head, tail;
+INSERT INTO t1 (code) SELECT concat('8F', head, tail)
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF')
+ORDER BY head, tail;
+DROP TEMPORARY TABLE head, tail;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `code` varchar(6) CHARACTER SET eucjpms NOT NULL DEFAULT '',
+ `a` varchar(1) CHARACTER SET eucjpms NOT NULL DEFAULT ''
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+UPDATE t1 SET a=unhex(code) ORDER BY code;
+Warnings:
+Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
+Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
+Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
+Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
+Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
+Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
+Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
+Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
+Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
+Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
+Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
+Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
+Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
+Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
+Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
+Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
+Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
+Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
+Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
+Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
+Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
+Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
+Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
+Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
+Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
+Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
+Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
+Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
+Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
+Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
+Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
+Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
+Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
+Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
+Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
+Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
+Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
+Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
+Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
+Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
+Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
+Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
+Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
+Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
+Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
+Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
+Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
+Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
+Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
+Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
+Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
+Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
+Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
+Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
+Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
+Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
+Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
+Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
+Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
+Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
+Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
+Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
+Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
+Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+56959
+SELECT COUNT(*) FROM t1 WHERE a<>'';
+COUNT(*)
+17735
+SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2;
+COUNT(*)
+8899
+SELECT * FROM t1 WHERE CHAR_LENGTH(a)=2;
+code a
+SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=3;
+COUNT(*)
+8836
+SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)) ORDER BY code;
+code hex(upper(a)) hex(lower(a)) a upper(a) lower(a)
+8FA6E1 8FA6E1 8FA6F1 Ά Ά ά
+8FA6E2 8FA6E2 8FA6F2 Έ Έ έ
+8FA6E3 8FA6E3 8FA6F3 Ή Ή ή
+8FA6E4 8FA6E4 8FA6F4 Ί Ί ί
+8FA6E5 8FA6E5 8FA6F5 Ϊ Ϊ ϊ
+8FA6E7 8FA6E7 8FA6F7 Ό Ό ό
+8FA6E9 8FA6E9 8FA6F9 ÎŽ ÎŽ Ï
+8FA6EA 8FA6EA 8FA6FA Ϋ Ϋ ϋ
+8FA6EC 8FA6EC 8FA6FC Î Î ÏŽ
+8FA6F1 8FA6E1 8FA6F1 ά Ά ά
+8FA6F2 8FA6E2 8FA6F2 έ Έ έ
+8FA6F3 8FA6E3 8FA6F3 ή Ή ή
+8FA6F4 8FA6E4 8FA6F4 ί Ί ί
+8FA6F5 8FA6E5 8FA6F5 ϊ Ϊ ϊ
+8FA6F7 8FA6E7 8FA6F7 ό Ό ό
+8FA6F8 A6B2 8FA6F8 ς Σ ς
+8FA6F9 8FA6E9 8FA6F9 Ï ÎŽ Ï
+8FA6FA 8FA6EA 8FA6FA ϋ Ϋ ϋ
+8FA6FC 8FA6EC 8FA6FC ÏŽ Î ÏŽ
+8FA7C2 8FA7C2 8FA7F2 Ђ Ђ ђ
+8FA7C3 8FA7C3 8FA7F3 Ѓ Ѓ ѓ
+8FA7C4 8FA7C4 8FA7F4 Є Є є
+8FA7C5 8FA7C5 8FA7F5 Ð… Ð… Ñ•
+8FA7C6 8FA7C6 8FA7F6 І І і
+8FA7C7 8FA7C7 8FA7F7 Ї Ї ї
+8FA7C8 8FA7C8 8FA7F8 Ј Ј ј
+8FA7C9 8FA7C9 8FA7F9 Љ Љ љ
+8FA7CA 8FA7CA 8FA7FA Њ Њ њ
+8FA7CB 8FA7CB 8FA7FB Ћ Ћ ћ
+8FA7CC 8FA7CC 8FA7FC Ќ Ќ ќ
+8FA7CD 8FA7CD 8FA7FD ÐŽ ÐŽ Ñž
+8FA7CE 8FA7CE 8FA7FE Ð Ð ÑŸ
+8FA7F2 8FA7C2 8FA7F2 ђ Ђ ђ
+8FA7F3 8FA7C3 8FA7F3 ѓ Ѓ ѓ
+8FA7F4 8FA7C4 8FA7F4 є Є є
+8FA7F5 8FA7C5 8FA7F5 Ñ• Ð… Ñ•
+8FA7F6 8FA7C6 8FA7F6 і І і
+8FA7F7 8FA7C7 8FA7F7 ї Ї ї
+8FA7F8 8FA7C8 8FA7F8 ј Ј ј
+8FA7F9 8FA7C9 8FA7F9 љ Љ љ
+8FA7FA 8FA7CA 8FA7FA њ Њ њ
+8FA7FB 8FA7CB 8FA7FB ћ Ћ ћ
+8FA7FC 8FA7CC 8FA7FC ќ Ќ ќ
+8FA7FD 8FA7CD 8FA7FD Ñž ÐŽ Ñž
+8FA7FE 8FA7CE 8FA7FE ÑŸ Ð ÑŸ
+8FA9A1 8FA9A1 8FA9C1 Æ Æ æ
+8FA9A2 8FA9A2 8FA9C2 Ä Ä Ä‘
+8FA9A4 8FA9A4 8FA9C4 Ħ Ħ ħ
+8FA9A6 8FA9A6 8FA9C6 IJ IJ ij
+8FA9A8 8FA9A8 8FA9C8 Å Å Å‚
+8FA9A9 8FA9A9 8FA9C9 Ŀ Ŀ ŀ
+8FA9AB 8FA9AB 8FA9CB ÅŠ ÅŠ Å‹
+8FA9AC 8FA9AC 8FA9CC Ø Ø ø
+8FA9AD 8FA9AD 8FA9CD Å’ Å’ Å“
+8FA9AF 8FA9AF 8FA9CF Ŧ Ŧ ŧ
+8FA9B0 8FA9B0 8FA9D0 Þ Þ þ
+8FA9C1 8FA9A1 8FA9C1 æ Æ æ
+8FA9C2 8FA9A2 8FA9C2 Ä‘ Ä Ä‘
+8FA9C4 8FA9A4 8FA9C4 ħ Ħ ħ
+8FA9C5 49 8FA9C5 ı I ı
+8FA9C6 8FA9A6 8FA9C6 ij IJ ij
+8FA9C8 8FA9A8 8FA9C8 Å‚ Å Å‚
+8FA9C9 8FA9A9 8FA9C9 ŀ Ŀ ŀ
+8FA9CB 8FA9AB 8FA9CB Å‹ ÅŠ Å‹
+8FA9CC 8FA9AC 8FA9CC ø Ø ø
+8FA9CD 8FA9AD 8FA9CD Å“ Å’ Å“
+8FA9CF 8FA9AF 8FA9CF ŧ Ŧ ŧ
+8FA9D0 8FA9B0 8FA9D0 þ Þ þ
+8FAAA1 8FAAA1 8FABA1 à à á
+8FAAA2 8FAAA2 8FABA2 À À à
+8FAAA3 8FAAA3 8FABA3 Ä Ä ä
+8FAAA4 8FAAA4 8FABA4 Â Â â
+8FAAA5 8FAAA5 8FABA5 Ă Ă ă
+8FAAA6 8FAAA6 8FABA6 Ç Ç ÇŽ
+8FAAA7 8FAAA7 8FABA7 Ä€ Ä€ Ä
+8FAAA8 8FAAA8 8FABA8 Ä„ Ä„ Ä…
+8FAAA9 8FAAA9 8FABA9 Å Å å
+8FAAAA 8FAAAA 8FABAA Ã Ã ã
+8FAAAB 8FAAAB 8FABAB Ć Ć ć
+8FAAAC 8FAAAC 8FABAC Ĉ Ĉ ĉ
+8FAAAD 8FAAAD 8FABAD ÄŒ ÄŒ Ä
+8FAAAE 8FAAAE 8FABAE Ç Ç ç
+8FAAAF 8FAAAF 8FABAF ÄŠ ÄŠ Ä‹
+8FAAB0 8FAAB0 8FABB0 ÄŽ ÄŽ Ä
+8FAAB1 8FAAB1 8FABB1 É É é
+8FAAB2 8FAAB2 8FABB2 È È è
+8FAAB3 8FAAB3 8FABB3 Ë Ë ë
+8FAAB4 8FAAB4 8FABB4 Ê Ê ê
+8FAAB5 8FAAB5 8FABB5 Äš Äš Ä›
+8FAAB6 8FAAB6 8FABB6 Ä– Ä– Ä—
+8FAAB7 8FAAB7 8FABB7 Ä’ Ä’ Ä“
+8FAAB8 8FAAB8 8FABB8 Ę Ę ę
+8FAABA 8FAABA 8FABBA Äœ Äœ Ä
+8FAABB 8FAABB 8FABBB Äž Äž ÄŸ
+8FAABD 8FAABD 8FABBD Ä  Ä  Ä¡
+8FAABE 8FAABE 8FABBE Ĥ Ĥ ĥ
+8FAABF 8FAABF 8FABBF à à í
+8FAAC0 8FAAC0 8FABC0 Ì Ì ì
+8FAAC1 8FAAC1 8FABC1 à à ï
+8FAAC2 8FAAC2 8FABC2 Î Î î
+8FAAC3 8FAAC3 8FABC3 Ç Ç Ç
+8FAAC4 8FAAC4 69 İ İ i
+8FAAC5 8FAAC5 8FABC5 Ī Ī ī
+8FAAC6 8FAAC6 8FABC6 Į Į į
+8FAAC7 8FAAC7 8FABC7 Ĩ Ĩ ĩ
+8FAAC8 8FAAC8 8FABC8 Ĵ Ĵ ĵ
+8FAAC9 8FAAC9 8FABC9 Ķ Ķ ķ
+8FAACA 8FAACA 8FABCA Ĺ Ĺ ĺ
+8FAACB 8FAACB 8FABCB Ľ Ľ ľ
+8FAACC 8FAACC 8FABCC Ļ Ļ ļ
+8FAACD 8FAACD 8FABCD Ń Ń ń
+8FAACE 8FAACE 8FABCE Ň Ň ň
+8FAACF 8FAACF 8FABCF Ņ Ņ ņ
+8FAAD0 8FAAD0 8FABD0 Ñ Ñ ñ
+8FAAD1 8FAAD1 8FABD1 Ó Ó ó
+8FAAD2 8FAAD2 8FABD2 Ò Ò ò
+8FAAD3 8FAAD3 8FABD3 Ö Ö ö
+8FAAD4 8FAAD4 8FABD4 Ô Ô ô
+8FAAD5 8FAAD5 8FABD5 Ç‘ Ç‘ Ç’
+8FAAD6 8FAAD6 8FABD6 Å Å Å‘
+8FAAD7 8FAAD7 8FABD7 ÅŒ ÅŒ Å
+8FAAD8 8FAAD8 8FABD8 Õ Õ õ
+8FAAD9 8FAAD9 8FABD9 Å” Å” Å•
+8FAADA 8FAADA 8FABDA Ř Ř ř
+8FAADB 8FAADB 8FABDB Å– Å– Å—
+8FAADC 8FAADC 8FABDC Åš Åš Å›
+8FAADD 8FAADD 8FABDD Åœ Åœ Å
+8FAADE 8FAADE 8FABDE Å  Å  Å¡
+8FAADF 8FAADF 8FABDF Åž Åž ÅŸ
+8FAAE0 8FAAE0 8FABE0 Ť Ť ť
+8FAAE1 8FAAE1 8FABE1 Ţ Ţ ţ
+8FAAE2 8FAAE2 8FABE2 Ú Ú ú
+8FAAE3 8FAAE3 8FABE3 Ù Ù ù
+8FAAE4 8FAAE4 8FABE4 Ü Ü ü
+8FAAE5 8FAAE5 8FABE5 Û Û û
+8FAAE6 8FAAE6 8FABE6 Ŭ Ŭ ŭ
+8FAAE7 8FAAE7 8FABE7 Ç“ Ç“ Ç”
+8FAAE8 8FAAE8 8FABE8 Ű Ű ű
+8FAAE9 8FAAE9 8FABE9 Ū Ū ū
+8FAAEA 8FAAEA 8FABEA Ų Ų ų
+8FAAEB 8FAAEB 8FABEB Ů Ů ů
+8FAAEC 8FAAEC 8FABEC Ũ Ũ ũ
+8FAAED 8FAAED 8FABED Ǘ Ǘ ǘ
+8FAAEE 8FAAEE 8FABEE Ǜ Ǜ ǜ
+8FAAEF 8FAAEF 8FABEF Ç™ Ç™ Çš
+8FAAF0 8FAAF0 8FABF0 Ç• Ç• Ç–
+8FAAF1 8FAAF1 8FABF1 Ŵ Ŵ ŵ
+8FAAF2 8FAAF2 8FABF2 à à ý
+8FAAF3 8FAAF3 8FABF3 Ÿ Ÿ ÿ
+8FAAF4 8FAAF4 8FABF4 Ŷ Ŷ ŷ
+8FAAF5 8FAAF5 8FABF5 Ź Ź ź
+8FAAF6 8FAAF6 8FABF6 Ž Ž ž
+8FAAF7 8FAAF7 8FABF7 Ż Ż ż
+8FABA1 8FAAA1 8FABA1 á à á
+8FABA2 8FAAA2 8FABA2 à À à
+8FABA3 8FAAA3 8FABA3 ä Ä ä
+8FABA4 8FAAA4 8FABA4 â Â â
+8FABA5 8FAAA5 8FABA5 ă Ă ă
+8FABA6 8FAAA6 8FABA6 ÇŽ Ç ÇŽ
+8FABA7 8FAAA7 8FABA7 Ä Ä€ Ä
+8FABA8 8FAAA8 8FABA8 Ä… Ä„ Ä…
+8FABA9 8FAAA9 8FABA9 å Å å
+8FABAA 8FAAAA 8FABAA ã Ã ã
+8FABAB 8FAAAB 8FABAB ć Ć ć
+8FABAC 8FAAAC 8FABAC ĉ Ĉ ĉ
+8FABAD 8FAAAD 8FABAD Ä ÄŒ Ä
+8FABAE 8FAAAE 8FABAE ç Ç ç
+8FABAF 8FAAAF 8FABAF Ä‹ ÄŠ Ä‹
+8FABB0 8FAAB0 8FABB0 Ä ÄŽ Ä
+8FABB1 8FAAB1 8FABB1 é É é
+8FABB2 8FAAB2 8FABB2 è È è
+8FABB3 8FAAB3 8FABB3 ë Ë ë
+8FABB4 8FAAB4 8FABB4 ê Ê ê
+8FABB5 8FAAB5 8FABB5 Ä› Äš Ä›
+8FABB6 8FAAB6 8FABB6 Ä— Ä– Ä—
+8FABB7 8FAAB7 8FABB7 Ä“ Ä’ Ä“
+8FABB8 8FAAB8 8FABB8 ę Ę ę
+8FABBA 8FAABA 8FABBA Ä Äœ Ä
+8FABBB 8FAABB 8FABBB ÄŸ Äž ÄŸ
+8FABBD 8FAABD 8FABBD Ä¡ Ä  Ä¡
+8FABBE 8FAABE 8FABBE ĥ Ĥ ĥ
+8FABBF 8FAABF 8FABBF í à í
+8FABC0 8FAAC0 8FABC0 ì Ì ì
+8FABC1 8FAAC1 8FABC1 ï à ï
+8FABC2 8FAAC2 8FABC2 î Î î
+8FABC3 8FAAC3 8FABC3 Ç Ç Ç
+8FABC5 8FAAC5 8FABC5 ī Ī ī
+8FABC6 8FAAC6 8FABC6 į Į į
+8FABC7 8FAAC7 8FABC7 ĩ Ĩ ĩ
+8FABC8 8FAAC8 8FABC8 ĵ Ĵ ĵ
+8FABC9 8FAAC9 8FABC9 ķ Ķ ķ
+8FABCA 8FAACA 8FABCA ĺ Ĺ ĺ
+8FABCB 8FAACB 8FABCB ľ Ľ ľ
+8FABCC 8FAACC 8FABCC ļ Ļ ļ
+8FABCD 8FAACD 8FABCD ń Ń ń
+8FABCE 8FAACE 8FABCE ň Ň ň
+8FABCF 8FAACF 8FABCF ņ Ņ ņ
+8FABD0 8FAAD0 8FABD0 ñ Ñ ñ
+8FABD1 8FAAD1 8FABD1 ó Ó ó
+8FABD2 8FAAD2 8FABD2 ò Ò ò
+8FABD3 8FAAD3 8FABD3 ö Ö ö
+8FABD4 8FAAD4 8FABD4 ô Ô ô
+8FABD5 8FAAD5 8FABD5 Ç’ Ç‘ Ç’
+8FABD6 8FAAD6 8FABD6 Å‘ Å Å‘
+8FABD7 8FAAD7 8FABD7 Å ÅŒ Å
+8FABD8 8FAAD8 8FABD8 õ Õ õ
+8FABD9 8FAAD9 8FABD9 Å• Å” Å•
+8FABDA 8FAADA 8FABDA ř Ř ř
+8FABDB 8FAADB 8FABDB Å— Å– Å—
+8FABDC 8FAADC 8FABDC Å› Åš Å›
+8FABDD 8FAADD 8FABDD Å Åœ Å
+8FABDE 8FAADE 8FABDE Å¡ Å  Å¡
+8FABDF 8FAADF 8FABDF ÅŸ Åž ÅŸ
+8FABE0 8FAAE0 8FABE0 ť Ť ť
+8FABE1 8FAAE1 8FABE1 ţ Ţ ţ
+8FABE2 8FAAE2 8FABE2 ú Ú ú
+8FABE3 8FAAE3 8FABE3 ù Ù ù
+8FABE4 8FAAE4 8FABE4 ü Ü ü
+8FABE5 8FAAE5 8FABE5 û Û û
+8FABE6 8FAAE6 8FABE6 ŭ Ŭ ŭ
+8FABE7 8FAAE7 8FABE7 Ç” Ç“ Ç”
+8FABE8 8FAAE8 8FABE8 ű Ű ű
+8FABE9 8FAAE9 8FABE9 ū Ū ū
+8FABEA 8FAAEA 8FABEA ų Ų ų
+8FABEB 8FAAEB 8FABEB ů Ů ů
+8FABEC 8FAAEC 8FABEC ũ Ũ ũ
+8FABED 8FAAED 8FABED ǘ Ǘ ǘ
+8FABEE 8FAAEE 8FABEE ǜ Ǜ ǜ
+8FABEF 8FAAEF 8FABEF Çš Ç™ Çš
+8FABF0 8FAAF0 8FABF0 Ç– Ç• Ç–
+8FABF1 8FAAF1 8FABF1 ŵ Ŵ ŵ
+8FABF2 8FAAF2 8FABF2 ý à ý
+8FABF3 8FAAF3 8FABF3 ÿ Ÿ ÿ
+8FABF4 8FAAF4 8FABF4 ŷ Ŷ ŷ
+8FABF5 8FAAF5 8FABF5 ź Ź ź
+8FABF6 8FAAF6 8FABF6 ž Ž ž
+8FABF7 8FAAF7 8FABF7 ż Ż ż
+8FF3F3 8FF3FD 8FF3F3 â…° â…  â…°
+8FF3F4 8FF3FE 8FF3F4 â…± â…¡ â…±
+8FF3F5 8FF4A1 8FF3F5 â…² â…¢ â…²
+8FF3F6 8FF4A2 8FF3F6 â…³ â…£ â…³
+8FF3F7 8FF4A3 8FF3F7 â…´ â…¤ â…´
+8FF3F8 8FF4A4 8FF3F8 â…µ â…¥ â…µ
+8FF3F9 8FF4A5 8FF3F9 â…¶ â…¦ â…¶
+8FF3FA 8FF4A6 8FF3FA â…· â…§ â…·
+8FF3FB 8FF4A7 8FF3FB â…¸ â…¨ â…¸
+8FF3FC 8FF4A8 8FF3FC â…¹ â…© â…¹
+8FF3FD 8FF3FD 8FF3F3 â…  â…  â…°
+8FF3FE 8FF3FE 8FF3F4 â…¡ â…¡ â…±
+8FF4A1 8FF4A1 8FF3F5 â…¢ â…¢ â…²
+8FF4A2 8FF4A2 8FF3F6 â…£ â…£ â…³
+8FF4A3 8FF4A3 8FF3F7 â…¤ â…¤ â…´
+8FF4A4 8FF4A4 8FF3F8 â…¥ â…¥ â…µ
+8FF4A5 8FF4A5 8FF3F9 â…¦ â…¦ â…¶
+8FF4A6 8FF4A6 8FF3FA â…§ â…§ â…·
+8FF4A7 8FF4A7 8FF3FB â…¨ â…¨ â…¸
+8FF4A8 8FF4A8 8FF3FC â…© â…© â…¹
+A2F2 A2F2 8FABA9 Å Å å
+A3C1 A3C1 A3E1 A A ï½
+A3C2 A3C2 A3E2 B B b
+A3C3 A3C3 A3E3 C C c
+A3C4 A3C4 A3E4 D D d
+A3C5 A3C5 A3E5 ï¼¥ ï¼¥ ï½…
+A3C6 A3C6 A3E6 F F f
+A3C7 A3C7 A3E7 G G g
+A3C8 A3C8 A3E8 H H h
+A3C9 A3C9 A3E9 I I i
+A3CA A3CA A3EA J J j
+A3CB A3CB A3EB K K k
+A3CC A3CC A3EC L L l
+A3CD A3CD A3ED ï¼­ ï¼­ ï½
+A3CE A3CE A3EE N N n
+A3CF A3CF A3EF O O ï½
+A3D0 A3D0 A3F0 ï¼° ï¼° ï½
+A3D1 A3D1 A3F1 Q Q q
+A3D2 A3D2 A3F2 ï¼² ï¼² ï½’
+A3D3 A3D3 A3F3 S S s
+A3D4 A3D4 A3F4 ï¼´ ï¼´ ï½”
+A3D5 A3D5 A3F5 U U u
+A3D6 A3D6 A3F6 ï¼¶ ï¼¶ ï½–
+A3D7 A3D7 A3F7 ï¼· ï¼· ï½—
+A3D8 A3D8 A3F8 X X x
+A3D9 A3D9 A3F9 ï¼¹ ï¼¹ ï½™
+A3DA A3DA A3FA Z Z z
+A3E1 A3C1 A3E1 ï½ ï¼¡ ï½
+A3E2 A3C2 A3E2 b B b
+A3E3 A3C3 A3E3 c C c
+A3E4 A3C4 A3E4 d D d
+A3E5 A3C5 A3E5 ï½… ï¼¥ ï½…
+A3E6 A3C6 A3E6 f F f
+A3E7 A3C7 A3E7 g G g
+A3E8 A3C8 A3E8 h H h
+A3E9 A3C9 A3E9 i I i
+A3EA A3CA A3EA j J j
+A3EB A3CB A3EB k K k
+A3EC A3CC A3EC l L l
+A3ED A3CD A3ED ï½ ï¼­ ï½
+A3EE A3CE A3EE n N n
+A3EF A3CF A3EF ï½ ï¼¯ ï½
+A3F0 A3D0 A3F0 ï½ ï¼° ï½
+A3F1 A3D1 A3F1 q Q q
+A3F2 A3D2 A3F2 ï½’ ï¼² ï½’
+A3F3 A3D3 A3F3 s S s
+A3F4 A3D4 A3F4 ï½” ï¼´ ï½”
+A3F5 A3D5 A3F5 u U u
+A3F6 A3D6 A3F6 ï½– ï¼¶ ï½–
+A3F7 A3D7 A3F7 ï½— ï¼· ï½—
+A3F8 A3D8 A3F8 x X x
+A3F9 A3D9 A3F9 ï½™ ï¼¹ ï½™
+A3FA A3DA A3FA z Z z
+A6A1 A6A1 A6C1 Α Α α
+A6A2 A6A2 A6C2 Β Β β
+A6A3 A6A3 A6C3 Γ Γ γ
+A6A4 A6A4 A6C4 Δ Δ δ
+A6A5 A6A5 A6C5 Ε Ε ε
+A6A6 A6A6 A6C6 Ζ Ζ ζ
+A6A7 A6A7 A6C7 Η Η η
+A6A8 A6A8 A6C8 Θ Θ θ
+A6A9 A6A9 A6C9 Ι Ι ι
+A6AA A6AA A6CA Κ Κ κ
+A6AB A6AB A6CB Λ Λ λ
+A6AC A6AC A6CC Μ Μ μ
+A6AD A6AD A6CD ΠΠν
+A6AE A6AE A6CE Ξ Ξ ξ
+A6AF A6AF A6CF Ο Ο ο
+A6B0 A6B0 A6D0 Π Π π
+A6B1 A6B1 A6D1 Ρ Ρ Ï
+A6B2 A6B2 A6D2 Σ Σ σ
+A6B3 A6B3 A6D3 Τ Τ τ
+A6B4 A6B4 A6D4 Υ Υ υ
+A6B5 A6B5 A6D5 Φ Φ φ
+A6B6 A6B6 A6D6 Χ Χ χ
+A6B7 A6B7 A6D7 Ψ Ψ ψ
+A6B8 A6B8 A6D8 Ω Ω ω
+A6C1 A6A1 A6C1 α Α α
+A6C2 A6A2 A6C2 β Β β
+A6C3 A6A3 A6C3 γ Γ γ
+A6C4 A6A4 A6C4 δ Δ δ
+A6C5 A6A5 A6C5 ε Ε ε
+A6C6 A6A6 A6C6 ζ Ζ ζ
+A6C7 A6A7 A6C7 η Η η
+A6C8 A6A8 A6C8 θ Θ θ
+A6C9 A6A9 A6C9 ι Ι ι
+A6CA A6AA A6CA κ Κ κ
+A6CB A6AB A6CB λ Λ λ
+A6CC A6AC A6CC μ Μ μ
+A6CD A6AD A6CD ν Πν
+A6CE A6AE A6CE ξ Ξ ξ
+A6CF A6AF A6CF ο Ο ο
+A6D0 A6B0 A6D0 π Π π
+A6D1 A6B1 A6D1 Ï Î¡ Ï
+A6D2 A6B2 A6D2 σ Σ σ
+A6D3 A6B3 A6D3 τ Τ τ
+A6D4 A6B4 A6D4 υ Υ υ
+A6D5 A6B5 A6D5 φ Φ φ
+A6D6 A6B6 A6D6 χ Χ χ
+A6D7 A6B7 A6D7 ψ Ψ ψ
+A6D8 A6B8 A6D8 ω Ω ω
+A7A1 A7A1 A7D1 РРа
+A7A2 A7A2 A7D2 Б Б б
+A7A3 A7A3 A7D3 В В в
+A7A4 A7A4 A7D4 Г Г г
+A7A5 A7A5 A7D5 Д Д д
+A7A6 A7A6 A7D6 Е Е е
+A7A7 A7A7 A7D7 Ð Ð Ñ‘
+A7A8 A7A8 A7D8 Ж Ж ж
+A7A9 A7A9 A7D9 З З з
+A7AA A7AA A7DA И И и
+A7AB A7AB A7DB Й Й й
+A7AC A7AC A7DC К К к
+A7AD A7AD A7DD Л Л л
+A7AE A7AE A7DE М М м
+A7AF A7AF A7DF РРн
+A7B0 A7B0 A7E0 О О о
+A7B1 A7B1 A7E1 П П п
+A7B2 A7B2 A7E2 Р Р р
+A7B3 A7B3 A7E3 С С Ñ
+A7B4 A7B4 A7E4 Т Т т
+A7B5 A7B5 A7E5 У У у
+A7B6 A7B6 A7E6 Ф Ф ф
+A7B7 A7B7 A7E7 Х Х х
+A7B8 A7B8 A7E8 Ц Ц ц
+A7B9 A7B9 A7E9 Ч Ч ч
+A7BA A7BA A7EA Ш Ш ш
+A7BB A7BB A7EB Щ Щ щ
+A7BC A7BC A7EC Ъ Ъ ъ
+A7BD A7BD A7ED Ы Ы ы
+A7BE A7BE A7EE Ь Ь ь
+A7BF A7BF A7EF Э Э Ñ
+A7C0 A7C0 A7F0 Ю Ю ю
+A7C1 A7C1 A7F1 Я Я Ñ
+A7D1 A7A1 A7D1 а Ра
+A7D2 A7A2 A7D2 б Б б
+A7D3 A7A3 A7D3 в В в
+A7D4 A7A4 A7D4 г Г г
+A7D5 A7A5 A7D5 д Д д
+A7D6 A7A6 A7D6 е Е е
+A7D7 A7A7 A7D7 Ñ‘ Ð Ñ‘
+A7D8 A7A8 A7D8 ж Ж ж
+A7D9 A7A9 A7D9 з З з
+A7DA A7AA A7DA и И и
+A7DB A7AB A7DB й Й й
+A7DC A7AC A7DC к К к
+A7DD A7AD A7DD л Л л
+A7DE A7AE A7DE м М м
+A7DF A7AF A7DF н Рн
+A7E0 A7B0 A7E0 о О о
+A7E1 A7B1 A7E1 п П п
+A7E2 A7B2 A7E2 р Р р
+A7E3 A7B3 A7E3 Ñ Ð¡ Ñ
+A7E4 A7B4 A7E4 т Т т
+A7E5 A7B5 A7E5 у У у
+A7E6 A7B6 A7E6 ф Ф ф
+A7E7 A7B7 A7E7 х Х х
+A7E8 A7B8 A7E8 ц Ц ц
+A7E9 A7B9 A7E9 ч Ч ч
+A7EA A7BA A7EA ш Ш ш
+A7EB A7BB A7EB щ Щ щ
+A7EC A7BC A7EC ъ Ъ ъ
+A7ED A7BD A7ED ы Ы ы
+A7EE A7BE A7EE ь Ь ь
+A7EF A7BF A7EF Ñ Ð­ Ñ
+A7F0 A7C0 A7F0 ю Ю ю
+A7F1 A7C1 A7F1 Ñ Ð¯ Ñ
+ADB5 ADB5 8FF3F3 â…  â…  â…°
+ADB6 ADB6 8FF3F4 â…¡ â…¡ â…±
+ADB7 ADB7 8FF3F5 â…¢ â…¢ â…²
+ADB8 ADB8 8FF3F6 â…£ â…£ â…³
+ADB9 ADB9 8FF3F7 â…¤ â…¤ â…´
+ADBA ADBA 8FF3F8 â…¥ â…¥ â…µ
+ADBB ADBB 8FF3F9 â…¦ â…¦ â…¶
+ADBC ADBC 8FF3FA â…§ â…§ â…·
+ADBD ADBD 8FF3FB â…¨ â…¨ â…¸
+ADBE ADBE 8FF3FC â…© â…© â…¹
+SELECT * FROM t1
+WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
+HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+code a
+8FAABC Ģ
+SELECT * FROM t1
+WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
+HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+code a
+8FA9C3 ð
+8FABB9 ǵ
+DROP TABLE t1;
+#
+# End of 5.5 tests
+#
diff --git a/mysql-test/r/ctype_euckr.result b/mysql-test/r/ctype_euckr.result
index 3cc74864400..c20504e9ed7 100644
--- a/mysql-test/r/ctype_euckr.result
+++ b/mysql-test/r/ctype_euckr.result
@@ -24255,3 +24255,350 @@ FDFD FDFD E7BEB2 FDFD
FDFE FDFE E8A9B0 FDFE
DROP TABLE t1, t2;
End of 5.4 tests
+#
+# Start of 5.5 tests
+#
+#
+# Testing WL#4583 Case conversion in Asian character sets
+#
+SET NAMES utf8;
+SET collation_connection=euckr_korean_ci;
+CREATE TABLE t1 (b VARCHAR(2));
+INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
+INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
+CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
+CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
+DROP TABLE t1;
+CREATE TABLE t1 AS
+SELECT concat(head, tail) AS code, ' ' AS a
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF')
+ORDER BY head, tail;
+DROP TEMPORARY TABLE head, tail;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `code` varchar(8) DEFAULT NULL,
+ `a` varchar(1) CHARACTER SET euckr NOT NULL DEFAULT ''
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+UPDATE t1 SET a=unhex(code) ORDER BY code;
+Warnings:
+Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
+Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
+Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
+Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
+Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
+Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
+Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
+Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
+Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
+Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
+Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
+Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
+Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
+Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
+Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
+Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
+Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
+Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
+Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
+Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
+Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
+Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
+Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
+Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
+Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
+Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
+Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
+Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
+Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
+Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
+Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
+Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
+Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
+Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
+Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
+Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
+Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
+Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
+Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
+Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
+Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
+Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
+Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
+Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
+Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
+Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
+Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
+Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
+Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
+Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
+Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
+Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
+Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
+Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
+Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
+Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
+Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
+Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
+Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
+Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
+Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
+Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
+Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
+Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
+SELECT COUNT(*) FROM t1 WHERE a<>'';
+COUNT(*)
+22428
+SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a));
+code hex(upper(a)) hex(lower(a)) a upper(a) lower(a)
+A3C1 A3C1 A3E1 A A ï½
+A3C2 A3C2 A3E2 B B b
+A3C3 A3C3 A3E3 C C c
+A3C4 A3C4 A3E4 D D d
+A3C5 A3C5 A3E5 ï¼¥ ï¼¥ ï½…
+A3C6 A3C6 A3E6 F F f
+A3C7 A3C7 A3E7 G G g
+A3C8 A3C8 A3E8 H H h
+A3C9 A3C9 A3E9 I I i
+A3CA A3CA A3EA J J j
+A3CB A3CB A3EB K K k
+A3CC A3CC A3EC L L l
+A3CD A3CD A3ED ï¼­ ï¼­ ï½
+A3CE A3CE A3EE N N n
+A3CF A3CF A3EF O O ï½
+A3D0 A3D0 A3F0 ï¼° ï¼° ï½
+A3D1 A3D1 A3F1 Q Q q
+A3D2 A3D2 A3F2 ï¼² ï¼² ï½’
+A3D3 A3D3 A3F3 S S s
+A3D4 A3D4 A3F4 ï¼´ ï¼´ ï½”
+A3D5 A3D5 A3F5 U U u
+A3D6 A3D6 A3F6 ï¼¶ ï¼¶ ï½–
+A3D7 A3D7 A3F7 ï¼· ï¼· ï½—
+A3D8 A3D8 A3F8 X X x
+A3D9 A3D9 A3F9 ï¼¹ ï¼¹ ï½™
+A3DA A3DA A3FA Z Z z
+A3E1 A3C1 A3E1 ï½ ï¼¡ ï½
+A3E2 A3C2 A3E2 b B b
+A3E3 A3C3 A3E3 c C c
+A3E4 A3C4 A3E4 d D d
+A3E5 A3C5 A3E5 ï½… ï¼¥ ï½…
+A3E6 A3C6 A3E6 f F f
+A3E7 A3C7 A3E7 g G g
+A3E8 A3C8 A3E8 h H h
+A3E9 A3C9 A3E9 i I i
+A3EA A3CA A3EA j J j
+A3EB A3CB A3EB k K k
+A3EC A3CC A3EC l L l
+A3ED A3CD A3ED ï½ ï¼­ ï½
+A3EE A3CE A3EE n N n
+A3EF A3CF A3EF ï½ ï¼¯ ï½
+A3F0 A3D0 A3F0 ï½ ï¼° ï½
+A3F1 A3D1 A3F1 q Q q
+A3F2 A3D2 A3F2 ï½’ ï¼² ï½’
+A3F3 A3D3 A3F3 s S s
+A3F4 A3D4 A3F4 ï½” ï¼´ ï½”
+A3F5 A3D5 A3F5 u U u
+A3F6 A3D6 A3F6 ï½– ï¼¶ ï½–
+A3F7 A3D7 A3F7 ï½— ï¼· ï½—
+A3F8 A3D8 A3F8 x X x
+A3F9 A3D9 A3F9 ï½™ ï¼¹ ï½™
+A3FA A3DA A3FA z Z z
+A5A1 A5B0 A5A1 â…° â…  â…°
+A5A2 A5B1 A5A2 â…± â…¡ â…±
+A5A3 A5B2 A5A3 â…² â…¢ â…²
+A5A4 A5B3 A5A4 â…³ â…£ â…³
+A5A5 A5B4 A5A5 â…´ â…¤ â…´
+A5A6 A5B5 A5A6 â…µ â…¥ â…µ
+A5A7 A5B6 A5A7 â…¶ â…¦ â…¶
+A5A8 A5B7 A5A8 â…· â…§ â…·
+A5A9 A5B8 A5A9 â…¸ â…¨ â…¸
+A5AA A5B9 A5AA â…¹ â…© â…¹
+A5B0 A5B0 A5A1 â…  â…  â…°
+A5B1 A5B1 A5A2 â…¡ â…¡ â…±
+A5B2 A5B2 A5A3 â…¢ â…¢ â…²
+A5B3 A5B3 A5A4 â…£ â…£ â…³
+A5B4 A5B4 A5A5 â…¤ â…¤ â…´
+A5B5 A5B5 A5A6 â…¥ â…¥ â…µ
+A5B6 A5B6 A5A7 â…¦ â…¦ â…¶
+A5B7 A5B7 A5A8 â…§ â…§ â…·
+A5B8 A5B8 A5A9 â…¨ â…¨ â…¸
+A5B9 A5B9 A5AA â…© â…© â…¹
+A5C1 A5C1 A5E1 Α Α α
+A5C2 A5C2 A5E2 Β Β β
+A5C3 A5C3 A5E3 Γ Γ γ
+A5C4 A5C4 A5E4 Δ Δ δ
+A5C5 A5C5 A5E5 Ε Ε ε
+A5C6 A5C6 A5E6 Ζ Ζ ζ
+A5C7 A5C7 A5E7 Η Η η
+A5C8 A5C8 A5E8 Θ Θ θ
+A5C9 A5C9 A5E9 Ι Ι ι
+A5CA A5CA A5EA Κ Κ κ
+A5CB A5CB A5EB Λ Λ λ
+A5CC A5CC A5EC Μ Μ μ
+A5CD A5CD A5ED ΠΠν
+A5CE A5CE A5EE Ξ Ξ ξ
+A5CF A5CF A5EF Ο Ο ο
+A5D0 A5D0 A5F0 Π Π π
+A5D1 A5D1 A5F1 Ρ Ρ Ï
+A5D2 A5D2 A5F2 Σ Σ σ
+A5D3 A5D3 A5F3 Τ Τ τ
+A5D4 A5D4 A5F4 Υ Υ υ
+A5D5 A5D5 A5F5 Φ Φ φ
+A5D6 A5D6 A5F6 Χ Χ χ
+A5D7 A5D7 A5F7 Ψ Ψ ψ
+A5D8 A5D8 A5F8 Ω Ω ω
+A5E1 A5C1 A5E1 α Α α
+A5E2 A5C2 A5E2 β Β β
+A5E3 A5C3 A5E3 γ Γ γ
+A5E4 A5C4 A5E4 δ Δ δ
+A5E5 A5C5 A5E5 ε Ε ε
+A5E6 A5C6 A5E6 ζ Ζ ζ
+A5E7 A5C7 A5E7 η Η η
+A5E8 A5C8 A5E8 θ Θ θ
+A5E9 A5C9 A5E9 ι Ι ι
+A5EA A5CA A5EA κ Κ κ
+A5EB A5CB A5EB λ Λ λ
+A5EC A5CC A5EC μ Μ μ
+A5ED A5CD A5ED ν Πν
+A5EE A5CE A5EE ξ Ξ ξ
+A5EF A5CF A5EF ο Ο ο
+A5F0 A5D0 A5F0 π Π π
+A5F1 A5D1 A5F1 Ï Î¡ Ï
+A5F2 A5D2 A5F2 σ Σ σ
+A5F3 A5D3 A5F3 τ Τ τ
+A5F4 A5D4 A5F4 υ Υ υ
+A5F5 A5D5 A5F5 φ Φ φ
+A5F6 A5D6 A5F6 χ Χ χ
+A5F7 A5D7 A5F7 ψ Ψ ψ
+A5F8 A5D8 A5F8 ω Ω ω
+A7D9 A7D9 A5F8 Ω Ω ω
+A8A1 A8A1 A9A1 Æ Æ æ
+A8A2 A8A2 A9A3 à à ð
+A8A4 A8A4 A9A4 Ħ Ħ ħ
+A8A6 A8A6 A9A6 IJ IJ ij
+A8A8 A8A8 A9A8 Ŀ Ŀ ŀ
+A8A9 A8A9 A9A9 Å Å Å‚
+A8AA A8AA A9AA Ø Ø ø
+A8AB A8AB A9AB Å’ Å’ Å“
+A8AD A8AD A9AD Þ Þ þ
+A8AE A8AE A9AE Ŧ Ŧ ŧ
+A8AF A8AF A9AF ÅŠ ÅŠ Å‹
+A9A1 A8A1 A9A1 æ Æ æ
+A9A3 A8A2 A9A3 ð à ð
+A9A4 A8A4 A9A4 ħ Ħ ħ
+A9A5 49 A9A5 ı I ı
+A9A6 A8A6 A9A6 ij IJ ij
+A9A8 A8A8 A9A8 ŀ Ŀ ŀ
+A9A9 A8A9 A9A9 Å‚ Å Å‚
+A9AA A8AA A9AA ø Ø ø
+A9AB A8AB A9AB Å“ Å’ Å“
+A9AD A8AD A9AD þ Þ þ
+A9AE A8AE A9AE ŧ Ŧ ŧ
+A9AF A8AF A9AF Å‹ ÅŠ Å‹
+ACA1 ACA1 ACD1 РРа
+ACA2 ACA2 ACD2 Б Б б
+ACA3 ACA3 ACD3 В В в
+ACA4 ACA4 ACD4 Г Г г
+ACA5 ACA5 ACD5 Д Д д
+ACA6 ACA6 ACD6 Е Е е
+ACA7 ACA7 ACD7 Ð Ð Ñ‘
+ACA8 ACA8 ACD8 Ж Ж ж
+ACA9 ACA9 ACD9 З З з
+ACAA ACAA ACDA И И и
+ACAB ACAB ACDB Й Й й
+ACAC ACAC ACDC К К к
+ACAD ACAD ACDD Л Л л
+ACAE ACAE ACDE М М м
+ACAF ACAF ACDF РРн
+ACB0 ACB0 ACE0 О О о
+ACB1 ACB1 ACE1 П П п
+ACB2 ACB2 ACE2 Р Р р
+ACB3 ACB3 ACE3 С С Ñ
+ACB4 ACB4 ACE4 Т Т т
+ACB5 ACB5 ACE5 У У у
+ACB6 ACB6 ACE6 Ф Ф ф
+ACB7 ACB7 ACE7 Х Х х
+ACB8 ACB8 ACE8 Ц Ц ц
+ACB9 ACB9 ACE9 Ч Ч ч
+ACBA ACBA ACEA Ш Ш ш
+ACBB ACBB ACEB Щ Щ щ
+ACBC ACBC ACEC Ъ Ъ ъ
+ACBD ACBD ACED Ы Ы ы
+ACBE ACBE ACEE Ь Ь ь
+ACBF ACBF ACEF Э Э Ñ
+ACC0 ACC0 ACF0 Ю Ю ю
+ACC1 ACC1 ACF1 Я Я Ñ
+ACD1 ACA1 ACD1 а Ра
+ACD2 ACA2 ACD2 б Б б
+ACD3 ACA3 ACD3 в В в
+ACD4 ACA4 ACD4 г Г г
+ACD5 ACA5 ACD5 д Д д
+ACD6 ACA6 ACD6 е Е е
+ACD7 ACA7 ACD7 Ñ‘ Ð Ñ‘
+ACD8 ACA8 ACD8 ж Ж ж
+ACD9 ACA9 ACD9 з З з
+ACDA ACAA ACDA и И и
+ACDB ACAB ACDB й Й й
+ACDC ACAC ACDC к К к
+ACDD ACAD ACDD л Л л
+ACDE ACAE ACDE м М м
+ACDF ACAF ACDF н Рн
+ACE0 ACB0 ACE0 о О о
+ACE1 ACB1 ACE1 п П п
+ACE2 ACB2 ACE2 р Р р
+ACE3 ACB3 ACE3 Ñ Ð¡ Ñ
+ACE4 ACB4 ACE4 т Т т
+ACE5 ACB5 ACE5 у У у
+ACE6 ACB6 ACE6 ф Ф ф
+ACE7 ACB7 ACE7 х Х х
+ACE8 ACB8 ACE8 ц Ц ц
+ACE9 ACB9 ACE9 ч Ч ч
+ACEA ACBA ACEA ш Ш ш
+ACEB ACBB ACEB щ Щ щ
+ACEC ACBC ACEC ъ Ъ ъ
+ACED ACBD ACED ы Ы ы
+ACEE ACBE ACEE ь Ь ь
+ACEF ACBF ACEF Ñ Ð­ Ñ
+ACF0 ACC0 ACF0 ю Ю ю
+ACF1 ACC1 ACF1 Ñ Ð¯ Ñ
+SELECT * FROM t1
+WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
+HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+code a
+A1CA â„«
+SELECT * FROM t1
+WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
+HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+code a
+A8CD â“
+A8CE â“‘
+A8CF â“’
+A8D0 â““
+A8D1 â“”
+A8D2 â“•
+A8D3 â“–
+A8D4 â“—
+A8D5 ⓘ
+A8D6 â“™
+A8D7 ⓚ
+A8D8 â“›
+A8D9 ⓜ
+A8DA â“
+A8DB ⓞ
+A8DC ⓟ
+A8DD â“ 
+A8DE â“¡
+A8DF â“¢
+A8E0 â“£
+A8E1 ⓤ
+A8E2 â“¥
+A8E3 ⓦ
+A8E4 â“§
+A8E5 ⓨ
+A8E6 â“©
+A9A2 Ä‘
+DROP TABLE t1;
+#
+# End of 5.5 tests
+#
diff --git a/mysql-test/r/ctype_gb2312.result b/mysql-test/r/ctype_gb2312.result
index 2f789ab5b13..9e9888aecd8 100644
--- a/mysql-test/r/ctype_gb2312.result
+++ b/mysql-test/r/ctype_gb2312.result
@@ -235,3 +235,316 @@ hex(a)
A2A1
D7FE
DROP TABLE t1;
+#
+# Start of 5.5 tests
+#
+#
+# Testing WL#4583 Case conversion in Asian character sets
+#
+SET NAMES utf8;
+SET collation_connection=gb2312_chinese_ci;
+CREATE TABLE t1 (b VARCHAR(2));
+INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
+INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
+CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
+CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
+DROP TABLE t1;
+CREATE TABLE t1 AS
+SELECT concat(head, tail) AS code, ' ' AS a
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF')
+ORDER BY head, tail;
+DROP TEMPORARY TABLE head, tail;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `code` varchar(8) DEFAULT NULL,
+ `a` varchar(1) CHARACTER SET gb2312 NOT NULL DEFAULT ''
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+UPDATE t1 SET a=unhex(code) ORDER BY code;
+Warnings:
+Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
+Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
+Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
+Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
+Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
+Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
+Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
+Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
+Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
+Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
+Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
+Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
+Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
+Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
+Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
+Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
+Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
+Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
+Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
+Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
+Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
+Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
+Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
+Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
+Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
+Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
+Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
+Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
+Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
+Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
+Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
+Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
+Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
+Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
+Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
+Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
+Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
+Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
+Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
+Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
+Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
+Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
+Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
+Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
+Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
+Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
+Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
+Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
+Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
+Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
+Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
+Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
+Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
+Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
+Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
+Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
+Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
+Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
+Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
+Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
+Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
+Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
+Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
+Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
+SELECT COUNT(*) FROM t1 WHERE a<>'';
+COUNT(*)
+8178
+SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a));
+code hex(upper(a)) hex(lower(a)) a upper(a) lower(a)
+A3C1 A3C1 A3E1 A A ï½
+A3C2 A3C2 A3E2 B B b
+A3C3 A3C3 A3E3 C C c
+A3C4 A3C4 A3E4 D D d
+A3C5 A3C5 A3E5 ï¼¥ ï¼¥ ï½…
+A3C6 A3C6 A3E6 F F f
+A3C7 A3C7 A3E7 G G g
+A3C8 A3C8 A3E8 H H h
+A3C9 A3C9 A3E9 I I i
+A3CA A3CA A3EA J J j
+A3CB A3CB A3EB K K k
+A3CC A3CC A3EC L L l
+A3CD A3CD A3ED ï¼­ ï¼­ ï½
+A3CE A3CE A3EE N N n
+A3CF A3CF A3EF O O ï½
+A3D0 A3D0 A3F0 ï¼° ï¼° ï½
+A3D1 A3D1 A3F1 Q Q q
+A3D2 A3D2 A3F2 ï¼² ï¼² ï½’
+A3D3 A3D3 A3F3 S S s
+A3D4 A3D4 A3F4 ï¼´ ï¼´ ï½”
+A3D5 A3D5 A3F5 U U u
+A3D6 A3D6 A3F6 ï¼¶ ï¼¶ ï½–
+A3D7 A3D7 A3F7 ï¼· ï¼· ï½—
+A3D8 A3D8 A3F8 X X x
+A3D9 A3D9 A3F9 ï¼¹ ï¼¹ ï½™
+A3DA A3DA A3FA Z Z z
+A3E1 A3C1 A3E1 ï½ ï¼¡ ï½
+A3E2 A3C2 A3E2 b B b
+A3E3 A3C3 A3E3 c C c
+A3E4 A3C4 A3E4 d D d
+A3E5 A3C5 A3E5 ï½… ï¼¥ ï½…
+A3E6 A3C6 A3E6 f F f
+A3E7 A3C7 A3E7 g G g
+A3E8 A3C8 A3E8 h H h
+A3E9 A3C9 A3E9 i I i
+A3EA A3CA A3EA j J j
+A3EB A3CB A3EB k K k
+A3EC A3CC A3EC l L l
+A3ED A3CD A3ED ï½ ï¼­ ï½
+A3EE A3CE A3EE n N n
+A3EF A3CF A3EF ï½ ï¼¯ ï½
+A3F0 A3D0 A3F0 ï½ ï¼° ï½
+A3F1 A3D1 A3F1 q Q q
+A3F2 A3D2 A3F2 ï½’ ï¼² ï½’
+A3F3 A3D3 A3F3 s S s
+A3F4 A3D4 A3F4 ï½” ï¼´ ï½”
+A3F5 A3D5 A3F5 u U u
+A3F6 A3D6 A3F6 ï½– ï¼¶ ï½–
+A3F7 A3D7 A3F7 ï½— ï¼· ï½—
+A3F8 A3D8 A3F8 x X x
+A3F9 A3D9 A3F9 ï½™ ï¼¹ ï½™
+A3FA A3DA A3FA z Z z
+A6A1 A6A1 A6C1 Α Α α
+A6A2 A6A2 A6C2 Β Β β
+A6A3 A6A3 A6C3 Γ Γ γ
+A6A4 A6A4 A6C4 Δ Δ δ
+A6A5 A6A5 A6C5 Ε Ε ε
+A6A6 A6A6 A6C6 Ζ Ζ ζ
+A6A7 A6A7 A6C7 Η Η η
+A6A8 A6A8 A6C8 Θ Θ θ
+A6A9 A6A9 A6C9 Ι Ι ι
+A6AA A6AA A6CA Κ Κ κ
+A6AB A6AB A6CB Λ Λ λ
+A6AC A6AC A6CC Μ Μ μ
+A6AD A6AD A6CD ΠΠν
+A6AE A6AE A6CE Ξ Ξ ξ
+A6AF A6AF A6CF Ο Ο ο
+A6B0 A6B0 A6D0 Π Π π
+A6B1 A6B1 A6D1 Ρ Ρ Ï
+A6B2 A6B2 A6D2 Σ Σ σ
+A6B3 A6B3 A6D3 Τ Τ τ
+A6B4 A6B4 A6D4 Υ Υ υ
+A6B5 A6B5 A6D5 Φ Φ φ
+A6B6 A6B6 A6D6 Χ Χ χ
+A6B7 A6B7 A6D7 Ψ Ψ ψ
+A6B8 A6B8 A6D8 Ω Ω ω
+A6C1 A6A1 A6C1 α Α α
+A6C2 A6A2 A6C2 β Β β
+A6C3 A6A3 A6C3 γ Γ γ
+A6C4 A6A4 A6C4 δ Δ δ
+A6C5 A6A5 A6C5 ε Ε ε
+A6C6 A6A6 A6C6 ζ Ζ ζ
+A6C7 A6A7 A6C7 η Η η
+A6C8 A6A8 A6C8 θ Θ θ
+A6C9 A6A9 A6C9 ι Ι ι
+A6CA A6AA A6CA κ Κ κ
+A6CB A6AB A6CB λ Λ λ
+A6CC A6AC A6CC μ Μ μ
+A6CD A6AD A6CD ν Πν
+A6CE A6AE A6CE ξ Ξ ξ
+A6CF A6AF A6CF ο Ο ο
+A6D0 A6B0 A6D0 π Π π
+A6D1 A6B1 A6D1 Ï Î¡ Ï
+A6D2 A6B2 A6D2 σ Σ σ
+A6D3 A6B3 A6D3 τ Τ τ
+A6D4 A6B4 A6D4 υ Υ υ
+A6D5 A6B5 A6D5 φ Φ φ
+A6D6 A6B6 A6D6 χ Χ χ
+A6D7 A6B7 A6D7 ψ Ψ ψ
+A6D8 A6B8 A6D8 ω Ω ω
+A7A1 A7A1 A7D1 РРа
+A7A2 A7A2 A7D2 Б Б б
+A7A3 A7A3 A7D3 В В в
+A7A4 A7A4 A7D4 Г Г г
+A7A5 A7A5 A7D5 Д Д д
+A7A6 A7A6 A7D6 Е Е е
+A7A7 A7A7 A7D7 Ð Ð Ñ‘
+A7A8 A7A8 A7D8 Ж Ж ж
+A7A9 A7A9 A7D9 З З з
+A7AA A7AA A7DA И И и
+A7AB A7AB A7DB Й Й й
+A7AC A7AC A7DC К К к
+A7AD A7AD A7DD Л Л л
+A7AE A7AE A7DE М М м
+A7AF A7AF A7DF РРн
+A7B0 A7B0 A7E0 О О о
+A7B1 A7B1 A7E1 П П п
+A7B2 A7B2 A7E2 Р Р р
+A7B3 A7B3 A7E3 С С Ñ
+A7B4 A7B4 A7E4 Т Т т
+A7B5 A7B5 A7E5 У У у
+A7B6 A7B6 A7E6 Ф Ф ф
+A7B7 A7B7 A7E7 Х Х х
+A7B8 A7B8 A7E8 Ц Ц ц
+A7B9 A7B9 A7E9 Ч Ч ч
+A7BA A7BA A7EA Ш Ш ш
+A7BB A7BB A7EB Щ Щ щ
+A7BC A7BC A7EC Ъ Ъ ъ
+A7BD A7BD A7ED Ы Ы ы
+A7BE A7BE A7EE Ь Ь ь
+A7BF A7BF A7EF Э Э Ñ
+A7C0 A7C0 A7F0 Ю Ю ю
+A7C1 A7C1 A7F1 Я Я Ñ
+A7D1 A7A1 A7D1 а Ра
+A7D2 A7A2 A7D2 б Б б
+A7D3 A7A3 A7D3 в В в
+A7D4 A7A4 A7D4 г Г г
+A7D5 A7A5 A7D5 д Д д
+A7D6 A7A6 A7D6 е Е е
+A7D7 A7A7 A7D7 Ñ‘ Ð Ñ‘
+A7D8 A7A8 A7D8 ж Ж ж
+A7D9 A7A9 A7D9 з З з
+A7DA A7AA A7DA и И и
+A7DB A7AB A7DB й Й й
+A7DC A7AC A7DC к К к
+A7DD A7AD A7DD л Л л
+A7DE A7AE A7DE м М м
+A7DF A7AF A7DF н Рн
+A7E0 A7B0 A7E0 о О о
+A7E1 A7B1 A7E1 п П п
+A7E2 A7B2 A7E2 р Р р
+A7E3 A7B3 A7E3 Ñ Ð¡ Ñ
+A7E4 A7B4 A7E4 т Т т
+A7E5 A7B5 A7E5 у У у
+A7E6 A7B6 A7E6 ф Ф ф
+A7E7 A7B7 A7E7 х Х х
+A7E8 A7B8 A7E8 ц Ц ц
+A7E9 A7B9 A7E9 ч Ч ч
+A7EA A7BA A7EA ш Ш ш
+A7EB A7BB A7EB щ Щ щ
+A7EC A7BC A7EC ъ Ъ ъ
+A7ED A7BD A7ED ы Ы ы
+A7EE A7BE A7EE ь Ь ь
+A7EF A7BF A7EF Ñ Ð­ Ñ
+A7F0 A7C0 A7F0 ю Ю ю
+A7F1 A7C1 A7F1 Ñ Ð¯ Ñ
+SELECT * FROM t1
+WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
+HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+code a
+A2F1 â… 
+A2F2 â…¡
+A2F3 â…¢
+A2F4 â…£
+A2F5 â…¤
+A2F6 â…¥
+A2F7 â…¦
+A2F8 â…§
+A2F9 â…¨
+A2FA â…©
+A2FB â…ª
+A2FC â…«
+SELECT * FROM t1
+WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
+HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+code a
+A8A1 Ä
+A8A2 á
+A8A3 ÇŽ
+A8A4 à
+A8A5 Ä“
+A8A6 é
+A8A7 Ä›
+A8A8 è
+A8A9 Ä«
+A8AA í
+A8AB Ç
+A8AC ì
+A8AD Å
+A8AE ó
+A8AF Ç’
+A8B0 ò
+A8B1 Å«
+A8B2 ú
+A8B3 Ç”
+A8B4 ù
+A8B5 Ç–
+A8B6 ǘ
+A8B7 Çš
+A8B8 ǜ
+A8B9 ü
+A8BA ê
+DROP TABLE t1;
+#
+# End of 5.5 tests
+#
diff --git a/mysql-test/r/ctype_gbk.result b/mysql-test/r/ctype_gbk.result
index c144ed6881d..0abbbec1d7b 100644
--- a/mysql-test/r/ctype_gbk.result
+++ b/mysql-test/r/ctype_gbk.result
@@ -255,3 +255,328 @@ SELECT a FROM t1 GROUP BY 1 LIMIT 1 INTO @nullll;
SELECT b FROM t1 GROUP BY 1 LIMIT 1 INTO @nullll;
DROP TABLES t1;
End of 5.0 tests
+#
+# Start of 5.5 tests
+#
+#
+# Testing WL#4583 Case conversion in Asian character sets
+#
+SET NAMES utf8;
+SET collation_connection=gbk_chinese_ci;
+CREATE TABLE t1 (b VARCHAR(2));
+INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
+INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
+CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
+CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
+DROP TABLE t1;
+CREATE TABLE t1 AS
+SELECT concat(head, tail) AS code, ' ' AS a
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF')
+ORDER BY head, tail;
+DROP TEMPORARY TABLE head, tail;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `code` varchar(8) DEFAULT NULL,
+ `a` varchar(1) CHARACTER SET gbk NOT NULL DEFAULT ''
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+UPDATE t1 SET a=unhex(code) ORDER BY code;
+Warnings:
+Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
+Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
+Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
+Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
+Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
+Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
+Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
+Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
+Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
+Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
+Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
+Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
+Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
+Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
+Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
+Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
+Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
+Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
+Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
+Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
+Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
+Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
+Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
+Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
+Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
+Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
+Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
+Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
+Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
+Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
+Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
+Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
+Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
+Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
+Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
+Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
+Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
+Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
+Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
+Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
+Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
+Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
+Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
+Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
+Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
+Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
+Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
+Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
+Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
+Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
+Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
+Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
+Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
+Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
+Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
+Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
+Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
+Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
+Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
+Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
+Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
+Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
+Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
+Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
+SELECT COUNT(*) FROM t1 WHERE a<>'';
+COUNT(*)
+23940
+SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a));
+code hex(upper(a)) hex(lower(a)) a upper(a) lower(a)
+A2A1 A2F1 A2A1 â…° â…  â…°
+A2A2 A2F2 A2A2 â…± â…¡ â…±
+A2A3 A2F3 A2A3 â…² â…¢ â…²
+A2A4 A2F4 A2A4 â…³ â…£ â…³
+A2A5 A2F5 A2A5 â…´ â…¤ â…´
+A2A6 A2F6 A2A6 â…µ â…¥ â…µ
+A2A7 A2F7 A2A7 â…¶ â…¦ â…¶
+A2A8 A2F8 A2A8 â…· â…§ â…·
+A2A9 A2F9 A2A9 â…¸ â…¨ â…¸
+A2AA A2FA A2AA â…¹ â…© â…¹
+A2F1 A2F1 A2A1 â…  â…  â…°
+A2F2 A2F2 A2A2 â…¡ â…¡ â…±
+A2F3 A2F3 A2A3 â…¢ â…¢ â…²
+A2F4 A2F4 A2A4 â…£ â…£ â…³
+A2F5 A2F5 A2A5 â…¤ â…¤ â…´
+A2F6 A2F6 A2A6 â…¥ â…¥ â…µ
+A2F7 A2F7 A2A7 â…¦ â…¦ â…¶
+A2F8 A2F8 A2A8 â…§ â…§ â…·
+A2F9 A2F9 A2A9 â…¨ â…¨ â…¸
+A2FA A2FA A2AA â…© â…© â…¹
+A3C1 A3C1 A3E1 A A ï½
+A3C2 A3C2 A3E2 B B b
+A3C3 A3C3 A3E3 C C c
+A3C4 A3C4 A3E4 D D d
+A3C5 A3C5 A3E5 ï¼¥ ï¼¥ ï½…
+A3C6 A3C6 A3E6 F F f
+A3C7 A3C7 A3E7 G G g
+A3C8 A3C8 A3E8 H H h
+A3C9 A3C9 A3E9 I I i
+A3CA A3CA A3EA J J j
+A3CB A3CB A3EB K K k
+A3CC A3CC A3EC L L l
+A3CD A3CD A3ED ï¼­ ï¼­ ï½
+A3CE A3CE A3EE N N n
+A3CF A3CF A3EF O O ï½
+A3D0 A3D0 A3F0 ï¼° ï¼° ï½
+A3D1 A3D1 A3F1 Q Q q
+A3D2 A3D2 A3F2 ï¼² ï¼² ï½’
+A3D3 A3D3 A3F3 S S s
+A3D4 A3D4 A3F4 ï¼´ ï¼´ ï½”
+A3D5 A3D5 A3F5 U U u
+A3D6 A3D6 A3F6 ï¼¶ ï¼¶ ï½–
+A3D7 A3D7 A3F7 ï¼· ï¼· ï½—
+A3D8 A3D8 A3F8 X X x
+A3D9 A3D9 A3F9 ï¼¹ ï¼¹ ï½™
+A3DA A3DA A3FA Z Z z
+A3E1 A3C1 A3E1 ï½ ï¼¡ ï½
+A3E2 A3C2 A3E2 b B b
+A3E3 A3C3 A3E3 c C c
+A3E4 A3C4 A3E4 d D d
+A3E5 A3C5 A3E5 ï½… ï¼¥ ï½…
+A3E6 A3C6 A3E6 f F f
+A3E7 A3C7 A3E7 g G g
+A3E8 A3C8 A3E8 h H h
+A3E9 A3C9 A3E9 i I i
+A3EA A3CA A3EA j J j
+A3EB A3CB A3EB k K k
+A3EC A3CC A3EC l L l
+A3ED A3CD A3ED ï½ ï¼­ ï½
+A3EE A3CE A3EE n N n
+A3EF A3CF A3EF ï½ ï¼¯ ï½
+A3F0 A3D0 A3F0 ï½ ï¼° ï½
+A3F1 A3D1 A3F1 q Q q
+A3F2 A3D2 A3F2 ï½’ ï¼² ï½’
+A3F3 A3D3 A3F3 s S s
+A3F4 A3D4 A3F4 ï½” ï¼´ ï½”
+A3F5 A3D5 A3F5 u U u
+A3F6 A3D6 A3F6 ï½– ï¼¶ ï½–
+A3F7 A3D7 A3F7 ï½— ï¼· ï½—
+A3F8 A3D8 A3F8 x X x
+A3F9 A3D9 A3F9 ï½™ ï¼¹ ï½™
+A3FA A3DA A3FA z Z z
+A6A1 A6A1 A6C1 Α Α α
+A6A2 A6A2 A6C2 Β Β β
+A6A3 A6A3 A6C3 Γ Γ γ
+A6A4 A6A4 A6C4 Δ Δ δ
+A6A5 A6A5 A6C5 Ε Ε ε
+A6A6 A6A6 A6C6 Ζ Ζ ζ
+A6A7 A6A7 A6C7 Η Η η
+A6A8 A6A8 A6C8 Θ Θ θ
+A6A9 A6A9 A6C9 Ι Ι ι
+A6AA A6AA A6CA Κ Κ κ
+A6AB A6AB A6CB Λ Λ λ
+A6AC A6AC A6CC Μ Μ μ
+A6AD A6AD A6CD ΠΠν
+A6AE A6AE A6CE Ξ Ξ ξ
+A6AF A6AF A6CF Ο Ο ο
+A6B0 A6B0 A6D0 Π Π π
+A6B1 A6B1 A6D1 Ρ Ρ Ï
+A6B2 A6B2 A6D2 Σ Σ σ
+A6B3 A6B3 A6D3 Τ Τ τ
+A6B4 A6B4 A6D4 Υ Υ υ
+A6B5 A6B5 A6D5 Φ Φ φ
+A6B6 A6B6 A6D6 Χ Χ χ
+A6B7 A6B7 A6D7 Ψ Ψ ψ
+A6B8 A6B8 A6D8 Ω Ω ω
+A6C1 A6A1 A6C1 α Α α
+A6C2 A6A2 A6C2 β Β β
+A6C3 A6A3 A6C3 γ Γ γ
+A6C4 A6A4 A6C4 δ Δ δ
+A6C5 A6A5 A6C5 ε Ε ε
+A6C6 A6A6 A6C6 ζ Ζ ζ
+A6C7 A6A7 A6C7 η Η η
+A6C8 A6A8 A6C8 θ Θ θ
+A6C9 A6A9 A6C9 ι Ι ι
+A6CA A6AA A6CA κ Κ κ
+A6CB A6AB A6CB λ Λ λ
+A6CC A6AC A6CC μ Μ μ
+A6CD A6AD A6CD ν Πν
+A6CE A6AE A6CE ξ Ξ ξ
+A6CF A6AF A6CF ο Ο ο
+A6D0 A6B0 A6D0 π Π π
+A6D1 A6B1 A6D1 Ï Î¡ Ï
+A6D2 A6B2 A6D2 σ Σ σ
+A6D3 A6B3 A6D3 τ Τ τ
+A6D4 A6B4 A6D4 υ Υ υ
+A6D5 A6B5 A6D5 φ Φ φ
+A6D6 A6B6 A6D6 χ Χ χ
+A6D7 A6B7 A6D7 ψ Ψ ψ
+A6D8 A6B8 A6D8 ω Ω ω
+A7A1 A7A1 A7D1 РРа
+A7A2 A7A2 A7D2 Б Б б
+A7A3 A7A3 A7D3 В В в
+A7A4 A7A4 A7D4 Г Г г
+A7A5 A7A5 A7D5 Д Д д
+A7A6 A7A6 A7D6 Е Е е
+A7A7 A7A7 A7D7 Ð Ð Ñ‘
+A7A8 A7A8 A7D8 Ж Ж ж
+A7A9 A7A9 A7D9 З З з
+A7AA A7AA A7DA И И и
+A7AB A7AB A7DB Й Й й
+A7AC A7AC A7DC К К к
+A7AD A7AD A7DD Л Л л
+A7AE A7AE A7DE М М м
+A7AF A7AF A7DF РРн
+A7B0 A7B0 A7E0 О О о
+A7B1 A7B1 A7E1 П П п
+A7B2 A7B2 A7E2 Р Р р
+A7B3 A7B3 A7E3 С С Ñ
+A7B4 A7B4 A7E4 Т Т т
+A7B5 A7B5 A7E5 У У у
+A7B6 A7B6 A7E6 Ф Ф ф
+A7B7 A7B7 A7E7 Х Х х
+A7B8 A7B8 A7E8 Ц Ц ц
+A7B9 A7B9 A7E9 Ч Ч ч
+A7BA A7BA A7EA Ш Ш ш
+A7BB A7BB A7EB Щ Щ щ
+A7BC A7BC A7EC Ъ Ъ ъ
+A7BD A7BD A7ED Ы Ы ы
+A7BE A7BE A7EE Ь Ь ь
+A7BF A7BF A7EF Э Э Ñ
+A7C0 A7C0 A7F0 Ю Ю ю
+A7C1 A7C1 A7F1 Я Я Ñ
+A7D1 A7A1 A7D1 а Ра
+A7D2 A7A2 A7D2 б Б б
+A7D3 A7A3 A7D3 в В в
+A7D4 A7A4 A7D4 г Г г
+A7D5 A7A5 A7D5 д Д д
+A7D6 A7A6 A7D6 е Е е
+A7D7 A7A7 A7D7 Ñ‘ Ð Ñ‘
+A7D8 A7A8 A7D8 ж Ж ж
+A7D9 A7A9 A7D9 з З з
+A7DA A7AA A7DA и И и
+A7DB A7AB A7DB й Й й
+A7DC A7AC A7DC к К к
+A7DD A7AD A7DD л Л л
+A7DE A7AE A7DE м М м
+A7DF A7AF A7DF н Рн
+A7E0 A7B0 A7E0 о О о
+A7E1 A7B1 A7E1 п П п
+A7E2 A7B2 A7E2 р Р р
+A7E3 A7B3 A7E3 Ñ Ð¡ Ñ
+A7E4 A7B4 A7E4 т Т т
+A7E5 A7B5 A7E5 у У у
+A7E6 A7B6 A7E6 ф Ф ф
+A7E7 A7B7 A7E7 х Х х
+A7E8 A7B8 A7E8 ц Ц ц
+A7E9 A7B9 A7E9 ч Ч ч
+A7EA A7BA A7EA ш Ш ш
+A7EB A7BB A7EB щ Щ щ
+A7EC A7BC A7EC ъ Ъ ъ
+A7ED A7BD A7ED ы Ы ы
+A7EE A7BE A7EE ь Ь ь
+A7EF A7BF A7EF Ñ Ð­ Ñ
+A7F0 A7C0 A7F0 ю Ю ю
+A7F1 A7C1 A7F1 Ñ Ð¯ Ñ
+SELECT * FROM t1
+WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
+HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+code a
+A2FB â…ª
+A2FC â…«
+SELECT * FROM t1
+WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
+HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+code a
+A8A1 Ä
+A8A2 á
+A8A3 ÇŽ
+A8A4 à
+A8A5 Ä“
+A8A6 é
+A8A7 Ä›
+A8A8 è
+A8A9 Ä«
+A8AA í
+A8AB Ç
+A8AC ì
+A8AD Å
+A8AE ó
+A8AF Ç’
+A8B0 ò
+A8B1 Å«
+A8B2 ú
+A8B3 Ç”
+A8B4 ù
+A8B5 Ç–
+A8B6 ǘ
+A8B7 Çš
+A8B8 ǜ
+A8B9 ü
+A8BA ê
+A8BD Å„
+A8BE ň
+DROP TABLE t1;
+#
+# End of 5.5 tests
+#
diff --git a/mysql-test/r/ctype_ldml.result b/mysql-test/r/ctype_ldml.result
index d5585dcfad9..3373e31539f 100644
--- a/mysql-test/r/ctype_ldml.result
+++ b/mysql-test/r/ctype_ldml.result
@@ -1,11 +1,43 @@
drop table if exists t1;
+In the following tests we change the order of letter "b"
+making it equal to letter "a", and check that it works
+with all Unicode character sets
set names utf8;
show variables like 'character_sets_dir%';
Variable_name Value
character_sets_dir MYSQL_TEST_DIR/std_data/
+show collation like 'utf8_phone_ci';
+Collation Charset Id Default Compiled Sortlen
+utf8_phone_ci utf8 352 8
+CREATE TABLE t1 (
+name VARCHAR(64),
+phone VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_phone_ci
+);
+INSERT INTO t1 VALUES ('Svoj','+7 912 800 80 02');
+INSERT INTO t1 VALUES ('Hf','+7 (912) 800 80 04');
+INSERT INTO t1 VALUES ('Bar','+7-912-800-80-01');
+INSERT INTO t1 VALUES ('Ramil','(7912) 800 80 03');
+INSERT INTO t1 VALUES ('Sanja','+380 (912) 8008005');
+SELECT * FROM t1 ORDER BY phone;
+name phone
+Sanja +380 (912) 8008005
+Bar +7-912-800-80-01
+Svoj +7 912 800 80 02
+Ramil (7912) 800 80 03
+Hf +7 (912) 800 80 04
+SELECT * FROM t1 WHERE phone='+7(912)800-80-01';
+name phone
+Bar +7-912-800-80-01
+SELECT * FROM t1 WHERE phone='79128008001';
+name phone
+Bar +7-912-800-80-01
+SELECT * FROM t1 WHERE phone='7 9 1 2 8 0 0 8 0 0 1';
+name phone
+Bar +7-912-800-80-01
+DROP TABLE t1;
show collation like 'utf8_test_ci';
Collation Charset Id Default Compiled Sortlen
-utf8_test_ci utf8 240 8
+utf8_test_ci utf8 353 8
create table t1 (c1 char(1) character set utf8 collate utf8_test_ci);
insert into t1 values ('a');
select * from t1 where c1='b';
@@ -14,7 +46,7 @@ a
drop table t1;
show collation like 'ucs2_test_ci';
Collation Charset Id Default Compiled Sortlen
-ucs2_test_ci ucs2 241 8
+ucs2_test_ci ucs2 358 8
create table t1 (c1 char(1) character set ucs2 collate ucs2_test_ci);
insert into t1 values ('a');
select * from t1 where c1='b';
@@ -56,9 +88,10 @@ INSERT INTO t1 SELECT REPEAT('a',11);
Warnings:
Warning 1265 Data truncated for column 'c1' at row 1
DROP TABLE t1;
+Vietnamese experimental collation
show collation like 'ucs2_vn_ci';
Collation Charset Id Default Compiled Sortlen
-ucs2_vn_ci ucs2 242 8
+ucs2_vn_ci ucs2 359 8
create table t1 (c1 char(1) character set ucs2 collate ucs2_vn_ci);
insert into t1 values (0x0061),(0x0041),(0x00E0),(0x00C0),(0x1EA3),(0x1EA2),
(0x00E3),(0x00C3),(0x00E1),(0x00C1),(0x1EA1),(0x1EA0);
@@ -337,3 +370,40 @@ latin1_test latin1 99 Yes 1
select "foo" = "foo " collate latin1_test;
"foo" = "foo " collate latin1_test
1
+The following tests check that two-byte collation IDs work
+select * from information_schema.collations where id>256 order by id;
+COLLATION_NAME CHARACTER_SET_NAME ID IS_DEFAULT IS_COMPILED SORTLEN
+utf8_phone_ci utf8 352 8
+utf8_test_ci utf8 353 8
+ucs2_test_ci ucs2 358 8
+ucs2_vn_ci ucs2 359 8
+utf8_maxuserid_ci utf8 2047 8
+show collation like '%test%';
+Collation Charset Id Default Compiled Sortlen
+latin1_test latin1 99 Yes 1
+utf8_test_ci utf8 353 8
+ucs2_test_ci ucs2 358 8
+show collation like 'ucs2_vn_ci';
+Collation Charset Id Default Compiled Sortlen
+ucs2_vn_ci ucs2 359 8
+create table t1 (c1 char(1) character set ucs2 collate ucs2_vn_ci);
+insert into t1 values (0x0061);
+set @@character_set_results=NULL;
+select * from t1;
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def test t1 t1 c1 c1 254 2 2 Y 0 0 359
+c1
+
+drop table t1;
+CREATE TABLE t1 (s1 char(10) character set utf8 collate utf8_maxuserid_ci);
+INSERT INTO t1 VALUES ('a'),('b');
+SELECT * FROM t1 WHERE s1='a' ORDER BY BINARY s1;
+s1
+a
+b
+DROP TABLE t1;
+SET NAMES utf8 COLLATE utf8_phone_ci;
+SHOW COLLATION LIKE 'utf8_phone_ci';
+Collation Charset Id Default Compiled Sortlen
+utf8_phone_ci utf8 352 8
+SET NAMES utf8;
diff --git a/mysql-test/r/ctype_recoding.result b/mysql-test/r/ctype_recoding.result
index ee95812c03e..15eb0ad2c55 100644
--- a/mysql-test/r/ctype_recoding.result
+++ b/mysql-test/r/ctype_recoding.result
@@ -162,10 +162,10 @@ Field Type Null Key Default Extra
DROP TABLE t1;
SET NAMES binary;
CREATE TABLE `goodÐÌÏÈÏ` (a int);
-ERROR HY000: Invalid utf8 character string: 'ÐÌÏÈÏ'
+ERROR HY000: Invalid utf8 character string: 'good\xD0\xCC\xCF\xC8\xCF'
SET NAMES utf8;
CREATE TABLE `goodÐÌÏÈÏ` (a int);
-ERROR HY000: Invalid utf8 character string: 'ÐÌÏÈÏ'
+ERROR HY000: Invalid utf8 character string: 'good\xD0\xCC\xCF\xC8\xCF'
set names latin1;
create table t1 (a char(10) character set koi8r, b text character set koi8r);
insert into t1 values ('test','test');
diff --git a/mysql-test/r/ctype_sjis.result b/mysql-test/r/ctype_sjis.result
index 1469e335f23..f450dd0488d 100644
--- a/mysql-test/r/ctype_sjis.result
+++ b/mysql-test/r/ctype_sjis.result
@@ -219,3 +219,290 @@ hex(a) hex(lower(a)) hex(upper(a))
8372835E 8372835E 8372835E
DROP TABLE t1;
# End of 5.1 tests
+#
+# Start of 5.5 tests
+#
+#
+# Testing WL#4583 Case conversion in Asian character sets
+#
+SET NAMES utf8;
+SET collation_connection=sjis_japanese_ci;
+CREATE TABLE t1 (b VARCHAR(2));
+INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
+INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
+CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
+CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
+DROP TABLE t1;
+CREATE TABLE t1 AS
+SELECT concat(head, tail) AS code, ' ' AS a
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN 'A1' AND 'DF')
+AND (tail BETWEEN '20' AND 'FF')
+ORDER BY head, tail;
+INSERT t1 (code) SELECT head FROM head WHERE (head BETWEEN 'A1' AND 'DF');
+DROP TEMPORARY TABLE head, tail;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `code` varchar(8) DEFAULT NULL,
+ `a` varchar(1) CHARACTER SET sjis NOT NULL DEFAULT ''
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+UPDATE t1 SET a=unhex(code) ORDER BY code;
+Warnings:
+Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
+Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
+Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
+Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
+Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
+Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
+Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
+Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
+Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
+Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
+Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
+Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
+Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
+Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
+Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
+Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
+Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
+Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
+Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
+Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
+Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
+Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
+Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
+Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
+Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
+Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
+Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
+Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
+Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
+Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
+Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
+Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
+Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
+Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
+Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
+Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
+Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
+Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
+Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
+Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
+Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
+Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
+Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
+Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
+Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
+Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
+Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
+Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
+Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
+Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
+Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
+Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
+Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
+Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
+Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
+Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
+Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
+Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
+Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
+Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
+Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
+Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
+Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
+Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+14623
+SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=1;
+COUNT(*)
+63
+SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2;
+COUNT(*)
+11280
+SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a)
+FROM t1
+WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a))
+ORDER BY code;
+code hex(upper(a)) hex(lower(a)) a upper(a) lower(a)
+8260 8260 8281 A A ï½
+8261 8261 8282 B B b
+8262 8262 8283 C C c
+8263 8263 8284 D D d
+8264 8264 8285 ï¼¥ ï¼¥ ï½…
+8265 8265 8286 F F f
+8266 8266 8287 G G g
+8267 8267 8288 H H h
+8268 8268 8289 I I i
+8269 8269 828A J J j
+826A 826A 828B K K k
+826B 826B 828C L L l
+826C 826C 828D ï¼­ ï¼­ ï½
+826D 826D 828E N N n
+826E 826E 828F O O ï½
+826F 826F 8290 ï¼° ï¼° ï½
+8270 8270 8291 Q Q q
+8271 8271 8292 ï¼² ï¼² ï½’
+8272 8272 8293 S S s
+8273 8273 8294 ï¼´ ï¼´ ï½”
+8274 8274 8295 U U u
+8275 8275 8296 ï¼¶ ï¼¶ ï½–
+8276 8276 8297 ï¼· ï¼· ï½—
+8277 8277 8298 X X x
+8278 8278 8299 ï¼¹ ï¼¹ ï½™
+8279 8279 829A Z Z z
+8281 8260 8281 ï½ ï¼¡ ï½
+8282 8261 8282 b B b
+8283 8262 8283 c C c
+8284 8263 8284 d D d
+8285 8264 8285 ï½… ï¼¥ ï½…
+8286 8265 8286 f F f
+8287 8266 8287 g G g
+8288 8267 8288 h H h
+8289 8268 8289 i I i
+828A 8269 828A j J j
+828B 826A 828B k K k
+828C 826B 828C l L l
+828D 826C 828D ï½ ï¼­ ï½
+828E 826D 828E n N n
+828F 826E 828F ï½ ï¼¯ ï½
+8290 826F 8290 ï½ ï¼° ï½
+8291 8270 8291 q Q q
+8292 8271 8292 ï½’ ï¼² ï½’
+8293 8272 8293 s S s
+8294 8273 8294 ï½” ï¼´ ï½”
+8295 8274 8295 u U u
+8296 8275 8296 ï½– ï¼¶ ï½–
+8297 8276 8297 ï½— ï¼· ï½—
+8298 8277 8298 x X x
+8299 8278 8299 ï½™ ï¼¹ ï½™
+829A 8279 829A z Z z
+839F 839F 83BF Α Α α
+83A0 83A0 83C0 Β Β β
+83A1 83A1 83C1 Γ Γ γ
+83A2 83A2 83C2 Δ Δ δ
+83A3 83A3 83C3 Ε Ε ε
+83A4 83A4 83C4 Ζ Ζ ζ
+83A5 83A5 83C5 Η Η η
+83A6 83A6 83C6 Θ Θ θ
+83A7 83A7 83C7 Ι Ι ι
+83A8 83A8 83C8 Κ Κ κ
+83A9 83A9 83C9 Λ Λ λ
+83AA 83AA 83CA Μ Μ μ
+83AB 83AB 83CB ΠΠν
+83AC 83AC 83CC Ξ Ξ ξ
+83AD 83AD 83CD Ο Ο ο
+83AE 83AE 83CE Π Π π
+83AF 83AF 83CF Ρ Ρ Ï
+83B0 83B0 83D0 Σ Σ σ
+83B1 83B1 83D1 Τ Τ τ
+83B2 83B2 83D2 Υ Υ υ
+83B3 83B3 83D3 Φ Φ φ
+83B4 83B4 83D4 Χ Χ χ
+83B5 83B5 83D5 Ψ Ψ ψ
+83B6 83B6 83D6 Ω Ω ω
+83BF 839F 83BF α Α α
+83C0 83A0 83C0 β Β β
+83C1 83A1 83C1 γ Γ γ
+83C2 83A2 83C2 δ Δ δ
+83C3 83A3 83C3 ε Ε ε
+83C4 83A4 83C4 ζ Ζ ζ
+83C5 83A5 83C5 η Η η
+83C6 83A6 83C6 θ Θ θ
+83C7 83A7 83C7 ι Ι ι
+83C8 83A8 83C8 κ Κ κ
+83C9 83A9 83C9 λ Λ λ
+83CA 83AA 83CA μ Μ μ
+83CB 83AB 83CB ν Πν
+83CC 83AC 83CC ξ Ξ ξ
+83CD 83AD 83CD ο Ο ο
+83CE 83AE 83CE π Π π
+83CF 83AF 83CF Ï Î¡ Ï
+83D0 83B0 83D0 σ Σ σ
+83D1 83B1 83D1 τ Τ τ
+83D2 83B2 83D2 υ Υ υ
+83D3 83B3 83D3 φ Φ φ
+83D4 83B4 83D4 χ Χ χ
+83D5 83B5 83D5 ψ Ψ ψ
+83D6 83B6 83D6 ω Ω ω
+8440 8440 8470 РРа
+8441 8441 8471 Б Б б
+8442 8442 8472 В В в
+8443 8443 8473 Г Г г
+8444 8444 8474 Д Д д
+8445 8445 8475 Е Е е
+8446 8446 8476 Ð Ð Ñ‘
+8447 8447 8477 Ж Ж ж
+8448 8448 8478 З З з
+8449 8449 8479 И И и
+844A 844A 847A Й Й й
+844B 844B 847B К К к
+844C 844C 847C Л Л л
+844D 844D 847D М М м
+844E 844E 847E РРн
+844F 844F 8480 О О о
+8450 8450 8481 П П п
+8451 8451 8482 Р Р р
+8452 8452 8483 С С Ñ
+8453 8453 8484 Т Т т
+8454 8454 8485 У У у
+8455 8455 8486 Ф Ф ф
+8456 8456 8487 Х Х х
+8457 8457 8488 Ц Ц ц
+8458 8458 8489 Ч Ч ч
+8459 8459 848A Ш Ш ш
+845A 845A 848B Щ Щ щ
+845B 845B 848C Ъ Ъ ъ
+845C 845C 848D Ы Ы ы
+845D 845D 848E Ь Ь ь
+845E 845E 848F Э Э Ñ
+845F 845F 8490 Ю Ю ю
+8460 8460 8491 Я Я Ñ
+8470 8440 8470 а Ра
+8471 8441 8471 б Б б
+8472 8442 8472 в В в
+8473 8443 8473 г Г г
+8474 8444 8474 д Д д
+8475 8445 8475 е Е е
+8476 8446 8476 Ñ‘ Ð Ñ‘
+8477 8447 8477 ж Ж ж
+8478 8448 8478 з З з
+8479 8449 8479 и И и
+847A 844A 847A й Й й
+847B 844B 847B к К к
+847C 844C 847C л Л л
+847D 844D 847D м М м
+847E 844E 847E н Рн
+8480 844F 8480 о О о
+8481 8450 8481 п П п
+8482 8451 8482 р Р р
+8483 8452 8483 Ñ Ð¡ Ñ
+8484 8453 8484 т Т т
+8485 8454 8485 у У у
+8486 8455 8486 ф Ф ф
+8487 8456 8487 х Х х
+8488 8457 8488 ц Ц ц
+8489 8458 8489 ч Ч ч
+848A 8459 848A ш Ш ш
+848B 845A 848B щ Щ щ
+848C 845B 848C ъ Ъ ъ
+848D 845C 848D ы Ы ы
+848E 845D 848E ь Ь ь
+848F 845E 848F Ñ Ð­ Ñ
+8490 845F 8490 ю Ю ю
+8491 8460 8491 Ñ Ð¯ Ñ
+SELECT * FROM t1
+WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
+HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+code a
+81F0 â„«
+SELECT * FROM t1
+WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
+HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+code a
+DROP TABLE t1;
+#
+# End of 5.5 tests
+#
diff --git a/mysql-test/r/ctype_ucs2_def.result b/mysql-test/r/ctype_ucs2_def.result
index 005d46062fb..af69a9e77d6 100644
--- a/mysql-test/r/ctype_ucs2_def.result
+++ b/mysql-test/r/ctype_ucs2_def.result
@@ -19,7 +19,7 @@ col2 VARCHAR(32) CHARACTER SET ucs2 COLLATE ucs2_bin NOT NULL,
UNIQUE KEY key1 USING HASH (col1, col2)) ENGINE=MEMORY;
INSERT INTO t1 VALUES('A', 'A'), ('B', 'B'), ('C', 'C');
INSERT INTO t1 VALUES('A ', 'A ');
-ERROR 23000: Duplicate entry '' for key 'key1'
+ERROR 23000: Duplicate entry 'A -A ' for key 'key1'
DROP TABLE t1;
CREATE TABLE t1 (
c1 CHAR(255) CHARACTER SET UCS2 COLLATE UCS2_BIN NOT NULL,
diff --git a/mysql-test/r/ctype_ujis.result b/mysql-test/r/ctype_ujis.result
index 540ba178756..1c4cfcd6ec5 100644
--- a/mysql-test/r/ctype_ujis.result
+++ b/mysql-test/r/ctype_ujis.result
@@ -2377,3 +2377,535 @@ DROP TABLE t2;
set names default;
set character_set_database=default;
set character_set_server=default;
+#
+# Start of 5.5 tests
+#
+#
+# Testing WL#4583 Case conversion in Asian character sets
+#
+SET NAMES utf8;
+SET collation_connection=ujis_japanese_ci;
+CREATE TABLE t1 (b VARCHAR(2));
+INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
+INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
+CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
+CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
+DROP TABLE t1;
+CREATE TABLE t1 AS SELECT 'XXXXXX' AS code, ' ' AS a LIMIT 0;
+INSERT INTO t1 (code) SELECT concat('8E', head) FROM head
+WHERE (head BETWEEN 'A1' AND 'DF') ORDER BY head;
+INSERT INTO t1 (code) SELECT concat(head, tail)
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN '8E' AND '8F')
+AND (tail BETWEEN '20' AND 'FF')
+ORDER BY head, tail;
+INSERT INTO t1 (code) SELECT concat('8F', head, tail)
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '80' AND 'FF')
+ORDER BY head, tail;
+DROP TEMPORARY TABLE head, tail;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `code` varchar(6) CHARACTER SET ujis NOT NULL DEFAULT '',
+ `a` varchar(1) CHARACTER SET ujis NOT NULL DEFAULT ''
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+UPDATE t1 SET a=unhex(code) ORDER BY code;
+Warnings:
+Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
+Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
+Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
+Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
+Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
+Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
+Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
+Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
+Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
+Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
+Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
+Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
+Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
+Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
+Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
+Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
+Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
+Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
+Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
+Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
+Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
+Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
+Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
+Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
+Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
+Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
+Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
+Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
+Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
+Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
+Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
+Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
+Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
+Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
+Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
+Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
+Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
+Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
+Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
+Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
+Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
+Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
+Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
+Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
+Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
+Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
+Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
+Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
+Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
+Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
+Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
+Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
+Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
+Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
+Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
+Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
+Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
+Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
+Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
+Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
+Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
+Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
+Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
+Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+44671
+SELECT COUNT(*) FROM t1 WHERE a<>'';
+COUNT(*)
+17735
+SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2;
+COUNT(*)
+8899
+SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=3;
+COUNT(*)
+8836
+SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)) ORDER BY code;
+code hex(upper(a)) hex(lower(a)) a upper(a) lower(a)
+8FA6E1 8FA6E1 8FA6F1 Ά Ά ά
+8FA6E2 8FA6E2 8FA6F2 Έ Έ έ
+8FA6E3 8FA6E3 8FA6F3 Ή Ή ή
+8FA6E4 8FA6E4 8FA6F4 Ί Ί ί
+8FA6E5 8FA6E5 8FA6F5 Ϊ Ϊ ϊ
+8FA6E7 8FA6E7 8FA6F7 Ό Ό ό
+8FA6E9 8FA6E9 8FA6F9 ÎŽ ÎŽ Ï
+8FA6EA 8FA6EA 8FA6FA Ϋ Ϋ ϋ
+8FA6EC 8FA6EC 8FA6FC Î Î ÏŽ
+8FA6F1 8FA6E1 8FA6F1 ά Ά ά
+8FA6F2 8FA6E2 8FA6F2 έ Έ έ
+8FA6F3 8FA6E3 8FA6F3 ή Ή ή
+8FA6F4 8FA6E4 8FA6F4 ί Ί ί
+8FA6F5 8FA6E5 8FA6F5 ϊ Ϊ ϊ
+8FA6F7 8FA6E7 8FA6F7 ό Ό ό
+8FA6F8 A6B2 8FA6F8 ς Σ ς
+8FA6F9 8FA6E9 8FA6F9 Ï ÎŽ Ï
+8FA6FA 8FA6EA 8FA6FA ϋ Ϋ ϋ
+8FA6FC 8FA6EC 8FA6FC ÏŽ Î ÏŽ
+8FA7C2 8FA7C2 8FA7F2 Ђ Ђ ђ
+8FA7C3 8FA7C3 8FA7F3 Ѓ Ѓ ѓ
+8FA7C4 8FA7C4 8FA7F4 Є Є є
+8FA7C5 8FA7C5 8FA7F5 Ð… Ð… Ñ•
+8FA7C6 8FA7C6 8FA7F6 І І і
+8FA7C7 8FA7C7 8FA7F7 Ї Ї ї
+8FA7C8 8FA7C8 8FA7F8 Ј Ј ј
+8FA7C9 8FA7C9 8FA7F9 Љ Љ љ
+8FA7CA 8FA7CA 8FA7FA Њ Њ њ
+8FA7CB 8FA7CB 8FA7FB Ћ Ћ ћ
+8FA7CC 8FA7CC 8FA7FC Ќ Ќ ќ
+8FA7CD 8FA7CD 8FA7FD ÐŽ ÐŽ Ñž
+8FA7CE 8FA7CE 8FA7FE Ð Ð ÑŸ
+8FA7F2 8FA7C2 8FA7F2 ђ Ђ ђ
+8FA7F3 8FA7C3 8FA7F3 ѓ Ѓ ѓ
+8FA7F4 8FA7C4 8FA7F4 є Є є
+8FA7F5 8FA7C5 8FA7F5 Ñ• Ð… Ñ•
+8FA7F6 8FA7C6 8FA7F6 і І і
+8FA7F7 8FA7C7 8FA7F7 ї Ї ї
+8FA7F8 8FA7C8 8FA7F8 ј Ј ј
+8FA7F9 8FA7C9 8FA7F9 љ Љ љ
+8FA7FA 8FA7CA 8FA7FA њ Њ њ
+8FA7FB 8FA7CB 8FA7FB ћ Ћ ћ
+8FA7FC 8FA7CC 8FA7FC ќ Ќ ќ
+8FA7FD 8FA7CD 8FA7FD Ñž ÐŽ Ñž
+8FA7FE 8FA7CE 8FA7FE ÑŸ Ð ÑŸ
+8FA9A1 8FA9A1 8FA9C1 Æ Æ æ
+8FA9A2 8FA9A2 8FA9C2 Ä Ä Ä‘
+8FA9A4 8FA9A4 8FA9C4 Ħ Ħ ħ
+8FA9A6 8FA9A6 8FA9C6 IJ IJ ij
+8FA9A8 8FA9A8 8FA9C8 Å Å Å‚
+8FA9A9 8FA9A9 8FA9C9 Ŀ Ŀ ŀ
+8FA9AB 8FA9AB 8FA9CB ÅŠ ÅŠ Å‹
+8FA9AC 8FA9AC 8FA9CC Ø Ø ø
+8FA9AD 8FA9AD 8FA9CD Å’ Å’ Å“
+8FA9AF 8FA9AF 8FA9CF Ŧ Ŧ ŧ
+8FA9B0 8FA9B0 8FA9D0 Þ Þ þ
+8FA9C1 8FA9A1 8FA9C1 æ Æ æ
+8FA9C2 8FA9A2 8FA9C2 Ä‘ Ä Ä‘
+8FA9C4 8FA9A4 8FA9C4 ħ Ħ ħ
+8FA9C5 49 8FA9C5 ı I ı
+8FA9C6 8FA9A6 8FA9C6 ij IJ ij
+8FA9C8 8FA9A8 8FA9C8 Å‚ Å Å‚
+8FA9C9 8FA9A9 8FA9C9 ŀ Ŀ ŀ
+8FA9CB 8FA9AB 8FA9CB Å‹ ÅŠ Å‹
+8FA9CC 8FA9AC 8FA9CC ø Ø ø
+8FA9CD 8FA9AD 8FA9CD Å“ Å’ Å“
+8FA9CF 8FA9AF 8FA9CF ŧ Ŧ ŧ
+8FA9D0 8FA9B0 8FA9D0 þ Þ þ
+8FAAA1 8FAAA1 8FABA1 à à á
+8FAAA2 8FAAA2 8FABA2 À À à
+8FAAA3 8FAAA3 8FABA3 Ä Ä ä
+8FAAA4 8FAAA4 8FABA4 Â Â â
+8FAAA5 8FAAA5 8FABA5 Ă Ă ă
+8FAAA6 8FAAA6 8FABA6 Ç Ç ÇŽ
+8FAAA7 8FAAA7 8FABA7 Ä€ Ä€ Ä
+8FAAA8 8FAAA8 8FABA8 Ä„ Ä„ Ä…
+8FAAA9 8FAAA9 8FABA9 Å Å å
+8FAAAA 8FAAAA 8FABAA Ã Ã ã
+8FAAAB 8FAAAB 8FABAB Ć Ć ć
+8FAAAC 8FAAAC 8FABAC Ĉ Ĉ ĉ
+8FAAAD 8FAAAD 8FABAD ÄŒ ÄŒ Ä
+8FAAAE 8FAAAE 8FABAE Ç Ç ç
+8FAAAF 8FAAAF 8FABAF ÄŠ ÄŠ Ä‹
+8FAAB0 8FAAB0 8FABB0 ÄŽ ÄŽ Ä
+8FAAB1 8FAAB1 8FABB1 É É é
+8FAAB2 8FAAB2 8FABB2 È È è
+8FAAB3 8FAAB3 8FABB3 Ë Ë ë
+8FAAB4 8FAAB4 8FABB4 Ê Ê ê
+8FAAB5 8FAAB5 8FABB5 Äš Äš Ä›
+8FAAB6 8FAAB6 8FABB6 Ä– Ä– Ä—
+8FAAB7 8FAAB7 8FABB7 Ä’ Ä’ Ä“
+8FAAB8 8FAAB8 8FABB8 Ę Ę ę
+8FAABA 8FAABA 8FABBA Äœ Äœ Ä
+8FAABB 8FAABB 8FABBB Äž Äž ÄŸ
+8FAABD 8FAABD 8FABBD Ä  Ä  Ä¡
+8FAABE 8FAABE 8FABBE Ĥ Ĥ ĥ
+8FAABF 8FAABF 8FABBF à à í
+8FAAC0 8FAAC0 8FABC0 Ì Ì ì
+8FAAC1 8FAAC1 8FABC1 à à ï
+8FAAC2 8FAAC2 8FABC2 Î Î î
+8FAAC3 8FAAC3 8FABC3 Ç Ç Ç
+8FAAC4 8FAAC4 69 İ İ i
+8FAAC5 8FAAC5 8FABC5 Ī Ī ī
+8FAAC6 8FAAC6 8FABC6 Į Į į
+8FAAC7 8FAAC7 8FABC7 Ĩ Ĩ ĩ
+8FAAC8 8FAAC8 8FABC8 Ĵ Ĵ ĵ
+8FAAC9 8FAAC9 8FABC9 Ķ Ķ ķ
+8FAACA 8FAACA 8FABCA Ĺ Ĺ ĺ
+8FAACB 8FAACB 8FABCB Ľ Ľ ľ
+8FAACC 8FAACC 8FABCC Ļ Ļ ļ
+8FAACD 8FAACD 8FABCD Ń Ń ń
+8FAACE 8FAACE 8FABCE Ň Ň ň
+8FAACF 8FAACF 8FABCF Ņ Ņ ņ
+8FAAD0 8FAAD0 8FABD0 Ñ Ñ ñ
+8FAAD1 8FAAD1 8FABD1 Ó Ó ó
+8FAAD2 8FAAD2 8FABD2 Ò Ò ò
+8FAAD3 8FAAD3 8FABD3 Ö Ö ö
+8FAAD4 8FAAD4 8FABD4 Ô Ô ô
+8FAAD5 8FAAD5 8FABD5 Ç‘ Ç‘ Ç’
+8FAAD6 8FAAD6 8FABD6 Å Å Å‘
+8FAAD7 8FAAD7 8FABD7 ÅŒ ÅŒ Å
+8FAAD8 8FAAD8 8FABD8 Õ Õ õ
+8FAAD9 8FAAD9 8FABD9 Å” Å” Å•
+8FAADA 8FAADA 8FABDA Ř Ř ř
+8FAADB 8FAADB 8FABDB Å– Å– Å—
+8FAADC 8FAADC 8FABDC Åš Åš Å›
+8FAADD 8FAADD 8FABDD Åœ Åœ Å
+8FAADE 8FAADE 8FABDE Å  Å  Å¡
+8FAADF 8FAADF 8FABDF Åž Åž ÅŸ
+8FAAE0 8FAAE0 8FABE0 Ť Ť ť
+8FAAE1 8FAAE1 8FABE1 Ţ Ţ ţ
+8FAAE2 8FAAE2 8FABE2 Ú Ú ú
+8FAAE3 8FAAE3 8FABE3 Ù Ù ù
+8FAAE4 8FAAE4 8FABE4 Ü Ü ü
+8FAAE5 8FAAE5 8FABE5 Û Û û
+8FAAE6 8FAAE6 8FABE6 Ŭ Ŭ ŭ
+8FAAE7 8FAAE7 8FABE7 Ç“ Ç“ Ç”
+8FAAE8 8FAAE8 8FABE8 Ű Ű ű
+8FAAE9 8FAAE9 8FABE9 Ū Ū ū
+8FAAEA 8FAAEA 8FABEA Ų Ų ų
+8FAAEB 8FAAEB 8FABEB Ů Ů ů
+8FAAEC 8FAAEC 8FABEC Ũ Ũ ũ
+8FAAED 8FAAED 8FABED Ǘ Ǘ ǘ
+8FAAEE 8FAAEE 8FABEE Ǜ Ǜ ǜ
+8FAAEF 8FAAEF 8FABEF Ç™ Ç™ Çš
+8FAAF0 8FAAF0 8FABF0 Ç• Ç• Ç–
+8FAAF1 8FAAF1 8FABF1 Ŵ Ŵ ŵ
+8FAAF2 8FAAF2 8FABF2 à à ý
+8FAAF3 8FAAF3 8FABF3 Ÿ Ÿ ÿ
+8FAAF4 8FAAF4 8FABF4 Ŷ Ŷ ŷ
+8FAAF5 8FAAF5 8FABF5 Ź Ź ź
+8FAAF6 8FAAF6 8FABF6 Ž Ž ž
+8FAAF7 8FAAF7 8FABF7 Ż Ż ż
+8FABA1 8FAAA1 8FABA1 á à á
+8FABA2 8FAAA2 8FABA2 à À à
+8FABA3 8FAAA3 8FABA3 ä Ä ä
+8FABA4 8FAAA4 8FABA4 â Â â
+8FABA5 8FAAA5 8FABA5 ă Ă ă
+8FABA6 8FAAA6 8FABA6 ÇŽ Ç ÇŽ
+8FABA7 8FAAA7 8FABA7 Ä Ä€ Ä
+8FABA8 8FAAA8 8FABA8 Ä… Ä„ Ä…
+8FABA9 8FAAA9 8FABA9 å Å å
+8FABAA 8FAAAA 8FABAA ã Ã ã
+8FABAB 8FAAAB 8FABAB ć Ć ć
+8FABAC 8FAAAC 8FABAC ĉ Ĉ ĉ
+8FABAD 8FAAAD 8FABAD Ä ÄŒ Ä
+8FABAE 8FAAAE 8FABAE ç Ç ç
+8FABAF 8FAAAF 8FABAF Ä‹ ÄŠ Ä‹
+8FABB0 8FAAB0 8FABB0 Ä ÄŽ Ä
+8FABB1 8FAAB1 8FABB1 é É é
+8FABB2 8FAAB2 8FABB2 è È è
+8FABB3 8FAAB3 8FABB3 ë Ë ë
+8FABB4 8FAAB4 8FABB4 ê Ê ê
+8FABB5 8FAAB5 8FABB5 Ä› Äš Ä›
+8FABB6 8FAAB6 8FABB6 Ä— Ä– Ä—
+8FABB7 8FAAB7 8FABB7 Ä“ Ä’ Ä“
+8FABB8 8FAAB8 8FABB8 ę Ę ę
+8FABBA 8FAABA 8FABBA Ä Äœ Ä
+8FABBB 8FAABB 8FABBB ÄŸ Äž ÄŸ
+8FABBD 8FAABD 8FABBD Ä¡ Ä  Ä¡
+8FABBE 8FAABE 8FABBE ĥ Ĥ ĥ
+8FABBF 8FAABF 8FABBF í à í
+8FABC0 8FAAC0 8FABC0 ì Ì ì
+8FABC1 8FAAC1 8FABC1 ï à ï
+8FABC2 8FAAC2 8FABC2 î Î î
+8FABC3 8FAAC3 8FABC3 Ç Ç Ç
+8FABC5 8FAAC5 8FABC5 ī Ī ī
+8FABC6 8FAAC6 8FABC6 į Į į
+8FABC7 8FAAC7 8FABC7 ĩ Ĩ ĩ
+8FABC8 8FAAC8 8FABC8 ĵ Ĵ ĵ
+8FABC9 8FAAC9 8FABC9 ķ Ķ ķ
+8FABCA 8FAACA 8FABCA ĺ Ĺ ĺ
+8FABCB 8FAACB 8FABCB ľ Ľ ľ
+8FABCC 8FAACC 8FABCC ļ Ļ ļ
+8FABCD 8FAACD 8FABCD ń Ń ń
+8FABCE 8FAACE 8FABCE ň Ň ň
+8FABCF 8FAACF 8FABCF ņ Ņ ņ
+8FABD0 8FAAD0 8FABD0 ñ Ñ ñ
+8FABD1 8FAAD1 8FABD1 ó Ó ó
+8FABD2 8FAAD2 8FABD2 ò Ò ò
+8FABD3 8FAAD3 8FABD3 ö Ö ö
+8FABD4 8FAAD4 8FABD4 ô Ô ô
+8FABD5 8FAAD5 8FABD5 Ç’ Ç‘ Ç’
+8FABD6 8FAAD6 8FABD6 Å‘ Å Å‘
+8FABD7 8FAAD7 8FABD7 Å ÅŒ Å
+8FABD8 8FAAD8 8FABD8 õ Õ õ
+8FABD9 8FAAD9 8FABD9 Å• Å” Å•
+8FABDA 8FAADA 8FABDA ř Ř ř
+8FABDB 8FAADB 8FABDB Å— Å– Å—
+8FABDC 8FAADC 8FABDC Å› Åš Å›
+8FABDD 8FAADD 8FABDD Å Åœ Å
+8FABDE 8FAADE 8FABDE Å¡ Å  Å¡
+8FABDF 8FAADF 8FABDF ÅŸ Åž ÅŸ
+8FABE0 8FAAE0 8FABE0 ť Ť ť
+8FABE1 8FAAE1 8FABE1 ţ Ţ ţ
+8FABE2 8FAAE2 8FABE2 ú Ú ú
+8FABE3 8FAAE3 8FABE3 ù Ù ù
+8FABE4 8FAAE4 8FABE4 ü Ü ü
+8FABE5 8FAAE5 8FABE5 û Û û
+8FABE6 8FAAE6 8FABE6 ŭ Ŭ ŭ
+8FABE7 8FAAE7 8FABE7 Ç” Ç“ Ç”
+8FABE8 8FAAE8 8FABE8 ű Ű ű
+8FABE9 8FAAE9 8FABE9 ū Ū ū
+8FABEA 8FAAEA 8FABEA ų Ų ų
+8FABEB 8FAAEB 8FABEB ů Ů ů
+8FABEC 8FAAEC 8FABEC ũ Ũ ũ
+8FABED 8FAAED 8FABED ǘ Ǘ ǘ
+8FABEE 8FAAEE 8FABEE ǜ Ǜ ǜ
+8FABEF 8FAAEF 8FABEF Çš Ç™ Çš
+8FABF0 8FAAF0 8FABF0 Ç– Ç• Ç–
+8FABF1 8FAAF1 8FABF1 ŵ Ŵ ŵ
+8FABF2 8FAAF2 8FABF2 ý à ý
+8FABF3 8FAAF3 8FABF3 ÿ Ÿ ÿ
+8FABF4 8FAAF4 8FABF4 ŷ Ŷ ŷ
+8FABF5 8FAAF5 8FABF5 ź Ź ź
+8FABF6 8FAAF6 8FABF6 ž Ž ž
+8FABF7 8FAAF7 8FABF7 ż Ż ż
+A2F2 A2F2 8FABA9 Å Å å
+A3C1 A3C1 A3E1 A A ï½
+A3C2 A3C2 A3E2 B B b
+A3C3 A3C3 A3E3 C C c
+A3C4 A3C4 A3E4 D D d
+A3C5 A3C5 A3E5 ï¼¥ ï¼¥ ï½…
+A3C6 A3C6 A3E6 F F f
+A3C7 A3C7 A3E7 G G g
+A3C8 A3C8 A3E8 H H h
+A3C9 A3C9 A3E9 I I i
+A3CA A3CA A3EA J J j
+A3CB A3CB A3EB K K k
+A3CC A3CC A3EC L L l
+A3CD A3CD A3ED ï¼­ ï¼­ ï½
+A3CE A3CE A3EE N N n
+A3CF A3CF A3EF O O ï½
+A3D0 A3D0 A3F0 ï¼° ï¼° ï½
+A3D1 A3D1 A3F1 Q Q q
+A3D2 A3D2 A3F2 ï¼² ï¼² ï½’
+A3D3 A3D3 A3F3 S S s
+A3D4 A3D4 A3F4 ï¼´ ï¼´ ï½”
+A3D5 A3D5 A3F5 U U u
+A3D6 A3D6 A3F6 ï¼¶ ï¼¶ ï½–
+A3D7 A3D7 A3F7 ï¼· ï¼· ï½—
+A3D8 A3D8 A3F8 X X x
+A3D9 A3D9 A3F9 ï¼¹ ï¼¹ ï½™
+A3DA A3DA A3FA Z Z z
+A3E1 A3C1 A3E1 ï½ ï¼¡ ï½
+A3E2 A3C2 A3E2 b B b
+A3E3 A3C3 A3E3 c C c
+A3E4 A3C4 A3E4 d D d
+A3E5 A3C5 A3E5 ï½… ï¼¥ ï½…
+A3E6 A3C6 A3E6 f F f
+A3E7 A3C7 A3E7 g G g
+A3E8 A3C8 A3E8 h H h
+A3E9 A3C9 A3E9 i I i
+A3EA A3CA A3EA j J j
+A3EB A3CB A3EB k K k
+A3EC A3CC A3EC l L l
+A3ED A3CD A3ED ï½ ï¼­ ï½
+A3EE A3CE A3EE n N n
+A3EF A3CF A3EF ï½ ï¼¯ ï½
+A3F0 A3D0 A3F0 ï½ ï¼° ï½
+A3F1 A3D1 A3F1 q Q q
+A3F2 A3D2 A3F2 ï½’ ï¼² ï½’
+A3F3 A3D3 A3F3 s S s
+A3F4 A3D4 A3F4 ï½” ï¼´ ï½”
+A3F5 A3D5 A3F5 u U u
+A3F6 A3D6 A3F6 ï½– ï¼¶ ï½–
+A3F7 A3D7 A3F7 ï½— ï¼· ï½—
+A3F8 A3D8 A3F8 x X x
+A3F9 A3D9 A3F9 ï½™ ï¼¹ ï½™
+A3FA A3DA A3FA z Z z
+A6A1 A6A1 A6C1 Α Α α
+A6A2 A6A2 A6C2 Β Β β
+A6A3 A6A3 A6C3 Γ Γ γ
+A6A4 A6A4 A6C4 Δ Δ δ
+A6A5 A6A5 A6C5 Ε Ε ε
+A6A6 A6A6 A6C6 Ζ Ζ ζ
+A6A7 A6A7 A6C7 Η Η η
+A6A8 A6A8 A6C8 Θ Θ θ
+A6A9 A6A9 A6C9 Ι Ι ι
+A6AA A6AA A6CA Κ Κ κ
+A6AB A6AB A6CB Λ Λ λ
+A6AC A6AC A6CC Μ Μ μ
+A6AD A6AD A6CD ΠΠν
+A6AE A6AE A6CE Ξ Ξ ξ
+A6AF A6AF A6CF Ο Ο ο
+A6B0 A6B0 A6D0 Π Π π
+A6B1 A6B1 A6D1 Ρ Ρ Ï
+A6B2 A6B2 A6D2 Σ Σ σ
+A6B3 A6B3 A6D3 Τ Τ τ
+A6B4 A6B4 A6D4 Υ Υ υ
+A6B5 A6B5 A6D5 Φ Φ φ
+A6B6 A6B6 A6D6 Χ Χ χ
+A6B7 A6B7 A6D7 Ψ Ψ ψ
+A6B8 A6B8 A6D8 Ω Ω ω
+A6C1 A6A1 A6C1 α Α α
+A6C2 A6A2 A6C2 β Β β
+A6C3 A6A3 A6C3 γ Γ γ
+A6C4 A6A4 A6C4 δ Δ δ
+A6C5 A6A5 A6C5 ε Ε ε
+A6C6 A6A6 A6C6 ζ Ζ ζ
+A6C7 A6A7 A6C7 η Η η
+A6C8 A6A8 A6C8 θ Θ θ
+A6C9 A6A9 A6C9 ι Ι ι
+A6CA A6AA A6CA κ Κ κ
+A6CB A6AB A6CB λ Λ λ
+A6CC A6AC A6CC μ Μ μ
+A6CD A6AD A6CD ν Πν
+A6CE A6AE A6CE ξ Ξ ξ
+A6CF A6AF A6CF ο Ο ο
+A6D0 A6B0 A6D0 π Π π
+A6D1 A6B1 A6D1 Ï Î¡ Ï
+A6D2 A6B2 A6D2 σ Σ σ
+A6D3 A6B3 A6D3 τ Τ τ
+A6D4 A6B4 A6D4 υ Υ υ
+A6D5 A6B5 A6D5 φ Φ φ
+A6D6 A6B6 A6D6 χ Χ χ
+A6D7 A6B7 A6D7 ψ Ψ ψ
+A6D8 A6B8 A6D8 ω Ω ω
+A7A1 A7A1 A7D1 РРа
+A7A2 A7A2 A7D2 Б Б б
+A7A3 A7A3 A7D3 В В в
+A7A4 A7A4 A7D4 Г Г г
+A7A5 A7A5 A7D5 Д Д д
+A7A6 A7A6 A7D6 Е Е е
+A7A7 A7A7 A7D7 Ð Ð Ñ‘
+A7A8 A7A8 A7D8 Ж Ж ж
+A7A9 A7A9 A7D9 З З з
+A7AA A7AA A7DA И И и
+A7AB A7AB A7DB Й Й й
+A7AC A7AC A7DC К К к
+A7AD A7AD A7DD Л Л л
+A7AE A7AE A7DE М М м
+A7AF A7AF A7DF РРн
+A7B0 A7B0 A7E0 О О о
+A7B1 A7B1 A7E1 П П п
+A7B2 A7B2 A7E2 Р Р р
+A7B3 A7B3 A7E3 С С Ñ
+A7B4 A7B4 A7E4 Т Т т
+A7B5 A7B5 A7E5 У У у
+A7B6 A7B6 A7E6 Ф Ф ф
+A7B7 A7B7 A7E7 Х Х х
+A7B8 A7B8 A7E8 Ц Ц ц
+A7B9 A7B9 A7E9 Ч Ч ч
+A7BA A7BA A7EA Ш Ш ш
+A7BB A7BB A7EB Щ Щ щ
+A7BC A7BC A7EC Ъ Ъ ъ
+A7BD A7BD A7ED Ы Ы ы
+A7BE A7BE A7EE Ь Ь ь
+A7BF A7BF A7EF Э Э Ñ
+A7C0 A7C0 A7F0 Ю Ю ю
+A7C1 A7C1 A7F1 Я Я Ñ
+A7D1 A7A1 A7D1 а Ра
+A7D2 A7A2 A7D2 б Б б
+A7D3 A7A3 A7D3 в В в
+A7D4 A7A4 A7D4 г Г г
+A7D5 A7A5 A7D5 д Д д
+A7D6 A7A6 A7D6 е Е е
+A7D7 A7A7 A7D7 Ñ‘ Ð Ñ‘
+A7D8 A7A8 A7D8 ж Ж ж
+A7D9 A7A9 A7D9 з З з
+A7DA A7AA A7DA и И и
+A7DB A7AB A7DB й Й й
+A7DC A7AC A7DC к К к
+A7DD A7AD A7DD л Л л
+A7DE A7AE A7DE м М м
+A7DF A7AF A7DF н Рн
+A7E0 A7B0 A7E0 о О о
+A7E1 A7B1 A7E1 п П п
+A7E2 A7B2 A7E2 р Р р
+A7E3 A7B3 A7E3 Ñ Ð¡ Ñ
+A7E4 A7B4 A7E4 т Т т
+A7E5 A7B5 A7E5 у У у
+A7E6 A7B6 A7E6 ф Ф ф
+A7E7 A7B7 A7E7 х Х х
+A7E8 A7B8 A7E8 ц Ц ц
+A7E9 A7B9 A7E9 ч Ч ч
+A7EA A7BA A7EA ш Ш ш
+A7EB A7BB A7EB щ Щ щ
+A7EC A7BC A7EC ъ Ъ ъ
+A7ED A7BD A7ED ы Ы ы
+A7EE A7BE A7EE ь Ь ь
+A7EF A7BF A7EF Ñ Ð­ Ñ
+A7F0 A7C0 A7F0 ю Ю ю
+A7F1 A7C1 A7F1 Ñ Ð¯ Ñ
+SELECT * FROM t1
+WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
+HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+code a
+8FAABC Ģ
+SELECT * FROM t1
+WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
+HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+code a
+8FA9C3 ð
+8FABB9 ǵ
+DROP TABLE t1;
+#
+# End of 5.5 tests
+#
diff --git a/mysql-test/r/ctype_utf8.result b/mysql-test/r/ctype_utf8.result
index 4c21e66a39c..55c32c6a1d4 100644
--- a/mysql-test/r/ctype_utf8.result
+++ b/mysql-test/r/ctype_utf8.result
@@ -363,9 +363,9 @@ create table t1 (c varchar(30) character set utf8, unique(c(10)));
insert into t1 values ('1'),('2'),('3'),('x'),('y'),('z');
insert into t1 values ('aaaaaaaaaa');
insert into t1 values ('aaaaaaaaaaa');
-ERROR 23000: Duplicate entry 'aaaaaaaaaaa' for key 'c'
+ERROR 23000: Duplicate entry 'aaaaaaaaaa' for key 'c'
insert into t1 values ('aaaaaaaaaaaa');
-ERROR 23000: Duplicate entry 'aaaaaaaaaaaa' for key 'c'
+ERROR 23000: Duplicate entry 'aaaaaaaaaa' for key 'c'
insert into t1 values (repeat('b',20));
select c c1 from t1 where c='1';
c1
@@ -396,9 +396,9 @@ create table t1 (c varchar(30) character set utf8, unique(c(10))) engine=innodb;
insert into t1 values ('1'),('2'),('3'),('x'),('y'),('z');
insert into t1 values ('aaaaaaaaaa');
insert into t1 values ('aaaaaaaaaaa');
-ERROR 23000: Duplicate entry 'aaaaaaaaaaa' for key 'c'
+ERROR 23000: Duplicate entry 'aaaaaaaaaa' for key 'c'
insert into t1 values ('aaaaaaaaaaaa');
-ERROR 23000: Duplicate entry 'aaaaaaaaaaaa' for key 'c'
+ERROR 23000: Duplicate entry 'aaaaaaaaaa' for key 'c'
insert into t1 values (repeat('b',20));
select c c1 from t1 where c='1';
c1
@@ -430,19 +430,19 @@ insert into t1 values ('1'),('2'),('3'),('4'),('x'),('y'),('z');
insert into t1 values ('a');
insert into t1 values ('aa');
insert into t1 values ('aaa');
-ERROR 23000: Duplicate entry 'aaa' for key 'c'
+ERROR 23000: Duplicate entry 'aa' for key 'c'
insert into t1 values ('b');
insert into t1 values ('bb');
insert into t1 values ('bbb');
-ERROR 23000: Duplicate entry 'bbb' for key 'c'
+ERROR 23000: Duplicate entry 'bb' for key 'c'
insert into t1 values ('а');
insert into t1 values ('аа');
insert into t1 values ('ааа');
-ERROR 23000: Duplicate entry 'ааа' for key 'c'
+ERROR 23000: Duplicate entry 'аа' for key 'c'
insert into t1 values ('б');
insert into t1 values ('бб');
insert into t1 values ('ббб');
-ERROR 23000: Duplicate entry 'ббб' for key 'c'
+ERROR 23000: Duplicate entry 'бб' for key 'c'
insert into t1 values ('ꪪ');
insert into t1 values ('ꪪꪪ');
insert into t1 values ('ꪪꪪꪪ');
@@ -453,19 +453,19 @@ insert into t1 values ('1'),('2'),('3'),('4'),('x'),('y'),('z');
insert into t1 values ('a');
insert into t1 values ('aa');
insert into t1 values ('aaa');
-ERROR 23000: Duplicate entry 'aaa' for key 'c'
+ERROR 23000: Duplicate entry 'aa' for key 'c'
insert into t1 values ('b');
insert into t1 values ('bb');
insert into t1 values ('bbb');
-ERROR 23000: Duplicate entry 'bbb' for key 'c'
+ERROR 23000: Duplicate entry 'bb' for key 'c'
insert into t1 values ('а');
insert into t1 values ('аа');
insert into t1 values ('ааа');
-ERROR 23000: Duplicate entry 'ааа' for key 'c'
+ERROR 23000: Duplicate entry 'аа' for key 'c'
insert into t1 values ('б');
insert into t1 values ('бб');
insert into t1 values ('ббб');
-ERROR 23000: Duplicate entry 'ббб' for key 'c'
+ERROR 23000: Duplicate entry 'бб' for key 'c'
insert into t1 values ('ꪪ');
insert into t1 values ('ꪪꪪ');
insert into t1 values ('ꪪꪪꪪ');
@@ -483,14 +483,14 @@ t1 CREATE TABLE `t1` (
) ENGINE=MEMORY DEFAULT CHARSET=latin1
insert into t1 values ('a'),('b'),('c'),('d'),('e'),('f');
insert into t1 values ('aa');
-ERROR 23000: Duplicate entry 'aa' for key 'a'
+ERROR 23000: Duplicate entry 'a' for key 'a'
insert into t1 values ('aaa');
-ERROR 23000: Duplicate entry 'aaa' for key 'a'
+ERROR 23000: Duplicate entry 'a' for key 'a'
insert into t1 values ('б');
insert into t1 values ('бб');
-ERROR 23000: Duplicate entry 'бÐ' for key 'a'
+ERROR 23000: Duplicate entry 'б' for key 'a'
insert into t1 values ('ббб');
-ERROR 23000: Duplicate entry 'бÐ' for key 'a'
+ERROR 23000: Duplicate entry 'б' for key 'a'
select c as c_all from t1 order by c;
c_all
a
@@ -519,14 +519,14 @@ t1 CREATE TABLE `t1` (
) ENGINE=MEMORY DEFAULT CHARSET=latin1
insert into t1 values ('a'),('b'),('c'),('d'),('e'),('f');
insert into t1 values ('aa');
-ERROR 23000: Duplicate entry 'aa' for key 'a'
+ERROR 23000: Duplicate entry 'a' for key 'a'
insert into t1 values ('aaa');
-ERROR 23000: Duplicate entry 'aaa' for key 'a'
+ERROR 23000: Duplicate entry 'a' for key 'a'
insert into t1 values ('б');
insert into t1 values ('бб');
-ERROR 23000: Duplicate entry 'бÐ' for key 'a'
+ERROR 23000: Duplicate entry 'б' for key 'a'
insert into t1 values ('ббб');
-ERROR 23000: Duplicate entry 'бÐ' for key 'a'
+ERROR 23000: Duplicate entry 'б' for key 'a'
select c as c_all from t1 order by c;
c_all
a
@@ -549,14 +549,14 @@ unique key a (c(1))
) engine=innodb;
insert into t1 values ('a'),('b'),('c'),('d'),('e'),('f');
insert into t1 values ('aa');
-ERROR 23000: Duplicate entry 'aa' for key 'a'
+ERROR 23000: Duplicate entry 'a' for key 'a'
insert into t1 values ('aaa');
-ERROR 23000: Duplicate entry 'aaa' for key 'a'
+ERROR 23000: Duplicate entry 'a' for key 'a'
insert into t1 values ('б');
insert into t1 values ('бб');
-ERROR 23000: Duplicate entry 'бÐ' for key 'a'
+ERROR 23000: Duplicate entry 'б' for key 'a'
insert into t1 values ('ббб');
-ERROR 23000: Duplicate entry 'бÐ' for key 'a'
+ERROR 23000: Duplicate entry 'б' for key 'a'
select c as c_all from t1 order by c;
c_all
a
@@ -577,9 +577,9 @@ create table t1 (c varchar(30) character set utf8 collate utf8_bin, unique(c(10)
insert into t1 values ('1'),('2'),('3'),('x'),('y'),('z');
insert into t1 values ('aaaaaaaaaa');
insert into t1 values ('aaaaaaaaaaa');
-ERROR 23000: Duplicate entry 'aaaaaaaaaaa' for key 'c'
+ERROR 23000: Duplicate entry 'aaaaaaaaaa' for key 'c'
insert into t1 values ('aaaaaaaaaaaa');
-ERROR 23000: Duplicate entry 'aaaaaaaaaaaa' for key 'c'
+ERROR 23000: Duplicate entry 'aaaaaaaaaa' for key 'c'
insert into t1 values (repeat('b',20));
select c c1 from t1 where c='1';
c1
@@ -611,19 +611,19 @@ insert into t1 values ('1'),('2'),('3'),('4'),('x'),('y'),('z');
insert into t1 values ('a');
insert into t1 values ('aa');
insert into t1 values ('aaa');
-ERROR 23000: Duplicate entry 'aaa' for key 'c'
+ERROR 23000: Duplicate entry 'aa' for key 'c'
insert into t1 values ('b');
insert into t1 values ('bb');
insert into t1 values ('bbb');
-ERROR 23000: Duplicate entry 'bbb' for key 'c'
+ERROR 23000: Duplicate entry 'bb' for key 'c'
insert into t1 values ('а');
insert into t1 values ('аа');
insert into t1 values ('ааа');
-ERROR 23000: Duplicate entry 'ааа' for key 'c'
+ERROR 23000: Duplicate entry 'аа' for key 'c'
insert into t1 values ('б');
insert into t1 values ('бб');
insert into t1 values ('ббб');
-ERROR 23000: Duplicate entry 'ббб' for key 'c'
+ERROR 23000: Duplicate entry 'бб' for key 'c'
insert into t1 values ('ꪪ');
insert into t1 values ('ꪪꪪ');
insert into t1 values ('ꪪꪪꪪ');
@@ -641,14 +641,14 @@ t1 CREATE TABLE `t1` (
) ENGINE=MEMORY DEFAULT CHARSET=latin1
insert into t1 values ('a'),('b'),('c'),('d'),('e'),('f');
insert into t1 values ('aa');
-ERROR 23000: Duplicate entry 'aa' for key 'a'
+ERROR 23000: Duplicate entry 'a' for key 'a'
insert into t1 values ('aaa');
-ERROR 23000: Duplicate entry 'aaa' for key 'a'
+ERROR 23000: Duplicate entry 'a' for key 'a'
insert into t1 values ('б');
insert into t1 values ('бб');
-ERROR 23000: Duplicate entry 'бÐ' for key 'a'
+ERROR 23000: Duplicate entry 'б' for key 'a'
insert into t1 values ('ббб');
-ERROR 23000: Duplicate entry 'бÐ' for key 'a'
+ERROR 23000: Duplicate entry 'б' for key 'a'
select c as c_all from t1 order by c;
c_all
a
@@ -677,14 +677,14 @@ t1 CREATE TABLE `t1` (
) ENGINE=MEMORY DEFAULT CHARSET=latin1
insert into t1 values ('a'),('b'),('c'),('d'),('e'),('f');
insert into t1 values ('aa');
-ERROR 23000: Duplicate entry 'aa' for key 'a'
+ERROR 23000: Duplicate entry 'a' for key 'a'
insert into t1 values ('aaa');
-ERROR 23000: Duplicate entry 'aaa' for key 'a'
+ERROR 23000: Duplicate entry 'a' for key 'a'
insert into t1 values ('б');
insert into t1 values ('бб');
-ERROR 23000: Duplicate entry 'бÐ' for key 'a'
+ERROR 23000: Duplicate entry 'б' for key 'a'
insert into t1 values ('ббб');
-ERROR 23000: Duplicate entry 'бÐ' for key 'a'
+ERROR 23000: Duplicate entry 'б' for key 'a'
select c as c_all from t1 order by c;
c_all
a
@@ -707,14 +707,14 @@ unique key a (c(1))
) engine=innodb;
insert into t1 values ('a'),('b'),('c'),('d'),('e'),('f');
insert into t1 values ('aa');
-ERROR 23000: Duplicate entry 'aa' for key 'a'
+ERROR 23000: Duplicate entry 'a' for key 'a'
insert into t1 values ('aaa');
-ERROR 23000: Duplicate entry 'aaa' for key 'a'
+ERROR 23000: Duplicate entry 'a' for key 'a'
insert into t1 values ('б');
insert into t1 values ('бб');
-ERROR 23000: Duplicate entry 'бÐ' for key 'a'
+ERROR 23000: Duplicate entry 'б' for key 'a'
insert into t1 values ('ббб');
-ERROR 23000: Duplicate entry 'бÐ' for key 'a'
+ERROR 23000: Duplicate entry 'б' for key 'a'
select c as c_all from t1 order by c;
c_all
a
@@ -1631,27 +1631,27 @@ select char(0xff,0x8f using utf8);
char(0xff,0x8f using utf8)
NULL
Warnings:
-Error 1300 Invalid utf8 character string: 'FF8F'
+Warning 1300 Invalid utf8 character string: 'FF8F'
select char(195 using utf8);
char(195 using utf8)
NULL
Warnings:
-Error 1300 Invalid utf8 character string: 'C3'
+Warning 1300 Invalid utf8 character string: 'C3'
select char(196 using utf8);
char(196 using utf8)
NULL
Warnings:
-Error 1300 Invalid utf8 character string: 'C4'
+Warning 1300 Invalid utf8 character string: 'C4'
select char(2557 using utf8);
char(2557 using utf8)
NULL
Warnings:
-Error 1300 Invalid utf8 character string: 'FD'
+Warning 1300 Invalid utf8 character string: 'FD'
select convert(char(0xff,0x8f) using utf8);
convert(char(0xff,0x8f) using utf8)
NULL
Warnings:
-Error 1300 Invalid utf8 character string: 'FF8F'
+Warning 1300 Invalid utf8 character string: 'FF8F'
select hex(convert(char(2557 using latin1) using utf8));
hex(convert(char(2557 using latin1) using utf8))
09C3BD
@@ -1815,12 +1815,12 @@ select hex(char(0xFF using utf8));
hex(char(0xFF using utf8))
NULL
Warnings:
-Error 1300 Invalid utf8 character string: 'FF'
+Warning 1300 Invalid utf8 character string: 'FF'
select hex(convert(0xFF using utf8));
hex(convert(0xFF using utf8))
NULL
Warnings:
-Error 1300 Invalid utf8 character string: 'FF'
+Warning 1300 Invalid utf8 character string: 'FF'
select hex(_utf8 0x616263FF);
ERROR HY000: Invalid utf8 character string: 'FF'
select hex(_utf8 X'616263FF');
@@ -1898,3 +1898,132 @@ CONVERT(a, CHAR) CONVERT(b, CHAR)
70000 1092
DROP TABLE t1;
End of 5.0 tests
+Start of 5.4 tests
+CREATE TABLE t1 (
+clipid INT NOT NULL,
+Tape TINYTEXT,
+PRIMARY KEY (clipid),
+KEY tape(Tape(255))
+) CHARACTER SET=utf8;
+ALTER TABLE t1 ADD mos TINYINT DEFAULT 0 AFTER clipid;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `clipid` int(11) NOT NULL,
+ `mos` tinyint(4) DEFAULT '0',
+ `Tape` tinytext,
+ PRIMARY KEY (`clipid`),
+ KEY `tape` (`Tape`(255))
+) ENGINE=MyISAM DEFAULT CHARSET=utf8
+DROP TABLE t1;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+predicted_order int NOT NULL,
+utf8_encoding VARCHAR(10) NOT NULL
+) CHARACTER SET utf8;
+INSERT INTO t1 VALUES (19, x'E0B696'), (30, x'E0B69AE0B798'), (61, x'E0B6AF'), (93, x'E0B799'), (52, x'E0B6A6'), (73, x'E0B6BBE0B78AE2808D'), (3, x'E0B686'), (56, x'E0B6AA'), (55, x'E0B6A9'), (70, x'E0B6B9'), (94, x'E0B79A'), (80, x'E0B785'), (25, x'E0B69AE0B791'), (48, x'E0B6A2'), (13, x'E0B690'), (86, x'E0B793'), (91, x'E0B79F'), (81, x'E0B786'), (79, x'E0B784'), (14, x'E0B691'), (99, x'E0B78A'), (8, x'E0B68B'), (68, x'E0B6B7'), (22, x'E0B69A'), (16, x'E0B693'), (33, x'E0B69AE0B7B3'), (38, x'E0B69AE0B79D'), (21, x'E0B683'), (11, x'E0B68E'), (77, x'E0B782'), (40, x'E0B69AE0B78A'), (101, x'E0B78AE2808DE0B6BB'), (35, x'E0B69AE0B79A'), (1, x'E0B7B4'), (9, x'E0B68C'), (96, x'E0B79C'), (6, x'E0B689'), (95, x'E0B79B'), (88, x'E0B796'), (64, x'E0B6B3'), (26, x'E0B69AE0B792'), (82, x'E0B78F'), (28, x'E0B69AE0B794'), (39, x'E0B69AE0B79E'), (97, x'E0B79D'), (2, x'E0B685'), (75, x'E0B780'), (34, x'E0B69AE0B799'), (69, x'E0B6B8'), (83, x'E0B790'), (18, x'E0B695'), (90, x'E0B7B2'), (17, x'E0B694'), (72, x'E0B6BB'), (66, x'E0B6B5'), (59, x'E0B6AD'), (44, x'E0B69E'), (15, x'E0B692'), (23, x'E0B69AE0B78F'), (65, x'E0B6B4'), (42, x'E0B69C'), (63, x'E0B6B1'), (85, x'E0B792'), (47, x'E0B6A1'), (49, x'E0B6A3'), (92, x'E0B7B3'), (78, x'E0B783'), (36, x'E0B69AE0B79B'), (4, x'E0B687'), (24, x'E0B69AE0B790'), (87, x'E0B794'), (37, x'E0B69AE0B79C'), (32, x'E0B69AE0B79F'), (29, x'E0B69AE0B796'), (43, x'E0B69D'), (62, x'E0B6B0'), (100, x'E0B78AE2808DE0B6BA'), (60, x'E0B6AE'), (45, x'E0B69F'), (12, x'E0B68F'), (46, x'E0B6A0'), (50, x'E0B6A5'), (51, x'E0B6A4'), (5, x'E0B688'), (76, x'E0B781'), (89, x'E0B798'), (74, x'E0B6BD'), (10, x'E0B68D'), (57, x'E0B6AB'), (71, x'E0B6BA'), (58, x'E0B6AC'), (27, x'E0B69AE0B793'), (54, x'E0B6A8'), (84, x'E0B791'), (31, x'E0B69AE0B7B2'), (98, x'E0B79E'), (53, x'E0B6A7'), (41, x'E0B69B'), (67, x'E0B6B6'), (7, x'E0B68A'), (20, x'E0B682');
+SELECT predicted_order, hex(utf8_encoding) FROM t1 ORDER BY utf8_encoding COLLATE utf8_sinhala_ci;
+predicted_order hex(utf8_encoding)
+1 E0B7B4
+2 E0B685
+3 E0B686
+4 E0B687
+5 E0B688
+6 E0B689
+7 E0B68A
+8 E0B68B
+9 E0B68C
+10 E0B68D
+11 E0B68E
+12 E0B68F
+13 E0B690
+14 E0B691
+15 E0B692
+16 E0B693
+17 E0B694
+18 E0B695
+19 E0B696
+20 E0B682
+21 E0B683
+22 E0B69A
+23 E0B69AE0B78F
+24 E0B69AE0B790
+25 E0B69AE0B791
+26 E0B69AE0B792
+27 E0B69AE0B793
+28 E0B69AE0B794
+29 E0B69AE0B796
+30 E0B69AE0B798
+31 E0B69AE0B7B2
+32 E0B69AE0B79F
+33 E0B69AE0B7B3
+34 E0B69AE0B799
+35 E0B69AE0B79A
+36 E0B69AE0B79B
+37 E0B69AE0B79C
+38 E0B69AE0B79D
+39 E0B69AE0B79E
+40 E0B69AE0B78A
+41 E0B69B
+42 E0B69C
+43 E0B69D
+44 E0B69E
+45 E0B69F
+46 E0B6A0
+47 E0B6A1
+48 E0B6A2
+49 E0B6A3
+50 E0B6A5
+51 E0B6A4
+52 E0B6A6
+53 E0B6A7
+54 E0B6A8
+55 E0B6A9
+56 E0B6AA
+57 E0B6AB
+58 E0B6AC
+59 E0B6AD
+60 E0B6AE
+61 E0B6AF
+62 E0B6B0
+63 E0B6B1
+64 E0B6B3
+65 E0B6B4
+66 E0B6B5
+67 E0B6B6
+68 E0B6B7
+69 E0B6B8
+70 E0B6B9
+71 E0B6BA
+72 E0B6BB
+73 E0B6BBE0B78AE2808D
+74 E0B6BD
+75 E0B780
+76 E0B781
+77 E0B782
+78 E0B783
+79 E0B784
+80 E0B785
+81 E0B786
+82 E0B78F
+83 E0B790
+84 E0B791
+85 E0B792
+86 E0B793
+87 E0B794
+88 E0B796
+89 E0B798
+90 E0B7B2
+91 E0B79F
+92 E0B7B3
+93 E0B799
+94 E0B79A
+95 E0B79B
+96 E0B79C
+97 E0B79D
+98 E0B79E
+99 E0B78A
+100 E0B78AE2808DE0B6BA
+101 E0B78AE2808DE0B6BB
+DROP TABLE t1;
+End of 5.4 tests
diff --git a/mysql-test/r/date_formats.result b/mysql-test/r/date_formats.result
index 7e185daa668..432b9b14a85 100644
--- a/mysql-test/r/date_formats.result
+++ b/mysql-test/r/date_formats.result
@@ -15,71 +15,6 @@ variable_name variable_value
DATETIME_FORMAT %Y-%m-%d %H:%i:%s
DATE_FORMAT %d.%m.%Y
TIME_FORMAT %H.%i.%s
-SET time_format='%H%i%s';
-SET time_format='%H:%i:%s.%f';
-SET time_format='%h-%i-%s.%f%p';
-SET time_format='%h:%i:%s.%f %p';
-SET time_format='%h:%i:%s%p';
-SET date_format='%Y%m%d';
-SET date_format='%Y.%m.%d';
-SET date_format='%d.%m.%Y';
-SET date_format='%m-%d-%Y';
-set datetime_format= '%Y%m%d%H%i%s';
-set datetime_format= '%Y-%m-%d %H:%i:%s';
-set datetime_format= '%m-%d-%y %H:%i:%s.%f';
-set datetime_format= '%d-%m-%Y %h:%i:%s%p';
-set datetime_format= '%H:%i:%s %Y-%m-%d';
-set datetime_format= '%H:%i:%s.%f %m-%d-%Y';
-set datetime_format= '%h:%i:%s %p %Y-%m-%d';
-set datetime_format= '%h:%i:%s.%f %p %Y-%m-%d';
-SELECT variable_name, variable_value
-FROM information_schema.session_variables
-WHERE variable_name IN ('date_format', 'datetime_format', 'time_format')
-ORDER BY variable_name;
-variable_name variable_value
-DATETIME_FORMAT %h:%i:%s.%f %p %Y-%m-%d
-DATE_FORMAT %m-%d-%Y
-TIME_FORMAT %h:%i:%s%p
-SET time_format='%h:%i:%s';
-ERROR 42000: Variable 'time_format' can't be set to the value of '%h:%i:%s'
-SET time_format='%H %i:%s';
-ERROR 42000: Variable 'time_format' can't be set to the value of '%H %i:%s'
-SET time_format='%H::%i:%s';
-ERROR 42000: Variable 'time_format' can't be set to the value of '%H::%i:%s'
-SET time_format='%H:%i:%s%f';
-ERROR 42000: Variable 'time_format' can't be set to the value of '%H:%i:%s%f'
-SET time_format='%H:%i.%f:%s';
-ERROR 42000: Variable 'time_format' can't be set to the value of '%H:%i.%f:%s'
-SET time_format='%H:%i:%s%p';
-ERROR 42000: Variable 'time_format' can't be set to the value of '%H:%i:%s%p'
-SET time_format='%h:%i:%s.%f %p %Y-%m-%d';
-ERROR 42000: Variable 'time_format' can't be set to the value of '%h:%i:%s.%f %p %Y-%m-%d'
-SET time_format='%H%i%s.%f';
-ERROR 42000: Variable 'time_format' can't be set to the value of '%H%i%s.%f'
-SET time_format='%H:%i-%s.%f';
-ERROR 42000: Variable 'time_format' can't be set to the value of '%H:%i-%s.%f'
-SET date_format='%d.%m.%d';
-ERROR 42000: Variable 'date_format' can't be set to the value of '%d.%m.%d'
-SET datetime_format='%h.%m.%y %d.%i.%s';
-ERROR 42000: Variable 'datetime_format' can't be set to the value of '%h.%m.%y %d.%i.%s'
-set datetime_format= '%H:%i:%s.%f %p %Y-%m-%d';
-ERROR 42000: Variable 'datetime_format' can't be set to the value of '%H:%i:%s.%f %p %Y-%m-%d'
-set GLOBAL datetime_format= '%H:%i:%s %Y-%m-%d';
-SET SESSION datetime_format=default;
-select @@global.datetime_format, @@session.datetime_format;
-@@global.datetime_format @@session.datetime_format
-%H:%i:%s %Y-%m-%d %H:%i:%s %Y-%m-%d
-SET GLOBAL datetime_format=default;
-SET SESSION datetime_format=default;
-select @@global.datetime_format, @@session.datetime_format;
-@@global.datetime_format @@session.datetime_format
-%Y-%m-%d %H:%i:%s %Y-%m-%d %H:%i:%s
-SET GLOBAL date_format=default;
-SET GLOBAL time_format=default;
-SET GLOBAL datetime_format=default;
-SET time_format=default;
-SET date_format=default;
-SET datetime_format=default;
select str_to_date(concat('15-01-2001',' 2:59:58.999'),
concat('%d-%m-%Y',' ','%H:%i:%s.%f'));
str_to_date(concat('15-01-2001',' 2:59:58.999'),
@@ -89,7 +24,7 @@ select STR_TO_DATE('2004.12.12 22.30.61','%Y.%m.%d %T');
STR_TO_DATE('2004.12.12 22.30.61','%Y.%m.%d %T')
NULL
Warnings:
-Error 1411 Incorrect time value: '22.30.61' for function str_to_date
+Warning 1411 Incorrect time value: '22.30.61' for function str_to_date
create table t1 (date char(30), format char(30) not null);
insert into t1 values
('2003-01-02 10:11:12', '%Y-%m-%d %H:%i:%S'),
@@ -361,21 +296,21 @@ Tuesday 52 2001 %W %u %x NULL
7 53 1998 %w %u %Y NULL
NULL %m.%d.%Y NULL
Warnings:
-Error 1411 Incorrect datetime value: '2003-01-02 10:11:12 PM' for function str_to_date
-Error 1411 Incorrect datetime value: '2003-01-02 10:11:12.123456' for function str_to_date
-Error 1411 Incorrect datetime value: '2003-01-02 10:11:12AM' for function str_to_date
-Error 1411 Incorrect datetime value: '2003-01-02 10:11:12AN' for function str_to_date
-Error 1411 Incorrect datetime value: '2003-01-02 10:11:12 PM' for function str_to_date
-Error 1411 Incorrect datetime value: '10:20:10AM' for function str_to_date
-Error 1411 Incorrect datetime value: '15 Septembei 2001' for function str_to_date
-Error 1411 Incorrect datetime value: '15 Ju 2001' for function str_to_date
-Error 1411 Incorrect datetime value: 'Sund 15 MA' for function str_to_date
-Error 1411 Incorrect datetime value: 'Thursdai 12 1998' for function str_to_date
-Error 1411 Incorrect datetime value: 'Sunday 01 2001' for function str_to_date
-Error 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date
-Error 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date
-Error 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date
-Error 1411 Incorrect datetime value: '7 53 1998' for function str_to_date
+Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12 PM' for function str_to_date
+Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12.123456' for function str_to_date
+Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12AM' for function str_to_date
+Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12AN' for function str_to_date
+Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12 PM' for function str_to_date
+Warning 1411 Incorrect datetime value: '10:20:10AM' for function str_to_date
+Warning 1411 Incorrect datetime value: '15 Septembei 2001' for function str_to_date
+Warning 1411 Incorrect datetime value: '15 Ju 2001' for function str_to_date
+Warning 1411 Incorrect datetime value: 'Sund 15 MA' for function str_to_date
+Warning 1411 Incorrect datetime value: 'Thursdai 12 1998' for function str_to_date
+Warning 1411 Incorrect datetime value: 'Sunday 01 2001' for function str_to_date
+Warning 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date
+Warning 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date
+Warning 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date
+Warning 1411 Incorrect datetime value: '7 53 1998' for function str_to_date
select date,format,concat(str_to_date(date, format),'') as con from t1;
date format con
2003-01-02 10:11:12 PM %Y-%m-%d %H:%i:%S %p NULL
@@ -395,21 +330,21 @@ Tuesday 52 2001 %W %u %x NULL
7 53 1998 %w %u %Y NULL
NULL %m.%d.%Y NULL
Warnings:
-Error 1411 Incorrect datetime value: '2003-01-02 10:11:12 PM' for function str_to_date
-Error 1411 Incorrect datetime value: '2003-01-02 10:11:12.123456' for function str_to_date
-Error 1411 Incorrect datetime value: '2003-01-02 10:11:12AM' for function str_to_date
-Error 1411 Incorrect datetime value: '2003-01-02 10:11:12AN' for function str_to_date
-Error 1411 Incorrect datetime value: '2003-01-02 10:11:12 PM' for function str_to_date
-Error 1411 Incorrect datetime value: '10:20:10AM' for function str_to_date
-Error 1411 Incorrect datetime value: '15 Septembei 2001' for function str_to_date
-Error 1411 Incorrect datetime value: '15 Ju 2001' for function str_to_date
-Error 1411 Incorrect datetime value: 'Sund 15 MA' for function str_to_date
-Error 1411 Incorrect datetime value: 'Thursdai 12 1998' for function str_to_date
-Error 1411 Incorrect datetime value: 'Sunday 01 2001' for function str_to_date
-Error 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date
-Error 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date
-Error 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date
-Error 1411 Incorrect datetime value: '7 53 1998' for function str_to_date
+Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12 PM' for function str_to_date
+Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12.123456' for function str_to_date
+Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12AM' for function str_to_date
+Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12AN' for function str_to_date
+Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12 PM' for function str_to_date
+Warning 1411 Incorrect datetime value: '10:20:10AM' for function str_to_date
+Warning 1411 Incorrect datetime value: '15 Septembei 2001' for function str_to_date
+Warning 1411 Incorrect datetime value: '15 Ju 2001' for function str_to_date
+Warning 1411 Incorrect datetime value: 'Sund 15 MA' for function str_to_date
+Warning 1411 Incorrect datetime value: 'Thursdai 12 1998' for function str_to_date
+Warning 1411 Incorrect datetime value: 'Sunday 01 2001' for function str_to_date
+Warning 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date
+Warning 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date
+Warning 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date
+Warning 1411 Incorrect datetime value: '7 53 1998' for function str_to_date
truncate table t1;
insert into t1 values
('10:20:10AM', '%h:%i:%s'),
@@ -449,7 +384,7 @@ select str_to_date('15-01-2001 12:59:59', GET_FORMAT(DATE,'USA'));
str_to_date('15-01-2001 12:59:59', GET_FORMAT(DATE,'USA'))
NULL
Warnings:
-Error 1411 Incorrect datetime value: '15-01-2001 12:59:59' for function str_to_date
+Warning 1411 Incorrect datetime value: '15-01-2001 12:59:59' for function str_to_date
explain extended select makedate(1997,1), addtime("31.12.97 11.59.59.999999 PM", "1 1.1.1.000002"),subtime("31.12.97 11.59.59.999999 PM", "1 1.1.1.000002"),timediff("01.01.97 11:59:59.000001 PM","31.12.95 11:59:59.000002 PM"),cast(str_to_date("15-01-2001 12:59:59", "%d-%m-%Y %H:%i:%S") as TIME), maketime(23,11,12),microsecond("1997-12-31 23:59:59.000001");
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
diff --git a/mysql-test/r/ddl_i18n_koi8r.result b/mysql-test/r/ddl_i18n_koi8r.result
index fe24c17a1c5..2282f65c456 100644
--- a/mysql-test/r/ddl_i18n_koi8r.result
+++ b/mysql-test/r/ddl_i18n_koi8r.result
@@ -35,15 +35,15 @@ v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v1'|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL mysqltest1 v1 select 'ÔÅÓÔ' AS `c1`,`mysqltest1`.`t1`.`ËÏÌ` AS `c2` from `mysqltest1`.`t1` NONE YES root@localhost DEFINER koi8r koi8r_general_ci
+def mysqltest1 v1 select 'ÔÅÓÔ' AS `c1`,`mysqltest1`.`t1`.`ËÏÌ` AS `c2` from `mysqltest1`.`t1` NONE YES root@localhost DEFINER koi8r koi8r_general_ci
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v2'|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL mysqltest1 v2 select 'ÔÅÓÔ' AS `c1` NONE NO root@localhost DEFINER koi8r koi8r_general_ci
+def mysqltest1 v2 select 'ÔÅÓÔ' AS `c1` NONE NO root@localhost DEFINER koi8r koi8r_general_ci
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v3'|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL mysqltest1 v3 select 'ÔÅÓÔ' AS `ÔÅÓÔ` NONE NO root@localhost DEFINER koi8r koi8r_general_ci
+def mysqltest1 v3 select 'ÔÅÓÔ' AS `ÔÅÓÔ` NONE NO root@localhost DEFINER koi8r koi8r_general_ci
SELECT COLLATION(c1), COLLATION(c2) FROM v1|
@@ -87,15 +87,15 @@ v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v1'|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL mysqltest1 v1 select 'ÔÅÓÔ' AS `c1`,`mysqltest1`.`t1`.`ËÏÌ` AS `c2` from `mysqltest1`.`t1` NONE YES root@localhost DEFINER koi8r koi8r_general_ci
+def mysqltest1 v1 select 'ÔÅÓÔ' AS `c1`,`mysqltest1`.`t1`.`ËÏÌ` AS `c2` from `mysqltest1`.`t1` NONE YES root@localhost DEFINER koi8r koi8r_general_ci
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v2'|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL mysqltest1 v2 select 'ÔÅÓÔ' AS `c1` NONE NO root@localhost DEFINER koi8r koi8r_general_ci
+def mysqltest1 v2 select 'ÔÅÓÔ' AS `c1` NONE NO root@localhost DEFINER koi8r koi8r_general_ci
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v3'|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL mysqltest1 v3 select 'ÔÅÓÔ' AS `ÔÅÓÔ` NONE NO root@localhost DEFINER koi8r koi8r_general_ci
+def mysqltest1 v3 select 'ÔÅÓÔ' AS `ÔÅÓÔ` NONE NO root@localhost DEFINER koi8r koi8r_general_ci
SELECT COLLATION(c1), COLLATION(c2) FROM v1|
@@ -144,15 +144,15 @@ v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v1'|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL mysqltest1 v1 select 'ÔÅÓÔ' AS `c1`,`mysqltest1`.`t1`.`ËÏÌ` AS `c2` from `mysqltest1`.`t1` NONE YES root@localhost DEFINER koi8r koi8r_general_ci
+def mysqltest1 v1 select 'ÔÅÓÔ' AS `c1`,`mysqltest1`.`t1`.`ËÏÌ` AS `c2` from `mysqltest1`.`t1` NONE YES root@localhost DEFINER koi8r koi8r_general_ci
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v2'|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL mysqltest1 v2 select 'ÔÅÓÔ' AS `c1` NONE NO root@localhost DEFINER koi8r koi8r_general_ci
+def mysqltest1 v2 select 'ÔÅÓÔ' AS `c1` NONE NO root@localhost DEFINER koi8r koi8r_general_ci
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v3'|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL mysqltest1 v3 select 'ÔÅÓÔ' AS `ÔÅÓÔ` NONE NO root@localhost DEFINER koi8r koi8r_general_ci
+def mysqltest1 v3 select 'ÔÅÓÔ' AS `ÔÅÓÔ` NONE NO root@localhost DEFINER koi8r koi8r_general_ci
SELECT COLLATION(c1), COLLATION(c2) FROM v1|
@@ -361,8 +361,8 @@ mysqltest2 p4 PROCEDURE root@localhost MODIFIED CREATED DEFINER koi8r koi8r_gen
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p1 NULL mysqltest1 p1 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p1 def mysqltest1 p1 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10);
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -379,8 +379,8 @@ SET ÐÁÒÁÍ2 = 'b';
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p2 NULL mysqltest1 p2 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p2 def mysqltest1 p2 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -397,8 +397,8 @@ SET ÐÁÒÁÍ2 = 'b';
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p3 NULL mysqltest2 p3 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p3 def mysqltest2 p3 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10);
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -415,8 +415,8 @@ SET ÐÁÒÁÍ2 = 'b';
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p4 NULL mysqltest2 p4 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p4 def mysqltest2 p4 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -607,8 +607,8 @@ mysqltest2 p4 PROCEDURE root@localhost MODIFIED CREATED DEFINER koi8r koi8r_gen
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p1 NULL mysqltest1 p1 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p1 def mysqltest1 p1 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10);
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -625,8 +625,8 @@ SET ÐÁÒÁÍ2 = 'b';
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p2 NULL mysqltest1 p2 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p2 def mysqltest1 p2 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -643,8 +643,8 @@ SET ÐÁÒÁÍ2 = 'b';
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p3 NULL mysqltest2 p3 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p3 def mysqltest2 p3 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10);
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -661,8 +661,8 @@ SET ÐÁÒÁÍ2 = 'b';
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p4 NULL mysqltest2 p4 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p4 def mysqltest2 p4 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -1009,8 +1009,8 @@ mysqltest2 p4 PROCEDURE root@localhost MODIFIED CREATED DEFINER koi8r koi8r_gen
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p1 NULL mysqltest1 p1 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p1 def mysqltest1 p1 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10);
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -1027,8 +1027,8 @@ SET ÐÁÒÁÍ2 = 'b';
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p2 NULL mysqltest1 p2 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p2 def mysqltest1 p2 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -1045,8 +1045,8 @@ SET ÐÁÒÁÍ2 = 'b';
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p3 NULL mysqltest2 p3 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p3 def mysqltest2 p3 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10);
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -1063,8 +1063,8 @@ SET ÐÁÒÁÍ2 = 'b';
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p4 NULL mysqltest2 p4 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p4 def mysqltest2 p4 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -1323,7 +1323,7 @@ use mysqltest1|
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg1'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 trg1 INSERT NULL mysqltest1 t1 0 NULL BEGIN
+def mysqltest1 trg1 INSERT def mysqltest1 t1 0 NULL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10);
INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1));
INSERT INTO log VALUES(COLLATION('ÔÅËÓÔ'));
@@ -1338,7 +1338,7 @@ END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg2'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 trg2 INSERT NULL mysqltest1 t1 0 NULL BEGIN
+def mysqltest1 trg2 INSERT def mysqltest1 t1 0 NULL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1));
INSERT INTO log VALUES(COLLATION('ÔÅËÓÔ'));
@@ -1353,7 +1353,7 @@ END ROW AFTER NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci u
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg3'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 trg3 INSERT NULL mysqltest2 t1 0 NULL BEGIN
+def mysqltest2 trg3 INSERT def mysqltest2 t1 0 NULL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10);
INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1));
INSERT INTO log VALUES(COLLATION('ÔÅËÓÔ'));
@@ -1368,7 +1368,7 @@ END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg4'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 trg4 INSERT NULL mysqltest2 t1 0 NULL BEGIN
+def mysqltest2 trg4 INSERT def mysqltest2 t1 0 NULL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1));
INSERT INTO log VALUES(COLLATION('ÔÅËÓÔ'));
@@ -1596,7 +1596,7 @@ use mysqltest1|
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg1'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 trg1 INSERT NULL mysqltest1 t1 0 NULL BEGIN
+def mysqltest1 trg1 INSERT def mysqltest1 t1 0 NULL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10);
INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1));
INSERT INTO log VALUES(COLLATION('ÔÅËÓÔ'));
@@ -1611,7 +1611,7 @@ END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg2'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 trg2 INSERT NULL mysqltest1 t1 0 NULL BEGIN
+def mysqltest1 trg2 INSERT def mysqltest1 t1 0 NULL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1));
INSERT INTO log VALUES(COLLATION('ÔÅËÓÔ'));
@@ -1626,7 +1626,7 @@ END ROW AFTER NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci u
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg3'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 trg3 INSERT NULL mysqltest2 t1 0 NULL BEGIN
+def mysqltest2 trg3 INSERT def mysqltest2 t1 0 NULL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10);
INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1));
INSERT INTO log VALUES(COLLATION('ÔÅËÓÔ'));
@@ -1641,7 +1641,7 @@ END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg4'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 trg4 INSERT NULL mysqltest2 t1 0 NULL BEGIN
+def mysqltest2 trg4 INSERT def mysqltest2 t1 0 NULL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1));
INSERT INTO log VALUES(COLLATION('ÔÅËÓÔ'));
@@ -2031,7 +2031,7 @@ use mysqltest1|
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg1'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 trg1 INSERT NULL mysqltest1 t1 0 NULL BEGIN
+def mysqltest1 trg1 INSERT def mysqltest1 t1 0 NULL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10);
INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1));
INSERT INTO log VALUES(COLLATION('ÔÅËÓÔ'));
@@ -2046,7 +2046,7 @@ END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg2'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 trg2 INSERT NULL mysqltest1 t1 0 NULL BEGIN
+def mysqltest1 trg2 INSERT def mysqltest1 t1 0 NULL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1));
INSERT INTO log VALUES(COLLATION('ÔÅËÓÔ'));
@@ -2061,7 +2061,7 @@ END ROW AFTER NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci u
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg3'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 trg3 INSERT NULL mysqltest2 t1 0 NULL BEGIN
+def mysqltest2 trg3 INSERT def mysqltest2 t1 0 NULL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10);
INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1));
INSERT INTO log VALUES(COLLATION('ÔÅËÓÔ'));
@@ -2076,7 +2076,7 @@ END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg4'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 trg4 INSERT NULL mysqltest2 t1 0 NULL BEGIN
+def mysqltest2 trg4 INSERT def mysqltest2 t1 0 NULL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1));
INSERT INTO log VALUES(COLLATION('ÔÅËÓÔ'));
@@ -2226,7 +2226,7 @@ END|
SHOW CREATE EVENT ev1|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev1 SYSTEM CREATE EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10);
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2239,7 +2239,7 @@ END koi8r koi8r_general_ci utf8_unicode_ci
SHOW CREATE EVENT ev2|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev2 SYSTEM CREATE EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev2 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2252,7 +2252,7 @@ END koi8r koi8r_general_ci utf8_unicode_ci
SHOW CREATE EVENT mysqltest2.ev3|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev3 SYSTEM CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2265,7 +2265,7 @@ END koi8r koi8r_general_ci utf8_unicode_ci
SHOW CREATE EVENT mysqltest2.ev3|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev3 SYSTEM CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2294,7 +2294,7 @@ Db Name Definer Time zone Type Execute at Interval value Interval field Starts E
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev1'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 ev1 root@localhost SYSTEM SQL BEGIN
+def mysqltest1 ev1 root@localhost SYSTEM SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10);
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2307,7 +2307,7 @@ END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREAT
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev2'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 ev2 root@localhost SYSTEM SQL BEGIN
+def mysqltest1 ev2 root@localhost SYSTEM SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2320,7 +2320,7 @@ END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREAT
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev3'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 ev3 root@localhost SYSTEM SQL BEGIN
+def mysqltest2 ev3 root@localhost SYSTEM SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2333,7 +2333,7 @@ END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREAT
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev4'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 ev4 root@localhost SYSTEM SQL BEGIN
+def mysqltest2 ev4 root@localhost SYSTEM SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2361,7 +2361,7 @@ set names koi8r|
SHOW CREATE EVENT ev1|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev1 SYSTEM CREATE EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10);
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2374,7 +2374,7 @@ END koi8r koi8r_general_ci utf8_unicode_ci
SHOW CREATE EVENT ev2|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev2 SYSTEM CREATE EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev2 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2387,7 +2387,7 @@ END koi8r koi8r_general_ci utf8_unicode_ci
SHOW CREATE EVENT mysqltest2.ev3|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev3 SYSTEM CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2400,7 +2400,7 @@ END koi8r koi8r_general_ci utf8_unicode_ci
SHOW CREATE EVENT mysqltest2.ev3|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev3 SYSTEM CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2429,7 +2429,7 @@ Db Name Definer Time zone Type Execute at Interval value Interval field Starts E
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev1'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 ev1 root@localhost SYSTEM SQL BEGIN
+def mysqltest1 ev1 root@localhost SYSTEM SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10);
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2442,7 +2442,7 @@ END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREAT
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev2'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 ev2 root@localhost SYSTEM SQL BEGIN
+def mysqltest1 ev2 root@localhost SYSTEM SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2455,7 +2455,7 @@ END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREAT
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev3'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 ev3 root@localhost SYSTEM SQL BEGIN
+def mysqltest2 ev3 root@localhost SYSTEM SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2468,7 +2468,7 @@ END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREAT
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev4'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 ev4 root@localhost SYSTEM SQL BEGIN
+def mysqltest2 ev4 root@localhost SYSTEM SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2497,7 +2497,7 @@ ALTER DATABASE mysqltest1 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
/*!50003 SET sql_mode = '' */ ;;
/*!50003 SET @saved_time_zone = @@time_zone */ ;;
/*!50003 SET time_zone = 'SYSTEM' */ ;;
-/*!50106 CREATE EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10);
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2525,7 +2525,7 @@ ALTER DATABASE mysqltest1 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
/*!50003 SET sql_mode = '' */ ;;
/*!50003 SET @saved_time_zone = @@time_zone */ ;;
/*!50003 SET time_zone = 'SYSTEM' */ ;;
-/*!50106 CREATE EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2564,7 +2564,7 @@ ALTER DATABASE mysqltest2 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
/*!50003 SET sql_mode = '' */ ;;
/*!50003 SET @saved_time_zone = @@time_zone */ ;;
/*!50003 SET time_zone = 'SYSTEM' */ ;;
-/*!50106 CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2592,7 +2592,7 @@ ALTER DATABASE mysqltest2 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
/*!50003 SET sql_mode = '' */ ;;
/*!50003 SET @saved_time_zone = @@time_zone */ ;;
/*!50003 SET time_zone = 'SYSTEM' */ ;;
-/*!50106 CREATE EVENT `ev4` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev4` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2634,7 +2634,7 @@ set names koi8r|
SHOW CREATE EVENT ev1|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev1 SYSTEM CREATE EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10);
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2647,7 +2647,7 @@ END koi8r koi8r_general_ci utf8_unicode_ci
SHOW CREATE EVENT ev2|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev2 SYSTEM CREATE EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev2 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2660,7 +2660,7 @@ END koi8r koi8r_general_ci utf8_unicode_ci
SHOW CREATE EVENT mysqltest2.ev3|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev3 SYSTEM CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2673,7 +2673,7 @@ END koi8r koi8r_general_ci utf8_unicode_ci
SHOW CREATE EVENT mysqltest2.ev3|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev3 SYSTEM CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2702,7 +2702,7 @@ Db Name Definer Time zone Type Execute at Interval value Interval field Starts E
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev1'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 ev1 root@localhost SYSTEM SQL BEGIN
+def mysqltest1 ev1 root@localhost SYSTEM SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10);
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2715,7 +2715,7 @@ END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREAT
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev2'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 ev2 root@localhost SYSTEM SQL BEGIN
+def mysqltest1 ev2 root@localhost SYSTEM SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2728,7 +2728,7 @@ END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREAT
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev3'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 ev3 root@localhost SYSTEM SQL BEGIN
+def mysqltest2 ev3 root@localhost SYSTEM SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
@@ -2741,7 +2741,7 @@ END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREAT
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev4'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 ev4 root@localhost SYSTEM SQL BEGIN
+def mysqltest2 ev4 root@localhost SYSTEM SQL BEGIN
DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(ÐÅÒÅÍ1) AS c1,
diff --git a/mysql-test/r/ddl_i18n_utf8.result b/mysql-test/r/ddl_i18n_utf8.result
index cf4272bf90c..9d27fdb22bb 100644
--- a/mysql-test/r/ddl_i18n_utf8.result
+++ b/mysql-test/r/ddl_i18n_utf8.result
@@ -35,15 +35,15 @@ v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v1'|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL mysqltest1 v1 select 'теÑÑ‚' AS `c1`,`mysqltest1`.`t1`.`кол` AS `c2` from `mysqltest1`.`t1` NONE YES root@localhost DEFINER utf8 utf8_general_ci
+def mysqltest1 v1 select 'теÑÑ‚' AS `c1`,`mysqltest1`.`t1`.`кол` AS `c2` from `mysqltest1`.`t1` NONE YES root@localhost DEFINER utf8 utf8_general_ci
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v2'|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL mysqltest1 v2 select 'теÑÑ‚' AS `c1` NONE NO root@localhost DEFINER utf8 utf8_general_ci
+def mysqltest1 v2 select 'теÑÑ‚' AS `c1` NONE NO root@localhost DEFINER utf8 utf8_general_ci
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v3'|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL mysqltest1 v3 select 'теÑÑ‚' AS `теÑÑ‚` NONE NO root@localhost DEFINER utf8 utf8_general_ci
+def mysqltest1 v3 select 'теÑÑ‚' AS `теÑÑ‚` NONE NO root@localhost DEFINER utf8 utf8_general_ci
SELECT COLLATION(c1), COLLATION(c2) FROM v1|
@@ -87,15 +87,15 @@ v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v1'|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL mysqltest1 v1 select 'теÑÑ‚' AS `c1`,`mysqltest1`.`t1`.`кол` AS `c2` from `mysqltest1`.`t1` NONE YES root@localhost DEFINER utf8 utf8_general_ci
+def mysqltest1 v1 select 'теÑÑ‚' AS `c1`,`mysqltest1`.`t1`.`кол` AS `c2` from `mysqltest1`.`t1` NONE YES root@localhost DEFINER utf8 utf8_general_ci
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v2'|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL mysqltest1 v2 select 'теÑÑ‚' AS `c1` NONE NO root@localhost DEFINER utf8 utf8_general_ci
+def mysqltest1 v2 select 'теÑÑ‚' AS `c1` NONE NO root@localhost DEFINER utf8 utf8_general_ci
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v3'|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL mysqltest1 v3 select 'теÑÑ‚' AS `теÑÑ‚` NONE NO root@localhost DEFINER utf8 utf8_general_ci
+def mysqltest1 v3 select 'теÑÑ‚' AS `теÑÑ‚` NONE NO root@localhost DEFINER utf8 utf8_general_ci
SELECT COLLATION(c1), COLLATION(c2) FROM v1|
@@ -144,15 +144,15 @@ v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v1'|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL mysqltest1 v1 select 'теÑÑ‚' AS `c1`,`mysqltest1`.`t1`.`кол` AS `c2` from `mysqltest1`.`t1` NONE YES root@localhost DEFINER utf8 utf8_general_ci
+def mysqltest1 v1 select 'теÑÑ‚' AS `c1`,`mysqltest1`.`t1`.`кол` AS `c2` from `mysqltest1`.`t1` NONE YES root@localhost DEFINER utf8 utf8_general_ci
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v2'|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL mysqltest1 v2 select 'теÑÑ‚' AS `c1` NONE NO root@localhost DEFINER utf8 utf8_general_ci
+def mysqltest1 v2 select 'теÑÑ‚' AS `c1` NONE NO root@localhost DEFINER utf8 utf8_general_ci
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v3'|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL mysqltest1 v3 select 'теÑÑ‚' AS `теÑÑ‚` NONE NO root@localhost DEFINER utf8 utf8_general_ci
+def mysqltest1 v3 select 'теÑÑ‚' AS `теÑÑ‚` NONE NO root@localhost DEFINER utf8 utf8_general_ci
SELECT COLLATION(c1), COLLATION(c2) FROM v1|
@@ -361,8 +361,8 @@ mysqltest2 p4 PROCEDURE root@localhost MODIFIED CREATED DEFINER utf8 utf8_gener
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p1 NULL mysqltest1 p1 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p1 def mysqltest1 p1 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE перем1 CHAR(10);
SELECT
COLLATION(перем1) AS c1,
@@ -379,8 +379,8 @@ SET парам2 = 'b';
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p2 NULL mysqltest1 p2 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p2 def mysqltest1 p2 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -397,8 +397,8 @@ SET парам2 = 'b';
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p3 NULL mysqltest2 p3 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p3 def mysqltest2 p3 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE перем1 CHAR(10);
SELECT
COLLATION(перем1) AS c1,
@@ -415,8 +415,8 @@ SET парам2 = 'b';
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p4 NULL mysqltest2 p4 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p4 def mysqltest2 p4 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -607,8 +607,8 @@ mysqltest2 p4 PROCEDURE root@localhost MODIFIED CREATED DEFINER utf8 utf8_gener
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p1 NULL mysqltest1 p1 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p1 def mysqltest1 p1 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE перем1 CHAR(10);
SELECT
COLLATION(перем1) AS c1,
@@ -625,8 +625,8 @@ SET парам2 = 'b';
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p2 NULL mysqltest1 p2 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p2 def mysqltest1 p2 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -643,8 +643,8 @@ SET парам2 = 'b';
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p3 NULL mysqltest2 p3 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p3 def mysqltest2 p3 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE перем1 CHAR(10);
SELECT
COLLATION(перем1) AS c1,
@@ -661,8 +661,8 @@ SET парам2 = 'b';
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p4 NULL mysqltest2 p4 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p4 def mysqltest2 p4 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -1009,8 +1009,8 @@ mysqltest2 p4 PROCEDURE root@localhost MODIFIED CREATED DEFINER utf8 utf8_gener
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p1 NULL mysqltest1 p1 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p1 def mysqltest1 p1 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE перем1 CHAR(10);
SELECT
COLLATION(перем1) AS c1,
@@ -1027,8 +1027,8 @@ SET парам2 = 'b';
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p2 NULL mysqltest1 p2 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p2 def mysqltest1 p2 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -1045,8 +1045,8 @@ SET парам2 = 'b';
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p3 NULL mysqltest2 p3 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p3 def mysqltest2 p3 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE перем1 CHAR(10);
SELECT
COLLATION(перем1) AS c1,
@@ -1063,8 +1063,8 @@ SET парам2 = 'b';
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'|
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-p4 NULL mysqltest2 p4 PROCEDURE NULL SQL BEGIN
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+p4 def mysqltest2 p4 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -1323,7 +1323,7 @@ use mysqltest1|
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg1'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 trg1 INSERT NULL mysqltest1 t1 0 NULL BEGIN
+def mysqltest1 trg1 INSERT def mysqltest1 t1 0 NULL BEGIN
DECLARE перем1 CHAR(10);
INSERT INTO log VALUES(COLLATION(перем1));
INSERT INTO log VALUES(COLLATION('текÑÑ‚'));
@@ -1338,7 +1338,7 @@ END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci ut
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg2'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 trg2 INSERT NULL mysqltest1 t1 0 NULL BEGIN
+def mysqltest1 trg2 INSERT def mysqltest1 t1 0 NULL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
INSERT INTO log VALUES(COLLATION(перем1));
INSERT INTO log VALUES(COLLATION('текÑÑ‚'));
@@ -1353,7 +1353,7 @@ END ROW AFTER NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci utf
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg3'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 trg3 INSERT NULL mysqltest2 t1 0 NULL BEGIN
+def mysqltest2 trg3 INSERT def mysqltest2 t1 0 NULL BEGIN
DECLARE перем1 CHAR(10);
INSERT INTO log VALUES(COLLATION(перем1));
INSERT INTO log VALUES(COLLATION('текÑÑ‚'));
@@ -1368,7 +1368,7 @@ END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci ut
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg4'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 trg4 INSERT NULL mysqltest2 t1 0 NULL BEGIN
+def mysqltest2 trg4 INSERT def mysqltest2 t1 0 NULL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
INSERT INTO log VALUES(COLLATION(перем1));
INSERT INTO log VALUES(COLLATION('текÑÑ‚'));
@@ -1596,7 +1596,7 @@ use mysqltest1|
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg1'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 trg1 INSERT NULL mysqltest1 t1 0 NULL BEGIN
+def mysqltest1 trg1 INSERT def mysqltest1 t1 0 NULL BEGIN
DECLARE перем1 CHAR(10);
INSERT INTO log VALUES(COLLATION(перем1));
INSERT INTO log VALUES(COLLATION('текÑÑ‚'));
@@ -1611,7 +1611,7 @@ END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci ut
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg2'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 trg2 INSERT NULL mysqltest1 t1 0 NULL BEGIN
+def mysqltest1 trg2 INSERT def mysqltest1 t1 0 NULL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
INSERT INTO log VALUES(COLLATION(перем1));
INSERT INTO log VALUES(COLLATION('текÑÑ‚'));
@@ -1626,7 +1626,7 @@ END ROW AFTER NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci utf
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg3'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 trg3 INSERT NULL mysqltest2 t1 0 NULL BEGIN
+def mysqltest2 trg3 INSERT def mysqltest2 t1 0 NULL BEGIN
DECLARE перем1 CHAR(10);
INSERT INTO log VALUES(COLLATION(перем1));
INSERT INTO log VALUES(COLLATION('текÑÑ‚'));
@@ -1641,7 +1641,7 @@ END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci ut
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg4'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 trg4 INSERT NULL mysqltest2 t1 0 NULL BEGIN
+def mysqltest2 trg4 INSERT def mysqltest2 t1 0 NULL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
INSERT INTO log VALUES(COLLATION(перем1));
INSERT INTO log VALUES(COLLATION('текÑÑ‚'));
@@ -2031,7 +2031,7 @@ use mysqltest1|
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg1'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 trg1 INSERT NULL mysqltest1 t1 0 NULL BEGIN
+def mysqltest1 trg1 INSERT def mysqltest1 t1 0 NULL BEGIN
DECLARE перем1 CHAR(10);
INSERT INTO log VALUES(COLLATION(перем1));
INSERT INTO log VALUES(COLLATION('текÑÑ‚'));
@@ -2046,7 +2046,7 @@ END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci ut
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg2'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 trg2 INSERT NULL mysqltest1 t1 0 NULL BEGIN
+def mysqltest1 trg2 INSERT def mysqltest1 t1 0 NULL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
INSERT INTO log VALUES(COLLATION(перем1));
INSERT INTO log VALUES(COLLATION('текÑÑ‚'));
@@ -2061,7 +2061,7 @@ END ROW AFTER NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci utf
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg3'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 trg3 INSERT NULL mysqltest2 t1 0 NULL BEGIN
+def mysqltest2 trg3 INSERT def mysqltest2 t1 0 NULL BEGIN
DECLARE перем1 CHAR(10);
INSERT INTO log VALUES(COLLATION(перем1));
INSERT INTO log VALUES(COLLATION('текÑÑ‚'));
@@ -2076,7 +2076,7 @@ END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci ut
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg4'|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 trg4 INSERT NULL mysqltest2 t1 0 NULL BEGIN
+def mysqltest2 trg4 INSERT def mysqltest2 t1 0 NULL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
INSERT INTO log VALUES(COLLATION(перем1));
INSERT INTO log VALUES(COLLATION('текÑÑ‚'));
@@ -2226,7 +2226,7 @@ END|
SHOW CREATE EVENT ev1|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev1 SYSTEM CREATE EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE перем1 CHAR(10);
SELECT
COLLATION(перем1) AS c1,
@@ -2239,7 +2239,7 @@ END utf8 utf8_general_ci utf8_unicode_ci
SHOW CREATE EVENT ev2|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev2 SYSTEM CREATE EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev2 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2252,7 +2252,7 @@ END utf8 utf8_general_ci utf8_unicode_ci
SHOW CREATE EVENT mysqltest2.ev3|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev3 SYSTEM CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2265,7 +2265,7 @@ END utf8 utf8_general_ci utf8_unicode_ci
SHOW CREATE EVENT mysqltest2.ev3|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev3 SYSTEM CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2294,7 +2294,7 @@ Db Name Definer Time zone Type Execute at Interval value Interval field Starts E
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev1'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 ev1 root@localhost SYSTEM SQL BEGIN
+def mysqltest1 ev1 root@localhost SYSTEM SQL BEGIN
DECLARE перем1 CHAR(10);
SELECT
COLLATION(перем1) AS c1,
@@ -2307,7 +2307,7 @@ END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREAT
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev2'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 ev2 root@localhost SYSTEM SQL BEGIN
+def mysqltest1 ev2 root@localhost SYSTEM SQL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2320,7 +2320,7 @@ END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREAT
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev3'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 ev3 root@localhost SYSTEM SQL BEGIN
+def mysqltest2 ev3 root@localhost SYSTEM SQL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2333,7 +2333,7 @@ END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREAT
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev4'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 ev4 root@localhost SYSTEM SQL BEGIN
+def mysqltest2 ev4 root@localhost SYSTEM SQL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2361,7 +2361,7 @@ set names utf8|
SHOW CREATE EVENT ev1|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev1 SYSTEM CREATE EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE перем1 CHAR(10);
SELECT
COLLATION(перем1) AS c1,
@@ -2374,7 +2374,7 @@ END utf8 utf8_general_ci utf8_unicode_ci
SHOW CREATE EVENT ev2|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev2 SYSTEM CREATE EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev2 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2387,7 +2387,7 @@ END utf8 utf8_general_ci utf8_unicode_ci
SHOW CREATE EVENT mysqltest2.ev3|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev3 SYSTEM CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2400,7 +2400,7 @@ END utf8 utf8_general_ci utf8_unicode_ci
SHOW CREATE EVENT mysqltest2.ev3|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev3 SYSTEM CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2429,7 +2429,7 @@ Db Name Definer Time zone Type Execute at Interval value Interval field Starts E
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev1'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 ev1 root@localhost SYSTEM SQL BEGIN
+def mysqltest1 ev1 root@localhost SYSTEM SQL BEGIN
DECLARE перем1 CHAR(10);
SELECT
COLLATION(перем1) AS c1,
@@ -2442,7 +2442,7 @@ END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREAT
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev2'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 ev2 root@localhost SYSTEM SQL BEGIN
+def mysqltest1 ev2 root@localhost SYSTEM SQL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2455,7 +2455,7 @@ END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREAT
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev3'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 ev3 root@localhost SYSTEM SQL BEGIN
+def mysqltest2 ev3 root@localhost SYSTEM SQL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2468,7 +2468,7 @@ END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREAT
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev4'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 ev4 root@localhost SYSTEM SQL BEGIN
+def mysqltest2 ev4 root@localhost SYSTEM SQL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2497,7 +2497,7 @@ ALTER DATABASE mysqltest1 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
/*!50003 SET sql_mode = '' */ ;;
/*!50003 SET @saved_time_zone = @@time_zone */ ;;
/*!50003 SET time_zone = 'SYSTEM' */ ;;
-/*!50106 CREATE EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE перем1 CHAR(10);
SELECT
COLLATION(перем1) AS c1,
@@ -2525,7 +2525,7 @@ ALTER DATABASE mysqltest1 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
/*!50003 SET sql_mode = '' */ ;;
/*!50003 SET @saved_time_zone = @@time_zone */ ;;
/*!50003 SET time_zone = 'SYSTEM' */ ;;
-/*!50106 CREATE EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2564,7 +2564,7 @@ ALTER DATABASE mysqltest2 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
/*!50003 SET sql_mode = '' */ ;;
/*!50003 SET @saved_time_zone = @@time_zone */ ;;
/*!50003 SET time_zone = 'SYSTEM' */ ;;
-/*!50106 CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2592,7 +2592,7 @@ ALTER DATABASE mysqltest2 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
/*!50003 SET sql_mode = '' */ ;;
/*!50003 SET @saved_time_zone = @@time_zone */ ;;
/*!50003 SET time_zone = 'SYSTEM' */ ;;
-/*!50106 CREATE EVENT `ev4` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev4` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2634,7 +2634,7 @@ set names utf8|
SHOW CREATE EVENT ev1|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev1 SYSTEM CREATE EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE перем1 CHAR(10);
SELECT
COLLATION(перем1) AS c1,
@@ -2647,7 +2647,7 @@ END utf8 utf8_general_ci utf8_unicode_ci
SHOW CREATE EVENT ev2|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev2 SYSTEM CREATE EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev2 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2660,7 +2660,7 @@ END utf8 utf8_general_ci utf8_unicode_ci
SHOW CREATE EVENT mysqltest2.ev3|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev3 SYSTEM CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2673,7 +2673,7 @@ END utf8 utf8_general_ci utf8_unicode_ci
SHOW CREATE EVENT mysqltest2.ev3|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev3 SYSTEM CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2702,7 +2702,7 @@ Db Name Definer Time zone Type Execute at Interval value Interval field Starts E
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev1'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 ev1 root@localhost SYSTEM SQL BEGIN
+def mysqltest1 ev1 root@localhost SYSTEM SQL BEGIN
DECLARE перем1 CHAR(10);
SELECT
COLLATION(перем1) AS c1,
@@ -2715,7 +2715,7 @@ END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREAT
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev2'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest1 ev2 root@localhost SYSTEM SQL BEGIN
+def mysqltest1 ev2 root@localhost SYSTEM SQL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2728,7 +2728,7 @@ END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREAT
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev3'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 ev3 root@localhost SYSTEM SQL BEGIN
+def mysqltest2 ev3 root@localhost SYSTEM SQL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
@@ -2741,7 +2741,7 @@ END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREAT
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev4'|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest2 ev4 root@localhost SYSTEM SQL BEGIN
+def mysqltest2 ev4 root@localhost SYSTEM SQL BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
diff --git a/mysql-test/r/debug_sync.result b/mysql-test/r/debug_sync.result
index 47e968f79cf..8b46334204c 100644
--- a/mysql-test/r/debug_sync.result
+++ b/mysql-test/r/debug_sync.result
@@ -243,7 +243,7 @@ GRANT ALL ON *.* TO mysqltest_2@localhost;
REVOKE SUPER ON *.* FROM mysqltest_2@localhost;
connection con1, mysqltest_2
SET DEBUG_SYNC= 'RESET';
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
connection default
DROP USER mysqltest_2@localhost;
SET DEBUG_SYNC= 'RESET';
diff --git a/mysql-test/r/delayed.result b/mysql-test/r/delayed.result
index d8048a703a2..2bc77c52bec 100644
--- a/mysql-test/r/delayed.result
+++ b/mysql-test/r/delayed.result
@@ -252,7 +252,7 @@ HEX(a)
DROP TABLE t1;
CREATE TABLE t1 (a INT);
INSERT DELAYED INTO t1 SET b= b();
-ERROR 42S22: Unknown column 'b' in 'field list'
+ERROR 42000: FUNCTION test.b does not exist
DROP TABLE t1;
End of 5.0 tests
DROP TABLE IF EXISTS t1,t2;
@@ -323,3 +323,25 @@ Got one of the listed errors
UNLOCK TABLES;
DROP TABLE t1, t2;
End of 5.1 tests
+#
+# Bug #47274 assert in open_table on CREATE TABLE <already existing>
+#
+DROP TABLE IF EXISTS t1;
+DROP TABLE IF EXISTS t2;
+CREATE TABLE t1 ( f1 INTEGER AUTO_INCREMENT, PRIMARY KEY (f1));
+# The following CREATE TABLEs before gave an assert.
+INSERT DELAYED t1 VALUES (4);
+CREATE TABLE t1 AS SELECT 1 AS f1;
+ERROR 42S01: Table 't1' already exists
+REPLACE DELAYED t1 VALUES (5);
+CREATE TABLE t1 AS SELECT 1 AS f1;
+ERROR 42S01: Table 't1' already exists
+INSERT DELAYED t1 VALUES (6);
+CREATE TABLE t1 (f1 INTEGER);
+ERROR 42S01: Table 't1' already exists
+CREATE TABLE t2 (f1 INTEGER);
+INSERT DELAYED t1 VALUES (7);
+CREATE TABLE t1 LIKE t2;
+ERROR 42S01: Table 't1' already exists
+DROP TABLE t2;
+DROP TABLE t1;
diff --git a/mysql-test/r/delete.result b/mysql-test/r/delete.result
index 1df19a75854..c76937c7abd 100644
--- a/mysql-test/r/delete.result
+++ b/mysql-test/r/delete.result
@@ -259,8 +259,8 @@ ERROR 42S02: Unknown table 't2' in MULTI DELETE
DELETE FROM db1.t1 alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.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 'alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a' at line 1
DELETE FROM alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
-ERROR 42S02: Unknown table 'alias' in MULTI DELETE
DELETE FROM db2.alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
+ERROR 42S02: Unknown table 'alias' in MULTI DELETE
DELETE FROM t1 USING t1 WHERE a = 1;
SELECT * FROM t1;
a
@@ -279,6 +279,147 @@ ERROR 42000: Incorrect number of arguments for FUNCTION test.f1; expected 0, got
DROP TABLE t1;
DROP FUNCTION f1;
End of 5.0 tests
+DROP DATABASE IF EXISTS db1;
+DROP DATABASE IF EXISTS db2;
+DROP DATABASE IF EXISTS db3;
+DROP DATABASE IF EXISTS db4;
+DROP TABLE IF EXISTS t1, t2;
+DROP PROCEDURE IF EXISTS count;
+USE test;
+CREATE DATABASE db1;
+CREATE DATABASE db2;
+CREATE TABLE db1.t1 (a INT, b INT);
+INSERT INTO db1.t1 VALUES (1,1),(2,2),(3,3);
+CREATE TABLE db1.t2 AS SELECT * FROM db1.t1;
+CREATE TABLE db2.t1 AS SELECT * FROM db1.t2;
+CREATE TABLE db2.t2 AS SELECT * FROM db2.t1;
+CREATE TABLE t1 AS SELECT * FROM db2.t2;
+CREATE TABLE t2 AS SELECT * FROM t1;
+CREATE PROCEDURE count_rows()
+BEGIN
+SELECT COUNT(*) AS "COUNT(db1.t1)" FROM db1.t1;
+SELECT COUNT(*) AS "COUNT(db1.t2)" FROM db1.t2;
+SELECT COUNT(*) AS "COUNT(db2.t1)" FROM db2.t1;
+SELECT COUNT(*) AS "COUNT(db2.t2)" FROM db2.t2;
+SELECT COUNT(*) AS "COUNT(test.t1)" FROM test.t1;
+SELECT COUNT(*) AS "COUNT(test.t2)" FROM test.t2;
+END|
+CREATE DATABASE db3;
+USE db3;
+DROP DATABASE db3;
+SELECT * FROM t1;
+ERROR 3D000: No database selected
+DELETE a1,a2 FROM db1.t1, db2.t2;
+ERROR 3D000: No database selected
+DELETE a1,a2 FROM db1.t1, db2.t2;
+ERROR 3D000: No database selected
+DELETE a1,a2 FROM db1.t1 AS a1, db2.t2;
+ERROR 3D000: No database selected
+DELETE a1,a2 FROM db1.t1, db2.t2 AS a2;
+ERROR 3D000: No database selected
+DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
+ERROR 3D000: No database selected
+DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
+ERROR 3D000: No database selected
+DELETE FROM a1,a2 USING db1.t1, db2.t2;
+ERROR 3D000: No database selected
+DELETE FROM a1,a2 USING db1.t1, db2.t2;
+ERROR 3D000: No database selected
+DELETE FROM a1,a2 USING db1.t1 AS a1, db2.t2;
+ERROR 3D000: No database selected
+DELETE FROM a1,a2 USING db1.t1, db2.t2 AS a2;
+ERROR 3D000: No database selected
+DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
+ERROR 3D000: No database selected
+DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
+ERROR 3D000: No database selected
+DELETE a1 FROM db1.t1 AS a1, db2.t2 AS a1;
+ERROR 3D000: No database selected
+DELETE a1 FROM db1.a1, db2.t2 AS a1;
+ERROR 3D000: No database selected
+DELETE a1 FROM a1, db1.t1 AS a1;
+ERROR 3D000: No database selected
+DELETE t1 FROM db1.t1, db2.t1 AS a1;
+ERROR 3D000: No database selected
+DELETE t1 FROM db1.t1 AS a1, db2.t1 AS a2;
+ERROR 3D000: No database selected
+DELETE t1 FROM db1.t1, db2.t1;
+ERROR 3D000: No database selected
+USE test;
+DELETE a1,a2 FROM db1.t1, db2.t2;
+ERROR 42S02: Unknown table 'a1' in MULTI DELETE
+DELETE a1,a2 FROM db1.t1, db2.t2;
+ERROR 42S02: Unknown table 'a1' in MULTI DELETE
+DELETE a1,a2 FROM db1.t1 AS a1, db2.t2;
+ERROR 42S02: Unknown table 'a2' in MULTI DELETE
+DELETE a1,a2 FROM db1.t1, db2.t2 AS a2;
+ERROR 42S02: Unknown table 'a1' in MULTI DELETE
+DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
+ERROR 42S02: Table 'db3.t1' doesn't exist
+DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
+ERROR 42S02: Table 'db3.t1' doesn't exist
+DELETE FROM a1,a2 USING db1.t1, db2.t2;
+ERROR 42S02: Unknown table 'a1' in MULTI DELETE
+DELETE FROM a1,a2 USING db1.t1, db2.t2;
+ERROR 42S02: Unknown table 'a1' in MULTI DELETE
+DELETE FROM a1,a2 USING db1.t1 AS a1, db2.t2;
+ERROR 42S02: Unknown table 'a2' in MULTI DELETE
+DELETE FROM a1,a2 USING db1.t1, db2.t2 AS a2;
+ERROR 42S02: Unknown table 'a1' in MULTI DELETE
+DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
+ERROR 42S02: Table 'db3.t1' doesn't exist
+DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
+ERROR 42S02: Table 'db3.t1' doesn't exist
+DELETE a1 FROM db1.t1 AS a1, db2.t2 AS a1;
+ERROR 42000: Not unique table/alias: 'a1'
+DELETE a1 FROM db1.a1, db2.t2 AS a1;
+ERROR 42S02: Table 'db1.a1' doesn't exist
+DELETE a1 FROM a1, db1.t1 AS a1;
+ERROR 42000: Not unique table/alias: 'a1'
+DELETE t1 FROM db1.t1, db2.t1 AS a1;
+ERROR 42S02: Unknown table 't1' in MULTI DELETE
+DELETE t1 FROM db1.t1 AS a1, db2.t1 AS a2;
+ERROR 42S02: Unknown table 't1' in MULTI DELETE
+DELETE t1 FROM db1.t1, db2.t1;
+ERROR 42S02: Unknown table 't1' in MULTI DELETE
+DELETE t1 FROM db1.t2 AS t1, db2.t2 AS t2 WHERE t2.a = 1 AND t1.a = t2.a;
+SELECT ROW_COUNT();
+ROW_COUNT()
+1
+CALL count_rows();
+COUNT(db1.t1)
+3
+COUNT(db1.t2)
+2
+COUNT(db2.t1)
+3
+COUNT(db2.t2)
+3
+COUNT(test.t1)
+3
+COUNT(test.t2)
+3
+DELETE a1, a2 FROM db2.t1 AS a1, t2 AS a2 WHERE a1.a = 2 AND a2.a = 2;
+SELECT ROW_COUNT();
+ROW_COUNT()
+2
+CALL count_rows();
+COUNT(db1.t1)
+3
+COUNT(db1.t2)
+2
+COUNT(db2.t1)
+2
+COUNT(db2.t2)
+3
+COUNT(test.t1)
+3
+COUNT(test.t2)
+2
+DROP DATABASE db1;
+DROP DATABASE db2;
+DROP PROCEDURE count_rows;
+DROP TABLE t1, t2;
#
# Bug#46958: Assertion in Diagnostics_area::set_ok_status, trigger,
# merge table
diff --git a/mysql-test/r/deprecated_features.result b/mysql-test/r/deprecated_features.result
new file mode 100644
index 00000000000..ecfb830542d
--- /dev/null
+++ b/mysql-test/r/deprecated_features.result
@@ -0,0 +1,26 @@
+set global log_bin_trust_routine_creators=1;
+ERROR HY000: Unknown system variable 'log_bin_trust_routine_creators'
+set table_type='MyISAM';
+ERROR HY000: Unknown system variable 'table_type'
+select @@table_type='MyISAM';
+ERROR HY000: Unknown system variable 'table_type'
+backup table t1 to 'data.txt';
+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 'backup table t1 to 'data.txt'' at line 1
+restore table t1 from 'data.txt';
+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 'restore table t1 from 'data.txt'' at line 1
+show plugin;
+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 'plugin' at line 1
+load table t1 from master;
+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 'table t1 from master' at line 1
+load data from master;
+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 'from master' at line 1
+SHOW INNODB STATUS;
+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 'INNODB STATUS' at line 1
+create table t1 (t6 timestamp(6));
+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 '(6))' at line 1
+create table t1 (t6 timestamp) type=myisam;
+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 'type=myisam' at line 1
+show table types;
+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 'types' at line 1
+show mutex status;
+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 'mutex status' at line 1
diff --git a/mysql-test/r/derived.result b/mysql-test/r/derived.result
index 80f04ffd455..53cd89c13c1 100644
--- a/mysql-test/r/derived.result
+++ b/mysql-test/r/derived.result
@@ -277,7 +277,7 @@ select * from t1;
N M
3 0
delete P1.*,p2.* from `t1` AS P1 INNER JOIN (SELECT N FROM `t1` GROUP BY N HAVING Count(M) > 1) AS p2 ON P1.N = p2.N;
-ERROR 42S02: Unknown table 'p2' in MULTI DELETE
+ERROR HY000: The target table p2 of the DELETE is not updatable
delete P1.* from `t1` AS P1 INNER JOIN (SELECT aaa FROM `t1` GROUP BY N HAVING Count(M) > 1) AS P2 ON P1.N = P2.N;
ERROR 42S22: Unknown column 'aaa' in 'field list'
drop table t1;
diff --git a/mysql-test/r/dirty_close.result b/mysql-test/r/dirty_close.result
index b49b72f1b95..f7012ff9c01 100644
--- a/mysql-test/r/dirty_close.result
+++ b/mysql-test/r/dirty_close.result
@@ -7,3 +7,13 @@ n
2
3
DROP TABLE t1;
+SELECT GET_LOCK("dangling", 0);
+GET_LOCK("dangling", 0)
+1
+SELECT GET_LOCK('dangling', 3600);;
+SELECT GET_LOCK('dangling', 3600);;
+SELECT RELEASE_LOCK('dangling');
+RELEASE_LOCK('dangling')
+1
+GET_LOCK('dangling', 3600)
+1
diff --git a/mysql-test/r/drop-no_root.result b/mysql-test/r/drop-no_root.result
new file mode 100644
index 00000000000..3e1f2fe2cf0
--- /dev/null
+++ b/mysql-test/r/drop-no_root.result
@@ -0,0 +1,28 @@
+
+# --
+# -- Bug#26704: Failing DROP DATABASE brings mysql-client out of sync.
+# --
+
+DROP DATABASE IF EXISTS mysql_test;
+
+CREATE DATABASE mysql_test;
+CREATE TABLE mysql_test.t1(c INT);
+use mysql_test;
+
+chmod 000 mysql_test/t1.frm
+
+DROP DATABASE mysql_test;
+
+SELECT DATABASE();
+DATABASE()
+mysql_test
+
+rm -f mysql_test/t1.MYD mysql_test/t1.MYI
+chmod 666 mysql_test/t1.frm
+rm -f mysql_test/t1.frm
+
+DROP DATABASE mysql_test;
+
+use test;
+
+# -- End of Bug#26704.
diff --git a/mysql-test/r/drop.result b/mysql-test/r/drop.result
index b798b49dd34..ae75f21955e 100644
--- a/mysql-test/r/drop.result
+++ b/mysql-test/r/drop.result
@@ -50,6 +50,7 @@ information_schema
mtr
mysql
mysqltest
+performance_schema
test
flush tables with read lock;
drop database mysqltest;
@@ -61,6 +62,7 @@ Database
information_schema
mtr
mysql
+performance_schema
test
drop database mysqltest;
ERROR HY000: Can't drop database 'mysqltest'; database doesn't exist
@@ -86,6 +88,26 @@ select 1;
1
1
unlock tables;
+drop table if exists t1,t2;
+create table t1 (a int);
+create table t2 (a int);
+lock table t1 read;
+drop table t2;
+ERROR HY000: Table 't2' was not locked with LOCK TABLES
+drop table t1;
+ERROR HY000: Table 't1' was locked with a READ lock and can't be updated
+unlock tables;
+drop table t1,t2;
+create table t1 (i int);
+create table t2 (i int);
+lock tables t1 read;
+lock tables t2 read;
+drop table t1;
+ERROR HY000: Table 't1' was not locked with LOCK TABLES
+drop table t1,t2;
+ERROR HY000: Table 't1' was locked with a READ lock and can't be updated
+unlock tables;
+drop table t1,t2;
End of 5.0 tests
create database mysql_test;
create table mysql_test.t1(f1 int);
@@ -121,3 +143,17 @@ ERROR 42000: Incorrect table name '#mysql50#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
use test;
drop database mysqltestbug26703;
End of 5.1 tests
+
+# --
+# -- Bug#37431 (DROP TABLE does not report errors correctly).
+# --
+DROP TABLE IF EXISTS t1;
+DROP TABLE t1;
+ERROR 42S02: Unknown table 't1'
+SHOW WARNINGS;
+Level Code Message
+Error 1051 Unknown table 't1'
+
+# --
+# -- End of Bug#37431.
+# --
diff --git a/mysql-test/r/drop_debug.result b/mysql-test/r/drop_debug.result
new file mode 100644
index 00000000000..75346b88bc6
--- /dev/null
+++ b/mysql-test/r/drop_debug.result
@@ -0,0 +1,21 @@
+
+# --
+# -- Bug#43138: DROP DATABASE failure does not clean up message list.
+# --
+
+DROP DATABASE IF EXISTS mysql_test;
+
+CREATE DATABASE mysql_test;
+CREATE TABLE mysql_test.t1(a INT);
+
+SET SESSION DEBUG = "+d,bug43138";
+
+DROP DATABASE mysql_test;
+Warnings:
+Error 1051 Unknown table 't1'
+
+SET SESSION DEBUG = "-d,bug43138";
+
+# --
+# -- End of Bug#43138.
+# --
diff --git a/mysql-test/r/errors.result b/mysql-test/r/errors.result
index 022a32d9c9b..79474b960f5 100644
--- a/mysql-test/r/errors.result
+++ b/mysql-test/r/errors.result
@@ -55,3 +55,68 @@ Error 1054 Unknown column 'b' in 'field list'
INSERT INTO t1 SELECT b FROM t1;
ERROR 42S22: Unknown column 'b' in 'field list'
DROP TABLE t1;
+flush status;
+drop table if exists t1, t2;
+create table t1 (a int unique);
+create table t2 (a int);
+drop function if exists f1;
+Warnings:
+Note 1305 FUNCTION f1 does not exist
+drop function if exists f2;
+Warnings:
+Note 1305 FUNCTION f2 does not exist
+create function f1() returns int
+begin
+insert into t1 (a) values (1);
+insert into t1 (a) values (1);
+return 1;
+end|
+create function f2() returns int
+begin
+insert into t2 (a) values (1);
+return 2;
+end|
+flush status;
+select f1(), f2();
+ERROR 23000: Duplicate entry '1' for key 'a'
+show status like 'Com_insert';
+Variable_name Value
+Com_insert 2
+select * from t1;
+a
+1
+select * from t2;
+a
+drop table t1;
+drop table t2;
+drop function f1;
+drop function f2;
+SET NAMES utf8;
+SET sql_quote_show_create= _binary x'5452C39C45';
+ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TR\xC3\x9CE'
+SET sql_quote_show_create= _utf8 x'5452C39C45';
+ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TRÜE'
+SET sql_quote_show_create=_latin1 x'5452DC45';
+ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TRÜE'
+SET sql_quote_show_create='TRÜE';
+ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TRÜE'
+SET sql_quote_show_create=TRÜE;
+ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TRÜE'
+SET NAMES latin1;
+SET sql_quote_show_create= _binary x'5452C39C45';
+ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TR\xC3\x9CE'
+SET sql_quote_show_create= _utf8 x'5452C39C45';
+ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TRÜE'
+SET sql_quote_show_create=_latin1 x'5452DC45';
+ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TRÜE'
+SET sql_quote_show_create='TRÜE';
+ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TRÜE'
+SET sql_quote_show_create=TRÜE;
+ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TRÜE'
+SET NAMES binary;
+SET sql_quote_show_create= _binary x'5452C39C45';
+ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TR\xC3\x9CE'
+SET sql_quote_show_create= _utf8 x'5452C39C45';
+ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TRÜE'
+SET sql_quote_show_create=_latin1 x'5452DC45';
+ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TRÜE'
diff --git a/mysql-test/r/events_1.result b/mysql-test/r/events_1.result
index e7b645f5556..e068158e6ce 100644
--- a/mysql-test/r/events_1.result
+++ b/mysql-test/r/events_1.result
@@ -123,80 +123,80 @@ set names utf8;
CREATE EVENT root6 ON SCHEDULE EVERY '10:20' MINUTE_SECOND ON COMPLETION PRESERVE ENABLE COMMENT 'some comment' DO select 1;
SHOW CREATE EVENT root6;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-root6 SYSTEM CREATE EVENT `root6` ON SCHEDULE EVERY '10:20' MINUTE_SECOND STARTS '#' ON COMPLETION PRESERVE ENABLE COMMENT 'some comment' DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+root6 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `root6` ON SCHEDULE EVERY '10:20' MINUTE_SECOND STARTS '#' ON COMPLETION PRESERVE ENABLE COMMENT 'some comment' DO select 1 utf8 utf8_general_ci latin1_swedish_ci
create event root7 on schedule every 2 year do select 1;
SHOW CREATE EVENT root7;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-root7 SYSTEM CREATE EVENT `root7` ON SCHEDULE EVERY 2 YEAR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+root7 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `root7` ON SCHEDULE EVERY 2 YEAR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
create event root8 on schedule every '2:5' year_month do select 1;
SHOW CREATE EVENT root8;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-root8 SYSTEM CREATE EVENT `root8` ON SCHEDULE EVERY '2-5' YEAR_MONTH STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+root8 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `root8` ON SCHEDULE EVERY '2-5' YEAR_MONTH STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
create event root8_1 on schedule every '2:15' year_month do select 1;
SHOW CREATE EVENT root8_1;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-root8_1 SYSTEM CREATE EVENT `root8_1` ON SCHEDULE EVERY '3-3' YEAR_MONTH STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+root8_1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `root8_1` ON SCHEDULE EVERY '3-3' YEAR_MONTH STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
create event root9 on schedule every 2 week ON COMPLETION PRESERVE DISABLE COMMENT 'коментар на кирилица' do select 1;
SHOW CREATE EVENT root9;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-root9 SYSTEM CREATE EVENT `root9` ON SCHEDULE EVERY 2 WEEK STARTS '#' ON COMPLETION PRESERVE DISABLE COMMENT 'коментар на кирилица' DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+root9 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `root9` ON SCHEDULE EVERY 2 WEEK STARTS '#' ON COMPLETION PRESERVE DISABLE COMMENT 'коментар на кирилица' DO select 1 utf8 utf8_general_ci latin1_swedish_ci
create event root10 on schedule every '20:5' day_hour do select 1;
SHOW CREATE EVENT root10;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-root10 SYSTEM CREATE EVENT `root10` ON SCHEDULE EVERY '20 5' DAY_HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+root10 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `root10` ON SCHEDULE EVERY '20 5' DAY_HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
create event root11 on schedule every '20:25' day_hour do select 1;
SHOW CREATE EVENT root11;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-root11 SYSTEM CREATE EVENT `root11` ON SCHEDULE EVERY '21 1' DAY_HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+root11 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `root11` ON SCHEDULE EVERY '21 1' DAY_HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
create event root12 on schedule every '20:25' hour_minute do select 1;
SHOW CREATE EVENT root12;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-root12 SYSTEM CREATE EVENT `root12` ON SCHEDULE EVERY '20:25' HOUR_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+root12 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `root12` ON SCHEDULE EVERY '20:25' HOUR_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
create event root13 on schedule every '25:25' hour_minute do select 1;
SHOW CREATE EVENT root13;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-root13 SYSTEM CREATE EVENT `root13` ON SCHEDULE EVERY '25:25' HOUR_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+root13 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `root13` ON SCHEDULE EVERY '25:25' HOUR_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
create event root13_1 on schedule every '11:65' hour_minute do select 1;
SHOW CREATE EVENT root13_1;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-root13_1 SYSTEM CREATE EVENT `root13_1` ON SCHEDULE EVERY '12:5' HOUR_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+root13_1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `root13_1` ON SCHEDULE EVERY '12:5' HOUR_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
create event root14 on schedule every '35:35' minute_second do select 1;
SHOW CREATE EVENT root14;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-root14 SYSTEM CREATE EVENT `root14` ON SCHEDULE EVERY '35:35' MINUTE_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+root14 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `root14` ON SCHEDULE EVERY '35:35' MINUTE_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
create event root15 on schedule every '35:66' minute_second do select 1;
SHOW CREATE EVENT root15;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-root15 SYSTEM CREATE EVENT `root15` ON SCHEDULE EVERY '36:6' MINUTE_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+root15 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `root15` ON SCHEDULE EVERY '36:6' MINUTE_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
create event root16 on schedule every '35:56' day_minute do select 1;
SHOW CREATE EVENT root16;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-root16 SYSTEM CREATE EVENT `root16` ON SCHEDULE EVERY '1 11:56' DAY_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+root16 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `root16` ON SCHEDULE EVERY '1 11:56' DAY_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
create event root17 on schedule every '35:12:45' day_minute do select 1;
SHOW CREATE EVENT root17;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-root17 SYSTEM CREATE EVENT `root17` ON SCHEDULE EVERY '35 12:45' DAY_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+root17 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `root17` ON SCHEDULE EVERY '35 12:45' DAY_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
create event root17_1 on schedule every '35:25:65' day_minute do select 1;
SHOW CREATE EVENT root17_1;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-root17_1 SYSTEM CREATE EVENT `root17_1` ON SCHEDULE EVERY '36 2:5' DAY_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+root17_1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `root17_1` ON SCHEDULE EVERY '36 2:5' DAY_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
create event root18 on schedule every '35:12:45' hour_second do select 1;
SHOW CREATE EVENT root18;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-root18 SYSTEM CREATE EVENT `root18` ON SCHEDULE EVERY '35:12:45' HOUR_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+root18 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `root18` ON SCHEDULE EVERY '35:12:45' HOUR_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
create event root19 on schedule every '15:59:85' hour_second do select 1;
SHOW CREATE EVENT root19;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-root19 SYSTEM CREATE EVENT `root19` ON SCHEDULE EVERY '16:0:25' HOUR_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+root19 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `root19` ON SCHEDULE EVERY '16:0:25' HOUR_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
create event root20 on schedule every '50:20:12:45' day_second do select 1;
SHOW CREATE EVENT root20;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-root20 SYSTEM CREATE EVENT `root20` ON SCHEDULE EVERY '50 20:12:45' DAY_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+root20 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `root20` ON SCHEDULE EVERY '50 20:12:45' DAY_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
set names cp1251;
create event ðóóò21 on schedule every '50:23:59:95' day_second COMMENT 'òîâà å 1251 êîìåíòàð' do select 1;
SHOW CREATE EVENT ðóóò21;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ðóóò21 SYSTEM CREATE EVENT `руут21` ON SCHEDULE EVERY '51 0:0:35' DAY_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE COMMENT 'това е 1251 коментар' DO select 1 cp1251 cp1251_general_ci latin1_swedish_ci
+ðóóò21 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `руут21` ON SCHEDULE EVERY '51 0:0:35' DAY_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE COMMENT 'това е 1251 коментар' DO select 1 cp1251 cp1251_general_ci latin1_swedish_ci
insert into mysql.event (
db,
name,
@@ -271,7 +271,7 @@ event_name
intact_check
SHOW CREATE EVENT intact_check;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-intact_check SYSTEM CREATE EVENT `intact_check` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO SELECT "nothing" latin1 latin1_swedish_ci latin1_swedish_ci
+intact_check SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `intact_check` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO SELECT "nothing" latin1 latin1_swedish_ci latin1_swedish_ci
DROP EVENT no_such_event;
ERROR HY000: Unknown event 'no_such_event'
CREATE EVENT intact_check_1 ON SCHEDULE EVERY 5 HOUR DO SELECT 5;
diff --git a/mysql-test/r/events_2.result b/mysql-test/r/events_2.result
index db503f7aa6d..530d8559f11 100644
--- a/mysql-test/r/events_2.result
+++ b/mysql-test/r/events_2.result
@@ -13,12 +13,6 @@ ERROR HY000: Incorrect AT value: 'definitely not a datetime'
set names utf8;
create event задачка on schedule every 123 minute starts now() ends now() + interval 1 month do select 1;
drop event задачка;
-set event_scheduler=off;
-ERROR HY000: Variable 'event_scheduler' is a GLOBAL variable and should be set with SET GLOBAL
-set global event_scheduler=3;
-ERROR 42000: Variable 'event_scheduler' can't be set to the value of '3'
-set global event_scheduler=disabled;
-ERROR 42000: Variable 'event_scheduler' can't be set to the value of 'disabled'
"DISABLE the scheduler. Testing that it does not work when the variable is 0"
set global event_scheduler=off;
select definer, name, db from mysql.event;
@@ -134,7 +128,7 @@ create event e1 on schedule every 10 hour do select 1;
lock table t1 read;
show create event e1;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-e1 SYSTEM CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+e1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
select event_name from information_schema.events;
event_name
e1
@@ -152,7 +146,7 @@ unlock tables;
lock table t1 write;
show create event e1;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-e1 SYSTEM CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+e1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
select event_name from information_schema.events;
event_name
e1
@@ -170,7 +164,7 @@ unlock tables;
lock table t1 read, mysql.event read;
show create event e1;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-e1 SYSTEM CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+e1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
select event_name from information_schema.events;
event_name
e1
@@ -188,7 +182,7 @@ unlock tables;
lock table t1 write, mysql.event read;
show create event e1;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-e1 SYSTEM CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+e1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
select event_name from information_schema.events;
event_name
e1
@@ -210,7 +204,7 @@ ERROR HY000: You can't combine write-locking of system tables with other tables
lock table mysql.event write;
show create event e1;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-e1 SYSTEM CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+e1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
select event_name from information_schema.events;
event_name
e1
diff --git a/mysql-test/r/events_bugs.result b/mysql-test/r/events_bugs.result
index 50bfa97c59f..a5003c936e8 100644
--- a/mysql-test/r/events_bugs.result
+++ b/mysql-test/r/events_bugs.result
@@ -16,7 +16,7 @@ DROP EVENT Lower_case;
SET NAMES cp1251;
CREATE EVENT äîëåí_ðåãèñòúð_1251 ON SCHEDULE EVERY 1 YEAR DO SELECT 100;
CREATE EVENT ÄîËåÍ_ðåãèñòúð_1251 ON SCHEDULE EVERY 2 YEAR DO SELECT 200;
-ERROR HY000: Event 'ДоЛеÐ_региÑтър_1251' already exists
+ERROR HY000: Event 'ÄîËåÍ_ðåãèñòúð_1251' already exists
DROP EVENT ÄîËåÍ_ðåãèñòúð_1251;
SET NAMES utf8;
CREATE EVENT долен_региÑтър_утф8 ON SCHEDULE EVERY 3 YEAR DO SELECT 300;
@@ -77,7 +77,7 @@ set sql_mode='traditional';
alter event e_16407 do select 1;
select event_schema, event_name, sql_mode from information_schema.events order by event_schema, event_name;
event_schema event_name sql_mode
-events_test e_16407 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+events_test e_16407 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
drop event e_16407;
set sql_mode="ansi";
select get_lock('ee_16407_2', 60);
@@ -114,8 +114,8 @@ insert into events_test.events_smode_test values ('ee_16407_4','10-11-1956');
end|
select event_schema, event_name, sql_mode from information_schema.events order by event_schema, event_name;
event_schema event_name sql_mode
-events_test ee_16407_2 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
-events_test ee_16407_3 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+events_test ee_16407_2 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
+events_test ee_16407_3 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
events_test ee_16407_4
select /*2*/ user, host, db, info from information_schema.processlist
where state = 'User lock' and info = 'select get_lock(\'ee_16407_2\', 60)';
@@ -138,8 +138,8 @@ ee_16407_4 0000-00-00
"OK, last check before we drop them"
select event_schema, event_name, sql_mode from information_schema.events order by event_schema, event_name;
event_schema event_name sql_mode
-events_test ee_16407_2 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
-events_test ee_16407_3 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+events_test ee_16407_2 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
+events_test ee_16407_3 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
events_test ee_16407_4
drop event ee_16407_2;
drop event ee_16407_3;
@@ -185,8 +185,8 @@ ee_16407_6 2004-02-29
"And here we check one more time before we drop the events"
select event_schema, event_name, sql_mode from information_schema.events order by event_schema, event_name;
event_schema event_name sql_mode
-events_test ee_16407_5 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
-events_test ee_16407_6 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+events_test ee_16407_5 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
+events_test ee_16407_6 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
drop event ee_16407_5;
drop event ee_16407_6;
drop procedure ee_16407_5_pendant;
@@ -375,7 +375,7 @@ SELECT event_name, definer FROM INFORMATION_SCHEMA.EVENTS;
event_name definer
e1 mysqltest_u1@localhost
ALTER DEFINER=root@localhost EVENT e1 ON SCHEDULE EVERY 1 HOUR;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
SELECT event_name, definer FROM INFORMATION_SCHEMA.EVENTS;
event_name definer
e1 mysqltest_u1@localhost
@@ -386,7 +386,7 @@ event_name definer
e1 mysqltest_u1@localhost
DROP EVENT e1;
CREATE DEFINER=root@localhost EVENT e1 ON SCHEDULE EVERY 1 DAY DO SELECT 1;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
DROP EVENT e1;
ERROR HY000: Unknown event 'e1'
DROP USER mysqltest_u1@localhost;
@@ -434,9 +434,9 @@ CREATE EVENT e3 ON SCHEDULE EVERY 1 DAY STARTS '2006-01-01 00:00:00' DO
SELECT 1;
SELECT * FROM INFORMATION_SCHEMA.EVENTS ORDER BY event_name;
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL events_test e1 root@localhost +05:00 SQL SELECT 1 RECURRING NULL 1 DAY 2006-01-01 00:00:00 NULL ENABLED NOT PRESERVE 2005-12-31 23:58:59 2005-12-31 23:58:59 NULL 1 latin1 latin1_swedish_ci latin1_swedish_ci
-NULL events_test e2 root@localhost -05:00 SQL SELECT 1 RECURRING NULL 1 DAY 2006-01-01 00:00:00 NULL ENABLED NOT PRESERVE 2005-12-31 23:59:00 2005-12-31 23:59:00 NULL 1 latin1 latin1_swedish_ci latin1_swedish_ci
-NULL events_test e3 root@localhost +00:00 SQL SELECT 1 RECURRING NULL 1 DAY 2006-01-01 00:00:00 NULL ENABLED NOT PRESERVE 2005-12-31 23:59:01 2005-12-31 23:59:01 NULL 1 latin1 latin1_swedish_ci latin1_swedish_ci
+def events_test e1 root@localhost +05:00 SQL SELECT 1 RECURRING NULL 1 DAY 2006-01-01 00:00:00 NULL ENABLED NOT PRESERVE 2005-12-31 23:58:59 2005-12-31 23:58:59 NULL 1 latin1 latin1_swedish_ci latin1_swedish_ci
+def events_test e2 root@localhost -05:00 SQL SELECT 1 RECURRING NULL 1 DAY 2006-01-01 00:00:00 NULL ENABLED NOT PRESERVE 2005-12-31 23:59:00 2005-12-31 23:59:00 NULL 1 latin1 latin1_swedish_ci latin1_swedish_ci
+def events_test e3 root@localhost +00:00 SQL SELECT 1 RECURRING NULL 1 DAY 2006-01-01 00:00:00 NULL ENABLED NOT PRESERVE 2005-12-31 23:59:01 2005-12-31 23:59:01 NULL 1 latin1 latin1_swedish_ci latin1_swedish_ci
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
events_test e1 root@localhost +05:00 RECURRING NULL 1 DAY 2006-01-01 00:00:00 NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
@@ -444,13 +444,13 @@ events_test e2 root@localhost -05:00 RECURRING NULL 1 DAY 2006-01-01 00:00:00 NU
events_test e3 root@localhost +00:00 RECURRING NULL 1 DAY 2006-01-01 00:00:00 NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
SHOW CREATE EVENT e1;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-e1 +05:00 CREATE EVENT `e1` ON SCHEDULE EVERY 1 DAY STARTS '2006-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO SELECT 1 latin1 latin1_swedish_ci latin1_swedish_ci
+e1 +05:00 CREATE DEFINER=`root`@`localhost` EVENT `e1` ON SCHEDULE EVERY 1 DAY STARTS '2006-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO SELECT 1 latin1 latin1_swedish_ci latin1_swedish_ci
SHOW CREATE EVENT e2;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-e2 -05:00 CREATE EVENT `e2` ON SCHEDULE EVERY 1 DAY STARTS '2006-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO SELECT 1 latin1 latin1_swedish_ci latin1_swedish_ci
+e2 -05:00 CREATE DEFINER=`root`@`localhost` EVENT `e2` ON SCHEDULE EVERY 1 DAY STARTS '2006-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO SELECT 1 latin1 latin1_swedish_ci latin1_swedish_ci
SHOW CREATE EVENT e3;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-e3 +00:00 CREATE EVENT `e3` ON SCHEDULE EVERY 1 DAY STARTS '2006-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO SELECT 1 latin1 latin1_swedish_ci latin1_swedish_ci
+e3 +00:00 CREATE DEFINER=`root`@`localhost` EVENT `e3` ON SCHEDULE EVERY 1 DAY STARTS '2006-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO SELECT 1 latin1 latin1_swedish_ci latin1_swedish_ci
The following should fail, and nothing should be altered.
ALTER EVENT e1 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
ENDS '1999-01-02 00:00:00';
@@ -725,16 +725,15 @@ DROP USER mysqltest_u1@localhost;
drop procedure if exists p;
set @old_mode= @@sql_mode;
-set @@sql_mode= pow(2,32)-1;
+set @@sql_mode= cast(pow(2,32)-1 as unsigned integer);
create event e1 on schedule every 1 day do select 1;
-select @@sql_mode;
-@@sql_mode
-REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,?,ONLY_FULL_GROUP_BY,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH
+select @@sql_mode into @full_mode;
set @@sql_mode= @old_mode;
-select replace(@full_mode, '?', 'NOT_USED') into @full_mode;
+select replace(@full_mode, ',,,', ',NOT_USED,') into @full_mode;
select replace(@full_mode, 'ALLOW_INVALID_DATES', 'INVALID_DATES') into @full_mode;
-select name from mysql.event where name = 'p' and sql_mode = @full_mode;
+select name from mysql.event where name = 'e1' and sql_mode = @full_mode;
name
+e1
drop event e1;
SET @old_server_id = @@GLOBAL.server_id;
SET GLOBAL server_id = (1 << 32) - 1;
diff --git a/mysql-test/r/events_grant.result b/mysql-test/r/events_grant.result
index 1aadf7e11f4..0fb589dfba5 100644
--- a/mysql-test/r/events_grant.result
+++ b/mysql-test/r/events_grant.result
@@ -6,7 +6,7 @@ Db Name Definer Time zone Type Execute at Interval value Interval field Starts E
events_test one_event root@localhost SYSTEM RECURRING NULL 10 # # NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
-NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
+def events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
CREATE DATABASE events_test2;
CREATE USER ev_test@localhost;
GRANT ALL ON events_test.* to ev_test@localhost;
@@ -59,53 +59,53 @@ USE events_test;
"We should see 4 events : one_event, two_event, three_event & four_event"
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
-NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
-NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
-NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
-NULL events_test2 four_event ev_test@localhost SQL SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE
+def events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
+def events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
+def events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
+def events_test2 four_event ev_test@localhost SQL SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE
DROP DATABASE events_test2;
"We should see 3 events : one_event, two_event, three_event"
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
-NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
-NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
-NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
+def events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
+def events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
+def events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
CREATE DATABASE events_test2;
USE events_test2;
CREATE EVENT five_event ON SCHEDULE EVERY 20 SECOND DO SELECT 42;
"Should see 4 events - one, two, three & five"
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
-NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
-NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
-NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
-NULL events_test2 five_event root@localhost SQL SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE
+def events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
+def events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
+def events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
+def events_test2 five_event root@localhost SQL SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE
REVOKE EVENT ON events_test2.* FROM ev_test@localhost;
USE test;
"Should see 3 events - one, two & three"
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
-NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
-NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
-NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
+def events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
+def events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
+def events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
"Let's test ALTER EVENT which changes the definer"
USE events_test;
ALTER EVENT one_event ON SCHEDULE EVERY 10 SECOND;
"The definer should be ev_test@localhost"
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event';
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
-NULL events_test one_event ev_test@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
+def events_test one_event ev_test@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
USE events_test;
ALTER EVENT one_event COMMENT "comment";
"The definer should be root@localhost"
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event';
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
-NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE comment
+def events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE comment
ALTER EVENT one_event DO SELECT 12;
"The definer should be ev_test@localhost"
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event';
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
-NULL events_test one_event ev_test@localhost SQL SELECT 12 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE comment
+def events_test one_event ev_test@localhost SQL SELECT 12 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE comment
"make the definer again root@localhost"
ALTER EVENT one_event COMMENT "new comment";
"test DROP by another user"
@@ -113,9 +113,9 @@ DROP EVENT one_event;
"One event should not be there"
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
-NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
-NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
-NULL events_test2 five_event root@localhost SQL SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE
+def events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
+def events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
+def events_test2 five_event root@localhost SQL SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE
DROP USER ev_test@localhost;
DROP DATABASE events_test2;
DROP DATABASE events_test;
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 5a1bf1a1290..3c449cf11a1 100644
--- a/mysql-test/r/explain.result
+++ b/mysql-test/r/explain.result
@@ -64,7 +64,7 @@ explain extended select * from v1 where f2=1;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
Warnings:
-Note 1003 select '1' AS `f1`,'1' AS `f2` from `test`.`t1` where 1
+Note 1003 select '1' AS `f1`,'1' AS `f2` from dual where 1
explain extended select * from t1 where 0;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
@@ -74,7 +74,7 @@ explain extended select * from t1 where 1;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
Warnings:
-Note 1003 select '1' AS `f1`,'1' AS `f2` from `test`.`t1` where 1
+Note 1003 select '1' AS `f1`,'1' AS `f2` from dual where 1
explain extended select * from t1 having 0;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible HAVING
@@ -84,7 +84,7 @@ explain extended select * from t1 having 1;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
Warnings:
-Note 1003 select '1' AS `f1`,'1' AS `f2` from `test`.`t1` having 1
+Note 1003 select '1' AS `f1`,'1' AS `f2` from dual having 1
drop view v1;
drop table t1;
CREATE TABLE t1(c INT);
@@ -210,4 +210,24 @@ Error 1140 Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP colum
Note 1003 select 1 AS `1` from `test`.`t1` where <not>(<exists>(...))
SET SESSION sql_mode=@old_sql_mode;
DROP TABLE t1;
+#
+# Bug#30302: Tables that were optimized away are printed in the
+# EXPLAIN EXTENDED warning.
+#
+create table t1(f1 int);
+create table t2(f2 int);
+insert into t1 values(1);
+insert into t2 values(1),(2);
+explain extended select * from t1 where f1=1;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
+Warnings:
+Note 1003 select '1' AS `f1` from dual where 1
+explain extended select * from t1 join t2 on f1=f2 where f1=1;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
+1 SIMPLE t2 ALL NULL NULL NULL NULL 2 100.00 Using where
+Warnings:
+Note 1003 select '1' AS `f1`,`test`.`t2`.`f2` AS `f2` from `test`.`t2` where (`test`.`t2`.`f2` = 1)
+drop table t1,t2;
End of 5.1 tests.
diff --git a/mysql-test/r/flush2.result b/mysql-test/r/flush2.result
index 5056955c7b7..13bcc371ef6 100644
--- a/mysql-test/r/flush2.result
+++ b/mysql-test/r/flush2.result
@@ -4,11 +4,9 @@ show variables like 'log_bin%';
Variable_name Value
log_bin OFF
log_bin_trust_function_creators ON
-log_bin_trust_routine_creators ON
flush logs;
show variables like 'log_bin%';
Variable_name Value
log_bin OFF
log_bin_trust_function_creators ON
-log_bin_trust_routine_creators ON
set global expire_logs_days = 0;
diff --git a/mysql-test/r/flush_block_commit_notembedded.result b/mysql-test/r/flush_block_commit_notembedded.result
index c7fd7a11877..4348dbd67e5 100644
--- a/mysql-test/r/flush_block_commit_notembedded.result
+++ b/mysql-test/r/flush_block_commit_notembedded.result
@@ -9,13 +9,13 @@ INSERT t1 VALUES (1);
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 106
+master-bin.000001 107
# Switch to connection con1
COMMIT;
# Switch to connection con2
SHOW MASTER STATUS;
File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 106
+master-bin.000001 107
UNLOCK TABLES;
# Switch to connection con1
DROP TABLE t1;
diff --git a/mysql-test/r/fulltext.result b/mysql-test/r/fulltext.result
index 1ef6656e7a4..4b651e270e6 100644
--- a/mysql-test/r/fulltext.result
+++ b/mysql-test/r/fulltext.result
@@ -49,7 +49,7 @@ a b
Full-text indexes are called collections
Only MyISAM tables support collections
select * from t1 where MATCH(a,b) AGAINST ("indexes" IN BOOLEAN MODE WITH QUERY EXPANSION);
-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 'WITH QUERY EXPANSION)' at line 1
+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 'QUERY EXPANSION)' at line 1
explain select * from t1 where MATCH(a,b) AGAINST ("collections");
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 fulltext a a 0 1 Using where
@@ -494,6 +494,14 @@ SELECT a FROM t1 WHERE MATCH a AGAINST ('+city* of*' IN BOOLEAN MODE);
a
City Of God
DROP TABLE t1;
+create table t1(a text,b date,fulltext index(a))engine=myisam;
+insert into t1 set a='water',b='2008-08-04';
+select 1 from t1 where match(a) against ('water' in boolean mode) and b>='2008-08-01';
+1
+1
+drop table t1;
+show warnings;
+Level Code Message
CREATE TABLE t1 (a VARCHAR(255), b INT, FULLTEXT(a), KEY(b));
INSERT INTO t1 VALUES('test', 1),('test', 1),('test', 1),('test', 1),
('test', 1),('test', 2),('test', 3),('test', 4);
diff --git a/mysql-test/r/func_compress.result b/mysql-test/r/func_compress.result
index b4e61d0e4fc..650cc9c2c70 100644
--- a/mysql-test/r/func_compress.result
+++ b/mysql-test/r/func_compress.result
@@ -65,8 +65,8 @@ NULL
50000
NULL
Warnings:
-Error 1259 ZLIB: Input data corrupted
-Error 1256 Uncompressed data size too large; the maximum size is 1048576 (probably, length of uncompressed data was corrupted)
+Warning 1259 ZLIB: Input data corrupted
+Warning 1256 Uncompressed data size too large; the maximum size is 1048576 (probably, length of uncompressed data was corrupted)
drop table t1;
set @@global.max_allowed_packet=1048576*100;
select compress(repeat('aaaaaaaaaa', IF(XXX, 10, 10000000))) is null;
@@ -96,12 +96,12 @@ explain select * from t1 where uncompress(a) is null;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1
Warnings:
-Error 1259 ZLIB: Input data corrupted
+Warning 1259 ZLIB: Input data corrupted
select * from t1 where uncompress(a) is null;
a
foo
Warnings:
-Error 1259 ZLIB: Input data corrupted
+Warning 1259 ZLIB: Input data corrupted
explain select *, uncompress(a) from t1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1
@@ -109,13 +109,13 @@ select *, uncompress(a) from t1;
a uncompress(a)
foo NULL
Warnings:
-Error 1259 ZLIB: Input data corrupted
+Warning 1259 ZLIB: Input data corrupted
select *, uncompress(a), uncompress(a) is null from t1;
a uncompress(a) uncompress(a) is null
foo NULL 1
Warnings:
-Error 1259 ZLIB: Input data corrupted
-Error 1259 ZLIB: Input data corrupted
+Warning 1259 ZLIB: Input data corrupted
+Warning 1259 ZLIB: Input data corrupted
drop table t1;
CREATE TABLE t1 (c1 INT);
INSERT INTO t1 VALUES (1), (1111), (11111);
diff --git a/mysql-test/r/func_default.result b/mysql-test/r/func_default.result
index a8f59f73e88..68a3a58e63f 100644
--- a/mysql-test/r/func_default.result
+++ b/mysql-test/r/func_default.result
@@ -8,7 +8,7 @@ explain extended select default(str), default(strnull), default(intg), default(r
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
Warnings:
-Note 1003 select default('') AS `default(str)`,default('') AS `default(strnull)`,default('0') AS `default(intg)`,default('0') AS `default(rel)` from `test`.`t1`
+Note 1003 select default('') AS `default(str)`,default('') AS `default(strnull)`,default('0') AS `default(intg)`,default('0') AS `default(rel)` from dual
select * from t1 where str <> default(str);
str strnull intg rel
0 0
diff --git a/mysql-test/r/func_encrypt.result b/mysql-test/r/func_encrypt.result
index 8fbf36b45b9..91ff4e218fb 100644
--- a/mysql-test/r/func_encrypt.result
+++ b/mysql-test/r/func_encrypt.result
@@ -124,7 +124,7 @@ select des_encrypt("hello",10);
des_encrypt("hello",10)
NULL
Warnings:
-Error 1108 Incorrect parameters to procedure 'des_encrypt'
+Warning 1108 Incorrect parameters to procedure 'des_encrypt'
select des_encrypt(NULL);
des_encrypt(NULL)
NULL
@@ -138,12 +138,12 @@ select des_encrypt(10, NULL);
des_encrypt(10, NULL)
NULL
Warnings:
-Error 1108 Incorrect parameters to procedure 'des_encrypt'
+Warning 1108 Incorrect parameters to procedure 'des_encrypt'
select des_encrypt("hello", NULL);
des_encrypt("hello", NULL)
NULL
Warnings:
-Error 1108 Incorrect parameters to procedure 'des_encrypt'
+Warning 1108 Incorrect parameters to procedure 'des_encrypt'
select des_decrypt("hello",10);
des_decrypt("hello",10)
hello
@@ -177,7 +177,7 @@ select hex(des_decrypt(des_encrypt("hello","hidden")));
hex(des_decrypt(des_encrypt("hello","hidden")))
NULL
Warnings:
-Error 1108 Incorrect parameters to procedure 'des_decrypt'
+Warning 1108 Incorrect parameters to procedure 'des_decrypt'
explain extended select des_decrypt(des_encrypt("hello",4),'password2'), des_decrypt(des_encrypt("hello","hidden"));
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
diff --git a/mysql-test/r/func_encrypt_nossl.result b/mysql-test/r/func_encrypt_nossl.result
index d0df2335afa..fc003eec226 100644
--- a/mysql-test/r/func_encrypt_nossl.result
+++ b/mysql-test/r/func_encrypt_nossl.result
@@ -2,83 +2,83 @@ select des_encrypt("test", 'akeystr');
des_encrypt("test", 'akeystr')
NULL
Warnings:
-Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_encrypt("test", 1);
des_encrypt("test", 1)
NULL
Warnings:
-Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_encrypt("test", 9);
des_encrypt("test", 9)
NULL
Warnings:
-Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_encrypt("test", 100);
des_encrypt("test", 100)
NULL
Warnings:
-Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_encrypt("test", NULL);
des_encrypt("test", NULL)
NULL
Warnings:
-Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_encrypt(NULL, NULL);
des_encrypt(NULL, NULL)
NULL
Warnings:
-Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_decrypt("test", 'anotherkeystr');
des_decrypt("test", 'anotherkeystr')
NULL
Warnings:
-Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_decrypt(1, 1);
des_decrypt(1, 1)
NULL
Warnings:
-Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_decrypt(des_encrypt("test", 'thekey'));
des_decrypt(des_encrypt("test", 'thekey'))
NULL
Warnings:
-Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select hex(des_encrypt("hello")),des_decrypt(des_encrypt("hello"));
hex(des_encrypt("hello")) des_decrypt(des_encrypt("hello"))
NULL NULL
Warnings:
-Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
-Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_decrypt(des_encrypt("hello",4));
des_decrypt(des_encrypt("hello",4))
NULL
Warnings:
-Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_decrypt(des_encrypt("hello",'test'),'test');
des_decrypt(des_encrypt("hello",'test'),'test')
NULL
Warnings:
-Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select hex(des_encrypt("hello")),hex(des_encrypt("hello",5)),hex(des_encrypt("hello",'default_password'));
hex(des_encrypt("hello")) hex(des_encrypt("hello",5)) hex(des_encrypt("hello",'default_password'))
NULL NULL NULL
Warnings:
-Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
-Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
-Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_decrypt(des_encrypt("hello"),'default_password');
des_decrypt(des_encrypt("hello"),'default_password')
NULL
Warnings:
-Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_decrypt(des_encrypt("hello",4),'password4');
des_decrypt(des_encrypt("hello",4),'password4')
NULL
Warnings:
-Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
SET @a=des_decrypt(des_encrypt("hello"));
Warnings:
-Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
flush des_key_file;
select @a = des_decrypt(des_encrypt("hello"));
@a = des_decrypt(des_encrypt("hello"))
@@ -90,9 +90,9 @@ select hex(des_decrypt(des_encrypt("hello",4),'password2'));
hex(des_decrypt(des_encrypt("hello",4),'password2'))
NULL
Warnings:
-Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select hex(des_decrypt(des_encrypt("hello","hidden")));
hex(des_decrypt(des_encrypt("hello","hidden")))
NULL
Warnings:
-Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
+Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
diff --git a/mysql-test/r/func_gconcat.result b/mysql-test/r/func_gconcat.result
index 3b78851a1b9..ebec186591d 100644
--- a/mysql-test/r/func_gconcat.result
+++ b/mysql-test/r/func_gconcat.result
@@ -153,10 +153,10 @@ grp group_concat(c)
4
5 NULL
Warnings:
-Warning 1260 1 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 4 was cut by GROUP_CONCAT()
show warnings;
Level Code Message
-Warning 1260 1 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 4 was cut by GROUP_CONCAT()
set group_concat_max_len = 1024;
select group_concat(sum(c)) from t1 group by grp;
ERROR HY000: Invalid use of group function
@@ -380,25 +380,29 @@ group_concat(b)
bb,c
BB,C
Warnings:
-Warning 1260 2 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 2 was cut by GROUP_CONCAT()
+Warning 1260 Row 4 was cut by GROUP_CONCAT()
select group_concat(distinct b) from t1 group by a;
group_concat(distinct b)
bb,c
BB,C
Warnings:
-Warning 1260 2 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 2 was cut by GROUP_CONCAT()
+Warning 1260 Row 4 was cut by GROUP_CONCAT()
select group_concat(b order by b) from t1 group by a;
group_concat(b order by b)
a,bb
A,BB
Warnings:
-Warning 1260 2 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 3 was cut by GROUP_CONCAT()
+Warning 1260 Row 6 was cut by GROUP_CONCAT()
select group_concat(distinct b order by b) from t1 group by a;
group_concat(distinct b order by b)
a,bb
A,BB
Warnings:
-Warning 1260 2 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 3 was cut by GROUP_CONCAT()
+Warning 1260 Row 6 was cut by GROUP_CONCAT()
insert into t1 values (1, concat(repeat('1', 300), '2')),
(1, concat(repeat('1', 300), '2')), (1, concat(repeat('0', 300), '1')),
(2, concat(repeat('1', 300), '2')), (2, concat(repeat('1', 300), '2')),
@@ -426,25 +430,29 @@ group_concat(b)
bb,ccc,a,bb,ccc,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112,1111111111111111111111111111111111111111111111111111111111111111111111111111111111
BB,CCC,A,BB,CCC,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112,1111111111111111111111111111111111111111111111111111111111111111111111111111111111
Warnings:
-Warning 1260 2 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 7 was cut by GROUP_CONCAT()
+Warning 1260 Row 14 was cut by GROUP_CONCAT()
select group_concat(distinct b) from t1 group by a;
group_concat(distinct b)
bb,ccc,a,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
BB,CCC,A,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Warnings:
-Warning 1260 2 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 5 was cut by GROUP_CONCAT()
+Warning 1260 Row 10 was cut by GROUP_CONCAT()
select group_concat(b order by b) from t1 group by a;
group_concat(b order by b)
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
Warnings:
-Warning 1260 2 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 2 was cut by GROUP_CONCAT()
+Warning 1260 Row 4 was cut by GROUP_CONCAT()
select group_concat(distinct b order by b) from t1 group by a;
group_concat(distinct b order by b)
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
Warnings:
-Warning 1260 2 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 2 was cut by GROUP_CONCAT()
+Warning 1260 Row 4 was cut by GROUP_CONCAT()
drop table t1;
create table t1 (a varchar(255) character set cp1250 collate cp1250_general_ci,
b varchar(255) character set koi8r);
@@ -751,22 +759,22 @@ SELECT GROUP_CONCAT( a ) FROM t1;
GROUP_CONCAT( a )
aaaaaaaaaa,bbbbbbbbb
Warnings:
-Warning 1260 1 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 2 was cut by GROUP_CONCAT()
SELECT GROUP_CONCAT( DISTINCT a ) FROM t1;
GROUP_CONCAT( DISTINCT a )
aaaaaaaaaa,bbbbbbbbb
Warnings:
-Warning 1260 1 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 2 was cut by GROUP_CONCAT()
SELECT GROUP_CONCAT( a ORDER BY b ) FROM t1;
GROUP_CONCAT( a ORDER BY b )
aaaaaaaaaa,bbbbbbbbb
Warnings:
-Warning 1260 1 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 2 was cut by GROUP_CONCAT()
SELECT GROUP_CONCAT( DISTINCT a ORDER BY b ) FROM t1;
GROUP_CONCAT( DISTINCT a ORDER BY b )
aaaaaaaaaa,bbbbbbbbb
Warnings:
-Warning 1260 1 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 2 was cut by GROUP_CONCAT()
SET group_concat_max_len = DEFAULT;
DROP TABLE t1;
SET group_concat_max_len= 65535;
@@ -979,3 +987,31 @@ GROUP BY t1.a
1
DROP TABLE t1, t2;
End of 5.0 tests
+DROP TABLE IF EXISTS t1, t2;
+CREATE TABLE t1 (a VARCHAR(6), b INT);
+CREATE TABLE t2 (a VARCHAR(6), b INT);
+INSERT INTO t1 VALUES ('111111', 1);
+INSERT INTO t1 VALUES ('222222', 2);
+INSERT INTO t1 VALUES ('333333', 3);
+INSERT INTO t1 VALUES ('444444', 4);
+INSERT INTO t1 VALUES ('555555', 5);
+SET group_concat_max_len = 5;
+SET @old_sql_mode = @@sql_mode, @@sql_mode = 'traditional';
+SELECT GROUP_CONCAT(a), b FROM t1 GROUP BY b LIMIT 3;
+GROUP_CONCAT(a) b
+11111 1
+22222 2
+33333 3
+Warnings:
+Warning 1260 Row 1 was cut by GROUP_CONCAT()
+Warning 1260 Row 2 was cut by GROUP_CONCAT()
+Warning 1260 Row 3 was cut by GROUP_CONCAT()
+INSERT INTO t2 SELECT GROUP_CONCAT(a), b FROM t1 GROUP BY b;
+ERROR HY000: Row 1 was cut by GROUP_CONCAT()
+UPDATE t1 SET a = '11111' WHERE b = 1;
+UPDATE t1 SET a = '22222' WHERE b = 2;
+INSERT INTO t2 SELECT GROUP_CONCAT(a), b FROM t1 GROUP BY b;
+ERROR HY000: Row 3 was cut by GROUP_CONCAT()
+SET group_concat_max_len = DEFAULT;
+SET @@sql_mode = @old_sql_mode;
+DROP TABLE t1, t2;
diff --git a/mysql-test/r/func_group.result b/mysql-test/r/func_group.result
index b36f561578b..6838dcf944c 100644
--- a/mysql-test/r/func_group.result
+++ b/mysql-test/r/func_group.result
@@ -61,7 +61,7 @@ grp sum
NULL NULL
1 7
2 20.25
-3 45.4831632475944
+3 45.48316324759439
create table t2 (grp int, a bigint unsigned, c char(10));
insert into t2 select grp,max(a)+max(grp),max(c) from t1 group by grp;
replace into t2 select grp, a, c from t1 limit 2,1;
@@ -891,7 +891,7 @@ select 1e8 * sum(distinct df) from t1;
330000000
select 1e8 * min(df) from t1;
1e8 * min(df)
-110000000
+110000000.00000001
create table t3 (ifl int);
insert into t3 values(1), (2);
select cast(min(ifl) as decimal(5,2)) from t3;
@@ -1186,7 +1186,7 @@ std(s1/s2)
0.21325764
select std(o1/o2) from bug22555;
std(o1/o2)
-0.213257635866493
+0.2132576358664934
select std(e1/e2) from bug22555;
std(e1/e2)
0.21325764
@@ -1209,13 +1209,13 @@ i count(*) std(e1/e2)
3 4 0.000000000000000000000000000000
select round(std(s1/s2), 17) from bug22555;
round(std(s1/s2), 17)
-0.21325763586649341
+0.21325763586649340
select std(o1/o2) from bug22555;
std(o1/o2)
-0.213257635866493
+0.2132576358664934
select round(std(e1/e2), 17) from bug22555;
round(std(e1/e2), 17)
-0.21325763586649341
+0.21325763586649340
set div_precision_increment=20;
select i, count(*), std(s1/s2) from bug22555 group by i order by i;
i count(*) std(s1/s2)
@@ -1234,13 +1234,13 @@ i count(*) std(e1/e2)
3 4 0.000000000000000000000000000000
select round(std(s1/s2), 17) from bug22555;
round(std(s1/s2), 17)
-0.21325763586649341
+0.21325763586649340
select std(o1/o2) from bug22555;
std(o1/o2)
-0.213257635866493
+0.2132576358664934
select round(std(e1/e2), 17) from bug22555;
round(std(e1/e2), 17)
-0.21325763586649341
+0.21325763586649340
set @@div_precision_increment=@saved_div_precision_increment;
drop table bug22555;
create table bug22555 (s smallint, o double, e decimal);
diff --git a/mysql-test/r/func_isnull.result b/mysql-test/r/func_isnull.result
index 20ddc87ee78..79aecc7d82b 100644
--- a/mysql-test/r/func_isnull.result
+++ b/mysql-test/r/func_isnull.result
@@ -5,3 +5,8 @@ flush tables;
select * from t1 where isnull(to_days(mydate));
id mydate
drop table t1;
+CREATE TABLE t1 (id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY(id));
+INSERT INTO t1( id ) VALUES ( NULL );
+SELECT t1.id FROM t1 WHERE (id is not null and id is null );
+id
+DROP TABLE t1;
diff --git a/mysql-test/r/func_like.result b/mysql-test/r/func_like.result
index 9338a76e320..8d0f34f3bda 100644
--- a/mysql-test/r/func_like.result
+++ b/mysql-test/r/func_like.result
@@ -10,7 +10,7 @@ explain extended select * from t1 where a like concat('abc','%');
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 index a a 13 NULL 5 20.00 Using where; Using index
Warnings:
-Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where (`test`.`t1`.`a` like concat('abc','%'))
+Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where (`test`.`t1`.`a` like <cache>(concat('abc','%')))
select * from t1 where a like "abc%";
a
abc
diff --git a/mysql-test/r/func_math.result b/mysql-test/r/func_math.result
index fd7ef72409e..537b1db9781 100644
--- a/mysql-test/r/func_math.result
+++ b/mysql-test/r/func_math.result
@@ -44,7 +44,7 @@ Warnings:
Note 1003 select abs(-(10)) AS `abs(-10)`,sign(-(5)) AS `sign(-5)`,sign(5) AS `sign(5)`,sign(0) AS `sign(0)`
select log(exp(10)),exp(log(sqrt(10))*2),log(-1),log(NULL),log(1,1),log(3,9),log(-1,2),log(NULL,2);
log(exp(10)) exp(log(sqrt(10))*2) log(-1) log(NULL) log(1,1) log(3,9) log(-1,2) log(NULL,2)
-10 10 NULL NULL NULL 2 NULL NULL
+10 10.000000000000002 NULL NULL NULL 2 NULL NULL
explain extended select log(exp(10)),exp(log(sqrt(10))*2),log(-1),log(NULL),log(1,1),log(3,9),log(-1,2),log(NULL,2);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
@@ -52,7 +52,7 @@ Warnings:
Note 1003 select log(exp(10)) AS `log(exp(10))`,exp((log(sqrt(10)) * 2)) AS `exp(log(sqrt(10))*2)`,log(-(1)) AS `log(-1)`,log(NULL) AS `log(NULL)`,log(1,1) AS `log(1,1)`,log(3,9) AS `log(3,9)`,log(-(1),2) AS `log(-1,2)`,log(NULL,2) AS `log(NULL,2)`
select ln(exp(10)),exp(ln(sqrt(10))*2),ln(-1),ln(0),ln(NULL);
ln(exp(10)) exp(ln(sqrt(10))*2) ln(-1) ln(0) ln(NULL)
-10 10 NULL NULL NULL
+10 10.000000000000002 NULL NULL NULL
explain extended select ln(exp(10)),exp(ln(sqrt(10))*2),ln(-1),ln(0),ln(NULL);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
@@ -60,7 +60,7 @@ Warnings:
Note 1003 select ln(exp(10)) AS `ln(exp(10))`,exp((ln(sqrt(10)) * 2)) AS `exp(ln(sqrt(10))*2)`,ln(-(1)) AS `ln(-1)`,ln(0) AS `ln(0)`,ln(NULL) AS `ln(NULL)`
select log2(8),log2(15),log2(-2),log2(0),log2(NULL);
log2(8) log2(15) log2(-2) log2(0) log2(NULL)
-3 3.90689059560852 NULL NULL NULL
+3 3.9068905956085187 NULL NULL NULL
explain extended select log2(8),log2(15),log2(-2),log2(0),log2(NULL);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
@@ -68,7 +68,7 @@ Warnings:
Note 1003 select log2(8) AS `log2(8)`,log2(15) AS `log2(15)`,log2(-(2)) AS `log2(-2)`,log2(0) AS `log2(0)`,log2(NULL) AS `log2(NULL)`
select log10(100),log10(18),log10(-4),log10(0),log10(NULL);
log10(100) log10(18) log10(-4) log10(0) log10(NULL)
-2 1.25527250510331 NULL NULL NULL
+2 1.255272505103306 NULL NULL NULL
explain extended select log10(100),log10(18),log10(-4),log10(0),log10(NULL);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
@@ -85,7 +85,7 @@ Note 1003 select pow(10,log10(10)) AS `pow(10,log10(10))`,pow(2,4) AS `power(2,4
set @@rand_seed1=10000000,@@rand_seed2=1000000;
select rand(999999),rand();
rand(999999) rand()
-0.0142313651873091 0.028870999839968
+0.014231365187309091 0.028870999839968048
explain extended select rand(999999),rand();
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
@@ -101,7 +101,7 @@ Warnings:
Note 1003 select pi() AS `pi()`,format(sin((pi() / 2)),6) AS `format(sin(pi()/2),6)`,format(cos((pi() / 2)),6) AS `format(cos(pi()/2),6)`,format(abs(tan(pi())),6) AS `format(abs(tan(pi())),6)`,format((1 / tan(1)),6) AS `format(cot(1),6)`,format(asin(1),6) AS `format(asin(1),6)`,format(acos(0),6) AS `format(acos(0),6)`,format(atan(1),6) AS `format(atan(1),6)`
select degrees(pi()),radians(360);
degrees(pi()) radians(360)
-180 6.28318530717959
+180 6.283185307179586
select format(atan(-2, 2), 6);
format(atan(-2, 2), 6)
-0.785398
@@ -119,7 +119,7 @@ ACOS(1.0)
0
SELECT ASIN(1.0);
ASIN(1.0)
-1.5707963267949
+1.5707963267948966
SELECT ACOS(0.2*5.0);
ACOS(0.2*5.0)
0
@@ -128,10 +128,10 @@ ACOS(0.5*2.0)
0
SELECT ASIN(0.8+0.2);
ASIN(0.8+0.2)
-1.5707963267949
+1.5707963267948966
SELECT ASIN(1.2-0.2);
ASIN(1.2-0.2)
-1.5707963267949
+1.5707963267948966
select format(4.55, 1), format(4.551, 1);
format(4.55, 1) format(4.551, 1)
4.6 4.6
@@ -225,27 +225,27 @@ select ln(-1);
ln(-1)
NULL
Warnings:
-Error 1365 Division by 0
+Warning 1365 Division by 0
select log10(-1);
log10(-1)
NULL
Warnings:
-Error 1365 Division by 0
+Warning 1365 Division by 0
select log2(-1);
log2(-1)
NULL
Warnings:
-Error 1365 Division by 0
+Warning 1365 Division by 0
select log(2,-1);
log(2,-1)
NULL
Warnings:
-Error 1365 Division by 0
+Warning 1365 Division by 0
select log(-2,1);
log(-2,1)
NULL
Warnings:
-Error 1365 Division by 0
+Warning 1365 Division by 0
set sql_mode='';
select round(111,-10);
round(111,-10)
@@ -368,7 +368,7 @@ mod(5, cast(-2 as unsigned)) mod(5, 18446744073709551614) mod(5, -2)
5 5 1
select pow(cast(-2 as unsigned), 5), pow(18446744073709551614, 5), pow(-2, 5);
pow(cast(-2 as unsigned), 5) pow(18446744073709551614, 5) pow(-2, 5)
-2.13598703592091e+96 2.13598703592091e+96 -32
+2.13598703592091e96 2.13598703592091e96 -32
CREATE TABLE t1 (a timestamp, b varchar(20), c bit(1));
INSERT INTO t1 VALUES('1998-09-23', 'str1', 1), ('2003-03-25', 'str2', 0);
SELECT a DIV 900 y FROM t1 GROUP BY y;
@@ -382,6 +382,11 @@ y
SELECT b DIV 900 y FROM t1 GROUP BY y;
y
0
+Warnings:
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: 'str1'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: 'str2'
SELECT c DIV 900 y FROM t1 GROUP BY y;
y
0
@@ -432,10 +437,10 @@ a ROUND(a)
2.5 2
-2.9 -3
2.9 3
--1e+16 -10000000000000000
-1e+16 10000000000000000
--1e+16 -10000000000000002
-1e+16 10000000000000002
+-1e16 -10000000000000000
+1e16 10000000000000000
+-1.0000000000000002e16 -10000000000000002
+1.0000000000000002e16 10000000000000002
DROP TABLE t1;
CREATE TABLE t1(f1 LONGTEXT) engine=myisam;
INSERT INTO t1 VALUES ('a');
@@ -470,16 +475,24 @@ NULL
CREATE OR REPLACE VIEW v1 AS SELECT NULL AS a;
SELECT RAND(a) FROM v1;
RAND(a)
-0.155220427694936
+0.15522042769493574
DROP VIEW v1;
SELECT RAND(a) FROM (SELECT NULL AS a) b;
RAND(a)
-0.155220427694936
+0.15522042769493574
CREATE TABLE t1 (i INT);
INSERT INTO t1 VALUES (NULL);
SELECT RAND(i) FROM t1;
RAND(i)
-0.155220427694936
+0.15522042769493574
DROP TABLE t1;
#
+select 123456789012345678901234567890.123456789012345678901234567890 div 1 as x;
+ERROR 22003: Out of range value for column 'x' at row 1
+select "123456789012345678901234567890.123456789012345678901234567890" div 1 as x;
+ERROR 22003: Out of range value for column 'x' at row 1
+SHOW WARNINGS;
+Level Code Message
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Error 1264 Out of range value for column 'x' at row 1
End of 5.1 tests
diff --git a/mysql-test/r/func_regexp.result b/mysql-test/r/func_regexp.result
index 54aad23402f..43f90e2e2e6 100644
--- a/mysql-test/r/func_regexp.result
+++ b/mysql-test/r/func_regexp.result
@@ -52,7 +52,7 @@ explain extended select * from t1 where xxx regexp('is a test of some long text
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
Warnings:
-Note 1003 select 'this is a test of some long text to see what happens' AS `xxx` from `test`.`t1` where ('this is a test of some long text to see what happens' regexp 'is a test of some long text to')
+Note 1003 select 'this is a test of some long text to see what happens' AS `xxx` from dual where ('this is a test of some long text to see what happens' regexp 'is a test of some long text to')
select * from t1 where xxx regexp('is a test of some long text to ');
xxx
this is a test of some long text to see what happens
diff --git a/mysql-test/r/func_sapdb.result b/mysql-test/r/func_sapdb.result
index bbc5390895b..2d6154cd1f7 100644
--- a/mysql-test/r/func_sapdb.result
+++ b/mysql-test/r/func_sapdb.result
@@ -194,7 +194,7 @@ date("1997-12-31 23:59:59.000001") as f8,
time("1997-12-31 23:59:59.000001") as f9;
describe t1;
Field Type Null Key Default Extra
-f1 date NO 0000-00-00
+f1 date YES NULL
f2 datetime YES NULL
f3 time YES NULL
f4 time YES NULL
@@ -282,3 +282,33 @@ TIMEDIFF(TIME('17:59:00'),TIME('17:00:00')),
TIMEDIFF(TIME('17:00:00'),TIME('17:59:00'));
1Eq 1NEq1 1NEq2 2Eq 2NEq1 2NEq2 3Eq 3NEq1 3NEq2 Time0 Time00 Literal0000 TIMEDIFF(TIME('17:59:00'),TIME('17:00:00')) TIMEDIFF(TIME('17:00:00'),TIME('17:59:00'))
1 0 0 1 0 0 1 0 0 00:00:00 00:00:00 00:00:00 00:59:00 -00:59:00
+SELECT sec_to_time(3020399)=TIME('838:59:59');
+sec_to_time(3020399)=TIME('838:59:59')
+1
+SELECT sec_to_time(-3020399)=TIME('-838:59:59');
+sec_to_time(-3020399)=TIME('-838:59:59')
+1
+SELECT sec_to_time(-3020399)='-838:59:59';
+sec_to_time(-3020399)='-838:59:59'
+1
+SELECT time(sec_to_time(-3020399))=TIME('-838:59:59');
+time(sec_to_time(-3020399))=TIME('-838:59:59')
+1
+SELECT time(sec_to_time(-3020399))=TIME('-838:59:58');
+time(sec_to_time(-3020399))=TIME('-838:59:58')
+0
+SELECT maketime(-1,0,1)='-01:00:01';
+maketime(-1,0,1)='-01:00:01'
+1
+SELECT TIME(maketime(-1,0,1))=CAST('-01:00:01' AS TIME);
+TIME(maketime(-1,0,1))=CAST('-01:00:01' AS TIME)
+1
+SELECT maketime(-1,0,1)=CAST('-01:00:01' AS TIME);
+maketime(-1,0,1)=CAST('-01:00:01' AS TIME)
+1
+SELECT maketime(1,0,1)=CAST('01:00:01' AS TIME);
+maketime(1,0,1)=CAST('01:00:01' AS TIME)
+1
+SELECT maketime(1,0,1)=CAST('01:00:02' AS TIME);
+maketime(1,0,1)=CAST('01:00:02' AS TIME)
+0
diff --git a/mysql-test/r/func_str.result b/mysql-test/r/func_str.result
index d144e84dfdc..3d43cbbfd76 100644
--- a/mysql-test/r/func_str.result
+++ b/mysql-test/r/func_str.result
@@ -1151,6 +1151,9 @@ INSERT INTO t2 VALUES (0), (1);
SELECT * FROM t1, t2 WHERE num=str;
str num
notnumber 0
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'notnumber'
+Warning 1292 Truncated incorrect DOUBLE value: 'notnumber'
SELECT * FROM t1, t2 WHERE num=substring(str from 1 for 6);
str num
notnumber 0
@@ -1351,10 +1354,10 @@ cast(rtrim(ltrim(' 20.06 ')) as decimal(19,2))
20.06
select conv("18383815659218730760",10,10) + 0;
conv("18383815659218730760",10,10) + 0
-1.83838156592187e+19
+1.838381565921873e19
select "18383815659218730760" + 0;
"18383815659218730760" + 0
-1.83838156592187e+19
+1.838381565921873e19
CREATE TABLE t1 (code varchar(10));
INSERT INTO t1 VALUES ('a12'), ('A12'), ('a13');
SELECT ASCII(code), code FROM t1 WHERE code='A12';
@@ -1433,7 +1436,7 @@ select benchmark(-1, 1);
benchmark(-1, 1)
NULL
Warnings:
-Error 1411 Incorrect count value: '-1' for function benchmark
+Warning 1411 Incorrect count value: '-1' for function benchmark
set @password="password";
set @my_data="clear text to encode";
select md5(encode(@my_data, "password"));
@@ -1533,7 +1536,7 @@ select locate('lo','hello',-18446744073709551615);
locate('lo','hello',-18446744073709551615)
0
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select locate('lo','hello',18446744073709551615);
locate('lo','hello',18446744073709551615)
0
@@ -1541,22 +1544,22 @@ select locate('lo','hello',-18446744073709551616);
locate('lo','hello',-18446744073709551616)
0
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select locate('lo','hello',18446744073709551616);
locate('lo','hello',18446744073709551616)
0
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select locate('lo','hello',-18446744073709551617);
locate('lo','hello',-18446744073709551617)
0
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select locate('lo','hello',18446744073709551617);
locate('lo','hello',18446744073709551617)
0
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select left('hello', 10);
left('hello', 10)
hello
@@ -1588,8 +1591,8 @@ select left('hello', -18446744073709551615);
left('hello', -18446744073709551615)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select left('hello', 18446744073709551615);
left('hello', 18446744073709551615)
hello
@@ -1597,26 +1600,26 @@ select left('hello', -18446744073709551616);
left('hello', -18446744073709551616)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select left('hello', 18446744073709551616);
left('hello', 18446744073709551616)
hello
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select left('hello', -18446744073709551617);
left('hello', -18446744073709551617)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select left('hello', 18446744073709551617);
left('hello', 18446744073709551617)
hello
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select right('hello', 10);
right('hello', 10)
hello
@@ -1648,8 +1651,8 @@ select right('hello', -18446744073709551615);
right('hello', -18446744073709551615)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select right('hello', 18446744073709551615);
right('hello', 18446744073709551615)
hello
@@ -1657,26 +1660,26 @@ select right('hello', -18446744073709551616);
right('hello', -18446744073709551616)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select right('hello', 18446744073709551616);
right('hello', 18446744073709551616)
hello
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select right('hello', -18446744073709551617);
right('hello', -18446744073709551617)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select right('hello', 18446744073709551617);
right('hello', 18446744073709551617)
hello
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 2, -1);
substring('hello', 2, -1)
@@ -1708,8 +1711,8 @@ select substring('hello', -18446744073709551615, 1);
substring('hello', -18446744073709551615, 1)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 18446744073709551615, 1);
substring('hello', 18446744073709551615, 1)
@@ -1717,26 +1720,26 @@ select substring('hello', -18446744073709551616, 1);
substring('hello', -18446744073709551616, 1)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 18446744073709551616, 1);
substring('hello', 18446744073709551616, 1)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', -18446744073709551617, 1);
substring('hello', -18446744073709551617, 1)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 18446744073709551617, 1);
substring('hello', 18446744073709551617, 1)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 1, -1);
substring('hello', 1, -1)
@@ -1762,8 +1765,8 @@ select substring('hello', 1, -18446744073709551615);
substring('hello', 1, -18446744073709551615)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 1, 18446744073709551615);
substring('hello', 1, 18446744073709551615)
hello
@@ -1771,26 +1774,26 @@ select substring('hello', 1, -18446744073709551616);
substring('hello', 1, -18446744073709551616)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 1, 18446744073709551616);
substring('hello', 1, 18446744073709551616)
hello
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 1, -18446744073709551617);
substring('hello', 1, -18446744073709551617)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 1, 18446744073709551617);
substring('hello', 1, 18446744073709551617)
hello
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', -1, -1);
substring('hello', -1, -1)
@@ -1816,10 +1819,10 @@ select substring('hello', -18446744073709551615, -18446744073709551615);
substring('hello', -18446744073709551615, -18446744073709551615)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 18446744073709551615, 18446744073709551615);
substring('hello', 18446744073709551615, 18446744073709551615)
@@ -1827,34 +1830,34 @@ select substring('hello', -18446744073709551616, -18446744073709551616);
substring('hello', -18446744073709551616, -18446744073709551616)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 18446744073709551616, 18446744073709551616);
substring('hello', 18446744073709551616, 18446744073709551616)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', -18446744073709551617, -18446744073709551617);
substring('hello', -18446744073709551617, -18446744073709551617)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 18446744073709551617, 18446744073709551617);
substring('hello', 18446744073709551617, 18446744073709551617)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', -1, 1, 'hi');
insert('hello', -1, 1, 'hi')
hello
@@ -1880,7 +1883,7 @@ select insert('hello', -18446744073709551615, 1, 'hi');
insert('hello', -18446744073709551615, 1, 'hi')
hello
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 18446744073709551615, 1, 'hi');
insert('hello', 18446744073709551615, 1, 'hi')
hello
@@ -1888,22 +1891,22 @@ select insert('hello', -18446744073709551616, 1, 'hi');
insert('hello', -18446744073709551616, 1, 'hi')
hello
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 18446744073709551616, 1, 'hi');
insert('hello', 18446744073709551616, 1, 'hi')
hello
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', -18446744073709551617, 1, 'hi');
insert('hello', -18446744073709551617, 1, 'hi')
hello
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 18446744073709551617, 1, 'hi');
insert('hello', 18446744073709551617, 1, 'hi')
hello
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 1, -1, 'hi');
insert('hello', 1, -1, 'hi')
hi
@@ -1929,7 +1932,7 @@ select insert('hello', 1, -18446744073709551615, 'hi');
insert('hello', 1, -18446744073709551615, 'hi')
hi
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 1, 18446744073709551615, 'hi');
insert('hello', 1, 18446744073709551615, 'hi')
hi
@@ -1937,22 +1940,22 @@ select insert('hello', 1, -18446744073709551616, 'hi');
insert('hello', 1, -18446744073709551616, 'hi')
hi
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 1, 18446744073709551616, 'hi');
insert('hello', 1, 18446744073709551616, 'hi')
hi
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 1, -18446744073709551617, 'hi');
insert('hello', 1, -18446744073709551617, 'hi')
hi
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 1, 18446744073709551617, 'hi');
insert('hello', 1, 18446744073709551617, 'hi')
hi
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', -1, -1, 'hi');
insert('hello', -1, -1, 'hi')
hello
@@ -1978,8 +1981,8 @@ select insert('hello', -18446744073709551615, -18446744073709551615, 'hi');
insert('hello', -18446744073709551615, -18446744073709551615, 'hi')
hello
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 18446744073709551615, 18446744073709551615, 'hi');
insert('hello', 18446744073709551615, 18446744073709551615, 'hi')
hello
@@ -1987,26 +1990,26 @@ select insert('hello', -18446744073709551616, -18446744073709551616, 'hi');
insert('hello', -18446744073709551616, -18446744073709551616, 'hi')
hello
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 18446744073709551616, 18446744073709551616, 'hi');
insert('hello', 18446744073709551616, 18446744073709551616, 'hi')
hello
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', -18446744073709551617, -18446744073709551617, 'hi');
insert('hello', -18446744073709551617, -18446744073709551617, 'hi')
hello
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 18446744073709551617, 18446744073709551617, 'hi');
insert('hello', 18446744073709551617, 18446744073709551617, 'hi')
hello
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select repeat('hello', -1);
repeat('hello', -1)
@@ -2038,8 +2041,8 @@ select repeat('hello', -18446744073709551615);
repeat('hello', -18446744073709551615)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select repeat('hello', 18446744073709551615);
repeat('hello', 18446744073709551615)
NULL
@@ -2049,27 +2052,27 @@ select repeat('hello', -18446744073709551616);
repeat('hello', -18446744073709551616)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select repeat('hello', 18446744073709551616);
repeat('hello', 18446744073709551616)
NULL
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1301 Result of repeat() was larger than max_allowed_packet (1048576) - truncated
select repeat('hello', -18446744073709551617);
repeat('hello', -18446744073709551617)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select repeat('hello', 18446744073709551617);
repeat('hello', 18446744073709551617)
NULL
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1301 Result of repeat() was larger than max_allowed_packet (1048576) - truncated
select space(-1);
space(-1)
@@ -2102,8 +2105,8 @@ select space(-18446744073709551615);
space(-18446744073709551615)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select space(18446744073709551615);
space(18446744073709551615)
NULL
@@ -2113,27 +2116,27 @@ select space(-18446744073709551616);
space(-18446744073709551616)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select space(18446744073709551616);
space(18446744073709551616)
NULL
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1301 Result of repeat() was larger than max_allowed_packet (1048576) - truncated
select space(-18446744073709551617);
space(-18446744073709551617)
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select space(18446744073709551617);
space(18446744073709551617)
NULL
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1301 Result of repeat() was larger than max_allowed_packet (1048576) - truncated
select rpad('hello', -1, '1');
rpad('hello', -1, '1')
@@ -2166,8 +2169,8 @@ select rpad('hello', -18446744073709551615, '1');
rpad('hello', -18446744073709551615, '1')
NULL
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select rpad('hello', 18446744073709551615, '1');
rpad('hello', 18446744073709551615, '1')
NULL
@@ -2177,27 +2180,27 @@ select rpad('hello', -18446744073709551616, '1');
rpad('hello', -18446744073709551616, '1')
NULL
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select rpad('hello', 18446744073709551616, '1');
rpad('hello', 18446744073709551616, '1')
NULL
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1301 Result of rpad() was larger than max_allowed_packet (1048576) - truncated
select rpad('hello', -18446744073709551617, '1');
rpad('hello', -18446744073709551617, '1')
NULL
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select rpad('hello', 18446744073709551617, '1');
rpad('hello', 18446744073709551617, '1')
NULL
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1301 Result of rpad() was larger than max_allowed_packet (1048576) - truncated
select lpad('hello', -1, '1');
lpad('hello', -1, '1')
@@ -2230,8 +2233,8 @@ select lpad('hello', -18446744073709551615, '1');
lpad('hello', -18446744073709551615, '1')
NULL
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select lpad('hello', 18446744073709551615, '1');
lpad('hello', 18446744073709551615, '1')
NULL
@@ -2241,27 +2244,27 @@ select lpad('hello', -18446744073709551616, '1');
lpad('hello', -18446744073709551616, '1')
NULL
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select lpad('hello', 18446744073709551616, '1');
lpad('hello', 18446744073709551616, '1')
NULL
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1301 Result of lpad() was larger than max_allowed_packet (1048576) - truncated
select lpad('hello', -18446744073709551617, '1');
lpad('hello', -18446744073709551617, '1')
NULL
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select lpad('hello', 18446744073709551617, '1');
lpad('hello', 18446744073709551617, '1')
NULL
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1301 Result of lpad() was larger than max_allowed_packet (1048576) - truncated
SET @orig_sql_mode = @@SQL_MODE;
SET SQL_MODE=traditional;
@@ -2269,12 +2272,12 @@ SELECT CHAR(0xff,0x8f USING utf8);
CHAR(0xff,0x8f USING utf8)
NULL
Warnings:
-Error 1300 Invalid utf8 character string: 'FF8F'
+Warning 1300 Invalid utf8 character string: 'FF8F'
SELECT CHAR(0xff,0x8f USING utf8) IS NULL;
CHAR(0xff,0x8f USING utf8) IS NULL
1
Warnings:
-Error 1300 Invalid utf8 character string: 'FF8F'
+Warning 1300 Invalid utf8 character string: 'FF8F'
SET SQL_MODE=@orig_sql_mode;
select substring('abc', cast(2 as unsigned int));
substring('abc', cast(2 as unsigned int))
@@ -2587,3 +2590,133 @@ FROM t2 WHERE t2.b = 1 GROUP BY t2.b;
DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b LIMIT 1), t2.a)
secret
DROP TABLE t1, t2;
+Start of 5.4 tests
+SELECT format(12345678901234567890.123, 3);
+format(12345678901234567890.123, 3)
+12,345,678,901,234,567,890.123
+SELECT format(12345678901234567890.123, 3, NULL);
+format(12345678901234567890.123, 3, NULL)
+12,345,678,901,234,567,890.123
+Warnings:
+Warning 1649 Unknown locale: 'NULL'
+SELECT format(12345678901234567890.123, 3, 'ar_AE');
+format(12345678901234567890.123, 3, 'ar_AE')
+12,345,678,901,234,567,890.123
+SELECT format(12345678901234567890.123, 3, 'ar_SA');
+format(12345678901234567890.123, 3, 'ar_SA')
+12345678901234567890.123
+SELECT format(12345678901234567890.123, 3, 'be_BY');
+format(12345678901234567890.123, 3, 'be_BY')
+12.345.678.901.234.567.890,123
+SELECT format(12345678901234567890.123, 3, 'de_DE');
+format(12345678901234567890.123, 3, 'de_DE')
+12.345.678.901.234.567.890,123
+SELECT format(12345678901234567890.123, 3, 'en_IN');
+format(12345678901234567890.123, 3, 'en_IN')
+1,23,45,67,89,01,23,45,67,890.123
+SELECT format(12345678901234567890.123, 3, 'en_US');
+format(12345678901234567890.123, 3, 'en_US')
+12,345,678,901,234,567,890.123
+SELECT format(12345678901234567890.123, 3, 'it_CH');
+format(12345678901234567890.123, 3, 'it_CH')
+12'345'678'901'234'567'890,123
+SELECT format(12345678901234567890.123, 3, 'ru_RU');
+format(12345678901234567890.123, 3, 'ru_RU')
+12 345 678 901 234 567 890,123
+SELECT format(12345678901234567890.123, 3, 'ta_IN');
+format(12345678901234567890.123, 3, 'ta_IN')
+1,23,45,67,89,01,23,45,67,890.123
+CREATE TABLE t1 (fmt CHAR(5) NOT NULL);
+INSERT INTO t1 VALUES ('ar_AE');
+INSERT INTO t1 VALUES ('ar_SA');
+INSERT INTO t1 VALUES ('be_BY');
+INSERT INTO t1 VALUES ('de_DE');
+INSERT INTO t1 VALUES ('en_IN');
+INSERT INTO t1 VALUES ('en_US');
+INSERT INTO t1 VALUES ('it_CH');
+INSERT INTO t1 VALUES ('ru_RU');
+INSERT INTO t1 VALUES ('ta_IN');
+SELECT fmt, format(12345678901234567890.123, 3, fmt) FROM t1 ORDER BY fmt;
+fmt format(12345678901234567890.123, 3, fmt)
+ar_AE 12,345,678,901,234,567,890.123
+ar_SA 12345678901234567890.123
+be_BY 12.345.678.901.234.567.890,123
+de_DE 12.345.678.901.234.567.890,123
+en_IN 1,23,45,67,89,01,23,45,67,890.123
+en_US 12,345,678,901,234,567,890.123
+it_CH 12'345'678'901'234'567'890,123
+ru_RU 12 345 678 901 234 567 890,123
+ta_IN 1,23,45,67,89,01,23,45,67,890.123
+SELECT fmt, format(12345678901234567890.123, 0, fmt) FROM t1 ORDER BY fmt;
+fmt format(12345678901234567890.123, 0, fmt)
+ar_AE 12,345,678,901,234,567,890
+ar_SA 12345678901234567890
+be_BY 12.345.678.901.234.567.890
+de_DE 12.345.678.901.234.567.890
+en_IN 1,23,45,67,89,01,23,45,67,890
+en_US 12,345,678,901,234,567,890
+it_CH 12'345'678'901'234'567'890
+ru_RU 12 345 678 901 234 567 890
+ta_IN 1,23,45,67,89,01,23,45,67,890
+SELECT fmt, format(12345678901234567890, 3, fmt) FROM t1 ORDER BY fmt;
+fmt format(12345678901234567890, 3, fmt)
+ar_AE 12,345,678,901,234,567,890.000
+ar_SA 12345678901234567890.000
+be_BY 12.345.678.901.234.567.890,000
+de_DE 12.345.678.901.234.567.890,000
+en_IN 1,23,45,67,89,01,23,45,67,890.000
+en_US 12,345,678,901,234,567,890.000
+it_CH 12'345'678'901'234'567'890,000
+ru_RU 12 345 678 901 234 567 890,000
+ta_IN 1,23,45,67,89,01,23,45,67,890.000
+SELECT fmt, format(-12345678901234567890, 3, fmt) FROM t1 ORDER BY fmt;
+fmt format(-12345678901234567890, 3, fmt)
+ar_AE -12,345,678,901,234,567,890.000
+ar_SA -12345678901234567890.000
+be_BY -12.345.678.901.234.567.890,000
+de_DE -12.345.678.901.234.567.890,000
+en_IN -1,23,45,67,89,01,23,45,67,890.000
+en_US -12,345,678,901,234,567,890.000
+it_CH -12'345'678'901'234'567'890,000
+ru_RU -12 345 678 901 234 567 890,000
+ta_IN -1,23,45,67,89,01,23,45,67,890.000
+SELECT fmt, format(-02345678901234567890, 3, fmt) FROM t1 ORDER BY fmt;
+fmt format(-02345678901234567890, 3, fmt)
+ar_AE -2,345,678,901,234,567,890.000
+ar_SA -2345678901234567890.000
+be_BY -2.345.678.901.234.567.890,000
+de_DE -2.345.678.901.234.567.890,000
+en_IN -23,45,67,89,01,23,45,67,890.000
+en_US -2,345,678,901,234,567,890.000
+it_CH -2'345'678'901'234'567'890,000
+ru_RU -2 345 678 901 234 567 890,000
+ta_IN -23,45,67,89,01,23,45,67,890.000
+SELECT fmt, format(-00345678901234567890, 3, fmt) FROM t1 ORDER BY fmt;
+fmt format(-00345678901234567890, 3, fmt)
+ar_AE -345,678,901,234,567,890.000
+ar_SA -345678901234567890.000
+be_BY -345.678.901.234.567.890,000
+de_DE -345.678.901.234.567.890,000
+en_IN -3,45,67,89,01,23,45,67,890.000
+en_US -345,678,901,234,567,890.000
+it_CH -345'678'901'234'567'890,000
+ru_RU -345 678 901 234 567 890,000
+ta_IN -3,45,67,89,01,23,45,67,890.000
+SELECT fmt, format(-00045678901234567890, 3, fmt) FROM t1 ORDER BY fmt;
+fmt format(-00045678901234567890, 3, fmt)
+ar_AE -45,678,901,234,567,890.000
+ar_SA -45678901234567890.000
+be_BY -45.678.901.234.567.890,000
+de_DE -45.678.901.234.567.890,000
+en_IN -45,67,89,01,23,45,67,890.000
+en_US -45,678,901,234,567,890.000
+it_CH -45'678'901'234'567'890,000
+ru_RU -45 678 901 234 567 890,000
+ta_IN -45,67,89,01,23,45,67,890.000
+DROP TABLE t1;
+SELECT format(123, 1, 'Non-existent-locale');
+format(123, 1, 'Non-existent-locale')
+123.0
+Warnings:
+Warning 1649 Unknown locale: 'Non-existent-locale'
+End of 5.4 tests
diff --git a/mysql-test/r/func_test.result b/mysql-test/r/func_test.result
index a97e6869d09..96a7bafccfc 100644
--- a/mysql-test/r/func_test.result
+++ b/mysql-test/r/func_test.result
@@ -87,7 +87,7 @@ explain extended select - a from t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
Warnings:
-Note 1003 select -('1') AS `- a` from `test`.`t1`
+Note 1003 select -('1') AS `- a` from dual
drop table t1;
select 5 between 0 and 10 between 0 and 1,(5 between 0 and 10) between 0 and 1;
5 between 0 and 10 between 0 and 1 (5 between 0 and 10) between 0 and 1
diff --git a/mysql-test/r/func_time.result b/mysql-test/r/func_time.result
index 2ac549a5abd..7bcaf5567cf 100644
--- a/mysql-test/r/func_time.result
+++ b/mysql-test/r/func_time.result
@@ -682,7 +682,7 @@ select timestampadd(SQL_TSI_FRAC_SECOND, 1, date) from t1;
timestampadd(SQL_TSI_FRAC_SECOND, 1, date)
2003-01-02 00:00:00.000001
Warnings:
-Warning 1287 The syntax 'FRAC_SECOND' is deprecated and will be removed in MySQL 5.6. Please use MICROSECOND instead
+Warning 1287 The syntax 'FRAC_SECOND' is deprecated and will be removed in MySQL 6.2. Please use MICROSECOND instead
select timestampdiff(MONTH, '2001-02-01', '2001-05-01') as a;
a
3
@@ -717,7 +717,7 @@ select timestampdiff(SQL_TSI_FRAC_SECOND, '2001-02-01 12:59:59.120000', '2001-05
a
7689538999999
Warnings:
-Warning 1287 The syntax 'FRAC_SECOND' is deprecated and will be removed in MySQL 5.6. Please use MICROSECOND instead
+Warning 1287 The syntax 'FRAC_SECOND' is deprecated and will be removed in MySQL 6.2. Please use MICROSECOND instead
select timestampdiff(SQL_TSI_DAY, '1986-02-01', '1986-03-01') as a1,
timestampdiff(SQL_TSI_DAY, '1900-02-01', '1900-03-01') as a2,
timestampdiff(SQL_TSI_DAY, '1996-02-01', '1996-03-01') as a3,
@@ -814,7 +814,7 @@ create table t1 select last_day('2000-02-05') as a,
from_days(to_days("960101")) as b;
describe t1;
Field Type Null Key Default Extra
-a date NO 0000-00-00
+a date YES NULL
b date YES NULL
select * from t1;
a b
@@ -928,7 +928,6 @@ select f1 from t1 where cast("2006-1-1" as date) between f1 and cast('zzz' as da
f1
Warnings:
Warning 1292 Incorrect datetime value: 'zzz'
-Warning 1292 Incorrect datetime value: 'zzz'
select f1 from t1 where makedate(2006,1) between date(f1) and date(f3);
f1
2006-01-01
@@ -1088,7 +1087,7 @@ timestampdiff(SQL_TSI_FRAC_SECOND, '2001-02-01 12:59:59.120000', '2001-05-01 12:
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
-Warning 1287 The syntax 'FRAC_SECOND' is deprecated and will be removed in MySQL 5.6. Please use MICROSECOND instead
+Warning 1287 The syntax 'FRAC_SECOND' is deprecated and will be removed in MySQL 6.2. Please use MICROSECOND instead
Note 1003 select timestampdiff(WEEK,'2001-02-01','2001-05-01') AS `a1`,timestampdiff(SECOND_FRAC,'2001-02-01 12:59:59.120000','2001-05-01 12:58:58.119999') AS `a2`
select time_format('100:00:00', '%H %k %h %I %l');
time_format('100:00:00', '%H %k %h %I %l')
@@ -1287,12 +1286,12 @@ SELECT TIMESTAMPADD(FRAC_SECOND, 1, '2008-02-18');
TIMESTAMPADD(FRAC_SECOND, 1, '2008-02-18')
2008-02-18 00:00:00.000001
Warnings:
-Warning 1287 The syntax 'FRAC_SECOND' is deprecated and will be removed in MySQL 5.6. Please use MICROSECOND instead
+Warning 1287 The syntax 'FRAC_SECOND' is deprecated and will be removed in MySQL 6.2. Please use MICROSECOND instead
SELECT TIMESTAMPDIFF(FRAC_SECOND, '2008-02-17', '2008-02-18');
TIMESTAMPDIFF(FRAC_SECOND, '2008-02-17', '2008-02-18')
86400000000
Warnings:
-Warning 1287 The syntax 'FRAC_SECOND' is deprecated and will be removed in MySQL 5.6. Please use MICROSECOND instead
+Warning 1287 The syntax 'FRAC_SECOND' is deprecated and will be removed in MySQL 6.2. Please use MICROSECOND instead
SELECT DATE_ADD('2008-02-18', INTERVAL 1 FRAC_SECOND);
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 'FRAC_SECOND)' at line 1
SELECT DATE_SUB('2008-02-18', INTERVAL 1 FRAC_SECOND);
@@ -1301,6 +1300,12 @@ SELECT '2008-02-18' + INTERVAL 1 FRAC_SECOND;
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 'FRAC_SECOND' at line 1
SELECT '2008-02-18' - INTERVAL 1 FRAC_SECOND;
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 'FRAC_SECOND' at line 1
+select date_add('1000-01-01 00:00:00', interval '1.03:02:01.05' day_microsecond);
+date_add('1000-01-01 00:00:00', interval '1.03:02:01.05' day_microsecond)
+1000-01-02 03:02:01.050000
+select date_add('1000-01-01 00:00:00', interval '1.02' day_microsecond);
+date_add('1000-01-01 00:00:00', interval '1.02' day_microsecond)
+1000-01-01 00:00:01.020000
End of 5.0 tests
select date_sub("0050-01-01 00:00:01",INTERVAL 2 SECOND);
date_sub("0050-01-01 00:00:01",INTERVAL 2 SECOND)
diff --git a/mysql-test/r/gis.result b/mysql-test/r/gis.result
index 3e28227d542..60e24819fa5 100644
--- a/mysql-test/r/gis.result
+++ b/mysql-test/r/gis.result
@@ -258,7 +258,7 @@ fid AsText(EndPoint(g))
107 POINT(40 10)
SELECT fid, GLength(g) FROM gis_line;
fid GLength(g)
-105 24.142135623731
+105 24.14213562373095
106 40
107 30
SELECT fid, NumPoints(g) FROM gis_line;
@@ -284,7 +284,7 @@ Note 1003 select astext(startpoint(`test`.`gis_line`.`g`)) AS `AsText(StartPoint
SELECT fid, AsText(Centroid(g)) FROM gis_polygon;
fid AsText(Centroid(g))
108 POINT(15 15)
-109 POINT(25.4166666666667 25.4166666666667)
+109 POINT(25.416666666666668 25.416666666666668)
110 POINT(20 10)
SELECT fid, Area(g) FROM gis_polygon;
fid Area(g)
@@ -318,8 +318,8 @@ fid IsClosed(g)
116 0
SELECT fid, AsText(Centroid(g)) FROM gis_multi_polygon;
fid AsText(Centroid(g))
-117 POINT(55.5885277530424 17.426536064114)
-118 POINT(55.5885277530424 17.426536064114)
+117 POINT(55.58852775304245 17.426536064113982)
+118 POINT(55.58852775304245 17.426536064113982)
119 POINT(2 2)
SELECT fid, Area(g) FROM gis_multi_polygon;
fid Area(g)
@@ -651,11 +651,11 @@ insert into t1 values ('85984',GeomFromText('MULTIPOLYGON(((-115.006363
select object_id, geometrytype(geo), ISSIMPLE(GEO), ASTEXT(centroid(geo)) from
t1 where object_id=85998;
object_id geometrytype(geo) ISSIMPLE(GEO) ASTEXT(centroid(geo))
-85998 MULTIPOLYGON 0 POINT(115.318773152032 -36.2374728210215)
+85998 MULTIPOLYGON 0 POINT(115.31877315203187 -36.23747282102153)
select object_id, geometrytype(geo), ISSIMPLE(GEO), ASTEXT(centroid(geo)) from
t1 where object_id=85984;
object_id geometrytype(geo) ISSIMPLE(GEO) ASTEXT(centroid(geo))
-85984 MULTIPOLYGON 0 POINT(-114.877871869233 36.3310176346905)
+85984 MULTIPOLYGON 0 POINT(-114.87787186923313 36.33101763469059)
drop table t1;
create table t1 (fl geometry not null);
insert into t1 values (1);
diff --git a/mysql-test/r/grant.result b/mysql-test/r/grant.result
index 92beccd2a9e..542a056c68c 100644
--- a/mysql-test/r/grant.result
+++ b/mysql-test/r/grant.result
@@ -13,8 +13,8 @@ GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' REQUIRE CIPHER 'EDH-RSA-DES-CBC3
GRANT SELECT ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
grant delete on mysqltest.* to mysqltest_1@localhost;
select * from mysql.user where user="mysqltest_1";
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
-localhost mysqltest_1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N SPECIFIED EDH-RSA-DES-CBC3-SHA 0 0 0 0
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
+localhost mysqltest_1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N SPECIFIED EDH-RSA-DES-CBC3-SHA 0 0 0 0
show grants for mysqltest_1@localhost;
Grants for mysqltest_1@localhost
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' REQUIRE CIPHER 'EDH-RSA-DES-CBC3-SHA'
@@ -44,15 +44,15 @@ delete from mysql.user where user='mysqltest_1';
flush privileges;
grant usage on *.* to mysqltest_1@localhost with max_queries_per_hour 10;
select * from mysql.user where user="mysqltest_1";
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
-localhost mysqltest_1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 10 0 0 0
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
+localhost mysqltest_1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 10 0 0 0
show grants for mysqltest_1@localhost;
Grants for mysqltest_1@localhost
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' WITH MAX_QUERIES_PER_HOUR 10
grant usage on *.* to mysqltest_1@localhost with max_updates_per_hour 20 max_connections_per_hour 30;
select * from mysql.user where user="mysqltest_1";
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
-localhost mysqltest_1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 10 20 30 0
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
+localhost mysqltest_1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 10 20 30 0
show grants for mysqltest_1@localhost;
Grants for mysqltest_1@localhost
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' WITH MAX_QUERIES_PER_HOUR 10 MAX_UPDATES_PER_HOUR 20 MAX_CONNECTIONS_PER_HOUR 30
@@ -387,10 +387,10 @@ SELECT * FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES
WHERE GRANTEE = '''mysqltest_3''@''localhost'''
ORDER BY TABLE_NAME,COLUMN_NAME,PRIVILEGE_TYPE;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'mysqltest_3'@'localhost' NULL mysqltest_1 t1 a UPDATE NO
-'mysqltest_3'@'localhost' NULL mysqltest_2 t1 c SELECT NO
-'mysqltest_3'@'localhost' NULL mysqltest_1 t2 b SELECT NO
-'mysqltest_3'@'localhost' NULL mysqltest_2 t2 d UPDATE NO
+'mysqltest_3'@'localhost' def mysqltest_1 t1 a UPDATE NO
+'mysqltest_3'@'localhost' def mysqltest_2 t1 c SELECT NO
+'mysqltest_3'@'localhost' def mysqltest_1 t2 b SELECT NO
+'mysqltest_3'@'localhost' def mysqltest_2 t2 d UPDATE NO
SELECT * FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES
WHERE GRANTEE = '''mysqltest_3''@''localhost'''
ORDER BY TABLE_NAME,PRIVILEGE_TYPE;
@@ -403,7 +403,7 @@ SELECT * from INFORMATION_SCHEMA.USER_PRIVILEGES
WHERE GRANTEE = '''mysqltest_3''@''localhost'''
ORDER BY TABLE_CATALOG,PRIVILEGE_TYPE;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'mysqltest_3'@'localhost' NULL USAGE NO
+'mysqltest_3'@'localhost' def USAGE NO
update mysqltest_1.t1, mysqltest_1.t2 set q=10 where b=1;
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for column 'q' in table 't1'
update mysqltest_1.t2, mysqltest_2.t2 set d=20 where d=1;
@@ -483,6 +483,7 @@ Show view Tables To see views with SHOW CREATE VIEW
Shutdown Server Admin To shut down the server
Super Server Admin To use KILL thread, SET GLOBAL, CHANGE MASTER, etc.
Trigger Tables To use triggers
+Create tablespace Server Admin To create/alter/drop tablespaces
Update Tables To update existing rows
Usage Server Admin No privileges - allow connect only
create database mysqltest;
@@ -710,8 +711,8 @@ GRANT SELECT ON `mysqltest`.* TO 'mysqltest_8'@'%'
select * from information_schema.schema_privileges
where grantee like "'mysqltest_8'%";
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'mysqltest_8'@'%' NULL mysqltest SELECT NO
-'mysqltest_8'@'' NULL mysqltest SELECT NO
+'mysqltest_8'@'%' def mysqltest SELECT NO
+'mysqltest_8'@'' def mysqltest SELECT NO
select * from t1;
a
revoke select on mysqltest.* from mysqltest_8@'';
@@ -762,8 +763,8 @@ GRANT USAGE ON *.* TO 'mysqltest_8'@'%'
GRANT UPDATE (a) ON `test`.`t1` TO 'mysqltest_8'@'%'
select * from information_schema.column_privileges;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'mysqltest_8'@'%' NULL test t1 a UPDATE NO
-'mysqltest_8'@'' NULL test t1 a UPDATE NO
+'mysqltest_8'@'%' def test t1 a UPDATE NO
+'mysqltest_8'@'' def test t1 a UPDATE NO
select * from t1;
a
revoke update (a) on t1 from mysqltest_8@'';
@@ -805,8 +806,8 @@ GRANT USAGE ON *.* TO 'mysqltest_8'@'%'
GRANT UPDATE ON `test`.`t1` TO 'mysqltest_8'@'%'
select * from information_schema.table_privileges;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'mysqltest_8'@'%' NULL test t1 UPDATE NO
-'mysqltest_8'@'' NULL test t1 UPDATE NO
+'mysqltest_8'@'%' def test t1 UPDATE NO
+'mysqltest_8'@'' def test t1 UPDATE NO
select * from t1;
a
revoke update on t1 from mysqltest_8@'';
@@ -844,9 +845,9 @@ GRANT ALL PRIVILEGES ON `mysqltest`.* TO 'mysqltest_8'@'%'
select * from information_schema.user_privileges
where grantee like "'mysqltest_8'%";
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'mysqltest_8'@'host8' NULL USAGE NO
-'mysqltest_8'@'%' NULL USAGE NO
-'mysqltest_8'@'' NULL USAGE NO
+'mysqltest_8'@'host8' def USAGE NO
+'mysqltest_8'@'%' def USAGE NO
+'mysqltest_8'@'' def USAGE NO
select * from t1;
a
flush privileges;
@@ -869,8 +870,8 @@ GRANT ALL PRIVILEGES ON `mysqltest`.* TO 'mysqltest_8'@'%'
select * from information_schema.user_privileges
where grantee like "'mysqltest_8'%";
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'mysqltest_8'@'host8' NULL USAGE NO
-'mysqltest_8'@'%' NULL USAGE NO
+'mysqltest_8'@'host8' def USAGE NO
+'mysqltest_8'@'%' def USAGE NO
drop user mysqltest_8;
connect(localhost,mysqltest_8,,test,MASTER_PORT,MASTER_SOCKET);
ERROR 28000: Access denied for user 'mysqltest_8'@'localhost' (using password: NO)
@@ -914,13 +915,13 @@ SHOW CREATE VIEW mysqltest2.v_ny;
View Create View character_set_client collation_connection
v_ny CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `mysqltest2`.`v_ny` AS select `mysqltest2`.`t_nn`.`c1` AS `c1` from `mysqltest2`.`t_nn` latin1 latin1_swedish_ci
SHOW CREATE TABLE mysqltest3.t_nn;
-ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 't_nn'
+ERROR 42000: SHOW command denied to user 'mysqltest_1'@'localhost' for table 't_nn'
SHOW CREATE VIEW mysqltest3.t_nn;
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 't_nn'
SHOW CREATE VIEW mysqltest3.v_nn;
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'v_nn'
SHOW CREATE TABLE mysqltest3.v_nn;
-ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'v_nn'
+ERROR 42000: SHOW command denied to user 'mysqltest_1'@'localhost' for table 'v_nn'
SHOW CREATE TABLE mysqltest2.t_nn;
Table Create Table
t_nn CREATE TABLE `t_nn` (
@@ -1413,3 +1414,713 @@ DROP USER 'user1';
DROP USER 'user1'@'localhost';
DROP USER 'user2';
DROP DATABASE db1;
+#
+# Bug #25863 No database selected error, but documentation
+# says * for global allowed
+#
+GRANT ALL ON * TO mysqltest_1;
+ERROR 3D000: No database selected
+GRANT ALL ON *.* TO mysqltest_1;
+SHOW GRANTS FOR mysqltest_1;
+Grants for mysqltest_1@%
+GRANT ALL PRIVILEGES ON *.* TO 'mysqltest_1'@'%'
+DROP USER mysqltest_1;
+USE test;
+GRANT ALL ON * TO mysqltest_1;
+SHOW GRANTS FOR mysqltest_1;
+Grants for mysqltest_1@%
+GRANT USAGE ON *.* TO 'mysqltest_1'@'%'
+GRANT ALL PRIVILEGES ON `test`.* TO 'mysqltest_1'@'%'
+DROP USER mysqltest_1;
+GRANT ALL ON *.* TO mysqltest_1;
+SHOW GRANTS FOR mysqltest_1;
+Grants for mysqltest_1@%
+GRANT ALL PRIVILEGES ON *.* TO 'mysqltest_1'@'%'
+DROP USER mysqltest_1;
+#########################################################################
+#
+# Bug#38347: ALTER ROUTINE privilege allows SHOW CREATE TABLE.
+#
+#########################################################################
+
+# --
+# -- Prepare the environment.
+# --
+DELETE FROM mysql.user WHERE User LIKE 'mysqltest_%';
+DELETE FROM mysql.db WHERE User LIKE 'mysqltest_%';
+DELETE FROM mysql.tables_priv WHERE User LIKE 'mysqltest_%';
+DELETE FROM mysql.columns_priv WHERE User LIKE 'mysqltest_%';
+FLUSH PRIVILEGES;
+DROP DATABASE IF EXISTS mysqltest_db1;
+CREATE DATABASE mysqltest_db1;
+CREATE TABLE mysqltest_db1.t1(a INT);
+
+# --
+# -- Check that global privileges don't allow SHOW CREATE TABLE.
+# --
+GRANT EVENT ON mysqltest_db1.* TO mysqltest_u1@localhost;
+GRANT CREATE TEMPORARY TABLES ON mysqltest_db1.* TO mysqltest_u1@localhost;
+GRANT LOCK TABLES ON mysqltest_db1.* TO mysqltest_u1@localhost;
+GRANT ALTER ROUTINE ON mysqltest_db1.* TO mysqltest_u1@localhost;
+GRANT CREATE ROUTINE ON mysqltest_db1.* TO mysqltest_u1@localhost;
+GRANT EXECUTE ON mysqltest_db1.* TO mysqltest_u1@localhost;
+GRANT FILE ON *.* TO mysqltest_u1@localhost;
+GRANT CREATE USER ON *.* TO mysqltest_u1@localhost;
+GRANT PROCESS ON *.* TO mysqltest_u1@localhost;
+GRANT RELOAD ON *.* TO mysqltest_u1@localhost;
+GRANT REPLICATION CLIENT ON *.* TO mysqltest_u1@localhost;
+GRANT REPLICATION SLAVE ON *.* TO mysqltest_u1@localhost;
+GRANT SHOW DATABASES ON *.* TO mysqltest_u1@localhost;
+GRANT SHUTDOWN ON *.* TO mysqltest_u1@localhost;
+GRANT USAGE ON *.* TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT RELOAD, SHUTDOWN, PROCESS, FILE, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT, CREATE USER ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE ROUTINE, ALTER ROUTINE, EVENT ON `mysqltest_db1`.* TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+ERROR 42000: SHOW command denied to user 'mysqltest_u1'@'localhost' for table 't1'
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that global SELECT allows SHOW CREATE TABLE.
+# --
+
+GRANT SELECT ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT SELECT ON `mysqltest_db1`.* TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that global INSERT allows SHOW CREATE TABLE.
+# --
+
+GRANT INSERT ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT INSERT ON `mysqltest_db1`.* TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that global UPDATE allows SHOW CREATE TABLE.
+# --
+
+GRANT UPDATE ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT UPDATE ON `mysqltest_db1`.* TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that global DELETE allows SHOW CREATE TABLE.
+# --
+
+GRANT DELETE ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT DELETE ON `mysqltest_db1`.* TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that global CREATE allows SHOW CREATE TABLE.
+# --
+
+GRANT CREATE ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT CREATE ON `mysqltest_db1`.* TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that global DROP allows SHOW CREATE TABLE.
+# --
+
+GRANT DROP ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT DROP ON `mysqltest_db1`.* TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that global ALTER allows SHOW CREATE TABLE.
+# --
+
+GRANT ALTER ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT ALTER ON `mysqltest_db1`.* TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that global INDEX allows SHOW CREATE TABLE.
+# --
+
+GRANT INDEX ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT INDEX ON `mysqltest_db1`.* TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that global REFERENCES allows SHOW CREATE TABLE.
+# --
+
+GRANT REFERENCES ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT REFERENCES ON `mysqltest_db1`.* TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that global GRANT OPTION allows SHOW CREATE TABLE.
+# --
+
+GRANT GRANT OPTION ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT USAGE ON `mysqltest_db1`.* TO 'mysqltest_u1'@'localhost' WITH GRANT OPTION
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that global CREATE VIEW allows SHOW CREATE TABLE.
+# --
+
+GRANT CREATE VIEW ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT CREATE VIEW ON `mysqltest_db1`.* TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that global SHOW VIEW allows SHOW CREATE TABLE.
+# --
+
+GRANT SHOW VIEW ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT SHOW VIEW ON `mysqltest_db1`.* TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that table-level SELECT allows SHOW CREATE TABLE.
+# --
+
+GRANT SELECT ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT SELECT ON `mysqltest_db1`.`t1` TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that table-level INSERT allows SHOW CREATE TABLE.
+# --
+
+GRANT INSERT ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT INSERT ON `mysqltest_db1`.`t1` TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that table-level UPDATE allows SHOW CREATE TABLE.
+# --
+
+GRANT UPDATE ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT UPDATE ON `mysqltest_db1`.`t1` TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that table-level DELETE allows SHOW CREATE TABLE.
+# --
+
+GRANT DELETE ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT DELETE ON `mysqltest_db1`.`t1` TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that table-level CREATE allows SHOW CREATE TABLE.
+# --
+
+GRANT CREATE ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT CREATE ON `mysqltest_db1`.`t1` TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that table-level DROP allows SHOW CREATE TABLE.
+# --
+
+GRANT DROP ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT DROP ON `mysqltest_db1`.`t1` TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that table-level ALTER allows SHOW CREATE TABLE.
+# --
+
+GRANT ALTER ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT ALTER ON `mysqltest_db1`.`t1` TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that table-level INDEX allows SHOW CREATE TABLE.
+# --
+
+GRANT INDEX ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT INDEX ON `mysqltest_db1`.`t1` TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that table-level REFERENCES allows SHOW CREATE TABLE.
+# --
+
+GRANT REFERENCES ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT REFERENCES ON `mysqltest_db1`.`t1` TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that table-level GRANT OPTION allows SHOW CREATE TABLE.
+# --
+
+GRANT GRANT OPTION ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT USAGE ON `mysqltest_db1`.`t1` TO 'mysqltest_u1'@'localhost' WITH GRANT OPTION
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that table-level CREATE VIEW allows SHOW CREATE TABLE.
+# --
+
+GRANT CREATE VIEW ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT CREATE VIEW ON `mysqltest_db1`.`t1` TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Check that table-level SHOW VIEW allows SHOW CREATE TABLE.
+# --
+
+GRANT SHOW VIEW ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+GRANT SHOW VIEW ON `mysqltest_db1`.`t1` TO 'mysqltest_u1'@'localhost'
+
+# connection: con1 (mysqltest_u1@mysqltest_db1)
+
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+# connection: default
+
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+Grants for mysqltest_u1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# --
+# -- Cleanup.
+# --
+
+DROP DATABASE mysqltest_db1;
+DROP USER mysqltest_u1@localhost;
+
+# End of Bug#38347.
+
diff --git a/mysql-test/r/grant2.result b/mysql-test/r/grant2.result
index 12269f0cb1c..3032ca854bd 100644
--- a/mysql-test/r/grant2.result
+++ b/mysql-test/r/grant2.result
@@ -121,9 +121,9 @@ mysqltest_5@host5, mysqltest_6@host6, mysqltest_7@host7;
create database mysqltest_1;
grant select, insert, update on `mysqltest\_1`.* to mysqltest_1@localhost;
set sql_log_off = 1;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
set sql_log_bin = 0;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
delete from mysql.user where user like 'mysqltest\_1';
delete from mysql.db where user like 'mysqltest\_1';
drop database mysqltest_1;
@@ -391,7 +391,7 @@ grant all on mysqltest_1.* to mysqltest_u1@localhost;
use mysqltest_2;
create table t1 (i int);
show create table mysqltest_2.t1;
-ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't1'
+ERROR 42000: SHOW command denied to user 'mysqltest_u1'@'localhost' for table 't1'
create table t1 like mysqltest_2.t1;
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't1'
grant select on mysqltest_2.t1 to mysqltest_u1@localhost;
diff --git a/mysql-test/r/grant4.result b/mysql-test/r/grant4.result
new file mode 100644
index 00000000000..28ad9d04151
--- /dev/null
+++ b/mysql-test/r/grant4.result
@@ -0,0 +1,123 @@
+drop database if exists mysqltest_db1;
+create database mysqltest_db1;
+use mysqltest_db1;
+create table t_column_priv_only (a int, b int);
+create table t_select_priv like t_column_priv_only;
+create table t_no_priv like t_column_priv_only;
+grant all privileges on test.* to mysqltest_u1@localhost;
+grant insert (a) on mysqltest_db1.t_column_priv_only to mysqltest_u1@localhost;
+grant select on mysqltest_db1.t_select_priv to mysqltest_u1@localhost;
+** Connect as restricted user mysqltest_u1.
+
+** Test column level privileges only. No SELECT privileges on the table.
+** INSERT INTO ... VALUES ...
+** Attempting to insert values to a table with only column privileges
+** should work.
+insert into mysqltest_db1.t_column_priv_only (a) VALUES (1);
+
+** SHOW COLUMNS
+** Should succeed because we have privileges (any) on at least one of the columns.
+select column_name as 'Field',column_type as 'Type',is_nullable as 'Null',column_key as 'Key',column_default as 'Default',extra as 'Extra' from information_schema.columns where table_schema='mysqltest_db1' and table_name='t_column_priv_only';
+Field Type Null Key Default Extra
+a int(11) YES NULL
+show columns from mysqltest_db1.t_column_priv_only;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+** SHOW COLUMNS
+** Should fail because there are no privileges on any column combination.
+show columns from mysqltest_db1.t_no_priv;
+ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't_no_priv'
+** However, select from I_S.COLUMNS will succeed but not show anything:
+select column_name as 'Field',column_type as 'Type',is_nullable as 'Null',column_key as 'Key',column_default as 'Default',extra as 'Extra' from information_schema.columns where table_schema='mysqltest_db1' and table_name='t_no_priv';
+Field Type Null Key Default Extra
+
+** CREATE TABLE ... LIKE ... require SELECT privleges and will fail.
+create table test.t_no_priv like mysqltest_db1.column_priv_only;
+ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 'column_priv_only'
+
+** Just to be sure... SELECT also fails.
+select * from mysqltest_db1.t_column_priv_only;
+ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't_column_priv_only'
+
+** SHOW CREATE TABLE ... require any privileges on all columns (the entire table).
+** First we try and fail on a table with only one column privilege.
+show create table mysqltest_db1.t_column_priv_only;
+ERROR 42000: SHOW command denied to user 'mysqltest_u1'@'localhost' for table 't_column_priv_only'
+
+** Now we do the same on a table with SELECT privileges.
+
+** SHOW COLUMNS
+** Success because we got some privileges on the table (SELECT_ACL)
+show columns from mysqltest_db1.t_select_priv;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+b int(11) YES NULL
+
+** CREATE TABLE ... LIKE ... require SELECT privleges and will SUCCEED.
+drop table if exists test.t_duplicated;
+create table test.t_duplicated like mysqltest_db1.t_select_priv;
+drop table test.t_duplicated;
+
+** SHOW CREATE TABLE will succeed because we have a privilege on all columns in the table (table-level privilege).
+show create table mysqltest_db1.t_select_priv;
+Table Create Table
+t_select_priv CREATE TABLE `t_select_priv` (
+ `a` int(11) DEFAULT NULL,
+ `b` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+
+** SHOW CREATE TABLE will fail if there is no grants at all:
+show create table mysqltest_db1.t_no_priv;
+ERROR 42000: SHOW command denied to user 'mysqltest_u1'@'localhost' for table 't_no_priv'
+
+use mysqltest_db1;
+CREATE TABLE t5 (s1 INT);
+CREATE INDEX i ON t5 (s1);
+CREATE TABLE t6 (s1 INT, s2 INT);
+CREATE VIEW v5 AS SELECT * FROM t5;
+CREATE VIEW v6 AS SELECT * FROM t6;
+CREATE VIEW v2 AS SELECT * FROM t_select_priv;
+CREATE VIEW v3 AS SELECT * FROM t_select_priv;
+CREATE INDEX i ON t6 (s1);
+GRANT UPDATE (s2) ON t6 to mysqltest_u1@localhost;
+GRANT UPDATE (s2) ON v6 to mysqltest_u1@localhost;
+GRANT SHOW VIEW ON v2 to mysqltest_u1@localhost;
+GRANT SHOW VIEW, SELECT ON v3 to mysqltest_u1@localhost;
+use mysqltest_db1;
+** Connect as restricted user mysqltest_u1.
+** SELECT FROM INFORMATION_SCHEMA.STATISTICS will succeed because any privileges will do (authentication is enough).
+SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE table_name='t5';
+TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT
+def mysqltest_db1 t5 1 mysqltest_db1 i 1 s1 A NULL NULL NULL YES BTREE
+** SHOW INDEX FROM t5 will fail because we don't have any privileges on any column combination.
+SHOW INDEX FROM t5;
+ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't5'
+** SHOW INDEX FROM t6 will succeed because there exist a privilege on a column combination on t6.
+SHOW INDEX FROM t6;
+Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
+t6 1 i 1 s1 A NULL NULL NULL YES BTREE
+** CHECK TABLE requires any privilege on any column combination and should succeed for t6:
+CHECK TABLE t6;
+Table Op Msg_type Msg_text
+mysqltest_db1.t6 check status OK
+** With no privileges access is naturally denied:
+CHECK TABLE t5;
+ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't5'
+** CHECKSUM TABLE requires SELECT privileges on the table. The following should fail:
+CHECKSUM TABLE t6;
+ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't6'
+** And this should work:
+CHECKSUM TABLE t_select_priv;
+Table Checksum
+mysqltest_db1.t_select_priv 0
+SHOW CREATE VIEW v5;
+ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 'v5'
+SHOW CREATE VIEW v6;
+ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 'v6'
+SHOW CREATE VIEW v2;
+ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 'v2'
+SHOW CREATE VIEW v3;
+View Create View character_set_client collation_connection
+v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v3` AS select `t_select_priv`.`a` AS `a`,`t_select_priv`.`b` AS `b` from `t_select_priv` latin1 latin1_swedish_ci
+drop database mysqltest_db1;
+drop user mysqltest_u1@localhost;
diff --git a/mysql-test/r/group_by.result b/mysql-test/r/group_by.result
index 742d4b90807..e6063047ba4 100644
--- a/mysql-test/r/group_by.result
+++ b/mysql-test/r/group_by.result
@@ -107,8 +107,9 @@ SELECT cid, CONCAT(firstname, ' ', surname), COUNT(call_id) FROM t1 LEFT JOIN t2
cid CONCAT(firstname, ' ', surname) COUNT(call_id)
SELECT HIGH_PRIORITY cid, CONCAT(firstname, ' ', surname), COUNT(call_id) FROM t1 LEFT JOIN t2 ON cid=contact_id WHERE firstname like '%foo%' GROUP BY cid ORDER BY surname, firstname;
cid CONCAT(firstname, ' ', surname) COUNT(call_id)
-drop table t1,t2;
+drop table t2;
unlock tables;
+drop table t1;
CREATE TABLE t1 (
bug_id mediumint(9) NOT NULL auto_increment,
groupset bigint(20) DEFAULT '0' NOT NULL,
diff --git a/mysql-test/r/group_min_max.result b/mysql-test/r/group_min_max.result
index 662cc5be034..ba1c2a79ad9 100644
--- a/mysql-test/r/group_min_max.result
+++ b/mysql-test/r/group_min_max.result
@@ -1800,23 +1800,23 @@ b
a
explain select count(distinct a1,a2,b) from t1 where (a2 >= 'b') and (b = 'a');
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL idx_t1_2 147 NULL 128 Using where; Using index
+1 SIMPLE t1 range NULL idx_t1_1 147 NULL 17 Using where; Using index for group-by
explain select count(distinct a1,a2,b,c) from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL idx_t1_1 163 NULL 128 Using where; Using index
+1 SIMPLE t1 range NULL idx_t1_1 163 NULL 65 Using where; Using index for group-by (scanning)
explain extended select count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c');
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 index idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 128 75.00 Using where; Using index
+1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 14 100.00 Using where; Using index for group-by
Warnings:
Note 1003 select count(distinct `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`) AS `count(distinct a1,a2,b)` from `test`.`t1` where ((`test`.`t1`.`b` = 'c') and (`test`.`t1`.`a1` > 'a') and (`test`.`t1`.`a2` > 'a'))
explain select count(distinct b) from t1 where (a2 >= 'b') and (b = 'a');
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index NULL idx_t1_2 147 NULL 128 Using where; Using index
-explain extended select ord(a1) + count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a');
+explain extended select 98 + count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a');
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 index idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 128 75.00 Using where; Using index
+1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 14 100.00 Using where; Using index for group-by
Warnings:
-Note 1003 select (ord(`test`.`t1`.`a1`) + count(distinct `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`)) AS `ord(a1) + count(distinct a1,a2,b)` from `test`.`t1` where ((`test`.`t1`.`a1` > 'a') and (`test`.`t1`.`a2` > 'a'))
+Note 1003 select (98 + count(distinct `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`)) AS `98 + count(distinct a1,a2,b)` from `test`.`t1` where ((`test`.`t1`.`a1` > 'a') and (`test`.`t1`.`a2` > 'a'))
select count(distinct a1,a2,b) from t1 where (a2 >= 'b') and (b = 'a');
count(distinct a1,a2,b)
4
@@ -1829,8 +1829,8 @@ count(distinct a1,a2,b)
select count(distinct b) from t1 where (a2 >= 'b') and (b = 'a');
count(distinct b)
1
-select ord(a1) + count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a');
-ord(a1) + count(distinct a1,a2,b)
+select 98 + count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a');
+98 + count(distinct a1,a2,b)
104
explain select a1,a2,b, concat(min(c), max(c)) from t1 where a1 < 'd' group by a1,a2,b;
id select_type table type possible_keys key key_len ref rows Extra
@@ -2525,3 +2525,257 @@ a MAX(b)
2 1
DROP TABLE t;
End of 5.1 tests
+#
+# WL#3220 (Loose index scan for COUNT DISTINCT)
+#
+CREATE TABLE t1 (a INT, b INT, c INT, KEY (a,b));
+INSERT INTO t1 VALUES (1,1,1), (1,2,1), (1,3,1), (1,4,1);
+INSERT INTO t1 SELECT a, b + 4, 1 FROM t1;
+INSERT INTO t1 SELECT a + 1, b, 1 FROM t1;
+CREATE TABLE t2 (a INT, b INT, c INT, d INT, e INT, f INT, KEY (a,b,c));
+INSERT INTO t2 VALUES (1,1,1,1,1,1), (1,2,1,1,1,1), (1,3,1,1,1,1),
+(1,4,1,1,1,1);
+INSERT INTO t2 SELECT a, b + 4, c,d,e,f FROM t2;
+INSERT INTO t2 SELECT a + 1, b, c,d,e,f FROM t2;
+EXPLAIN SELECT COUNT(DISTINCT a) FROM t1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range NULL a 5 NULL 9 Using index for group-by
+SELECT COUNT(DISTINCT a) FROM t1;
+COUNT(DISTINCT a)
+2
+EXPLAIN SELECT COUNT(DISTINCT a,b) FROM t1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range NULL a 10 NULL 9 Using index for group-by
+SELECT COUNT(DISTINCT a,b) FROM t1;
+COUNT(DISTINCT a,b)
+16
+EXPLAIN SELECT COUNT(DISTINCT b,a) FROM t1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range NULL a 10 NULL 9 Using index for group-by
+SELECT COUNT(DISTINCT b,a) FROM t1;
+COUNT(DISTINCT b,a)
+16
+EXPLAIN SELECT COUNT(DISTINCT b) FROM t1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index NULL a 10 NULL 16 Using index
+SELECT COUNT(DISTINCT b) FROM t1;
+COUNT(DISTINCT b)
+8
+EXPLAIN SELECT COUNT(DISTINCT a) FROM t1 GROUP BY a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range NULL a 5 NULL 9 Using index for group-by
+SELECT COUNT(DISTINCT a) FROM t1 GROUP BY a;
+COUNT(DISTINCT a)
+1
+1
+EXPLAIN SELECT COUNT(DISTINCT b) FROM t1 GROUP BY a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range NULL a 10 NULL 9 Using index for group-by
+SELECT COUNT(DISTINCT b) FROM t1 GROUP BY a;
+COUNT(DISTINCT b)
+8
+8
+EXPLAIN SELECT COUNT(DISTINCT a) FROM t1 GROUP BY b;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index NULL a 10 NULL 16 Using index; Using filesort
+SELECT COUNT(DISTINCT a) FROM t1 GROUP BY b;
+COUNT(DISTINCT a)
+2
+2
+2
+2
+2
+2
+2
+2
+EXPLAIN SELECT DISTINCT COUNT(DISTINCT a) FROM t1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index NULL a 10 NULL 16 Using index
+SELECT DISTINCT COUNT(DISTINCT a) FROM t1;
+COUNT(DISTINCT a)
+2
+EXPLAIN SELECT COUNT(DISTINCT a, b + 0) FROM t1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index NULL a 10 NULL 16 Using index
+SELECT COUNT(DISTINCT a, b + 0) FROM t1;
+COUNT(DISTINCT a, b + 0)
+16
+EXPLAIN SELECT COUNT(DISTINCT a) FROM t1 HAVING COUNT(DISTINCT b) < 10;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range NULL a 10 NULL 9 Using index for group-by
+SELECT COUNT(DISTINCT a) FROM t1 HAVING COUNT(DISTINCT b) < 10;
+COUNT(DISTINCT a)
+EXPLAIN SELECT COUNT(DISTINCT a) FROM t1 HAVING COUNT(DISTINCT c) < 10;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 16
+SELECT COUNT(DISTINCT a) FROM t1 HAVING COUNT(DISTINCT c) < 10;
+COUNT(DISTINCT a)
+2
+EXPLAIN SELECT 1 FROM t1 HAVING COUNT(DISTINCT a) < 10;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range NULL a 5 NULL 9 Using index for group-by
+SELECT 1 FROM t1 HAVING COUNT(DISTINCT a) < 10;
+1
+1
+EXPLAIN SELECT 1 FROM t1 GROUP BY a HAVING COUNT(DISTINCT b) > 1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range NULL a 10 NULL 9 Using index for group-by
+SELECT 1 FROM t1 GROUP BY a HAVING COUNT(DISTINCT b) > 1;
+1
+1
+1
+EXPLAIN SELECT COUNT(DISTINCT t1_1.a) FROM t1 t1_1, t1 t1_2 GROUP BY t1_1.a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1_1 index NULL a 10 NULL 16 Using index; Using temporary; Using filesort
+1 SIMPLE t1_2 index NULL a 10 NULL 16 Using index; Using join buffer
+SELECT COUNT(DISTINCT t1_1.a) FROM t1 t1_1, t1 t1_2 GROUP BY t1_1.a;
+COUNT(DISTINCT t1_1.a)
+1
+1
+EXPLAIN SELECT COUNT(DISTINCT a), 12 FROM t1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range NULL a 5 NULL 9 Using index for group-by
+SELECT COUNT(DISTINCT a), 12 FROM t1;
+COUNT(DISTINCT a) 12
+2 12
+EXPLAIN SELECT COUNT(DISTINCT a, b, c) FROM t2;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 range NULL a 15 NULL 9 Using index for group-by
+SELECT COUNT(DISTINCT a, b, c) FROM t2;
+COUNT(DISTINCT a, b, c)
+16
+EXPLAIN SELECT COUNT(DISTINCT a), SUM(DISTINCT a), AVG(DISTINCT a) FROM t2;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 range NULL a 5 NULL 9 Using index for group-by
+SELECT COUNT(DISTINCT a), SUM(DISTINCT a), AVG(DISTINCT a) FROM t2;
+COUNT(DISTINCT a) SUM(DISTINCT a) AVG(DISTINCT a)
+2 3 1.5000
+EXPLAIN SELECT COUNT(DISTINCT a), SUM(DISTINCT a), AVG(DISTINCT f) FROM t2;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 ALL NULL NULL NULL NULL 16
+SELECT COUNT(DISTINCT a), SUM(DISTINCT a), AVG(DISTINCT f) FROM t2;
+COUNT(DISTINCT a) SUM(DISTINCT a) AVG(DISTINCT f)
+2 3 1.0000
+EXPLAIN SELECT COUNT(DISTINCT a, b), COUNT(DISTINCT b, a) FROM t2;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 range NULL a 10 NULL 9 Using index for group-by
+SELECT COUNT(DISTINCT a, b), COUNT(DISTINCT b, a) FROM t2;
+COUNT(DISTINCT a, b) COUNT(DISTINCT b, a)
+16 16
+EXPLAIN SELECT COUNT(DISTINCT a, b), COUNT(DISTINCT b, f) FROM t2;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 ALL NULL NULL NULL NULL 16
+SELECT COUNT(DISTINCT a, b), COUNT(DISTINCT b, f) FROM t2;
+COUNT(DISTINCT a, b) COUNT(DISTINCT b, f)
+16 8
+EXPLAIN SELECT COUNT(DISTINCT a, b), COUNT(DISTINCT b, d) FROM t2;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 ALL NULL NULL NULL NULL 16
+SELECT COUNT(DISTINCT a, b), COUNT(DISTINCT b, d) FROM t2;
+COUNT(DISTINCT a, b) COUNT(DISTINCT b, d)
+16 8
+EXPLAIN SELECT a, c, COUNT(DISTINCT c, a, b) FROM t2 GROUP BY a, b, c;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 range NULL a 15 NULL 9 Using index for group-by
+SELECT a, c, COUNT(DISTINCT c, a, b) FROM t2 GROUP BY a, b, c;
+a c COUNT(DISTINCT c, a, b)
+1 1 1
+1 1 1
+1 1 1
+1 1 1
+1 1 1
+1 1 1
+1 1 1
+2 1 1
+2 1 1
+2 1 1
+2 1 1
+2 1 1
+2 1 1
+2 1 1
+2 1 1
+2 1 1
+EXPLAIN SELECT COUNT(DISTINCT c, a, b) FROM t2
+WHERE a > 5 AND b BETWEEN 10 AND 20 GROUP BY a, b, c;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 range a a 15 NULL 1 Using where; Using index for group-by
+SELECT COUNT(DISTINCT c, a, b) FROM t2
+WHERE a > 5 AND b BETWEEN 10 AND 20 GROUP BY a, b, c;
+COUNT(DISTINCT c, a, b)
+EXPLAIN SELECT COUNT(DISTINCT b), SUM(DISTINCT b) FROM t2 WHERE a = 5
+GROUP BY b;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 ref a a 5 const 1 Using where; Using index
+SELECT COUNT(DISTINCT b), SUM(DISTINCT b) FROM t2 WHERE a = 5
+GROUP BY b;
+COUNT(DISTINCT b) SUM(DISTINCT b)
+EXPLAIN SELECT a, COUNT(DISTINCT b), SUM(DISTINCT b) FROM t2 GROUP BY a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 range NULL a 10 NULL 9 Using index for group-by
+SELECT a, COUNT(DISTINCT b), SUM(DISTINCT b) FROM t2 GROUP BY a;
+a COUNT(DISTINCT b) SUM(DISTINCT b)
+2 8 36
+2 8 36
+EXPLAIN SELECT COUNT(DISTINCT b), SUM(DISTINCT b) FROM t2 GROUP BY a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 range NULL a 10 NULL 9 Using index for group-by
+SELECT COUNT(DISTINCT b), SUM(DISTINCT b) FROM t2 GROUP BY a;
+COUNT(DISTINCT b) SUM(DISTINCT b)
+8 36
+8 36
+EXPLAIN SELECT COUNT(DISTINCT a, b) FROM t2 WHERE c = 13 AND d = 42;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 ALL NULL NULL NULL NULL 16 Using where
+SELECT COUNT(DISTINCT a, b) FROM t2 WHERE c = 13 AND d = 42;
+COUNT(DISTINCT a, b)
+0
+EXPLAIN SELECT a, COUNT(DISTINCT a), SUM(DISTINCT a) FROM t2
+WHERE b = 13 AND c = 42 GROUP BY a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 range NULL a 15 NULL 9 Using where; Using index for group-by
+SELECT a, COUNT(DISTINCT a), SUM(DISTINCT a) FROM t2
+WHERE b = 13 AND c = 42 GROUP BY a;
+a COUNT(DISTINCT a) SUM(DISTINCT a)
+EXPLAIN SELECT COUNT(DISTINCT a, b), SUM(DISTINCT a) FROM t2 WHERE b = 42;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 range NULL a 10 NULL 9 Using where; Using index for group-by
+SELECT COUNT(DISTINCT a, b), SUM(DISTINCT a) FROM t2 WHERE b = 42;
+COUNT(DISTINCT a, b) SUM(DISTINCT a)
+0 NULL
+EXPLAIN SELECT SUM(DISTINCT a), MAX(b) FROM t2 GROUP BY a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 range NULL a 5 NULL 9 Using index for group-by
+SELECT SUM(DISTINCT a), MAX(b) FROM t2 GROUP BY a;
+SUM(DISTINCT a) MAX(b)
+1 8
+2 8
+EXPLAIN SELECT 42 * (a + c + COUNT(DISTINCT c, a, b)) FROM t2 GROUP BY a, b, c;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 range NULL a 15 NULL 9 Using index for group-by
+SELECT 42 * (a + c + COUNT(DISTINCT c, a, b)) FROM t2 GROUP BY a, b, c;
+42 * (a + c + COUNT(DISTINCT c, a, b))
+126
+126
+126
+126
+126
+126
+126
+168
+168
+168
+168
+168
+168
+168
+168
+168
+EXPLAIN SELECT (SUM(DISTINCT a) + MAX(b)) FROM t2 GROUP BY a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 range NULL a 5 NULL 9 Using index for group-by
+SELECT (SUM(DISTINCT a) + MAX(b)) FROM t2 GROUP BY a;
+(SUM(DISTINCT a) + MAX(b))
+9
+10
+DROP TABLE t1,t2;
+# end of WL#3220 tests
diff --git a/mysql-test/r/have_community_features.require b/mysql-test/r/have_community_features.require
deleted file mode 100644
index 9233bba91e1..00000000000
--- a/mysql-test/r/have_community_features.require
+++ /dev/null
@@ -1,2 +0,0 @@
-Variable_name Value
-have_community_features YES
diff --git a/mysql-test/r/have_dynamic_loading.require b/mysql-test/r/have_dynamic_loading.require
deleted file mode 100644
index 2d21f65e4ac..00000000000
--- a/mysql-test/r/have_dynamic_loading.require
+++ /dev/null
@@ -1,2 +0,0 @@
-Variable_name Value
-have_dynamic_loading YES
diff --git a/mysql-test/r/have_example_plugin.require b/mysql-test/r/have_example_plugin.require
deleted file mode 100644
index 291b8231cbb..00000000000
--- a/mysql-test/r/have_example_plugin.require
+++ /dev/null
@@ -1,2 +0,0 @@
-have_example_plugin
-1
diff --git a/mysql-test/r/have_nodebug.require b/mysql-test/r/have_nodebug.require
new file mode 100644
index 00000000000..ff251521aa8
--- /dev/null
+++ b/mysql-test/r/have_nodebug.require
@@ -0,0 +1,2 @@
+debug
+0
diff --git a/mysql-test/r/have_profiling.require b/mysql-test/r/have_profiling.require
new file mode 100644
index 00000000000..54caeba1dae
--- /dev/null
+++ b/mysql-test/r/have_profiling.require
@@ -0,0 +1,2 @@
+Variable_name Value
+have_profiling YES
diff --git a/mysql-test/r/have_simple_parser.require b/mysql-test/r/have_simple_parser.require
deleted file mode 100644
index 0e023bd6983..00000000000
--- a/mysql-test/r/have_simple_parser.require
+++ /dev/null
@@ -1,2 +0,0 @@
-have_simple_parser
-1
diff --git a/mysql-test/r/have_udf_example.require b/mysql-test/r/have_udf_example.require
deleted file mode 100644
index e60fab1dbe0..00000000000
--- a/mysql-test/r/have_udf_example.require
+++ /dev/null
@@ -1,2 +0,0 @@
-have_udf_example_lib
-1
diff --git a/mysql-test/r/having.result b/mysql-test/r/having.result
index 9c3cc8fc89e..f0b934ebd3a 100644
--- a/mysql-test/r/having.result
+++ b/mysql-test/r/having.result
@@ -12,7 +12,7 @@ explain extended select count(a) as b from t1 where a=0 having b >=0;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
Warnings:
-Note 1003 select count('0') AS `b` from `test`.`t1` where 0 having (`b` >= 0)
+Note 1003 select count('0') AS `b` from dual where 0 having (`b` >= 0)
drop table t1;
CREATE TABLE t1 (
raw_id int(10) NOT NULL default '0',
diff --git a/mysql-test/r/index_merge_innodb.result b/mysql-test/r/index_merge_innodb.result
index 588de70e6e5..6d130a64e35 100644
--- a/mysql-test/r/index_merge_innodb.result
+++ b/mysql-test/r/index_merge_innodb.result
@@ -1,329 +1,3 @@
-#---------------- Index merge test 2 -------------------------------------------
-SET SESSION STORAGE_ENGINE = InnoDB;
-drop table if exists t1,t2;
-create table t1
-(
-key1 int not null,
-key2 int not null,
-INDEX i1(key1),
-INDEX i2(key2)
-);
-explain select * from t1 where key1 < 5 or key2 > 197;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index_merge i1,i2 i1,i2 4,4 NULL 8 Using sort_union(i1,i2); Using where
-select * from t1 where key1 < 5 or key2 > 197;
-key1 key2
-0 200
-1 199
-2 198
-3 197
-4 196
-explain select * from t1 where key1 < 3 or key2 > 195;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index_merge i1,i2 i1,i2 4,4 NULL 8 Using sort_union(i1,i2); Using where
-select * from t1 where key1 < 3 or key2 > 195;
-key1 key2
-0 200
-1 199
-2 198
-3 197
-4 196
-alter table t1 add str1 char (255) not null,
-add zeroval int not null default 0,
-add str2 char (255) not null,
-add str3 char (255) not null;
-update t1 set str1='aaa', str2='bbb', str3=concat(key2, '-', key1 div 2, '_' ,if(key1 mod 2 = 0, 'a', 'A'));
-alter table t1 add primary key (str1, zeroval, str2, str3);
-explain select * from t1 where key1 < 5 or key2 > 197;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index_merge i1,i2 i1,i2 4,4 NULL 8 Using sort_union(i1,i2); Using where
-select * from t1 where key1 < 5 or key2 > 197;
-key1 key2 str1 zeroval str2 str3
-4 196 aaa 0 bbb 196-2_a
-3 197 aaa 0 bbb 197-1_A
-2 198 aaa 0 bbb 198-1_a
-1 199 aaa 0 bbb 199-0_A
-0 200 aaa 0 bbb 200-0_a
-explain select * from t1 where key1 < 3 or key2 > 195;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index_merge i1,i2 i1,i2 4,4 NULL 8 Using sort_union(i1,i2); Using where
-select * from t1 where key1 < 3 or key2 > 195;
-key1 key2 str1 zeroval str2 str3
-4 196 aaa 0 bbb 196-2_a
-3 197 aaa 0 bbb 197-1_A
-2 198 aaa 0 bbb 198-1_a
-1 199 aaa 0 bbb 199-0_A
-0 200 aaa 0 bbb 200-0_a
-drop table t1;
-create table t1 (
-pk integer not null auto_increment primary key,
-key1 integer,
-key2 integer not null,
-filler char (200),
-index (key1),
-index (key2)
-);
-show warnings;
-Level Code Message
-explain select pk from t1 where key1 = 1 and key2 = 1;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index_merge key1,key2 key1,key2 5,4 NULL 1 Using intersect(key1,key2); Using where; Using index
-select pk from t1 where key2 = 1 and key1 = 1;
-pk
-26
-27
-select pk from t1 ignore index(key1,key2) where key2 = 1 and key1 = 1;
-pk
-26
-27
-drop table t1;
-create table t1 (
-pk int primary key auto_increment,
-key1a int,
-key2a int,
-key1b int,
-key2b int,
-dummy1 int,
-dummy2 int,
-dummy3 int,
-dummy4 int,
-key3a int,
-key3b int,
-filler1 char (200),
-index i1(key1a, key1b),
-index i2(key2a, key2b),
-index i3(key3a, key3b)
-);
-create table t2 (a int);
-insert into t2 values (0),(1),(2),(3),(4),(NULL);
-insert into t1 (key1a, key1b, key2a, key2b, key3a, key3b)
-select A.a, B.a, C.a, D.a, C.a, D.a from t2 A,t2 B,t2 C, t2 D;
-insert into t1 (key1a, key1b, key2a, key2b, key3a, key3b)
-select key1a, key1b, key2a, key2b, key3a, key3b from t1;
-insert into t1 (key1a, key1b, key2a, key2b, key3a, key3b)
-select key1a, key1b, key2a, key2b, key3a, key3b from t1;
-analyze table t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-select count(*) from t1;
-count(*)
-5184
-explain select count(*) from t1 where
-key1a = 2 and key1b is null and key2a = 2 and key2b is null;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index_merge i1,i2 i1,i2 10,10 NULL 4 Using intersect(i1,i2); Using where; Using index
-select count(*) from t1 where
-key1a = 2 and key1b is null and key2a = 2 and key2b is null;
-count(*)
-4
-explain select count(*) from t1 where
-key1a = 2 and key1b is null and key3a = 2 and key3b is null;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index_merge i1,i3 i1,i3 10,10 NULL 4 Using intersect(i1,i3); Using where; Using index
-select count(*) from t1 where
-key1a = 2 and key1b is null and key3a = 2 and key3b is null;
-count(*)
-4
-drop table t1,t2;
-create table t1 (
-id1 int,
-id2 date ,
-index idx2 (id1,id2),
-index idx1 (id2)
-);
-insert into t1 values(1,'20040101'), (2,'20040102');
-select * from t1 where id1 = 1 and id2= '20040101';
-id1 id2
-1 2004-01-01
-drop table t1;
-drop view if exists v1;
-CREATE TABLE t1 (
-`oid` int(11) unsigned NOT NULL auto_increment,
-`fk_bbk_niederlassung` int(11) unsigned NOT NULL,
-`fk_wochentag` int(11) unsigned NOT NULL,
-`uhrzeit_von` time NOT NULL COMMENT 'HH:MM',
-`uhrzeit_bis` time NOT NULL COMMENT 'HH:MM',
-`geloescht` tinyint(4) NOT NULL,
-`version` int(5) NOT NULL,
-PRIMARY KEY (`oid`),
-KEY `fk_bbk_niederlassung` (`fk_bbk_niederlassung`),
-KEY `fk_wochentag` (`fk_wochentag`),
-KEY `ix_version` (`version`)
-) DEFAULT CHARSET=latin1;
-insert into t1 values
-(1, 38, 1, '08:00:00', '13:00:00', 0, 1),
-(2, 38, 2, '08:00:00', '13:00:00', 0, 1),
-(3, 38, 3, '08:00:00', '13:00:00', 0, 1),
-(4, 38, 4, '08:00:00', '13:00:00', 0, 1),
-(5, 38, 5, '08:00:00', '13:00:00', 0, 1),
-(6, 38, 5, '08:00:00', '13:00:00', 1, 2),
-(7, 38, 3, '08:00:00', '13:00:00', 1, 2),
-(8, 38, 1, '08:00:00', '13:00:00', 1, 2),
-(9, 38, 2, '08:00:00', '13:00:00', 1, 2),
-(10, 38, 4, '08:00:00', '13:00:00', 1, 2),
-(11, 38, 1, '08:00:00', '13:00:00', 0, 3),
-(12, 38, 2, '08:00:00', '13:00:00', 0, 3),
-(13, 38, 3, '08:00:00', '13:00:00', 0, 3),
-(14, 38, 4, '08:00:00', '13:00:00', 0, 3),
-(15, 38, 5, '08:00:00', '13:00:00', 0, 3),
-(16, 38, 4, '08:00:00', '13:00:00', 0, 4),
-(17, 38, 5, '08:00:00', '13:00:00', 0, 4),
-(18, 38, 1, '08:00:00', '13:00:00', 0, 4),
-(19, 38, 2, '08:00:00', '13:00:00', 0, 4),
-(20, 38, 3, '08:00:00', '13:00:00', 0, 4),
-(21, 7, 1, '08:00:00', '13:00:00', 0, 1),
-(22, 7, 2, '08:00:00', '13:00:00', 0, 1),
-(23, 7, 3, '08:00:00', '13:00:00', 0, 1),
-(24, 7, 4, '08:00:00', '13:00:00', 0, 1),
-(25, 7, 5, '08:00:00', '13:00:00', 0, 1);
-create view v1 as
-select
-zeit1.oid AS oid,
-zeit1.fk_bbk_niederlassung AS fk_bbk_niederlassung,
-zeit1.fk_wochentag AS fk_wochentag,
-zeit1.uhrzeit_von AS uhrzeit_von,
-zeit1.uhrzeit_bis AS uhrzeit_bis,
-zeit1.geloescht AS geloescht,
-zeit1.version AS version
-from
-t1 zeit1
-where
-(zeit1.version =
-(select max(zeit2.version) AS `max(version)`
- from t1 zeit2
-where
-((zeit1.fk_bbk_niederlassung = zeit2.fk_bbk_niederlassung) and
-(zeit1.fk_wochentag = zeit2.fk_wochentag) and
-(zeit1.uhrzeit_von = zeit2.uhrzeit_von) and
-(zeit1.uhrzeit_bis = zeit2.uhrzeit_bis)
-)
-)
-)
-and (zeit1.geloescht = 0);
-select * from v1 where oid = 21;
-oid fk_bbk_niederlassung fk_wochentag uhrzeit_von uhrzeit_bis geloescht version
-21 7 1 08:00:00 13:00:00 0 1
-drop view v1;
-drop table t1;
-CREATE TABLE t1(
-t_cpac varchar(2) NOT NULL,
-t_vers varchar(4) NOT NULL,
-t_rele varchar(2) NOT NULL,
-t_cust varchar(4) NOT NULL,
-filler1 char(250) default NULL,
-filler2 char(250) default NULL,
-PRIMARY KEY (t_cpac,t_vers,t_rele,t_cust),
-UNIQUE KEY IX_4 (t_cust,t_cpac,t_vers,t_rele),
-KEY IX_5 (t_vers,t_rele,t_cust)
-);
-insert into t1 values
-('tm','2.5 ','a ',' ','',''), ('tm','2.5U','a ','stnd','',''),
-('da','3.3 ','b ',' ','',''), ('da','3.3U','b ','stnd','',''),
-('tl','7.6 ','a ',' ','',''), ('tt','7.6 ','a ',' ','',''),
-('bc','B61 ','a ',' ','',''), ('bp','B61 ','a ',' ','',''),
-('ca','B61 ','a ',' ','',''), ('ci','B61 ','a ',' ','',''),
-('cp','B61 ','a ',' ','',''), ('dm','B61 ','a ',' ','',''),
-('ec','B61 ','a ',' ','',''), ('ed','B61 ','a ',' ','',''),
-('fm','B61 ','a ',' ','',''), ('nt','B61 ','a ',' ','',''),
-('qm','B61 ','a ',' ','',''), ('tc','B61 ','a ',' ','',''),
-('td','B61 ','a ',' ','',''), ('tf','B61 ','a ',' ','',''),
-('tg','B61 ','a ',' ','',''), ('ti','B61 ','a ',' ','',''),
-('tp','B61 ','a ',' ','',''), ('ts','B61 ','a ',' ','',''),
-('wh','B61 ','a ',' ','',''), ('bc','B61U','a ','stnd','',''),
-('bp','B61U','a ','stnd','',''), ('ca','B61U','a ','stnd','',''),
-('ci','B61U','a ','stnd','',''), ('cp','B61U','a ','stnd','',''),
-('dm','B61U','a ','stnd','',''), ('ec','B61U','a ','stnd','',''),
-('fm','B61U','a ','stnd','',''), ('nt','B61U','a ','stnd','',''),
-('qm','B61U','a ','stnd','',''), ('tc','B61U','a ','stnd','',''),
-('td','B61U','a ','stnd','',''), ('tf','B61U','a ','stnd','',''),
-('tg','B61U','a ','stnd','',''), ('ti','B61U','a ','stnd','',''),
-('tp','B61U','a ','stnd','',''), ('ts','B61U','a ','stnd','',''),
-('wh','B61U','a ','stnd','','');
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `t_cpac` varchar(2) NOT NULL,
- `t_vers` varchar(4) NOT NULL,
- `t_rele` varchar(2) NOT NULL,
- `t_cust` varchar(4) NOT NULL,
- `filler1` char(250) DEFAULT NULL,
- `filler2` char(250) DEFAULT NULL,
- PRIMARY KEY (`t_cpac`,`t_vers`,`t_rele`,`t_cust`),
- UNIQUE KEY `IX_4` (`t_cust`,`t_cpac`,`t_vers`,`t_rele`),
- KEY `IX_5` (`t_vers`,`t_rele`,`t_cust`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-select t_vers,t_rele,t_cust,filler1 from t1 where t_vers = '7.6';
-t_vers t_rele t_cust filler1
-7.6 a
-7.6 a
-select t_vers,t_rele,t_cust,filler1 from t1 where t_vers = '7.6'
- and t_rele='a' and t_cust = ' ';
-t_vers t_rele t_cust filler1
-7.6 a
-7.6 a
-drop table t1;
-create table t1 (
-pk int(11) not null auto_increment,
-a int(11) not null default '0',
-b int(11) not null default '0',
-c int(11) not null default '0',
-filler1 datetime, filler2 varchar(15),
-filler3 longtext,
-kp1 varchar(4), kp2 varchar(7),
-kp3 varchar(2), kp4 varchar(4),
-kp5 varchar(7),
-filler4 char(1),
-primary key (pk),
-key idx1(a,b,c),
-key idx2(c),
-key idx3(kp1,kp2,kp3,kp4,kp5)
-) default charset=latin1;
-set @fill=NULL;
-SELECT COUNT(*) FROM t1 WHERE b = 0 AND a = 0 AND c = 13286427 AND
-kp1='279' AND kp2='ELM0678' AND kp3='6' AND kp4='10' AND kp5 = 'R ';
-COUNT(*)
-1
-drop table t1;
-create table t1
-(
-key1 int not null,
-key2 int not null default 0,
-key3 int not null default 0
-);
-insert into t1(key1) values (1),(2),(3),(4),(5),(6),(7),(8);
-set @d=8;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-alter table t1 add index i2(key2);
-alter table t1 add index i3(key3);
-update t1 set key2=key1,key3=key1;
-explain select * from t1 where (key3 > 30 and key3<35) or (key2 >32 and key2 < 40);
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index_merge i2,i3 i3,i2 4,4 NULL 9 Using sort_union(i3,i2); Using where
-select * from t1 where (key3 > 30 and key3<35) or (key2 >32 and key2 < 40);
-key1 key2 key3
-31 31 31
-32 32 32
-33 33 33
-34 34 34
-35 35 35
-36 36 36
-37 37 37
-38 38 38
-39 39 39
-drop table t1;
#---------------- 2-sweeps read Index merge test 2 -------------------------------
SET SESSION STORAGE_ENGINE = InnoDB;
drop table if exists t1;
diff --git a/mysql-test/r/index_merge_myisam.result b/mysql-test/r/index_merge_myisam.result
index c639b20de91..1be96da5c7d 100644
--- a/mysql-test/r/index_merge_myisam.result
+++ b/mysql-test/r/index_merge_myisam.result
@@ -341,9 +341,7 @@ drop table t4;
create table t4 (a int);
insert into t4 values (1),(4),(3);
set @save_join_buffer_size=@@join_buffer_size;
-set join_buffer_size= 4000;
-Warnings:
-Warning 1292 Truncated incorrect join_buffer_size value: '4000'
+set join_buffer_size= 4096;
explain select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5)
from t0 as A force index(i1,i2), t0 as B force index (i1,i2)
where (A.key1 < 500000 or A.key2 < 3)
@@ -1421,21 +1419,20 @@ drop table t1;
#
select @@optimizer_switch;
@@optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
set optimizer_switch='index_merge=off,index_merge_union=off';
select @@optimizer_switch;
@@optimizer_switch
-index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
set optimizer_switch='index_merge_union=on';
select @@optimizer_switch;
@@optimizer_switch
-index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
set optimizer_switch='default,index_merge_sort_union=off';
select @@optimizer_switch;
@@optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=off,index_merge_intersection=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=off,index_merge_intersection=on,engine_condition_pushdown=on
set optimizer_switch=4;
-ERROR 42000: Variable 'optimizer_switch' can't be set to the value of '4'
set optimizer_switch=NULL;
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'NULL'
set optimizer_switch='default,index_merge';
@@ -1460,21 +1457,21 @@ set optimizer_switch=default;
set optimizer_switch='index_merge=off,index_merge_union=off,default';
select @@optimizer_switch;
@@optimizer_switch
-index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
set optimizer_switch=default;
select @@global.optimizer_switch;
@@global.optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
set @@global.optimizer_switch=default;
select @@global.optimizer_switch;
@@global.optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
#
# Check index_merge's @@optimizer_switch flags
#
select @@optimizer_switch;
@@optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
create table t0 (a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 (a int, b int, c int, filler char(100),
@@ -1584,5 +1581,5 @@ id select_type table type possible_keys key key_len ref rows Extra
set optimizer_switch=default;
show variables like 'optimizer_switch';
Variable_name Value
-optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
drop table t0, t1;
diff --git a/mysql-test/r/information_schema-big.result b/mysql-test/r/information_schema-big.result
new file mode 100644
index 00000000000..248b8d606dc
--- /dev/null
+++ b/mysql-test/r/information_schema-big.result
@@ -0,0 +1,93 @@
+DROP TABLE IF EXISTS t0,t1,t2,t3,t4,t5;
+DROP VIEW IF EXISTS v1;
+#
+# Bug#18925: subqueries with MIN/MAX functions on INFORMARTION_SCHEMA
+#
+SELECT t.table_name, c1.column_name
+FROM information_schema.tables t
+INNER JOIN
+information_schema.columns c1
+ON t.table_schema = c1.table_schema AND
+t.table_name = c1.table_name
+WHERE t.table_schema = 'information_schema' AND
+c1.ordinal_position =
+( SELECT COALESCE(MIN(c2.ordinal_position),1)
+FROM information_schema.columns c2
+WHERE c2.table_schema = t.table_schema AND
+c2.table_name = t.table_name AND
+c2.column_name LIKE '%SCHEMA%'
+ )
+AND t.table_name NOT LIKE 'innodb%';
+table_name column_name
+CHARACTER_SETS CHARACTER_SET_NAME
+COLLATIONS COLLATION_NAME
+COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME
+COLUMNS TABLE_SCHEMA
+COLUMN_PRIVILEGES TABLE_SCHEMA
+ENGINES ENGINE
+EVENTS EVENT_SCHEMA
+FILES TABLE_SCHEMA
+GLOBAL_STATUS VARIABLE_NAME
+GLOBAL_VARIABLES VARIABLE_NAME
+KEY_COLUMN_USAGE CONSTRAINT_SCHEMA
+PARTITIONS TABLE_SCHEMA
+PLUGINS PLUGIN_NAME
+PROCESSLIST ID
+PROFILING QUERY_ID
+REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA
+ROUTINES ROUTINE_SCHEMA
+SCHEMATA SCHEMA_NAME
+SCHEMA_PRIVILEGES TABLE_SCHEMA
+SESSION_STATUS VARIABLE_NAME
+SESSION_VARIABLES VARIABLE_NAME
+STATISTICS TABLE_SCHEMA
+TABLES TABLE_SCHEMA
+TABLE_CONSTRAINTS CONSTRAINT_SCHEMA
+TABLE_PRIVILEGES TABLE_SCHEMA
+TRIGGERS TRIGGER_SCHEMA
+USER_PRIVILEGES GRANTEE
+VIEWS TABLE_SCHEMA
+SELECT t.table_name, c1.column_name
+FROM information_schema.tables t
+INNER JOIN
+information_schema.columns c1
+ON t.table_schema = c1.table_schema AND
+t.table_name = c1.table_name
+WHERE t.table_schema = 'information_schema' AND
+c1.ordinal_position =
+( SELECT COALESCE(MIN(c2.ordinal_position),1)
+FROM information_schema.columns c2
+WHERE c2.table_schema = 'information_schema' AND
+c2.table_name = t.table_name AND
+c2.column_name LIKE '%SCHEMA%'
+ )
+AND t.table_name NOT LIKE 'innodb%';
+table_name column_name
+CHARACTER_SETS CHARACTER_SET_NAME
+COLLATIONS COLLATION_NAME
+COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME
+COLUMNS TABLE_SCHEMA
+COLUMN_PRIVILEGES TABLE_SCHEMA
+ENGINES ENGINE
+EVENTS EVENT_SCHEMA
+FILES TABLE_SCHEMA
+GLOBAL_STATUS VARIABLE_NAME
+GLOBAL_VARIABLES VARIABLE_NAME
+KEY_COLUMN_USAGE CONSTRAINT_SCHEMA
+PARTITIONS TABLE_SCHEMA
+PLUGINS PLUGIN_NAME
+PROCESSLIST ID
+PROFILING QUERY_ID
+REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA
+ROUTINES ROUTINE_SCHEMA
+SCHEMATA SCHEMA_NAME
+SCHEMA_PRIVILEGES TABLE_SCHEMA
+SESSION_STATUS VARIABLE_NAME
+SESSION_VARIABLES VARIABLE_NAME
+STATISTICS TABLE_SCHEMA
+TABLES TABLE_SCHEMA
+TABLE_CONSTRAINTS CONSTRAINT_SCHEMA
+TABLE_PRIVILEGES TABLE_SCHEMA
+TRIGGERS TRIGGER_SCHEMA
+USER_PRIVILEGES GRANTEE
+VIEWS TABLE_SCHEMA
diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result
index 9a75e478264..736f42df996 100644
--- a/mysql-test/r/information_schema.result
+++ b/mysql-test/r/information_schema.result
@@ -9,14 +9,16 @@ create user mysqltest_3@localhost;
create user mysqltest_3;
select * from information_schema.SCHEMATA where schema_name > 'm';
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
-NULL mtr latin1 latin1_swedish_ci NULL
-NULL mysql latin1 latin1_swedish_ci NULL
-NULL test latin1 latin1_swedish_ci NULL
+def mtr latin1 latin1_swedish_ci NULL
+def mysql latin1 latin1_swedish_ci NULL
+def performance_schema utf8 utf8_general_ci NULL
+def test latin1 latin1_swedish_ci NULL
select schema_name from information_schema.schemata;
schema_name
information_schema
mtr
mysql
+performance_schema
test
show databases like 't%';
Database (t%)
@@ -26,6 +28,7 @@ Database
information_schema
mtr
mysql
+performance_schema
test
show databases where `database` = 't%';
Database
@@ -39,8 +42,7 @@ insert into t5 values (10);
create view v1 (c) as
SELECT table_name 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';
+table_name not like 'ndb_%' AND table_name not like 'innodb_%';
select * from v1;
c
CHARACTER_SETS
@@ -54,6 +56,7 @@ FILES
GLOBAL_STATUS
GLOBAL_VARIABLES
KEY_COLUMN_USAGE
+PARAMETERS
PARTITIONS
PLUGINS
PROCESSLIST
@@ -66,6 +69,7 @@ SESSION_STATUS
SESSION_VARIABLES
STATISTICS
TABLES
+TABLESPACES
TABLE_CONSTRAINTS
TABLE_PRIVILEGES
TRIGGERS
@@ -104,6 +108,7 @@ inner join information_schema.TABLES v2 on (v1.c=v2.table_name)
where v1.c like "t%";
c table_name
TABLES TABLES
+TABLESPACES TABLESPACES
TABLE_CONSTRAINTS TABLE_CONSTRAINTS
TABLE_PRIVILEGES TABLE_PRIVILEGES
TRIGGERS TRIGGERS
@@ -123,6 +128,7 @@ left join information_schema.TABLES v2 on (v1.c=v2.table_name)
where v1.c like "t%";
c table_name
TABLES TABLES
+TABLESPACES TABLESPACES
TABLE_CONSTRAINTS TABLE_CONSTRAINTS
TABLE_PRIVILEGES TABLE_PRIVILEGES
TRIGGERS TRIGGERS
@@ -142,6 +148,7 @@ right join information_schema.TABLES v2 on (v1.c=v2.table_name)
where v1.c like "t%";
c table_name
TABLES TABLES
+TABLESPACES TABLESPACES
TABLE_CONSTRAINTS TABLE_CONSTRAINTS
TABLE_PRIVILEGES TABLE_PRIVILEGES
TRIGGERS TRIGGERS
@@ -163,7 +170,7 @@ t1
t4
select * from information_schema.STATISTICS where TABLE_SCHEMA = "mysqltest";
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT
-NULL mysqltest t1 1 mysqltest string_data 1 b A NULL NULL NULL YES BTREE
+def mysqltest t1 1 mysqltest string_data 1 b A NULL NULL NULL YES BTREE
show keys from t3 where Key_name = "a_data";
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t3 1 a_data 1 a A NULL NULL NULL YES BTREE
@@ -190,7 +197,7 @@ c varchar(64) utf8_general_ci NO select,insert,update,references
select * from information_schema.COLUMNS where table_name="t1"
and column_name= "a";
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
-NULL mysqltest t1 a 1 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def mysqltest t1 a 1 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
show columns from mysqltest.t1 where field like "%a%";
Field Type Null Key Default Extra
a int(11) YES NULL
@@ -360,6 +367,7 @@ c
information_schema
mtr
mysql
+performance_schema
test
explain select * from v0;
id select_type table type possible_keys key key_len ref rows Extra
@@ -395,11 +403,11 @@ show keys from v4;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
select * from information_schema.views where TABLE_NAME like "v%";
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL test v0 select `schemata`.`SCHEMA_NAME` AS `c` from `information_schema`.`schemata` NONE NO root@localhost DEFINER latin1 latin1_swedish_ci
-NULL test v1 select `tables`.`TABLE_NAME` AS `c` from `information_schema`.`tables` where (`tables`.`TABLE_NAME` = 'v1') NONE NO root@localhost DEFINER latin1 latin1_swedish_ci
-NULL test v2 select `columns`.`COLUMN_NAME` AS `c` from `information_schema`.`columns` where (`columns`.`TABLE_NAME` = 'v2') NONE NO root@localhost DEFINER latin1 latin1_swedish_ci
-NULL test v3 select `character_sets`.`CHARACTER_SET_NAME` AS `c` from `information_schema`.`character_sets` where (`character_sets`.`CHARACTER_SET_NAME` like 'latin1%') NONE NO root@localhost DEFINER latin1 latin1_swedish_ci
-NULL test v4 select `collations`.`COLLATION_NAME` AS `c` from `information_schema`.`collations` where (`collations`.`COLLATION_NAME` like 'latin1%') NONE NO root@localhost DEFINER latin1 latin1_swedish_ci
+def test v0 select `information_schema`.`schemata`.`SCHEMA_NAME` AS `c` from `information_schema`.`schemata` NONE NO root@localhost DEFINER latin1 latin1_swedish_ci
+def test v1 select `information_schema`.`tables`.`TABLE_NAME` AS `c` from `information_schema`.`tables` where (`information_schema`.`tables`.`TABLE_NAME` = 'v1') NONE NO root@localhost DEFINER latin1 latin1_swedish_ci
+def test v2 select `information_schema`.`columns`.`COLUMN_NAME` AS `c` from `information_schema`.`columns` where (`information_schema`.`columns`.`TABLE_NAME` = 'v2') NONE NO root@localhost DEFINER latin1 latin1_swedish_ci
+def test v3 select `information_schema`.`character_sets`.`CHARACTER_SET_NAME` AS `c` from `information_schema`.`character_sets` where (`information_schema`.`character_sets`.`CHARACTER_SET_NAME` like 'latin1%') NONE NO root@localhost DEFINER latin1 latin1_swedish_ci
+def test v4 select `information_schema`.`collations`.`COLLATION_NAME` AS `c` from `information_schema`.`collations` where (`information_schema`.`collations`.`COLLATION_NAME` like 'latin1%') NONE NO root@localhost DEFINER latin1 latin1_swedish_ci
drop view v0, v1, v2, v3, v4;
create table t1 (a int);
grant select,update,insert on t1 to mysqltest_1@localhost;
@@ -407,38 +415,38 @@ grant select (a), update (a),insert(a), references(a) on t1 to mysqltest_1@local
grant all on test.* to mysqltest_1@localhost with grant option;
select * from information_schema.USER_PRIVILEGES where grantee like '%mysqltest_1%';
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'mysqltest_1'@'localhost' NULL USAGE NO
+'mysqltest_1'@'localhost' def USAGE NO
select * from information_schema.SCHEMA_PRIVILEGES where grantee like '%mysqltest_1%';
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'mysqltest_1'@'localhost' NULL test SELECT YES
-'mysqltest_1'@'localhost' NULL test INSERT YES
-'mysqltest_1'@'localhost' NULL test UPDATE YES
-'mysqltest_1'@'localhost' NULL test DELETE YES
-'mysqltest_1'@'localhost' NULL test CREATE YES
-'mysqltest_1'@'localhost' NULL test DROP YES
-'mysqltest_1'@'localhost' NULL test REFERENCES YES
-'mysqltest_1'@'localhost' NULL test INDEX YES
-'mysqltest_1'@'localhost' NULL test ALTER YES
-'mysqltest_1'@'localhost' NULL test CREATE TEMPORARY TABLES YES
-'mysqltest_1'@'localhost' NULL test LOCK TABLES YES
-'mysqltest_1'@'localhost' NULL test EXECUTE YES
-'mysqltest_1'@'localhost' NULL test CREATE VIEW YES
-'mysqltest_1'@'localhost' NULL test SHOW VIEW YES
-'mysqltest_1'@'localhost' NULL test CREATE ROUTINE YES
-'mysqltest_1'@'localhost' NULL test ALTER ROUTINE YES
-'mysqltest_1'@'localhost' NULL test EVENT YES
-'mysqltest_1'@'localhost' NULL test TRIGGER YES
+'mysqltest_1'@'localhost' def test SELECT YES
+'mysqltest_1'@'localhost' def test INSERT YES
+'mysqltest_1'@'localhost' def test UPDATE YES
+'mysqltest_1'@'localhost' def test DELETE YES
+'mysqltest_1'@'localhost' def test CREATE YES
+'mysqltest_1'@'localhost' def test DROP YES
+'mysqltest_1'@'localhost' def test REFERENCES YES
+'mysqltest_1'@'localhost' def test INDEX YES
+'mysqltest_1'@'localhost' def test ALTER YES
+'mysqltest_1'@'localhost' def test CREATE TEMPORARY TABLES YES
+'mysqltest_1'@'localhost' def test LOCK TABLES YES
+'mysqltest_1'@'localhost' def test EXECUTE YES
+'mysqltest_1'@'localhost' def test CREATE VIEW YES
+'mysqltest_1'@'localhost' def test SHOW VIEW YES
+'mysqltest_1'@'localhost' def test CREATE ROUTINE YES
+'mysqltest_1'@'localhost' def test ALTER ROUTINE YES
+'mysqltest_1'@'localhost' def test EVENT YES
+'mysqltest_1'@'localhost' def test TRIGGER YES
select * from information_schema.TABLE_PRIVILEGES where grantee like '%mysqltest_1%';
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'mysqltest_1'@'localhost' NULL test t1 SELECT NO
-'mysqltest_1'@'localhost' NULL test t1 INSERT NO
-'mysqltest_1'@'localhost' NULL test t1 UPDATE NO
+'mysqltest_1'@'localhost' def test t1 SELECT NO
+'mysqltest_1'@'localhost' def test t1 INSERT NO
+'mysqltest_1'@'localhost' def test t1 UPDATE NO
select * from information_schema.COLUMN_PRIVILEGES where grantee like '%mysqltest_1%';
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'mysqltest_1'@'localhost' NULL test t1 a SELECT NO
-'mysqltest_1'@'localhost' NULL test t1 a INSERT NO
-'mysqltest_1'@'localhost' NULL test t1 a UPDATE NO
-'mysqltest_1'@'localhost' NULL test t1 a REFERENCES NO
+'mysqltest_1'@'localhost' def test t1 a SELECT NO
+'mysqltest_1'@'localhost' def test t1 a INSERT NO
+'mysqltest_1'@'localhost' def test t1 a UPDATE NO
+'mysqltest_1'@'localhost' def test t1 a REFERENCES NO
delete from mysql.user where user like 'mysqltest%';
delete from mysql.db where user like 'mysqltest%';
delete from mysql.tables_priv where user like 'mysqltest%';
@@ -461,17 +469,17 @@ t1 CREATE TABLE `t1` (
select * from information_schema.TABLE_CONSTRAINTS where
TABLE_SCHEMA= "test";
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE
-NULL test PRIMARY test t1 PRIMARY KEY
-NULL test constraint_1 test t1 UNIQUE
-NULL test key_1 test t1 UNIQUE
-NULL test key_2 test t1 UNIQUE
+def test PRIMARY test t1 PRIMARY KEY
+def test constraint_1 test t1 UNIQUE
+def test key_1 test t1 UNIQUE
+def test key_2 test t1 UNIQUE
select * from information_schema.KEY_COLUMN_USAGE where
TABLE_SCHEMA= "test";
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
-NULL test PRIMARY NULL test t1 a 1 NULL NULL NULL NULL
-NULL test constraint_1 NULL test t1 a 1 NULL NULL NULL NULL
-NULL test key_1 NULL test t1 a 1 NULL NULL NULL NULL
-NULL test key_2 NULL test t1 a 1 NULL NULL NULL NULL
+def test PRIMARY def test t1 a 1 NULL NULL NULL NULL
+def test constraint_1 def test t1 a 1 NULL NULL NULL NULL
+def test key_1 def test t1 a 1 NULL NULL NULL NULL
+def test key_2 def test t1 a 1 NULL NULL NULL NULL
select table_name from information_schema.TABLES where table_schema like "test%";
table_name
t1
@@ -492,13 +500,13 @@ create view v2 (c) as select a from t1 WITH LOCAL CHECK OPTION;
create view v3 (c) as select a from t1 WITH CASCADED CHECK OPTION;
select * from information_schema.views;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL test v1 select `test`.`t1`.`a` AS `c` from `test`.`t1` CASCADED YES root@localhost DEFINER latin1 latin1_swedish_ci
-NULL test v2 select `test`.`t1`.`a` AS `c` from `test`.`t1` LOCAL YES root@localhost DEFINER latin1 latin1_swedish_ci
-NULL test v3 select `test`.`t1`.`a` AS `c` from `test`.`t1` CASCADED YES root@localhost DEFINER latin1 latin1_swedish_ci
+def test v1 select `test`.`t1`.`a` AS `c` from `test`.`t1` CASCADED YES root@localhost DEFINER latin1 latin1_swedish_ci
+def test v2 select `test`.`t1`.`a` AS `c` from `test`.`t1` LOCAL YES root@localhost DEFINER latin1 latin1_swedish_ci
+def test v3 select `test`.`t1`.`a` AS `c` from `test`.`t1` CASCADED YES root@localhost DEFINER latin1 latin1_swedish_ci
grant select (a) on test.t1 to joe@localhost with grant option;
select * from INFORMATION_SCHEMA.COLUMN_PRIVILEGES;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'joe'@'localhost' NULL test t1 a SELECT YES
+'joe'@'localhost' def test t1 a SELECT YES
select * from INFORMATION_SCHEMA.TABLE_PRIVILEGES;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
drop view v1, v2, v3;
@@ -593,7 +601,7 @@ proc definer char(77)
proc created timestamp
proc modified timestamp
proc sql_mode set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH')
-proc comment char(64)
+proc comment text
proc character_set_client char(32)
proc collation_connection char(32)
proc db_collation char(32)
@@ -629,6 +637,7 @@ COLLATIONS SYSTEM VIEW MEMORY
show tables from information_schema like "T%";
Tables_in_information_schema (T%)
TABLES
+TABLESPACES
TABLE_CONSTRAINTS
TABLE_PRIVILEGES
TRIGGERS
@@ -638,11 +647,12 @@ use information_schema;
show full tables like "T%";
Tables_in_information_schema (T%) Table_type
TABLES SYSTEM VIEW
+TABLESPACES SYSTEM VIEW
TABLE_CONSTRAINTS SYSTEM VIEW
TABLE_PRIVILEGES SYSTEM VIEW
TRIGGERS SYSTEM VIEW
create table t1(a int);
-ERROR 42S02: Unknown table 't1' in information_schema
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
use test;
show tables;
Tables_in_test
@@ -650,6 +660,7 @@ use information_schema;
show tables like "T%";
Tables_in_information_schema (T%)
TABLES
+TABLESPACES
TABLE_CONSTRAINTS
TABLE_PRIVILEGES
TRIGGERS
@@ -766,17 +777,20 @@ table_schema table_name column_name
information_schema COLUMNS COLUMN_DEFAULT
information_schema COLUMNS COLUMN_TYPE
information_schema EVENTS EVENT_DEFINITION
+information_schema PARAMETERS DTD_IDENTIFIER
information_schema PARTITIONS PARTITION_EXPRESSION
information_schema PARTITIONS SUBPARTITION_EXPRESSION
information_schema PARTITIONS PARTITION_DESCRIPTION
information_schema PLUGINS PLUGIN_DESCRIPTION
information_schema PROCESSLIST INFO
+information_schema ROUTINES DTD_IDENTIFIER
information_schema ROUTINES ROUTINE_DEFINITION
+information_schema ROUTINES ROUTINE_COMMENT
information_schema TRIGGERS ACTION_CONDITION
information_schema TRIGGERS ACTION_STATEMENT
information_schema VIEWS VIEW_DEFINITION
select table_name, column_name, data_type from information_schema.columns
-where data_type = 'datetime';
+where data_type = 'datetime' and table_name not like 'innodb_%';
table_name column_name data_type
EVENTS EXECUTE_AT datetime
EVENTS STARTS datetime
@@ -850,9 +864,12 @@ VIEWS TABLE_NAME select
delete from mysql.user where user='mysqltest_4';
delete from mysql.db where user='mysqltest_4';
flush privileges;
-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;
+SELECT table_schema, count(*) FROM information_schema.TABLES WHERE
+table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test', 'mysqltest')
+AND table_name not like 'ndb%' AND table_name not like 'innodb_%'
+GROUP BY TABLE_SCHEMA;
table_schema count(*)
-information_schema 28
+information_schema 30
mysql 22
create table t1 (i int, j int);
create trigger trg1 before insert on t1 for each row
@@ -892,17 +909,17 @@ end if;
end AFTER NULL root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
select * from information_schema.triggers where trigger_schema in ('mysql', 'information_schema', 'test', 'mysqltest');
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL test trg1 INSERT NULL test t1 0 NULL begin
+def test trg1 INSERT def test t1 0 NULL begin
if new.j > 10 then
set new.j := 10;
end if;
end ROW BEFORE NULL NULL OLD NEW NULL root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
-NULL test trg2 UPDATE NULL test t1 0 NULL begin
+def test trg2 UPDATE def test t1 0 NULL begin
if old.i % 2 = 0 then
set new.j := -1;
end if;
end ROW BEFORE NULL NULL OLD NEW NULL root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
-NULL test trg3 UPDATE NULL test t1 0 NULL begin
+def test trg3 UPDATE def test t1 0 NULL begin
if new.j = -1 then
set @fired:= "Yes";
end if;
@@ -920,14 +937,14 @@ grant select on mysqltest.* to user3@localhost;
grant select on *.* to user4@localhost;
select * from information_schema.column_privileges order by grantee;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'user1'@'localhost' NULL mysqltest t1 f1 SELECT NO
+'user1'@'localhost' def mysqltest t1 f1 SELECT NO
select * from information_schema.table_privileges order by grantee;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
select * from information_schema.schema_privileges order by grantee;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
select * from information_schema.user_privileges order by grantee;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'user1'@'localhost' NULL USAGE NO
+'user1'@'localhost' def USAGE NO
show grants;
Grants for user1@localhost
GRANT USAGE ON *.* TO 'user1'@'localhost'
@@ -936,12 +953,12 @@ select * from information_schema.column_privileges order by grantee;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
select * from information_schema.table_privileges order by grantee;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'user2'@'localhost' NULL mysqltest t2 SELECT NO
+'user2'@'localhost' def mysqltest t2 SELECT NO
select * from information_schema.schema_privileges order by grantee;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
select * from information_schema.user_privileges order by grantee;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'user2'@'localhost' NULL USAGE NO
+'user2'@'localhost' def USAGE NO
show grants;
Grants for user2@localhost
GRANT USAGE ON *.* TO 'user2'@'localhost'
@@ -952,10 +969,10 @@ select * from information_schema.table_privileges order by grantee;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
select * from information_schema.schema_privileges order by grantee;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'user3'@'localhost' NULL mysqltest SELECT NO
+'user3'@'localhost' def mysqltest SELECT NO
select * from information_schema.user_privileges order by grantee;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'user3'@'localhost' NULL USAGE NO
+'user3'@'localhost' def USAGE NO
show grants;
Grants for user3@localhost
GRANT USAGE ON *.* TO 'user3'@'localhost'
@@ -963,22 +980,22 @@ GRANT SELECT ON `mysqltest`.* TO 'user3'@'localhost'
select * from information_schema.column_privileges where grantee like '%user%'
order by grantee;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'user1'@'localhost' NULL mysqltest t1 f1 SELECT NO
+'user1'@'localhost' def mysqltest t1 f1 SELECT NO
select * from information_schema.table_privileges where grantee like '%user%'
order by grantee;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'user2'@'localhost' NULL mysqltest t2 SELECT NO
+'user2'@'localhost' def mysqltest t2 SELECT NO
select * from information_schema.schema_privileges where grantee like '%user%'
order by grantee;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'user3'@'localhost' NULL mysqltest SELECT NO
+'user3'@'localhost' def mysqltest SELECT NO
select * from information_schema.user_privileges where grantee like '%user%'
order by grantee;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'user1'@'localhost' NULL USAGE NO
-'user2'@'localhost' NULL USAGE NO
-'user3'@'localhost' NULL USAGE NO
-'user4'@'localhost' NULL SELECT NO
+'user1'@'localhost' def USAGE NO
+'user2'@'localhost' def USAGE NO
+'user3'@'localhost' def USAGE NO
+'user4'@'localhost' def SELECT NO
show grants;
Grants for user4@localhost
GRANT SELECT ON *.* TO 'user4'@'localhost'
@@ -1174,8 +1191,8 @@ sql security definer view v2 as select 1;
select * from information_schema.views
where table_name='v1' or table_name='v2';
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL test v1 NONE YES root@localhost DEFINER latin1 latin1_swedish_ci
-NULL test v2 select 1 AS `1` NONE NO mysqltest_1@localhost DEFINER latin1 latin1_swedish_ci
+def test v1 NONE YES root@localhost DEFINER latin1 latin1_swedish_ci
+def test v2 select 1 AS `1` NONE NO mysqltest_1@localhost DEFINER latin1 latin1_swedish_ci
drop view v1, v2;
drop table t1;
drop user mysqltest_1@localhost;
@@ -1224,92 +1241,6 @@ f1()
DROP FUNCTION f1;
DROP PROCEDURE p1;
DROP USER mysql_bug20230@localhost;
-SELECT t.table_name, c1.column_name
-FROM information_schema.tables t
-INNER JOIN
-information_schema.columns c1
-ON t.table_schema = c1.table_schema AND
-t.table_name = c1.table_name
-WHERE t.table_schema = 'information_schema' AND
-c1.ordinal_position =
-( SELECT COALESCE(MIN(c2.ordinal_position),1)
-FROM information_schema.columns c2
-WHERE c2.table_schema = t.table_schema AND
-c2.table_name = t.table_name AND
-c2.column_name LIKE '%SCHEMA%'
- );
-table_name column_name
-CHARACTER_SETS CHARACTER_SET_NAME
-COLLATIONS COLLATION_NAME
-COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME
-COLUMNS TABLE_SCHEMA
-COLUMN_PRIVILEGES TABLE_SCHEMA
-ENGINES ENGINE
-EVENTS EVENT_SCHEMA
-FILES TABLE_SCHEMA
-GLOBAL_STATUS VARIABLE_NAME
-GLOBAL_VARIABLES VARIABLE_NAME
-KEY_COLUMN_USAGE CONSTRAINT_SCHEMA
-PARTITIONS TABLE_SCHEMA
-PLUGINS PLUGIN_NAME
-PROCESSLIST ID
-PROFILING QUERY_ID
-REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA
-ROUTINES ROUTINE_SCHEMA
-SCHEMATA SCHEMA_NAME
-SCHEMA_PRIVILEGES TABLE_SCHEMA
-SESSION_STATUS VARIABLE_NAME
-SESSION_VARIABLES VARIABLE_NAME
-STATISTICS TABLE_SCHEMA
-TABLES TABLE_SCHEMA
-TABLE_CONSTRAINTS CONSTRAINT_SCHEMA
-TABLE_PRIVILEGES TABLE_SCHEMA
-TRIGGERS TRIGGER_SCHEMA
-USER_PRIVILEGES GRANTEE
-VIEWS TABLE_SCHEMA
-SELECT t.table_name, c1.column_name
-FROM information_schema.tables t
-INNER JOIN
-information_schema.columns c1
-ON t.table_schema = c1.table_schema AND
-t.table_name = c1.table_name
-WHERE t.table_schema = 'information_schema' AND
-c1.ordinal_position =
-( SELECT COALESCE(MIN(c2.ordinal_position),1)
-FROM information_schema.columns c2
-WHERE c2.table_schema = 'information_schema' AND
-c2.table_name = t.table_name AND
-c2.column_name LIKE '%SCHEMA%'
- );
-table_name column_name
-CHARACTER_SETS CHARACTER_SET_NAME
-COLLATIONS COLLATION_NAME
-COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME
-COLUMNS TABLE_SCHEMA
-COLUMN_PRIVILEGES TABLE_SCHEMA
-ENGINES ENGINE
-EVENTS EVENT_SCHEMA
-FILES TABLE_SCHEMA
-GLOBAL_STATUS VARIABLE_NAME
-GLOBAL_VARIABLES VARIABLE_NAME
-KEY_COLUMN_USAGE CONSTRAINT_SCHEMA
-PARTITIONS TABLE_SCHEMA
-PLUGINS PLUGIN_NAME
-PROCESSLIST ID
-PROFILING QUERY_ID
-REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA
-ROUTINES ROUTINE_SCHEMA
-SCHEMATA SCHEMA_NAME
-SCHEMA_PRIVILEGES TABLE_SCHEMA
-SESSION_STATUS VARIABLE_NAME
-SESSION_VARIABLES VARIABLE_NAME
-STATISTICS TABLE_SCHEMA
-TABLES TABLE_SCHEMA
-TABLE_CONSTRAINTS CONSTRAINT_SCHEMA
-TABLE_PRIVILEGES TABLE_SCHEMA
-TRIGGERS TRIGGER_SCHEMA
-USER_PRIVILEGES GRANTEE
-VIEWS TABLE_SCHEMA
SELECT MAX(table_name) FROM information_schema.tables WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test');
MAX(table_name)
VIEWS
@@ -1374,6 +1305,7 @@ from information_schema.columns c2 where
c2.table_schema='information_schema' and
(c2.column_type = 'varchar(7)' or c2.column_type = 'varchar(20)')
group by c2.column_type order by num limit 1)
+and t.table_name not like 'innodb_%'
group by t.table_name order by num1, t.table_name;
table_name group_concat(t.table_schema, '.', t.table_name) num1
CHARACTER_SETS information_schema.CHARACTER_SETS 1
@@ -1387,6 +1319,7 @@ FILES information_schema.FILES 1
GLOBAL_STATUS information_schema.GLOBAL_STATUS 1
GLOBAL_VARIABLES information_schema.GLOBAL_VARIABLES 1
KEY_COLUMN_USAGE information_schema.KEY_COLUMN_USAGE 1
+PARAMETERS information_schema.PARAMETERS 1
PARTITIONS information_schema.PARTITIONS 1
PLUGINS information_schema.PLUGINS 1
PROCESSLIST information_schema.PROCESSLIST 1
@@ -1399,6 +1332,7 @@ SESSION_STATUS information_schema.SESSION_STATUS 1
SESSION_VARIABLES information_schema.SESSION_VARIABLES 1
STATISTICS information_schema.STATISTICS 1
TABLES information_schema.TABLES 1
+TABLESPACES information_schema.TABLESPACES 1
TABLE_CONSTRAINTS information_schema.TABLE_CONSTRAINTS 1
TABLE_PRIVILEGES information_schema.TABLE_PRIVILEGES 1
TRIGGERS information_schema.TRIGGERS 1
@@ -1552,7 +1486,7 @@ CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_P
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME = 'test';
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
-NULL test latin1 latin1_swedish_ci NULL
+def test latin1 latin1_swedish_ci NULL
select count(*) from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='mysql' AND TABLE_NAME='nonexisting';
count(*)
0
@@ -1570,7 +1504,7 @@ AS SELECT *
FROM information_schema.tables;
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS where TABLE_NAME = 'v1';
VIEW_DEFINITION
-select `tables`.`TABLE_CATALOG` AS `TABLE_CATALOG`,`tables`.`TABLE_SCHEMA` AS `TABLE_SCHEMA`,`tables`.`TABLE_NAME` AS `TABLE_NAME`,`tables`.`TABLE_TYPE` AS `TABLE_TYPE`,`tables`.`ENGINE` AS `ENGINE`,`tables`.`VERSION` AS `VERSION`,`tables`.`ROW_FORMAT` AS `ROW_FORMAT`,`tables`.`TABLE_ROWS` AS `TABLE_ROWS`,`tables`.`AVG_ROW_LENGTH` AS `AVG_ROW_LENGTH`,`tables`.`DATA_LENGTH` AS `DATA_LENGTH`,`tables`.`MAX_DATA_LENGTH` AS `MAX_DATA_LENGTH`,`tables`.`INDEX_LENGTH` AS `INDEX_LENGTH`,`tables`.`DATA_FREE` AS `DATA_FREE`,`tables`.`AUTO_INCREMENT` AS `AUTO_INCREMENT`,`tables`.`CREATE_TIME` AS `CREATE_TIME`,`tables`.`UPDATE_TIME` AS `UPDATE_TIME`,`tables`.`CHECK_TIME` AS `CHECK_TIME`,`tables`.`TABLE_COLLATION` AS `TABLE_COLLATION`,`tables`.`CHECKSUM` AS `CHECKSUM`,`tables`.`CREATE_OPTIONS` AS `CREATE_OPTIONS`,`tables`.`TABLE_COMMENT` AS `TABLE_COMMENT` from `information_schema`.`tables`
+select `information_schema`.`tables`.`TABLE_CATALOG` AS `TABLE_CATALOG`,`information_schema`.`tables`.`TABLE_SCHEMA` AS `TABLE_SCHEMA`,`information_schema`.`tables`.`TABLE_NAME` AS `TABLE_NAME`,`information_schema`.`tables`.`TABLE_TYPE` AS `TABLE_TYPE`,`information_schema`.`tables`.`ENGINE` AS `ENGINE`,`information_schema`.`tables`.`VERSION` AS `VERSION`,`information_schema`.`tables`.`ROW_FORMAT` AS `ROW_FORMAT`,`information_schema`.`tables`.`TABLE_ROWS` AS `TABLE_ROWS`,`information_schema`.`tables`.`AVG_ROW_LENGTH` AS `AVG_ROW_LENGTH`,`information_schema`.`tables`.`DATA_LENGTH` AS `DATA_LENGTH`,`information_schema`.`tables`.`MAX_DATA_LENGTH` AS `MAX_DATA_LENGTH`,`information_schema`.`tables`.`INDEX_LENGTH` AS `INDEX_LENGTH`,`information_schema`.`tables`.`DATA_FREE` AS `DATA_FREE`,`information_schema`.`tables`.`AUTO_INCREMENT` AS `AUTO_INCREMENT`,`information_schema`.`tables`.`CREATE_TIME` AS `CREATE_TIME`,`information_schema`.`tables`.`UPDATE_TIME` AS `UPDATE_TIME`,`information_schema`.`tables`.`CHECK_TIME` AS `CHECK_TIME`,`information_schema`.`tables`.`TABLE_COLLATION` AS `TABLE_COLLATION`,`information_schema`.`tables`.`CHECKSUM` AS `CHECKSUM`,`information_schema`.`tables`.`CREATE_OPTIONS` AS `CREATE_OPTIONS`,`information_schema`.`tables`.`TABLE_COMMENT` AS `TABLE_COMMENT` from `information_schema`.`tables`
DROP VIEW v1;
SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME ='information_schema';
@@ -1726,3 +1660,66 @@ TEST_RESULT
OK
SET TIMESTAMP=DEFAULT;
End of 5.1 tests.
+create table information_schema.t1 (f1 INT);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+drop table information_schema.t1;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+drop temporary table if exists information_schema.t1;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+create temporary table information_schema.t1 (f1 INT);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+drop view information_schema.v1;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+create view information_schema.v1;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+create trigger mysql.trg1 after insert on information_schema.t1 for each row set @a=1;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+create table t1 select * from information_schema.t1;
+ERROR 42S02: Unknown table 't1' in information_schema
+CREATE TABLE t1(f1 char(100));
+REPAIR TABLE t1, information_schema.tables;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+CHECKSUM TABLE t1, information_schema.tables;
+Table Checksum
+test.t1 0
+information_schema.tables 0
+ANALYZE TABLE t1, information_schema.tables;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+CHECK TABLE t1, information_schema.tables;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+information_schema.tables check note The storage engine for the table doesn't support check
+OPTIMIZE TABLE t1, information_schema.tables;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+RENAME TABLE v1 to v2, information_schema.tables to t2;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+DROP TABLE t1, information_schema.tables;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+LOCK TABLES t1 READ, information_schema.tables READ;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+DROP TABLE t1;
+EXPLAIN SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE KEY_COLUMN_USAGE ALL NULL NULL NULL NULL NULL Open_full_table; Scanned all databases
+EXPLAIN SELECT * FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME='t1';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE PARTITIONS ALL NULL TABLE_NAME NULL NULL NULL Using where; Open_full_table; Scanned 1 database
+EXPLAIN SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
+WHERE CONSTRAINT_SCHEMA='test';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE REFERENTIAL_CONSTRAINTS ALL NULL CONSTRAINT_SCHEMA NULL NULL NULL Using where; Open_full_table; Scanned 1 database
+EXPLAIN SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
+WHERE TABLE_NAME='t1' and TABLE_SCHEMA='test';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE TABLE_CONSTRAINTS ALL NULL TABLE_SCHEMA,TABLE_NAME NULL NULL NULL Using where; Open_full_table; Scanned 0 databases
+EXPLAIN SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
+WHERE EVENT_OBJECT_SCHEMA='test';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE TRIGGERS ALL NULL EVENT_OBJECT_SCHEMA NULL NULL NULL Using where; Open_frm_only; Scanned 1 database
+SELECT *
+FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
+LEFT JOIN INFORMATION_SCHEMA.COLUMNS
+USING (TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME)
+WHERE COLUMNS.TABLE_SCHEMA = 'test'
+AND COLUMNS.TABLE_NAME = 't1';
+TABLE_SCHEMA TABLE_NAME COLUMN_NAME CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_CATALOG ORDINAL_POSITION POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME TABLE_CATALOG ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
diff --git a/mysql-test/r/information_schema_db.result b/mysql-test/r/information_schema_db.result
index 2e3fa7f4acd..9b6a6e4b066 100644
--- a/mysql-test/r/information_schema_db.result
+++ b/mysql-test/r/information_schema_db.result
@@ -3,7 +3,7 @@ drop view if exists v1,v2;
drop function if exists f1;
drop function if exists f2;
use INFORMATION_SCHEMA;
-show tables;
+show tables where Tables_in_information_schema NOT LIKE 'Innodb%';
Tables_in_information_schema
CHARACTER_SETS
COLLATIONS
@@ -16,6 +16,7 @@ FILES
GLOBAL_STATUS
GLOBAL_VARIABLES
KEY_COLUMN_USAGE
+PARAMETERS
PARTITIONS
PLUGINS
PROCESSLIST
@@ -28,6 +29,7 @@ SESSION_STATUS
SESSION_VARIABLES
STATISTICS
TABLES
+TABLESPACES
TABLE_CONSTRAINTS
TABLE_PRIVILEGES
TRIGGERS
@@ -36,6 +38,7 @@ VIEWS
show tables from INFORMATION_SCHEMA like 'T%';
Tables_in_information_schema (T%)
TABLES
+TABLESPACES
TABLE_CONSTRAINTS
TABLE_PRIVILEGES
TRIGGERS
@@ -119,12 +122,12 @@ create table t1 (f1 char(4));
create view v1 as select f1 from t1;
grant insert on v1 to testdb_2@localhost;
create view v5 as select f1 from t1;
-grant show view on v5 to testdb_2@localhost;
+grant select, show view on v5 to testdb_2@localhost;
create definer=`no_such_user`@`no_such_host` view v6 as select f1 from t1;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
use testdb_1;
create view v6 as select f1 from t1;
-grant show view on v6 to testdb_2@localhost;
+grant select, show view on v6 to testdb_2@localhost;
create table t2 (f1 char(4));
create definer=`no_such_user`@`no_such_host` view v7 as select * from t2;
Warnings:
@@ -152,11 +155,13 @@ create view v2 as select f1 from testdb_1.v1;
create view v4 as select f1,f2 from testdb_1.v3;
show fields from testdb_1.v5;
Field Type Null Key Default Extra
+f1 char(4) YES NULL
show create view testdb_1.v5;
View Create View character_set_client collation_connection
v5 CREATE ALGORITHM=UNDEFINED DEFINER=`testdb_1`@`localhost` SQL SECURITY DEFINER VIEW `testdb_1`.`v5` AS select `testdb_1`.`t1`.`f1` AS `f1` from `testdb_1`.`t1` latin1 latin1_swedish_ci
show fields from testdb_1.v6;
Field Type Null Key Default Extra
+f1 char(4) YES NULL
show create view testdb_1.v6;
View Create View character_set_client collation_connection
v6 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `testdb_1`.`v6` AS select `testdb_1`.`t1`.`f1` AS `f1` from `testdb_1`.`t1` latin1 latin1_swedish_ci
@@ -171,9 +176,9 @@ v7 CREATE ALGORITHM=UNDEFINED DEFINER=`no_such_user`@`no_such_host` SQL SECURITY
Warnings:
Note 1449 The user specified as a definer ('no_such_user'@'no_such_host') does not exist
revoke insert(f1) on v3 from testdb_2@localhost;
-revoke show view on v5 from testdb_2@localhost;
+revoke select,show view on v5 from testdb_2@localhost;
use testdb_1;
-revoke show view on v6 from testdb_2@localhost;
+revoke select,show view on v6 from testdb_2@localhost;
show fields from testdb_1.v5;
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v5'
show create view testdb_1.v5;
@@ -203,7 +208,7 @@ show create view v2;
View Create View character_set_client collation_connection
v2 CREATE ALGORITHM=UNDEFINED DEFINER=`testdb_2`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS select `v1`.`f1` AS `f1` from `testdb_1`.`v1` latin1 latin1_swedish_ci
show create view testdb_1.v1;
-ERROR 42000: SHOW VIEW command denied to user 'testdb_2'@'localhost' for table 'v1'
+ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v1'
select table_name from information_schema.columns a
where a.table_name = 'v2';
table_name
diff --git a/mysql-test/r/information_schema_inno.result b/mysql-test/r/information_schema_inno.result
index 4f36fd2b8b5..fbb7e7e8397 100644
--- a/mysql-test/r/information_schema_inno.result
+++ b/mysql-test/r/information_schema_inno.result
@@ -8,22 +8,22 @@ FOREIGN KEY (id, t2_id) REFERENCES t2(t1_id, id) ON DELETE CASCADE) ENGINE=INNO
select * from information_schema.TABLE_CONSTRAINTS where
TABLE_SCHEMA= "test";
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE
-NULL test PRIMARY test t1 PRIMARY KEY
-NULL test PRIMARY test t2 PRIMARY KEY
-NULL test t2_ibfk_1 test t2 FOREIGN KEY
-NULL test t2_ibfk_2 test t2 FOREIGN KEY
-NULL test PRIMARY test t3 PRIMARY KEY
-NULL test t3_ibfk_1 test t3 FOREIGN KEY
+def test PRIMARY test t1 PRIMARY KEY
+def test PRIMARY test t2 PRIMARY KEY
+def test t2_ibfk_1 test t2 FOREIGN KEY
+def test t2_ibfk_2 test t2 FOREIGN KEY
+def test PRIMARY test t3 PRIMARY KEY
+def test t3_ibfk_1 test t3 FOREIGN KEY
select * from information_schema.KEY_COLUMN_USAGE where
TABLE_SCHEMA= "test";
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
-NULL test PRIMARY NULL test t1 id 1 NULL NULL NULL NULL
-NULL test PRIMARY NULL test t2 id 1 NULL NULL NULL NULL
-NULL test t2_ibfk_1 NULL test t2 t1_id 1 1 test t1 id
-NULL test t2_ibfk_2 NULL test t2 t1_id 1 1 test t1 id
-NULL test PRIMARY NULL test t3 id 1 NULL NULL NULL NULL
-NULL test t3_ibfk_1 NULL test t3 id 1 1 test t2 t1_id
-NULL test t3_ibfk_1 NULL test t3 t2_id 2 2 test t2 id
+def test PRIMARY def test t1 id 1 NULL NULL NULL NULL
+def test PRIMARY def test t2 id 1 NULL NULL NULL NULL
+def test t2_ibfk_1 def test t2 t1_id 1 1 test t1 id
+def test t2_ibfk_2 def test t2 t1_id 1 1 test t1 id
+def test PRIMARY def test t3 id 1 NULL NULL NULL NULL
+def test t3_ibfk_1 def test t3 id 1 1 test t2 t1_id
+def test t3_ibfk_1 def test t3 t2_id 2 2 test t2 id
drop table t3, t2, t1;
CREATE TABLE t1(a1 INT NOT NULL, a2 INT NOT NULL,
PRIMARY KEY(a1, a2)) ENGINE=INNODB;
diff --git a/mysql-test/r/information_schema_parameters.result b/mysql-test/r/information_schema_parameters.result
new file mode 100644
index 00000000000..db04f5c0bd3
--- /dev/null
+++ b/mysql-test/r/information_schema_parameters.result
@@ -0,0 +1,457 @@
+# ========== parameters.1 ==========
+USE INFORMATION_SCHEMA;
+SHOW CREATE TABLE INFORMATION_SCHEMA.PARAMETERS;
+Table Create Table
+PARAMETERS CREATE TEMPORARY TABLE `PARAMETERS` (
+ `SPECIFIC_CATALOG` varchar(512) NOT NULL DEFAULT '',
+ `SPECIFIC_SCHEMA` varchar(64) NOT NULL DEFAULT '',
+ `SPECIFIC_NAME` varchar(64) NOT NULL DEFAULT '',
+ `ORDINAL_POSITION` int(21) NOT NULL DEFAULT '0',
+ `PARAMETER_MODE` varchar(5) DEFAULT NULL,
+ `PARAMETER_NAME` varchar(64) DEFAULT NULL,
+ `DATA_TYPE` varchar(64) NOT NULL DEFAULT '',
+ `CHARACTER_MAXIMUM_LENGTH` int(21) DEFAULT NULL,
+ `CHARACTER_OCTET_LENGTH` int(21) DEFAULT NULL,
+ `NUMERIC_PRECISION` int(21) DEFAULT NULL,
+ `NUMERIC_SCALE` int(21) DEFAULT NULL,
+ `CHARACTER_SET_NAME` varchar(64) DEFAULT NULL,
+ `COLLATION_NAME` varchar(64) DEFAULT NULL,
+ `DTD_IDENTIFIER` longtext NOT NULL,
+ `ROUTINE_TYPE` varchar(9) NOT NULL DEFAULT ''
+) DEFAULT CHARSET=utf8
+SELECT * FROM information_schema.columns
+WHERE table_schema = 'information_schema'
+ AND table_name = 'parameters'
+ORDER BY ordinal_position;
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME parameters
+COLUMN_NAME SPECIFIC_CATALOG
+ORDINAL_POSITION 1
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 512
+CHARACTER_OCTET_LENGTH 1536
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(512)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME parameters
+COLUMN_NAME SPECIFIC_SCHEMA
+ORDINAL_POSITION 2
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 64
+CHARACTER_OCTET_LENGTH 192
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(64)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME parameters
+COLUMN_NAME SPECIFIC_NAME
+ORDINAL_POSITION 3
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 64
+CHARACTER_OCTET_LENGTH 192
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(64)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME parameters
+COLUMN_NAME ORDINAL_POSITION
+ORDINAL_POSITION 4
+COLUMN_DEFAULT 0
+IS_NULLABLE NO
+DATA_TYPE int
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION 10
+NUMERIC_SCALE 0
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+COLUMN_TYPE int(21)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME parameters
+COLUMN_NAME PARAMETER_MODE
+ORDINAL_POSITION 5
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 5
+CHARACTER_OCTET_LENGTH 15
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(5)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME parameters
+COLUMN_NAME PARAMETER_NAME
+ORDINAL_POSITION 6
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 64
+CHARACTER_OCTET_LENGTH 192
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(64)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME parameters
+COLUMN_NAME DATA_TYPE
+ORDINAL_POSITION 7
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 64
+CHARACTER_OCTET_LENGTH 192
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(64)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME parameters
+COLUMN_NAME CHARACTER_MAXIMUM_LENGTH
+ORDINAL_POSITION 8
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE int
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION 10
+NUMERIC_SCALE 0
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+COLUMN_TYPE int(21)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME parameters
+COLUMN_NAME CHARACTER_OCTET_LENGTH
+ORDINAL_POSITION 9
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE int
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION 10
+NUMERIC_SCALE 0
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+COLUMN_TYPE int(21)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME parameters
+COLUMN_NAME NUMERIC_PRECISION
+ORDINAL_POSITION 10
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE int
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION 10
+NUMERIC_SCALE 0
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+COLUMN_TYPE int(21)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME parameters
+COLUMN_NAME NUMERIC_SCALE
+ORDINAL_POSITION 11
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE int
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION 10
+NUMERIC_SCALE 0
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+COLUMN_TYPE int(21)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME parameters
+COLUMN_NAME CHARACTER_SET_NAME
+ORDINAL_POSITION 12
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 64
+CHARACTER_OCTET_LENGTH 192
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(64)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME parameters
+COLUMN_NAME COLLATION_NAME
+ORDINAL_POSITION 13
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 64
+CHARACTER_OCTET_LENGTH 192
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(64)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME parameters
+COLUMN_NAME DTD_IDENTIFIER
+ORDINAL_POSITION 14
+COLUMN_DEFAULT NULL
+IS_NULLABLE NO
+DATA_TYPE longtext
+CHARACTER_MAXIMUM_LENGTH 4294967295
+CHARACTER_OCTET_LENGTH 4294967295
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE longtext
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME parameters
+COLUMN_NAME ROUTINE_TYPE
+ORDINAL_POSITION 15
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 9
+CHARACTER_OCTET_LENGTH 27
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(9)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+DESCRIBE INFORMATION_SCHEMA.PARAMETERS;
+Field Type Null Key Default Extra
+SPECIFIC_CATALOG varchar(512) NO
+SPECIFIC_SCHEMA varchar(64) NO
+SPECIFIC_NAME varchar(64) NO
+ORDINAL_POSITION int(21) NO 0
+PARAMETER_MODE varchar(5) YES NULL
+PARAMETER_NAME varchar(64) YES NULL
+DATA_TYPE varchar(64) NO
+CHARACTER_MAXIMUM_LENGTH int(21) YES NULL
+CHARACTER_OCTET_LENGTH int(21) YES NULL
+NUMERIC_PRECISION int(21) YES NULL
+NUMERIC_SCALE int(21) YES NULL
+CHARACTER_SET_NAME varchar(64) YES NULL
+COLLATION_NAME varchar(64) YES NULL
+DTD_IDENTIFIER longtext NO NULL
+ROUTINE_TYPE varchar(9) NO
+# ========== parameters.2 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE FUNCTION test_func1 (s char(20) RETURNS CHAR(50)
+RETURN CONCAT('Hello', ,s,'!');
+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 'RETURNS CHAR(50)
+RETURN CONCAT('Hello', ,s,'!')' at line 1
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE
+# ========== parameters.3 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50)
+RETURN CONCAT('Hello, ',s,'!');
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE
+def i_s_parameters_test test_func1 0 NULL NULL char 50 50 NULL NULL latin1 latin1_swedish_ci char(50) FUNCTION
+def i_s_parameters_test test_func1 1 IN s char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) FUNCTION
+DROP FUNCTION test_func1;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE
+# ========== parameters.4 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE PROCEDURE testproc (OUT param1 INT)
+BEGIN
+SELECT 2+2 as param1;
+END;
+//
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'testproc';
+SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE
+def i_s_parameters_test testproc 1 OUT param1 int NULL NULL 10 0 NULL NULL int(11) PROCEDURE
+# ========== parameters.5 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE PROCEDURE test_proc(INOUT P INT) SET @x=P*2;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_proc';
+SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE
+def i_s_parameters_test test_proc 1 INOUT P int NULL NULL 10 0 NULL NULL int(11) PROCEDURE
+# ========== parameters.6 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE PROCEDURE test_proc(OUT p VARCHAR(10)) SET P='test';
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_proc';
+SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE
+def i_s_parameters_test test_proc 1 OUT p varchar 10 10 NULL NULL latin1 latin1_swedish_ci varchar(10) PROCEDURE
+# ========== parameters.7 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE FUNCTION test_func1 (s char(20), t char(20)) RETURNS CHAR(40)
+RETURN CONCAT(s,t);
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE
+def i_s_parameters_test test_func1 0 NULL NULL char 40 40 NULL NULL latin1 latin1_swedish_ci char(40) FUNCTION
+def i_s_parameters_test test_func1 1 IN s char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) FUNCTION
+def i_s_parameters_test test_func1 2 IN t char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) FUNCTION
+# ========== parameters.8 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50)
+RETURN CONCAT('Hello, ',s,'!');
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE
+def i_s_parameters_test test_func1 0 NULL NULL char 50 50 NULL NULL latin1 latin1_swedish_ci char(50) FUNCTION
+def i_s_parameters_test test_func1 1 IN s char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) FUNCTION
+# ========== parameters.9 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE FUNCTION test_func2 (s int) RETURNS INT RETURN s*2;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func2';
+SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE
+def i_s_parameters_test test_func2 0 NULL NULL int NULL NULL 10 0 NULL NULL int(11) FUNCTION
+def i_s_parameters_test test_func2 1 IN s int NULL NULL 10 0 NULL NULL int(11) FUNCTION
+# ========== parameters.10 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP
+RETURN CURRENT_TIMESTAMP;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5';
+SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE
+def i_s_parameters_test test_func5 0 NULL NULL timestamp NULL NULL NULL NULL NULL NULL timestamp FUNCTION
+def i_s_parameters_test test_func5 1 IN s date NULL NULL NULL NULL NULL NULL date FUNCTION
+# ========== parameters.11 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP
+RETURN CURRENT_TIMESTAMP;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5';
+SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE
+def i_s_parameters_test test_func5 0 NULL NULL timestamp NULL NULL NULL NULL NULL NULL timestamp FUNCTION
+def i_s_parameters_test test_func5 1 IN s date NULL NULL NULL NULL NULL NULL date FUNCTION
+ALTER FUNCTION test_func5 COMMENT 'new comment added';
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5';
+SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE
+def i_s_parameters_test test_func5 0 NULL NULL timestamp NULL NULL NULL NULL NULL NULL timestamp FUNCTION
+def i_s_parameters_test test_func5 1 IN s date NULL NULL NULL NULL NULL NULL date FUNCTION
+# ========== parameters.12 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test CHARACTER SET utf8;
+USE i_s_parameters_test;
+CREATE FUNCTION test_func5 (s CHAR(20)) RETURNS VARCHAR(30)
+RETURN CONCAT('XYZ, ' ,s);
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5';
+SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE
+def i_s_parameters_test test_func5 0 NULL NULL varchar 30 90 NULL NULL utf8 utf8_general_ci varchar(30) FUNCTION
+def i_s_parameters_test test_func5 1 IN s char 20 60 NULL NULL utf8 utf8_general_ci char(20) FUNCTION
+DROP DATABASE i_s_parameters_test;
diff --git a/mysql-test/r/information_schema_part.result b/mysql-test/r/information_schema_part.result
index 04dc9ccf2c0..11c57ceb2c2 100644
--- a/mysql-test/r/information_schema_part.result
+++ b/mysql-test/r/information_schema_part.result
@@ -7,9 +7,9 @@ partition x3 values in (16, 8, 5+19, 70-43) tablespace ts3);
select * from information_schema.partitions where table_schema="test"
and table_name="t1";
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 x1 NULL 1 NULL LIST NULL b*a NULL 1 0 0 0 # 1024 0 # # NULL NULL default ts1
-NULL test t1 x2 NULL 2 NULL LIST NULL b*a NULL 3,11,5,7 0 0 0 # 1024 0 # # NULL NULL default ts2
-NULL test t1 x3 NULL 3 NULL LIST NULL b*a NULL 16,8,24,27 0 0 0 # 1024 0 # # NULL NULL default ts3
+def test t1 x1 NULL 1 NULL LIST NULL b*a NULL 1 0 0 0 # 1024 0 # # NULL NULL default ts1
+def test t1 x2 NULL 2 NULL LIST NULL b*a NULL 3,11,5,7 0 0 0 # 1024 0 # # NULL NULL default ts2
+def test t1 x3 NULL 3 NULL LIST NULL b*a NULL 16,8,24,27 0 0 0 # 1024 0 # # NULL NULL default ts3
create table t2 (a int not null,b int not null,c int not null, primary key(a,b))
partition by range (a)
partitions 3
@@ -19,27 +19,27 @@ partition x3 values less than maxvalue tablespace ts3);
select * from information_schema.partitions where table_schema="test"
and table_name="t2";
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 t2 x1 NULL 1 NULL RANGE NULL a NULL 5 0 0 0 # 1024 0 # # NULL NULL default ts1
-NULL test t2 x2 NULL 2 NULL RANGE NULL a NULL 10 0 0 0 # 1024 0 # # NULL NULL default ts2
-NULL test t2 x3 NULL 3 NULL RANGE NULL a NULL MAXVALUE 0 0 0 # 1024 0 # # NULL NULL default ts3
+def test t2 x1 NULL 1 NULL RANGE NULL a NULL 5 0 0 0 # 1024 0 # # NULL NULL default ts1
+def test t2 x2 NULL 2 NULL RANGE NULL a NULL 10 0 0 0 # 1024 0 # # NULL NULL default ts2
+def test t2 x3 NULL 3 NULL RANGE NULL a NULL MAXVALUE 0 0 0 # 1024 0 # # NULL NULL default ts3
create table t3 (f1 date)
partition by hash(month(f1))
partitions 3;
select * from information_schema.partitions where table_schema="test"
and table_name="t3";
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 t3 p0 NULL 1 NULL HASH NULL month(f1) NULL NULL 0 0 0 # 1024 0 # # NULL NULL default NULL
-NULL test t3 p1 NULL 2 NULL HASH NULL month(f1) NULL NULL 0 0 0 # 1024 0 # # NULL NULL default NULL
-NULL test t3 p2 NULL 3 NULL HASH NULL month(f1) NULL NULL 0 0 0 # 1024 0 # # NULL NULL default NULL
+def test t3 p0 NULL 1 NULL HASH NULL month(f1) NULL NULL 0 0 0 # 1024 0 # # NULL NULL default NULL
+def test t3 p1 NULL 2 NULL HASH NULL month(f1) NULL NULL 0 0 0 # 1024 0 # # NULL NULL default NULL
+def test t3 p2 NULL 3 NULL HASH NULL month(f1) NULL NULL 0 0 0 # 1024 0 # # NULL NULL default NULL
create table t4 (f1 date, f2 int)
partition by key(f1,f2)
partitions 3;
select * from information_schema.partitions where table_schema="test"
and table_name="t4";
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 t4 p0 NULL 1 NULL KEY NULL f1,f2 NULL NULL 0 0 0 # 1024 0 # # NULL NULL default NULL
-NULL test t4 p1 NULL 2 NULL KEY NULL f1,f2 NULL NULL 0 0 0 # 1024 0 # # NULL NULL default NULL
-NULL test t4 p2 NULL 3 NULL KEY NULL f1,f2 NULL NULL 0 0 0 # 1024 0 # # NULL NULL default NULL
+def test t4 p0 NULL 1 NULL KEY NULL f1,f2 NULL NULL 0 0 0 # 1024 0 # # NULL NULL default NULL
+def test t4 p1 NULL 2 NULL KEY NULL f1,f2 NULL NULL 0 0 0 # 1024 0 # # NULL NULL default NULL
+def test t4 p2 NULL 3 NULL KEY NULL f1,f2 NULL NULL 0 0 0 # 1024 0 # # NULL NULL default NULL
drop table t1,t2,t3,t4;
create table t1 (a int not null,b int not null,c int not null,primary key (a,b))
partition by range (a)
@@ -63,14 +63,14 @@ subpartition x22 tablespace t2)
);
select * from information_schema.partitions where table_schema="test";
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 x1 x11 1 1 RANGE HASH a a+b 1 0 0 0 # 1024 0 # # NULL NULL default t1
-NULL test t1 x1 x12 1 2 RANGE HASH a a+b 1 0 0 0 # 1024 0 # # NULL NULL default t2
-NULL test t1 x2 x21 2 1 RANGE HASH a a+b 5 0 0 0 # 1024 0 # # NULL NULL default t1
-NULL test t1 x2 x22 2 2 RANGE HASH a a+b 5 0 0 0 # 1024 0 # # NULL NULL default t2
-NULL test t2 x1 x11 1 1 RANGE KEY a a 1 0 0 0 # 1024 0 # # NULL NULL default t1
-NULL test t2 x1 x12 1 2 RANGE KEY a a 1 0 0 0 # 1024 0 # # NULL NULL default t2
-NULL test t2 x2 x21 2 1 RANGE KEY a a 5 0 0 0 # 1024 0 # # NULL NULL default t1
-NULL test t2 x2 x22 2 2 RANGE KEY a a 5 0 0 0 # 1024 0 # # NULL NULL default t2
+def test t1 x1 x11 1 1 RANGE HASH a a+b 1 0 0 0 # 1024 0 # # NULL NULL default t1
+def test t1 x1 x12 1 2 RANGE HASH a a+b 1 0 0 0 # 1024 0 # # NULL NULL default t2
+def test t1 x2 x21 2 1 RANGE HASH a a+b 5 0 0 0 # 1024 0 # # NULL NULL default t1
+def test t1 x2 x22 2 2 RANGE HASH a a+b 5 0 0 0 # 1024 0 # # NULL NULL default t2
+def test t2 x1 x11 1 1 RANGE KEY a a 1 0 0 0 # 1024 0 # # NULL NULL default t1
+def test t2 x1 x12 1 2 RANGE KEY a a 1 0 0 0 # 1024 0 # # NULL NULL default t2
+def test t2 x2 x21 2 1 RANGE KEY a a 5 0 0 0 # 1024 0 # # NULL NULL default t1
+def test t2 x2 x22 2 2 RANGE KEY a a 5 0 0 0 # 1024 0 # # NULL NULL default t2
drop table t1,t2;
create table t1 (
a int not null,
@@ -88,10 +88,10 @@ subpartition x22 tablespace t2 nodegroup 1)
);
select * from information_schema.partitions where table_schema="test";
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 x1 x11 1 1 RANGE HASH a a+b 1 0 0 0 # 1024 0 # # NULL NULL 0 t1
-NULL test t1 x1 x12 1 2 RANGE HASH a a+b 1 0 0 0 # 1024 0 # # NULL NULL 1 t2
-NULL test t1 x2 x21 2 1 RANGE HASH a a+b 5 0 0 0 # 1024 0 # # NULL NULL 0 t1
-NULL test t1 x2 x22 2 2 RANGE HASH a a+b 5 0 0 0 # 1024 0 # # NULL NULL 1 t2
+def test t1 x1 x11 1 1 RANGE HASH a a+b 1 0 0 0 # 1024 0 # # NULL NULL 0 t1
+def test t1 x1 x12 1 2 RANGE HASH a a+b 1 0 0 0 # 1024 0 # # NULL NULL 1 t2
+def test t1 x2 x21 2 1 RANGE HASH a a+b 5 0 0 0 # 1024 0 # # NULL NULL 0 t1
+def test t1 x2 x22 2 2 RANGE HASH a a+b 5 0 0 0 # 1024 0 # # NULL NULL 1 t2
show tables;
Tables_in_test
t1
@@ -99,7 +99,7 @@ drop table t1;
create table t1(f1 int, f2 int);
select * from information_schema.partitions where table_schema="test";
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 NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 0 0 # 1024 0 # # NULL NULL NULL
+def test t1 NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 0 0 # 1024 0 # # NULL NULL NULL
drop table t1;
create table t1 (f1 date)
partition by linear hash(month(f1))
@@ -107,9 +107,9 @@ partitions 3;
select * from information_schema.partitions where table_schema="test"
and table_name="t1";
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 LINEAR HASH NULL month(f1) NULL NULL 0 0 0 # 1024 0 # # NULL NULL default NULL
-NULL test t1 p1 NULL 2 NULL LINEAR HASH NULL month(f1) NULL NULL 0 0 0 # 1024 0 # # NULL NULL default NULL
-NULL test t1 p2 NULL 3 NULL LINEAR HASH NULL month(f1) NULL NULL 0 0 0 # 1024 0 # # NULL NULL default NULL
+def test t1 p0 NULL 1 NULL LINEAR HASH NULL month(f1) NULL NULL 0 0 0 # 1024 0 # # NULL NULL default NULL
+def test t1 p1 NULL 2 NULL LINEAR HASH NULL month(f1) NULL NULL 0 0 0 # 1024 0 # # NULL NULL default NULL
+def test t1 p2 NULL 3 NULL LINEAR HASH NULL month(f1) NULL NULL 0 0 0 # 1024 0 # # NULL NULL default NULL
drop table t1;
create table t1 (a int)
PARTITION BY RANGE (a)
diff --git a/mysql-test/r/information_schema_routines.result b/mysql-test/r/information_schema_routines.result
new file mode 100644
index 00000000000..664ec6bf748
--- /dev/null
+++ b/mysql-test/r/information_schema_routines.result
@@ -0,0 +1,737 @@
+# ========== routines.1 ==========
+USE INFORMATION_SCHEMA;
+SHOW CREATE TABLE INFORMATION_SCHEMA.ROUTINES;
+Table Create Table
+ROUTINES CREATE TEMPORARY TABLE `ROUTINES` (
+ `SPECIFIC_NAME` varchar(64) NOT NULL DEFAULT '',
+ `ROUTINE_CATALOG` varchar(512) NOT NULL DEFAULT '',
+ `ROUTINE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
+ `ROUTINE_NAME` varchar(64) NOT NULL DEFAULT '',
+ `ROUTINE_TYPE` varchar(9) NOT NULL DEFAULT '',
+ `DATA_TYPE` varchar(64) NOT NULL DEFAULT '',
+ `CHARACTER_MAXIMUM_LENGTH` int(21) DEFAULT NULL,
+ `CHARACTER_OCTET_LENGTH` int(21) DEFAULT NULL,
+ `NUMERIC_PRECISION` int(21) DEFAULT NULL,
+ `NUMERIC_SCALE` int(21) DEFAULT NULL,
+ `CHARACTER_SET_NAME` varchar(64) DEFAULT NULL,
+ `COLLATION_NAME` varchar(64) DEFAULT NULL,
+ `DTD_IDENTIFIER` longtext,
+ `ROUTINE_BODY` varchar(8) NOT NULL DEFAULT '',
+ `ROUTINE_DEFINITION` longtext,
+ `EXTERNAL_NAME` varchar(64) DEFAULT NULL,
+ `EXTERNAL_LANGUAGE` varchar(64) DEFAULT NULL,
+ `PARAMETER_STYLE` varchar(8) NOT NULL DEFAULT '',
+ `IS_DETERMINISTIC` varchar(3) NOT NULL DEFAULT '',
+ `SQL_DATA_ACCESS` varchar(64) NOT NULL DEFAULT '',
+ `SQL_PATH` varchar(64) DEFAULT NULL,
+ `SECURITY_TYPE` varchar(7) NOT NULL DEFAULT '',
+ `CREATED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `LAST_ALTERED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `SQL_MODE` varchar(8192) NOT NULL DEFAULT '',
+ `ROUTINE_COMMENT` longtext NOT NULL,
+ `DEFINER` varchar(77) NOT NULL DEFAULT '',
+ `CHARACTER_SET_CLIENT` varchar(32) NOT NULL DEFAULT '',
+ `COLLATION_CONNECTION` varchar(32) NOT NULL DEFAULT '',
+ `DATABASE_COLLATION` varchar(32) NOT NULL DEFAULT ''
+) DEFAULT CHARSET=utf8
+SELECT * FROM information_schema.columns
+WHERE table_schema = 'information_schema'
+ AND table_name = 'routines'
+ORDER BY ordinal_position;
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME SPECIFIC_NAME
+ORDINAL_POSITION 1
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 64
+CHARACTER_OCTET_LENGTH 192
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(64)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME ROUTINE_CATALOG
+ORDINAL_POSITION 2
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 512
+CHARACTER_OCTET_LENGTH 1536
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(512)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME ROUTINE_SCHEMA
+ORDINAL_POSITION 3
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 64
+CHARACTER_OCTET_LENGTH 192
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(64)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME ROUTINE_NAME
+ORDINAL_POSITION 4
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 64
+CHARACTER_OCTET_LENGTH 192
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(64)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME ROUTINE_TYPE
+ORDINAL_POSITION 5
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 9
+CHARACTER_OCTET_LENGTH 27
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(9)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME DATA_TYPE
+ORDINAL_POSITION 6
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 64
+CHARACTER_OCTET_LENGTH 192
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(64)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME CHARACTER_MAXIMUM_LENGTH
+ORDINAL_POSITION 7
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE int
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION 10
+NUMERIC_SCALE 0
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+COLUMN_TYPE int(21)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME CHARACTER_OCTET_LENGTH
+ORDINAL_POSITION 8
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE int
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION 10
+NUMERIC_SCALE 0
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+COLUMN_TYPE int(21)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME NUMERIC_PRECISION
+ORDINAL_POSITION 9
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE int
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION 10
+NUMERIC_SCALE 0
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+COLUMN_TYPE int(21)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME NUMERIC_SCALE
+ORDINAL_POSITION 10
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE int
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION 10
+NUMERIC_SCALE 0
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+COLUMN_TYPE int(21)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME CHARACTER_SET_NAME
+ORDINAL_POSITION 11
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 64
+CHARACTER_OCTET_LENGTH 192
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(64)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME COLLATION_NAME
+ORDINAL_POSITION 12
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 64
+CHARACTER_OCTET_LENGTH 192
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(64)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME DTD_IDENTIFIER
+ORDINAL_POSITION 13
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE longtext
+CHARACTER_MAXIMUM_LENGTH 4294967295
+CHARACTER_OCTET_LENGTH 4294967295
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE longtext
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME ROUTINE_BODY
+ORDINAL_POSITION 14
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 8
+CHARACTER_OCTET_LENGTH 24
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(8)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME ROUTINE_DEFINITION
+ORDINAL_POSITION 15
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE longtext
+CHARACTER_MAXIMUM_LENGTH 4294967295
+CHARACTER_OCTET_LENGTH 4294967295
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE longtext
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME EXTERNAL_NAME
+ORDINAL_POSITION 16
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 64
+CHARACTER_OCTET_LENGTH 192
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(64)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME EXTERNAL_LANGUAGE
+ORDINAL_POSITION 17
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 64
+CHARACTER_OCTET_LENGTH 192
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(64)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME PARAMETER_STYLE
+ORDINAL_POSITION 18
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 8
+CHARACTER_OCTET_LENGTH 24
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(8)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME IS_DETERMINISTIC
+ORDINAL_POSITION 19
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 3
+CHARACTER_OCTET_LENGTH 9
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(3)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME SQL_DATA_ACCESS
+ORDINAL_POSITION 20
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 64
+CHARACTER_OCTET_LENGTH 192
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(64)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME SQL_PATH
+ORDINAL_POSITION 21
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 64
+CHARACTER_OCTET_LENGTH 192
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(64)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME SECURITY_TYPE
+ORDINAL_POSITION 22
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 7
+CHARACTER_OCTET_LENGTH 21
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(7)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME CREATED
+ORDINAL_POSITION 23
+COLUMN_DEFAULT 0000-00-00 00:00:00
+IS_NULLABLE NO
+DATA_TYPE datetime
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+COLUMN_TYPE datetime
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME LAST_ALTERED
+ORDINAL_POSITION 24
+COLUMN_DEFAULT 0000-00-00 00:00:00
+IS_NULLABLE NO
+DATA_TYPE datetime
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+COLUMN_TYPE datetime
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME SQL_MODE
+ORDINAL_POSITION 25
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 8192
+CHARACTER_OCTET_LENGTH 24576
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(8192)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME ROUTINE_COMMENT
+ORDINAL_POSITION 26
+COLUMN_DEFAULT NULL
+IS_NULLABLE NO
+DATA_TYPE longtext
+CHARACTER_MAXIMUM_LENGTH 4294967295
+CHARACTER_OCTET_LENGTH 4294967295
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE longtext
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME DEFINER
+ORDINAL_POSITION 27
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 77
+CHARACTER_OCTET_LENGTH 231
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(77)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME CHARACTER_SET_CLIENT
+ORDINAL_POSITION 28
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 32
+CHARACTER_OCTET_LENGTH 96
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(32)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME COLLATION_CONNECTION
+ORDINAL_POSITION 29
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 32
+CHARACTER_OCTET_LENGTH 96
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(32)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME routines
+COLUMN_NAME DATABASE_COLLATION
+ORDINAL_POSITION 30
+COLUMN_DEFAULT
+IS_NULLABLE NO
+DATA_TYPE varchar
+CHARACTER_MAXIMUM_LENGTH 32
+CHARACTER_OCTET_LENGTH 96
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME utf8
+COLLATION_NAME utf8_general_ci
+COLUMN_TYPE varchar(32)
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+DESCRIBE INFORMATION_SCHEMA.ROUTINES;
+Field Type Null Key Default Extra
+SPECIFIC_NAME varchar(64) NO
+ROUTINE_CATALOG varchar(512) NO
+ROUTINE_SCHEMA varchar(64) NO
+ROUTINE_NAME varchar(64) NO
+ROUTINE_TYPE varchar(9) NO
+DATA_TYPE varchar(64) NO
+CHARACTER_MAXIMUM_LENGTH int(21) YES NULL
+CHARACTER_OCTET_LENGTH int(21) YES NULL
+NUMERIC_PRECISION int(21) YES NULL
+NUMERIC_SCALE int(21) YES NULL
+CHARACTER_SET_NAME varchar(64) YES NULL
+COLLATION_NAME varchar(64) YES NULL
+DTD_IDENTIFIER longtext YES NULL
+ROUTINE_BODY varchar(8) NO
+ROUTINE_DEFINITION longtext YES NULL
+EXTERNAL_NAME varchar(64) YES NULL
+EXTERNAL_LANGUAGE varchar(64) YES NULL
+PARAMETER_STYLE varchar(8) NO
+IS_DETERMINISTIC varchar(3) NO
+SQL_DATA_ACCESS varchar(64) NO
+SQL_PATH varchar(64) YES NULL
+SECURITY_TYPE varchar(7) NO
+CREATED datetime NO 0000-00-00 00:00:00
+LAST_ALTERED datetime NO 0000-00-00 00:00:00
+SQL_MODE varchar(8192) NO
+ROUTINE_COMMENT longtext NO NULL
+DEFINER varchar(77) NO
+CHARACTER_SET_CLIENT varchar(32) NO
+COLLATION_CONNECTION varchar(32) NO
+DATABASE_COLLATION varchar(32) NO
+# ========== routines.2 ==========
+DROP DATABASE IF EXISTS i_s_routines_test;
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+CREATE FUNCTION test_func1 (s char(20) RETURNS CHAR(50)
+RETURN CONCAT('Hello', ,s,'!');
+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 'RETURNS CHAR(50)
+RETURN CONCAT('Hello', ,s,'!')' at line 1
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1';
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+# ========== routines.3 ==========
+DROP DATABASE IF EXISTS i_s_routines_test;
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50)
+RETURN CONCAT('Hello, ',s,'!');
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1';
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+test_func1 def i_s_routines_test test_func1 FUNCTION char 50 50 NULL NULL latin1 latin1_swedish_ci char(50) SQL RETURN CONCAT('Hello, ',s,'!') NULL NULL SQL NO CONTAINS SQL NULL DEFINER <created> <modified> root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+DROP FUNCTION test_func1;
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1';
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+# ========== routines.4 ==========
+DROP DATABASE IF EXISTS i_s_routines_test;
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+CREATE PROCEDURE testproc (OUT param1 INT)
+BEGIN
+SELECT 2+2 as param1;
+END;
+//
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'testproc';
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+testproc def i_s_routines_test testproc PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
+SELECT 2+2 as param1;
+END NULL NULL SQL NO CONTAINS SQL NULL DEFINER <created> <modified> root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+# ========== routines.5 ==========
+DROP DATABASE IF EXISTS i_s_routines_test;
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50)
+RETURN CONCAT('Hello, ',s,'!');
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1';
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+test_func1 def i_s_routines_test test_func1 FUNCTION char 50 50 NULL NULL latin1 latin1_swedish_ci char(50) SQL RETURN CONCAT('Hello, ',s,'!') NULL NULL SQL NO CONTAINS SQL NULL DEFINER <created> <modified> root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+# ========== routines.6 ==========
+DROP DATABASE IF EXISTS i_s_routines_test;
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+CREATE FUNCTION test_func2 (s int) RETURNS INT RETURN s*2;
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func2';
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+test_func2 def i_s_routines_test test_func2 FUNCTION int NULL NULL 10 0 NULL NULL int(11) SQL RETURN s*2 NULL NULL SQL NO CONTAINS SQL NULL DEFINER <created> <modified> root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+# ========== routines.7 ==========
+DROP DATABASE IF EXISTS i_s_routines_test;
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP
+RETURN CURRENT_TIMESTAMP;
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5';
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+test_func5 def i_s_routines_test test_func5 FUNCTION timestamp NULL NULL NULL NULL NULL NULL timestamp SQL RETURN CURRENT_TIMESTAMP NULL NULL SQL NO CONTAINS SQL NULL DEFINER <created> <modified> root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+# ========== routines.8 ==========
+DROP DATABASE IF EXISTS i_s_routines_test;
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP
+RETURN CURRENT_TIMESTAMP;
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5';
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+test_func5 def i_s_routines_test test_func5 FUNCTION timestamp NULL NULL NULL NULL NULL NULL timestamp SQL RETURN CURRENT_TIMESTAMP NULL NULL SQL NO CONTAINS SQL NULL DEFINER <created> <modified> root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+ALTER FUNCTION test_func5 COMMENT 'new comment added';
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5';
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+test_func5 def i_s_routines_test test_func5 FUNCTION timestamp NULL NULL NULL NULL NULL NULL timestamp SQL RETURN CURRENT_TIMESTAMP NULL NULL SQL NO CONTAINS SQL NULL DEFINER <created> <modified> new comment added root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+# ========== routines.9 ==========
+DROP DATABASE IF EXISTS i_s_routines_test;
+CREATE DATABASE i_s_routines_test CHARACTER SET utf8;
+USE i_s_routines_test;
+CREATE FUNCTION test_func5 (s CHAR(20)) RETURNS VARCHAR(30)
+RETURN CONCAT('XYZ, ' ,s);
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5';
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+test_func5 def i_s_routines_test test_func5 FUNCTION varchar 30 90 NULL NULL utf8 utf8_general_ci varchar(30) SQL RETURN CONCAT('XYZ, ' ,s) NULL NULL SQL NO CONTAINS SQL NULL DEFINER <created> <modified> root@localhost latin1 latin1_swedish_ci utf8_general_ci
+DROP DATABASE i_s_routines_test;
diff --git a/mysql-test/r/innodb-autoinc-44030.result b/mysql-test/r/innodb-autoinc-44030.result
deleted file mode 100644
index c0695bf0be0..00000000000
--- a/mysql-test/r/innodb-autoinc-44030.result
+++ /dev/null
@@ -1,30 +0,0 @@
-drop table if exists t1;
-SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
-CREATE TABLE t1 (c1 INT PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (null);
-INSERT INTO t1 VALUES (null);
-ALTER TABLE t1 CHANGE c1 d1 INT NOT NULL AUTO_INCREMENT;
-SELECT * FROM t1;
-d1
-1
-2
-SELECT * FROM t1;
-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
-INSERT INTO t1 VALUES(null);
-SELECT * FROM t1;
-d1
-1
-2
-3
-DROP TABLE t1;
diff --git a/mysql-test/r/innodb-autoinc.result b/mysql-test/r/innodb-autoinc.result
index c03daa3565e..abb8f3da072 100644
--- a/mysql-test/r/innodb-autoinc.result
+++ b/mysql-test/r/innodb-autoinc.result
@@ -868,6 +868,35 @@ Got one of the listed errors
DROP TABLE t1;
DROP TABLE t2;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
+CREATE TABLE t1 (c1 INT PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (null);
+INSERT INTO t1 VALUES (null);
+ALTER TABLE t1 CHANGE c1 d1 INT NOT NULL AUTO_INCREMENT;
+SELECT * FROM t1;
+d1
+1
+2
+SELECT * FROM t1;
+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
+INSERT INTO t1 VALUES(null);
+SELECT * FROM t1;
+d1
+1
+2
+3
+DROP TABLE t1;
+SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SHOW VARIABLES LIKE "%auto_inc%";
Variable_name Value
auto_increment_increment 1
@@ -1082,82 +1111,18 @@ c1 c2
3 innodb
4 NULL
DROP TABLE t1;
-CREATE TABLE t1 (c1 INT AUTO_INCREMENT, c2 INT, PRIMARY KEY(c1)) AUTO_INCREMENT=10 ENGINE=InnoDB;
-CREATE INDEX i1 on t1(c2);
-SHOW CREATE TABLE t1;
+CREATE TABLE T1 (c1 INT AUTO_INCREMENT, c2 INT, PRIMARY KEY(c1)) AUTO_INCREMENT=10 ENGINE=InnoDB;
+CREATE INDEX i1 on T1(c2);
+SHOW CREATE TABLE T1;
Table Create Table
-t1 CREATE TABLE `t1` (
+T1 CREATE TABLE `T1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
`c2` int(11) DEFAULT NULL,
PRIMARY KEY (`c1`),
KEY `i1` (`c2`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1
-INSERT INTO t1 (c2) values (0);
-SELECT * FROM t1;
+INSERT INTO T1 (c2) values (0);
+SELECT * FROM T1;
c1 c2
10 0
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-Warnings:
-Note 1051 Unknown table 't1'
-CREATE TABLE t1(C1 DOUBLE AUTO_INCREMENT KEY, C2 CHAR(10)) ENGINE=InnoDB;
-INSERT INTO t1(C1, C2) VALUES (1, 'innodb'), (3, 'innodb');
-INSERT INTO t1(C2) VALUES ('innodb');
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `C1` double NOT NULL AUTO_INCREMENT,
- `C2` char(10) DEFAULT NULL,
- PRIMARY KEY (`C1`)
-) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1
-DROP TABLE t1;
-CREATE TABLE t1(C1 FLOAT AUTO_INCREMENT KEY, C2 CHAR(10)) ENGINE=InnoDB;
-INSERT INTO t1(C1, C2) VALUES (1, 'innodb'), (3, 'innodb');
-INSERT INTO t1(C2) VALUES ('innodb');
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `C1` float NOT NULL AUTO_INCREMENT,
- `C2` char(10) DEFAULT NULL,
- PRIMARY KEY (`C1`)
-) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-Warnings:
-Note 1051 Unknown table 't1'
-CREATE TABLE t1 (c1 INT AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB;
-INSERT INTO t1 SET c1 = 1;
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `c1` int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (`c1`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
-INSERT INTO t1 SET c1 = 2;
-INSERT INTO t1 SET c1 = -1;
-SELECT * FROM t1;
-c1
--1
-1
-2
-INSERT INTO t1 SET c1 = -1;
-Got one of the listed errors
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `c1` int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (`c1`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
-REPLACE INTO t1 VALUES (-1);
-SELECT * FROM t1;
-c1
--1
-1
-2
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `c1` int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (`c1`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
-DROP TABLE t1;
+DROP TABLE T1;
diff --git a/mysql-test/suite/innodb/r/innodb-consistent.result b/mysql-test/r/innodb-consistent.result
index 9115791b99c..9115791b99c 100644
--- a/mysql-test/suite/innodb/r/innodb-consistent.result
+++ b/mysql-test/r/innodb-consistent.result
diff --git a/mysql-test/r/innodb.result b/mysql-test/r/innodb.result
index b6602c9cfaf..6cee55482e3 100644
--- a/mysql-test/r/innodb.result
+++ b/mysql-test/r/innodb.result
@@ -1508,7 +1508,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` (
@@ -1766,9 +1766,10 @@ variable_value - @innodb_row_lock_time_max_orig
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 20
+innodb_sync_spin_loops 30
set global innodb_sync_spin_loops=1000;
show variables like "innodb_sync_spin_loops";
Variable_name Value
@@ -1781,13 +1782,13 @@ set global innodb_sync_spin_loops=20;
show variables like "innodb_sync_spin_loops";
Variable_name Value
innodb_sync_spin_loops 20
-SET @old_innodb_thread_concurrency= @@global.innodb_thread_concurrency;
+set global innodb_sync_spin_loops=@innodb_sync_spin_loops_orig;
show variables like "innodb_thread_concurrency";
Variable_name Value
-innodb_thread_concurrency 8
+innodb_thread_concurrency 0
set global innodb_thread_concurrency=1001;
Warnings:
-Warning 1292 Truncated incorrect thread_concurrency value: '1001'
+Warning 1292 Truncated incorrect innodb_thread_concurrency value: '1001'
show variables like "innodb_thread_concurrency";
Variable_name Value
innodb_thread_concurrency 1000
@@ -1799,7 +1800,6 @@ 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
@@ -1809,7 +1809,7 @@ Variable_name Value
innodb_concurrency_tickets 1000
set global innodb_concurrency_tickets=0;
Warnings:
-Warning 1292 Truncated incorrect concurrency_tickets value: '0'
+Warning 1292 Truncated incorrect innodb_concurrency_tickets value: '0'
show variables like "innodb_concurrency_tickets";
Variable_name Value
innodb_concurrency_tickets 1
@@ -1970,7 +1970,7 @@ explain select count(*) from t1 where v between 'a' and 'a ' and v between '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
alter table t1 add unique(v);
-ERROR 23000: Duplicate entry '{ ' for key 'v_2'
+ERROR 23000: Duplicate entry 'v' for key 'v_2'
alter table t1 add key(v);
select concat('*',v,'*',c,'*',t,'*') as qq from t1 where v='a';
qq
@@ -2377,6 +2377,8 @@ t1 CREATE TABLE `t1` (
) 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` (
@@ -2721,7 +2723,7 @@ create table t3 (s1 varchar(2) binary,primary key (s1)) engine=innodb;
create table t4 (s1 char(2) binary,primary key (s1)) engine=innodb;
insert into t1 values (0x41),(0x4120),(0x4100);
insert into t2 values (0x41),(0x4120),(0x4100);
-ERROR 23000: Duplicate entry 'A' for key 'PRIMARY'
+ERROR 23000: Duplicate entry 'A\x00' for key 'PRIMARY'
insert into t2 values (0x41),(0x4120);
insert into t3 values (0x41),(0x4120),(0x4100);
ERROR 23000: Duplicate entry 'A ' for key 'PRIMARY'
@@ -3086,7 +3088,7 @@ ERROR HY000: Lock wait timeout exceeded; try restarting transaction
commit;
drop table t1, t2, t3, t5, t6, t8, t9;
CREATE TABLE t1 (DB_ROW_ID int) engine=innodb;
-ERROR HY000: Can't create table 'test.t1' (errno: -1)
+ERROR 42000: Incorrect column name 'DB_ROW_ID'
CREATE TABLE t1 (
a BIGINT(20) NOT NULL,
PRIMARY KEY (a)
@@ -3190,6 +3192,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 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/r/innodb_bug34300.result b/mysql-test/r/innodb_bug34300.result
index 03ae355de7b..ae9fee81ad7 100644
--- a/mysql-test/r/innodb_bug34300.result
+++ b/mysql-test/r/innodb_bug34300.result
@@ -1,9 +1,4 @@
-SELECT f4, f8 FROM bug34300;
f4 f8
xxx zzz
-ALTER TABLE bug34300 ADD COLUMN (f10 INT);
-SELECT f4, f8 FROM bug34300;
f4 f8
xxx zzz
-DROP TABLE bug34300;
-SET @@global.max_allowed_packet=default;
diff --git a/mysql-test/r/innodb_bug42101-nonzero.result b/mysql-test/r/innodb_bug42101-nonzero.result
index 277dfffdd35..f43cb9da239 100644
--- a/mysql-test/r/innodb_bug42101-nonzero.result
+++ b/mysql-test/r/innodb_bug42101-nonzero.result
@@ -1,5 +1,5 @@
set global innodb_commit_concurrency=0;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_commit_concurrency' can't be set to the value of '0'
select @@innodb_commit_concurrency;
@@innodb_commit_concurrency
1
@@ -16,7 +16,7 @@ select @@innodb_commit_concurrency;
@@innodb_commit_concurrency
1
set global innodb_commit_concurrency=0;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_commit_concurrency' can't be set to the value of '0'
select @@innodb_commit_concurrency;
@@innodb_commit_concurrency
1
diff --git a/mysql-test/r/innodb_bug42101.result b/mysql-test/r/innodb_bug42101.result
index 805097ffe9d..4e3367d5a54 100644
--- a/mysql-test/r/innodb_bug42101.result
+++ b/mysql-test/r/innodb_bug42101.result
@@ -3,12 +3,12 @@ select @@innodb_commit_concurrency;
@@innodb_commit_concurrency
0
set global innodb_commit_concurrency=1;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_commit_concurrency' can't be set to the value of '1'
select @@innodb_commit_concurrency;
@@innodb_commit_concurrency
0
set global innodb_commit_concurrency=42;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_commit_concurrency' can't be set to the value of '42'
select @@innodb_commit_concurrency;
@@innodb_commit_concurrency
0
diff --git a/mysql-test/r/innodb_bug44369.result b/mysql-test/r/innodb_bug44369.result
index 9cf79aeffab..ff25c774aa2 100644
--- a/mysql-test/r/innodb_bug44369.result
+++ b/mysql-test/r/innodb_bug44369.result
@@ -1,14 +1,6 @@
create table bug44369 (DB_ROW_ID int) engine=innodb;
-ERROR HY000: Can't create table 'test.bug44369' (errno: -1)
+ERROR 42000: Incorrect column name 'DB_ROW_ID'
create table bug44369 (db_row_id int) engine=innodb;
-ERROR HY000: Can't create table 'test.bug44369' (errno: -1)
-show warnings;
-Level Code Message
-Warning 1005 Error creating table 'test/bug44369' with column name 'db_row_id'. 'db_row_id' is a reserved name. Please try to re-create the table with a different column name.
-Error 1005 Can't create table 'test.bug44369' (errno: -1)
+ERROR 42000: Incorrect column name 'db_row_id'
create table bug44369 (db_TRX_Id int) engine=innodb;
-ERROR HY000: Can't create table 'test.bug44369' (errno: -1)
-show warnings;
-Level Code Message
-Warning 1005 Error creating table 'test/bug44369' with column name 'db_TRX_Id'. 'db_TRX_Id' is a reserved name. Please try to re-create the table with a different column name.
-Error 1005 Can't create table 'test.bug44369' (errno: -1)
+ERROR 42000: Incorrect column name 'db_TRX_Id'
diff --git a/mysql-test/suite/innodb/r/innodb_bug44571.result b/mysql-test/r/innodb_bug44571.result
index 36374edcb3e..36374edcb3e 100644
--- a/mysql-test/suite/innodb/r/innodb_bug44571.result
+++ b/mysql-test/r/innodb_bug44571.result
diff --git a/mysql-test/r/innodb_bug46000.result b/mysql-test/r/innodb_bug46000.result
index ccf7cc56859..c8e3db8d641 100644
--- a/mysql-test/r/innodb_bug46000.result
+++ b/mysql-test/r/innodb_bug46000.result
@@ -1,17 +1,19 @@
create table bug46000(`id` int,key `GEN_CLUST_INDEX`(`id`))engine=innodb;
-ERROR HY000: Can't create table 'test.bug46000' (errno: -1)
+ERROR 42000: Incorrect index name 'GEN_CLUST_INDEX'
create table bug46000(`id` int, key `GEN_clust_INDEX`(`id`))engine=innodb;
-ERROR HY000: Can't create table 'test.bug46000' (errno: -1)
+ERROR 42000: Incorrect index name 'GEN_CLUST_INDEX'
show warnings;
Level Code Message
-Warning 1005 Cannot Create Index with name 'GEN_CLUST_INDEX'. The name is reserved for the system default primary index.
+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 1005 Can't create table 'test.bug46000' (errno: -1)
create table bug46000(id int) engine=innodb;
create index GEN_CLUST_INDEX on bug46000(id);
-ERROR HY000: Can't create table '#sql-temporary' (errno: -1)
+ERROR 42000: Incorrect index name 'GEN_CLUST_INDEX'
show warnings;
Level Code Message
-Warning 1005 Cannot Create Index with name 'GEN_CLUST_INDEX'. The name is reserved for the system default primary index.
-Error 1005 Can't create table '#sql-temporary' (errno: -1)
+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/r/innodb_gis.result b/mysql-test/r/innodb_gis.result
index c6c775afc9f..0ce1ebe56ad 100644
--- a/mysql-test/r/innodb_gis.result
+++ b/mysql-test/r/innodb_gis.result
@@ -266,7 +266,7 @@ fid AsText(EndPoint(g))
107 POINT(40 10)
SELECT fid, GLength(g) FROM gis_line ORDER by fid;
fid GLength(g)
-105 24.142135623731
+105 24.14213562373095
106 40
107 30
SELECT fid, NumPoints(g) FROM gis_line ORDER by fid;
@@ -292,7 +292,7 @@ Note 1003 select astext(startpoint(`test`.`gis_line`.`g`)) AS `AsText(StartPoint
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)
+109 POINT(25.416666666666668 25.416666666666668)
110 POINT(20 10)
SELECT fid, Area(g) FROM gis_polygon ORDER by fid;
fid Area(g)
@@ -326,8 +326,8 @@ fid IsClosed(g)
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)
+117 POINT(55.58852775304245 17.426536064113982)
+118 POINT(55.58852775304245 17.426536064113982)
119 POINT(2 2)
SELECT fid, Area(g) FROM gis_multi_polygon ORDER by fid;
fid Area(g)
diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/r/innodb_mysql.result
index 402ab3c1b16..76ff2cfc0f3 100644
--- a/mysql-test/r/innodb_mysql.result
+++ b/mysql-test/r/innodb_mysql.result
@@ -2274,3 +2274,23 @@ DROP PROCEDURE p1;
DROP VIEW v1;
DROP TABLE t1,t2;
End of 5.1 tests
+#
+# Test for bug #39932 "create table fails if column for FK is in different
+# case than in corr index".
+#
+drop tables if exists t1, t2;
+create table t1 (pk int primary key) engine=InnoDB;
+# Even although the below statement uses uppercased field names in
+# foreign key definition it still should be able to find explicitly
+# created supporting index. So it should succeed and should not
+# create any additional supporting indexes.
+create table t2 (fk int, key x (fk),
+constraint x foreign key (FK) references t1 (PK)) engine=InnoDB;
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `fk` int(11) DEFAULT NULL,
+ KEY `x` (`fk`),
+ CONSTRAINT `x` FOREIGN KEY (`fk`) REFERENCES `t1` (`pk`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+drop table t2, t1;
diff --git a/mysql-test/r/insert.result b/mysql-test/r/insert.result
index 3f91039d592..b322c5da73a 100644
--- a/mysql-test/r/insert.result
+++ b/mysql-test/r/insert.result
@@ -175,12 +175,12 @@ Warning 1264 Out of range value for column 'f_float_3_1_u' at row 1
select * from t1 where number =last_insert_id();
number 4
original_value 1e+1111111111a
-f_double 1.79769313486232e+308
-f_float 3.40282e+38
+f_double 1.7976931348623157e308
+f_float 3.40282e38
f_double_7_2 99999.99
f_float_4_3 9.999
-f_double_u 1.79769313486232e+308
-f_float_u 3.40282e+38
+f_double_u 1.7976931348623157e308
+f_float_u 3.40282e38
f_double_15_1_u 99999999999999.9
f_float_3_1_u 99.9
set @value= "-1e+1111111111a";
@@ -204,8 +204,8 @@ Warning 1264 Out of range value for column 'f_float_3_1_u' at row 1
select * from t1 where number =last_insert_id();
number 5
original_value -1e+1111111111a
-f_double -1.79769313486232e+308
-f_float -3.40282e+38
+f_double -1.7976931348623157e308
+f_float -3.40282e38
f_double_7_2 -99999.99
f_float_4_3 -9.999
f_double_u 0
@@ -227,13 +227,13 @@ Warning 1264 Out of range value for column 'f_double_15_1_u' at row 1
Warning 1264 Out of range value for column 'f_float_3_1_u' at row 1
select * from t1 where number =last_insert_id();
number 6
-original_value 1e+111
-f_double 1e+111
-f_float 3.40282e+38
+original_value 1e111
+f_double 1e111
+f_float 3.40282e38
f_double_7_2 99999.99
f_float_4_3 9.999
-f_double_u 1e+111
-f_float_u 3.40282e+38
+f_double_u 1e111
+f_float_u 3.40282e38
f_double_15_1_u 99999999999999.9
f_float_3_1_u 99.9
set @value= -1e+111;
@@ -248,9 +248,9 @@ Warning 1264 Out of range value for column 'f_double_15_1_u' at row 1
Warning 1264 Out of range value for column 'f_float_3_1_u' at row 1
select * from t1 where number =last_insert_id();
number 7
-original_value -1e+111
-f_double -1e+111
-f_float -3.40282e+38
+original_value -1e111
+f_double -1e111
+f_float -3.40282e38
f_double_7_2 -99999.99
f_float_4_3 -9.999
f_double_u 0
@@ -355,17 +355,17 @@ insert into t2 values (1,12), (2,24);
insert into v1 (f1) values (3) on duplicate key update f3= f3 + 10;
ERROR HY000: Can not modify more than one base table through a join view 'test.v1'
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'
select * from t1;
f1 f2
1 11
2 22
-3 NULL
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'
select * from t1;
f1 f2
1 11
2 22
-12 NULL
drop view v1;
drop table t1,t2;
create table t1 (id int primary key auto_increment, data int, unique(data));
@@ -524,42 +524,36 @@ INSERT INTO t1(a,b) VALUES (1.25e-175, 1.25e-175);
INSERT INTO t1(a,c) VALUES (1.225e+0, 1.225e+0);
INSERT INTO t1(a,c) VALUES (1.37e+0, 1.37e+0);
INSERT INTO t1(a,c) VALUES (-1.37e+0, -1.37e+0);
-Warnings:
-Warning 1265 Data truncated for column 'c' at row 1
INSERT INTO t1(a,c) VALUES (1.87e-3, 1.87e-3);
Warnings:
Warning 1265 Data truncated for column 'c' at row 1
INSERT INTO t1(a,c) VALUES (-1.87e-2, -1.87e-2);
-Warnings:
-Warning 1265 Data truncated for column 'c' at row 1
INSERT INTO t1(a,c) VALUES (5000e+0, 5000e+0);
INSERT INTO t1(a,c) VALUES (-5000e+0, -5000e+0);
-Warnings:
-Warning 1265 Data truncated for column 'c' at row 1
SELECT * FROM t1;
a b c
9.999999 10 10
-1.225e-05 1.2e-05 1e-0
-0.0001225 0.00012 NULL
+0.00001225 1.22e-5 1e-5
+0.0001225 1.22e-4 NULL
0.1225 0.1225 NULL
0.1225877 0.12259 NULL
12.25 12.25 NULL
12.25 12.25 12.2
122500 122500 NULL
-12250000000 1.2e+10 NULL
-1.225e+15 1.2e+15 NULL
+12250000000 1.22e10 NULL
+1.225e15 1.22e15 NULL
5000000 5000000 NULL
-1.25e+78 1.2e+78 NULL
+1.25e78 1.25e78 NULL
1.25e-94 1.2e-94 NULL
-1.25e+203 1e+203 NULL
+1.25e203 1.2e203 NULL
1.25e-175 1e-175 NULL
1.225 NULL 1.23
1.37 NULL 1.37
--1.37 NULL -1.3
-0.00187 NULL 0.00
--0.0187 NULL -0.0
+-1.37 NULL -1.4
+0.00187 NULL 2e-3
+-0.0187 NULL 0
5000 NULL 5000
--5000 NULL -500
+-5000 NULL -5e3
DROP TABLE t1;
CREATE TABLE t1 (
a char(20) NOT NULL,
@@ -586,32 +580,30 @@ INSERT INTO t1(a,c) VALUES (1.37e+0, 1.37e+0);
INSERT INTO t1(a,c) VALUES (-1.37e+0, -1.37e+0);
INSERT INTO t1(a,c) VALUES (1.87e-3, 1.87e-3);
INSERT INTO t1(a,c) VALUES (-1.87e-2, -1.87e-2);
-Warnings:
-Warning 1265 Data truncated for column 'c' at row 1
INSERT INTO t1(a,c) VALUES (5000e+0, 5000e+0);
INSERT INTO t1(a,c) VALUES (-5000e+0, -5000e+0);
SELECT * FROM t1;
a b c
9.999999 10 9.999
-1.225e-05 1.2e-05 1e-05
-0.0001225 0.00012 NULL
+0.00001225 1.22e-5 1e-5
+0.0001225 1.22e-4 NULL
0.1225 0.1225 NULL
0.1225877 0.12259 NULL
12.25 12.25 NULL
12.25 12.25 12.25
122500 122500 NULL
-12250000000 1.2e+10 NULL
-1.225e+15 1.2e+15 NULL
+12250000000 1.22e10 NULL
+1.225e15 1.22e15 NULL
5000000 5000000 NULL
-1.25e+78 1.2e+78 NULL
+1.25e78 1.25e78 NULL
1.25e-94 1.2e-94 NULL
-1.25e+203 1e+203 NULL
+1.25e203 1.2e203 NULL
1.25e-175 1e-175 NULL
1.225 NULL 1.225
1.37 NULL 1.37
-1.37 NULL -1.37
0.00187 NULL 0.002
--0.0187 NULL -0.01
+-0.0187 NULL -0.02
5000 NULL 5000
-5000 NULL -5000
DROP TABLE t1;
@@ -639,3 +631,43 @@ CREATE TABLE t2(f1 CHAR(1));
INSERT INTO t2 SELECT f1 FROM t1;
DROP TABLE t1, t2;
End of 5.0 tests.
+#
+# Bug#34898 "mysql_info() reports 0 warnings while
+# mysql_warning_count() reports 1"
+# Check that the number of warnings reported by
+# mysql_info() is correct.
+#
+drop table if exists t1;
+create table t1 (data varchar(4) not null);
+set sql_mode='error_for_division_by_zero';
+#
+# Demonstrate that the number of warnings matches
+# the information in mysql_info().
+#
+insert t1 (data) values ('letter'), (1/0);
+affected rows: 2
+info: Records: 2 Duplicates: 0 Warnings: 3
+Warnings:
+Warning 1265 Data truncated for column 'data' at row 1
+Warning 1365 Division by 0
+Warning 1048 Column 'data' cannot be null
+update t1 set data='envelope' where 1/0 or 1;
+affected rows: 2
+info: Rows matched: 2 Changed: 2 Warnings: 3
+Warnings:
+Warning 1365 Division by 0
+Warning 1265 Data truncated for column 'data' at row 1
+Warning 1265 Data truncated for column 'data' at row 2
+insert t1 (data) values (default), (1/0), ('dead beef');
+affected rows: 3
+info: Records: 3 Duplicates: 0 Warnings: 4
+Warnings:
+Warning 1364 Field 'data' doesn't have a default value
+Warning 1365 Division by 0
+Warning 1048 Column 'data' cannot be null
+Warning 1265 Data truncated for column 'data' at row 3
+set sql_mode=default;
+drop table t1;
+#
+# End of 5.4 tests
+#
diff --git a/mysql-test/r/insert_notembedded.result b/mysql-test/r/insert_notembedded.result
index ac69cb65972..2315d695abe 100644
--- a/mysql-test/r/insert_notembedded.result
+++ b/mysql-test/r/insert_notembedded.result
@@ -122,5 +122,6 @@ a b
connection: default
select * from t1;
a b
+unlock tables;
drop table t1;
set low_priority_updates=default;
diff --git a/mysql-test/r/ipv4_as_ipv6.result b/mysql-test/r/ipv4_as_ipv6.result
new file mode 100644
index 00000000000..8523dc82f02
--- /dev/null
+++ b/mysql-test/r/ipv4_as_ipv6.result
@@ -0,0 +1,179 @@
+=============Test of '127.0.0.1' (IPv4) ===========================
+mysqld is alive
+CREATE USER testuser@'127.0.0.1' identified by '1234';
+GRANT ALL ON test.* TO testuser@'127.0.0.1';
+SHOW GRANTS FOR testuser@'127.0.0.1';
+Grants for testuser@127.0.0.1
+GRANT USAGE ON *.* TO 'testuser'@'127.0.0.1' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'127.0.0.1'
+SET @nip= inet_aton('127.0.0.1');
+SELECT @nip;
+@nip
+2130706433
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+127.0.0.1
+SELECT USER();
+USER()
+root@localhost
+SELECT current_user();
+current_user()
+root@localhost
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'127.0.0.1';
+RENAME USER testuser@'127.0.0.1' to testuser1@'127.0.0.1';
+SET PASSWORD FOR testuser1@'127.0.0.1' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@localhost
+DROP USER testuser1@'127.0.0.1';
+=============Test of '0:0:0:0:0:FFFF:127.0.0.1' ===================
+mysqld is alive
+CREATE USER testuser@'0:0:0:0:0:FFFF:127.0.0.1' identified by '1234';
+GRANT ALL ON test.* TO testuser@'0:0:0:0:0:FFFF:127.0.0.1';
+SHOW GRANTS FOR testuser@'0:0:0:0:0:FFFF:127.0.0.1';
+Grants for testuser@0:0:0:0:0:FFFF:127.0.0.1
+GRANT USAGE ON *.* TO 'testuser'@'0:0:0:0:0:FFFF:127.0.0.1' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'0:0:0:0:0:FFFF:127.0.0.1'
+SET @nip= inet_aton('0:0:0:0:0:FFFF:127.0.0.1');
+SELECT @nip;
+@nip
+NULL
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+NULL
+SELECT USER();
+USER()
+root@localhost
+SELECT current_user();
+current_user()
+root@localhost
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'0:0:0:0:0:FFFF:127.0.0.1';
+RENAME USER testuser@'0:0:0:0:0:FFFF:127.0.0.1' to testuser1@'0:0:0:0:0:FFFF:127.0.0.1';
+SET PASSWORD FOR testuser1@'0:0:0:0:0:FFFF:127.0.0.1' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@localhost
+DROP USER testuser1@'0:0:0:0:0:FFFF:127.0.0.1';
+=============Test of '0000:0000:0000:0000:0000:FFFF:127.0.0.1' ====
+mysqld is alive
+CREATE USER testuser@'0000:0000:0000:0000:0000:FFFF:127.0.0.1' identified by '1234';
+GRANT ALL ON test.* TO testuser@'0000:0000:0000:0000:0000:FFFF:127.0.0.1';
+SHOW GRANTS FOR testuser@'0000:0000:0000:0000:0000:FFFF:127.0.0.1';
+Grants for testuser@0000:0000:0000:0000:0000:FFFF:127.0.0.1
+GRANT USAGE ON *.* TO 'testuser'@'0000:0000:0000:0000:0000:FFFF:127.0.0.1' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'0000:0000:0000:0000:0000:FFFF:127.0.0.1'
+SET @nip= inet_aton('0000:0000:0000:0000:0000:FFFF:127.0.0.1');
+SELECT @nip;
+@nip
+NULL
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+NULL
+SELECT USER();
+USER()
+root@localhost
+SELECT current_user();
+current_user()
+root@localhost
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'0000:0000:0000:0000:0000:FFFF:127.0.0.1';
+RENAME USER testuser@'0000:0000:0000:0000:0000:FFFF:127.0.0.1' to testuser1@'0000:0000:0000:0000:0000:FFFF:127.0.0.1';
+SET PASSWORD FOR testuser1@'0000:0000:0000:0000:0000:FFFF:127.0.0.1' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@localhost
+DROP USER testuser1@'0000:0000:0000:0000:0000:FFFF:127.0.0.1';
+=============Test of '0:0000:0000:0:0000:FFFF:127.0.0.1' ====
+mysqld is alive
+CREATE USER testuser@'0:0000:0000:0:0000:FFFF:127.0.0.1' identified by '1234';
+GRANT ALL ON test.* TO testuser@'0:0000:0000:0:0000:FFFF:127.0.0.1';
+SHOW GRANTS FOR testuser@'0:0000:0000:0:0000:FFFF:127.0.0.1';
+Grants for testuser@0:0000:0000:0:0000:FFFF:127.0.0.1
+GRANT USAGE ON *.* TO 'testuser'@'0:0000:0000:0:0000:FFFF:127.0.0.1' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'0:0000:0000:0:0000:FFFF:127.0.0.1'
+SET @nip= inet_aton('0:0000:0000:0:0000:FFFF:127.0.0.1');
+SELECT @nip;
+@nip
+NULL
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+NULL
+SELECT USER();
+USER()
+root@localhost
+SELECT current_user();
+current_user()
+root@localhost
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'0:0000:0000:0:0000:FFFF:127.0.0.1';
+RENAME USER testuser@'0:0000:0000:0:0000:FFFF:127.0.0.1' to testuser1@'0:0000:0000:0:0000:FFFF:127.0.0.1';
+SET PASSWORD FOR testuser1@'0:0000:0000:0:0000:FFFF:127.0.0.1' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@localhost
+DROP USER testuser1@'0:0000:0000:0:0000:FFFF:127.0.0.1';
+=============Test of '0::0000:FFFF:127.0.0.1' ====
+mysqld is alive
+CREATE USER testuser@'0::0000:FFFF:127.0.0.1' identified by '1234';
+GRANT ALL ON test.* TO testuser@'0::0000:FFFF:127.0.0.1';
+SHOW GRANTS FOR testuser@'0::0000:FFFF:127.0.0.1';
+Grants for testuser@0::0000:FFFF:127.0.0.1
+GRANT USAGE ON *.* TO 'testuser'@'0::0000:FFFF:127.0.0.1' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'0::0000:FFFF:127.0.0.1'
+SET @nip= inet_aton('0::0000:FFFF:127.0.0.1');
+SELECT @nip;
+@nip
+NULL
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+NULL
+SELECT USER();
+USER()
+root@localhost
+SELECT current_user();
+current_user()
+root@localhost
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'0::0000:FFFF:127.0.0.1';
+RENAME USER testuser@'0::0000:FFFF:127.0.0.1' to testuser1@'0::0000:FFFF:127.0.0.1';
+SET PASSWORD FOR testuser1@'0::0000:FFFF:127.0.0.1' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@localhost
+DROP USER testuser1@'0::0000:FFFF:127.0.0.1';
+=============Test of '0:0:0:0:0:FFFF:127.0.0.1/96' ================
+=============Test of '::FFFF:127.0.0.1' ===========================
+mysqld is alive
+CREATE USER testuser@'::FFFF:127.0.0.1' identified by '1234';
+GRANT ALL ON test.* TO testuser@'::FFFF:127.0.0.1';
+SHOW GRANTS FOR testuser@'::FFFF:127.0.0.1';
+Grants for testuser@::FFFF:127.0.0.1
+GRANT USAGE ON *.* TO 'testuser'@'::FFFF:127.0.0.1' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'::FFFF:127.0.0.1'
+SET @nip= inet_aton('::FFFF:127.0.0.1');
+SELECT @nip;
+@nip
+NULL
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+NULL
+SELECT USER();
+USER()
+root@localhost
+SELECT current_user();
+current_user()
+root@localhost
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'::FFFF:127.0.0.1';
+RENAME USER testuser@'::FFFF:127.0.0.1' to testuser1@'::FFFF:127.0.0.1';
+SET PASSWORD FOR testuser1@'::FFFF:127.0.0.1' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@localhost
+DROP USER testuser1@'::FFFF:127.0.0.1';
+=============Test of '::FFFF:127.0.0.1/96' ========================
+=============Test of '::1' ========================
+connect (con1, ::1, root, , test, MASTER_MYPORT,);
+Got one of the listed errors
diff --git a/mysql-test/r/ipv4_as_ipv6_win.result b/mysql-test/r/ipv4_as_ipv6_win.result
new file mode 100644
index 00000000000..45e23d4d7e6
--- /dev/null
+++ b/mysql-test/r/ipv4_as_ipv6_win.result
@@ -0,0 +1,32 @@
+=============Test of '127.0.0.1' (IPv4) ===========================
+mysqld is alive
+CREATE USER testuser@'127.0.0.1' identified by '1234';
+GRANT ALL ON test.* TO testuser@'127.0.0.1';
+SHOW GRANTS FOR testuser@'127.0.0.1';
+Grants for testuser@127.0.0.1
+GRANT USAGE ON *.* TO 'testuser'@'127.0.0.1' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'127.0.0.1'
+SET @nip= inet_aton('127.0.0.1');
+SELECT @nip;
+@nip
+2130706433
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+127.0.0.1
+SELECT USER();
+USER()
+root@127.0.0.1
+SELECT current_user();
+current_user()
+root@127.0.0.1
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'127.0.0.1';
+RENAME USER testuser@'127.0.0.1' to testuser1@'127.0.0.1';
+SET PASSWORD FOR testuser1@'127.0.0.1' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@127.0.0.1
+DROP USER testuser1@'127.0.0.1';
+=============Test of '::1' ========================
+connect (con1, ::1, root, , test, MASTER_MYPORT);
+Got one of the listed errors
diff --git a/mysql-test/r/ipv6.result b/mysql-test/r/ipv6.result
new file mode 100644
index 00000000000..566938296a9
--- /dev/null
+++ b/mysql-test/r/ipv6.result
@@ -0,0 +1,264 @@
+=============Test of '::1' ========================================
+mysqld is alive
+CREATE USER testuser@'::1' identified by '1234';
+GRANT ALL ON test.* TO testuser@'::1';
+SHOW GRANTS FOR testuser@'::1';
+Grants for testuser@::1
+GRANT USAGE ON *.* TO 'testuser'@'::1' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'::1'
+SET @nip= inet_aton('::1');
+SELECT @nip;
+@nip
+NULL
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+NULL
+SELECT USER();
+USER()
+root@localhost
+SELECT current_user();
+current_user()
+root@localhost
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'::1';
+RENAME USER testuser@'::1' to testuser1@'::1';
+SET PASSWORD FOR testuser1@'::1' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@localhost
+DROP USER testuser1@'::1';
+=============Test of '::1/128' ====================================
+=============Test of '0000:0000:0000:0000:0000:0000:0000:0001' ====
+mysqld is alive
+CREATE USER testuser@'0000:0000:0000:0000:0000:0000:0000:0001' identified by '1234';
+GRANT ALL ON test.* TO testuser@'0000:0000:0000:0000:0000:0000:0000:0001';
+SHOW GRANTS FOR testuser@'0000:0000:0000:0000:0000:0000:0000:0001';
+Grants for testuser@0000:0000:0000:0000:0000:0000:0000:0001
+GRANT USAGE ON *.* TO 'testuser'@'0000:0000:0000:0000:0000:0000:0000:0001' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'0000:0000:0000:0000:0000:0000:0000:0001'
+SET @nip= inet_aton('0000:0000:0000:0000:0000:0000:0000:0001');
+SELECT @nip;
+@nip
+NULL
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+NULL
+SELECT USER();
+USER()
+root@localhost
+SELECT current_user();
+current_user()
+root@localhost
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'0000:0000:0000:0000:0000:0000:0000:0001';
+RENAME USER testuser@'0000:0000:0000:0000:0000:0000:0000:0001' to testuser1@'0000:0000:0000:0000:0000:0000:0000:0001';
+SET PASSWORD FOR testuser1@'0000:0000:0000:0000:0000:0000:0000:0001' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@localhost
+DROP USER testuser1@'0000:0000:0000:0000:0000:0000:0000:0001';
+=============Test of '0:0:0:0:0:0:0:1' ============================
+mysqld is alive
+CREATE USER testuser@'0:0:0:0:0:0:0:1' identified by '1234';
+GRANT ALL ON test.* TO testuser@'0:0:0:0:0:0:0:1';
+SHOW GRANTS FOR testuser@'0:0:0:0:0:0:0:1';
+Grants for testuser@0:0:0:0:0:0:0:1
+GRANT USAGE ON *.* TO 'testuser'@'0:0:0:0:0:0:0:1' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'0:0:0:0:0:0:0:1'
+SET @nip= inet_aton('0:0:0:0:0:0:0:1');
+SELECT @nip;
+@nip
+NULL
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+NULL
+SELECT USER();
+USER()
+root@localhost
+SELECT current_user();
+current_user()
+root@localhost
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'0:0:0:0:0:0:0:1';
+RENAME USER testuser@'0:0:0:0:0:0:0:1' to testuser1@'0:0:0:0:0:0:0:1';
+SET PASSWORD FOR testuser1@'0:0:0:0:0:0:0:1' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@localhost
+DROP USER testuser1@'0:0:0:0:0:0:0:1';
+=============Test of '127.0.0.1' (IPv4) ===========================
+mysqld is alive
+CREATE USER testuser@'127.0.0.1' identified by '1234';
+GRANT ALL ON test.* TO testuser@'127.0.0.1';
+SHOW GRANTS FOR testuser@'127.0.0.1';
+Grants for testuser@127.0.0.1
+GRANT USAGE ON *.* TO 'testuser'@'127.0.0.1' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'127.0.0.1'
+SET @nip= inet_aton('127.0.0.1');
+SELECT @nip;
+@nip
+2130706433
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+127.0.0.1
+SELECT USER();
+USER()
+root@localhost
+SELECT current_user();
+current_user()
+root@localhost
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'127.0.0.1';
+RENAME USER testuser@'127.0.0.1' to testuser1@'127.0.0.1';
+SET PASSWORD FOR testuser1@'127.0.0.1' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@localhost
+DROP USER testuser1@'127.0.0.1';
+=============Test of '0:0:0:0:0:FFFF:127.0.0.1' ===================
+mysqld is alive
+CREATE USER testuser@'0:0:0:0:0:FFFF:127.0.0.1' identified by '1234';
+GRANT ALL ON test.* TO testuser@'0:0:0:0:0:FFFF:127.0.0.1';
+SHOW GRANTS FOR testuser@'0:0:0:0:0:FFFF:127.0.0.1';
+Grants for testuser@0:0:0:0:0:FFFF:127.0.0.1
+GRANT USAGE ON *.* TO 'testuser'@'0:0:0:0:0:FFFF:127.0.0.1' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'0:0:0:0:0:FFFF:127.0.0.1'
+SET @nip= inet_aton('0:0:0:0:0:FFFF:127.0.0.1');
+SELECT @nip;
+@nip
+NULL
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+NULL
+SELECT USER();
+USER()
+root@localhost
+SELECT current_user();
+current_user()
+root@localhost
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'0:0:0:0:0:FFFF:127.0.0.1';
+RENAME USER testuser@'0:0:0:0:0:FFFF:127.0.0.1' to testuser1@'0:0:0:0:0:FFFF:127.0.0.1';
+SET PASSWORD FOR testuser1@'0:0:0:0:0:FFFF:127.0.0.1' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@localhost
+DROP USER testuser1@'0:0:0:0:0:FFFF:127.0.0.1';
+=============Test of '0000:0000:0000:0000:0000:FFFF:127.0.0.1' ====
+mysqld is alive
+CREATE USER testuser@'0000:0000:0000:0000:0000:FFFF:127.0.0.1' identified by '1234';
+GRANT ALL ON test.* TO testuser@'0000:0000:0000:0000:0000:FFFF:127.0.0.1';
+SHOW GRANTS FOR testuser@'0000:0000:0000:0000:0000:FFFF:127.0.0.1';
+Grants for testuser@0000:0000:0000:0000:0000:FFFF:127.0.0.1
+GRANT USAGE ON *.* TO 'testuser'@'0000:0000:0000:0000:0000:FFFF:127.0.0.1' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'0000:0000:0000:0000:0000:FFFF:127.0.0.1'
+SET @nip= inet_aton('0000:0000:0000:0000:0000:FFFF:127.0.0.1');
+SELECT @nip;
+@nip
+NULL
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+NULL
+SELECT USER();
+USER()
+root@localhost
+SELECT current_user();
+current_user()
+root@localhost
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'0000:0000:0000:0000:0000:FFFF:127.0.0.1';
+RENAME USER testuser@'0000:0000:0000:0000:0000:FFFF:127.0.0.1' to testuser1@'0000:0000:0000:0000:0000:FFFF:127.0.0.1';
+SET PASSWORD FOR testuser1@'0000:0000:0000:0000:0000:FFFF:127.0.0.1' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@localhost
+DROP USER testuser1@'0000:0000:0000:0000:0000:FFFF:127.0.0.1';
+=============Test of '0:0000:0000:0:0000:FFFF:127.0.0.1' ====
+mysqld is alive
+CREATE USER testuser@'0:0000:0000:0:0000:FFFF:127.0.0.1' identified by '1234';
+GRANT ALL ON test.* TO testuser@'0:0000:0000:0:0000:FFFF:127.0.0.1';
+SHOW GRANTS FOR testuser@'0:0000:0000:0:0000:FFFF:127.0.0.1';
+Grants for testuser@0:0000:0000:0:0000:FFFF:127.0.0.1
+GRANT USAGE ON *.* TO 'testuser'@'0:0000:0000:0:0000:FFFF:127.0.0.1' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'0:0000:0000:0:0000:FFFF:127.0.0.1'
+SET @nip= inet_aton('0:0000:0000:0:0000:FFFF:127.0.0.1');
+SELECT @nip;
+@nip
+NULL
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+NULL
+SELECT USER();
+USER()
+root@localhost
+SELECT current_user();
+current_user()
+root@localhost
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'0:0000:0000:0:0000:FFFF:127.0.0.1';
+RENAME USER testuser@'0:0000:0000:0:0000:FFFF:127.0.0.1' to testuser1@'0:0000:0000:0:0000:FFFF:127.0.0.1';
+SET PASSWORD FOR testuser1@'0:0000:0000:0:0000:FFFF:127.0.0.1' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@localhost
+DROP USER testuser1@'0:0000:0000:0:0000:FFFF:127.0.0.1';
+=============Test of '0::0000:FFFF:127.0.0.1' ====
+mysqld is alive
+CREATE USER testuser@'0::0000:FFFF:127.0.0.1' identified by '1234';
+GRANT ALL ON test.* TO testuser@'0::0000:FFFF:127.0.0.1';
+SHOW GRANTS FOR testuser@'0::0000:FFFF:127.0.0.1';
+Grants for testuser@0::0000:FFFF:127.0.0.1
+GRANT USAGE ON *.* TO 'testuser'@'0::0000:FFFF:127.0.0.1' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'0::0000:FFFF:127.0.0.1'
+SET @nip= inet_aton('0::0000:FFFF:127.0.0.1');
+SELECT @nip;
+@nip
+NULL
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+NULL
+SELECT USER();
+USER()
+root@localhost
+SELECT current_user();
+current_user()
+root@localhost
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'0::0000:FFFF:127.0.0.1';
+RENAME USER testuser@'0::0000:FFFF:127.0.0.1' to testuser1@'0::0000:FFFF:127.0.0.1';
+SET PASSWORD FOR testuser1@'0::0000:FFFF:127.0.0.1' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@localhost
+DROP USER testuser1@'0::0000:FFFF:127.0.0.1';
+=============Test of '0:0:0:0:0:FFFF:127.0.0.1/96' ================
+=============Test of '::FFFF:127.0.0.1' ===========================
+mysqld is alive
+CREATE USER testuser@'::FFFF:127.0.0.1' identified by '1234';
+GRANT ALL ON test.* TO testuser@'::FFFF:127.0.0.1';
+SHOW GRANTS FOR testuser@'::FFFF:127.0.0.1';
+Grants for testuser@::FFFF:127.0.0.1
+GRANT USAGE ON *.* TO 'testuser'@'::FFFF:127.0.0.1' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'::FFFF:127.0.0.1'
+SET @nip= inet_aton('::FFFF:127.0.0.1');
+SELECT @nip;
+@nip
+NULL
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+NULL
+SELECT USER();
+USER()
+root@localhost
+SELECT current_user();
+current_user()
+root@localhost
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'::FFFF:127.0.0.1';
+RENAME USER testuser@'::FFFF:127.0.0.1' to testuser1@'::FFFF:127.0.0.1';
+SET PASSWORD FOR testuser1@'::FFFF:127.0.0.1' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@localhost
+DROP USER testuser1@'::FFFF:127.0.0.1';
+=============Test of '::FFFF:127.0.0.1/96' ========================
diff --git a/mysql-test/r/ipv6_win.result b/mysql-test/r/ipv6_win.result
new file mode 100644
index 00000000000..8082e8aa25e
--- /dev/null
+++ b/mysql-test/r/ipv6_win.result
@@ -0,0 +1,88 @@
+=============Test of '::1' ========================================
+mysqld is alive
+CREATE USER testuser@'::1' identified by '1234';
+GRANT ALL ON test.* TO testuser@'::1';
+SHOW GRANTS FOR testuser@'::1';
+Grants for testuser@::1
+GRANT USAGE ON *.* TO 'testuser'@'::1' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'::1'
+SET @nip= inet_aton('::1');
+SELECT @nip;
+@nip
+NULL
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+NULL
+SELECT USER();
+USER()
+root@::1
+SELECT current_user();
+current_user()
+root@::1
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'::1';
+RENAME USER testuser@'::1' to testuser1@'::1';
+SET PASSWORD FOR testuser1@'::1' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@::1
+DROP USER testuser1@'::1';
+=============Test of '::1/128' ====================================
+=============Test of '0000:0000:0000:0000:0000:0000:0000:0001' ====
+mysqld is alive
+CREATE USER testuser@'0000:0000:0000:0000:0000:0000:0000:0001' identified by '1234';
+GRANT ALL ON test.* TO testuser@'0000:0000:0000:0000:0000:0000:0000:0001';
+SHOW GRANTS FOR testuser@'0000:0000:0000:0000:0000:0000:0000:0001';
+Grants for testuser@0000:0000:0000:0000:0000:0000:0000:0001
+GRANT USAGE ON *.* TO 'testuser'@'0000:0000:0000:0000:0000:0000:0000:0001' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'0000:0000:0000:0000:0000:0000:0000:0001'
+SET @nip= inet_aton('0000:0000:0000:0000:0000:0000:0000:0001');
+SELECT @nip;
+@nip
+NULL
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+NULL
+SELECT USER();
+USER()
+root@::1
+SELECT current_user();
+current_user()
+root@::1
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'0000:0000:0000:0000:0000:0000:0000:0001';
+RENAME USER testuser@'0000:0000:0000:0000:0000:0000:0000:0001' to testuser1@'0000:0000:0000:0000:0000:0000:0000:0001';
+SET PASSWORD FOR testuser1@'0000:0000:0000:0000:0000:0000:0000:0001' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@::1
+DROP USER testuser1@'0000:0000:0000:0000:0000:0000:0000:0001';
+=============Test of '0:0:0:0:0:0:0:1' ============================
+mysqld is alive
+CREATE USER testuser@'0:0:0:0:0:0:0:1' identified by '1234';
+GRANT ALL ON test.* TO testuser@'0:0:0:0:0:0:0:1';
+SHOW GRANTS FOR testuser@'0:0:0:0:0:0:0:1';
+Grants for testuser@0:0:0:0:0:0:0:1
+GRANT USAGE ON *.* TO 'testuser'@'0:0:0:0:0:0:0:1' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'0:0:0:0:0:0:0:1'
+SET @nip= inet_aton('0:0:0:0:0:0:0:1');
+SELECT @nip;
+@nip
+NULL
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+NULL
+SELECT USER();
+USER()
+root@::1
+SELECT current_user();
+current_user()
+root@::1
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'0:0:0:0:0:0:0:1';
+RENAME USER testuser@'0:0:0:0:0:0:0:1' to testuser1@'0:0:0:0:0:0:0:1';
+SET PASSWORD FOR testuser1@'0:0:0:0:0:0:0:1' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@::1
+DROP USER testuser1@'0:0:0:0:0:0:0:1';
diff --git a/mysql-test/r/join.result b/mysql-test/r/join.result
index baabf48cb2f..d443e20df76 100644
--- a/mysql-test/r/join.result
+++ b/mysql-test/r/join.result
@@ -752,8 +752,8 @@ statistics.TABLE_NAME, statistics.COLUMN_NAME, statistics.TABLE_CATALOG, statist
columns.TABLE_CATALOG, columns.TABLE_SCHEMA, columns.COLUMN_DEFAULT, columns.IS_NULLABLE, columns.DATA_TYPE, columns.CHARACTER_MAXIMUM_LENGTH, columns.CHARACTER_OCTET_LENGTH, columns.NUMERIC_PRECISION, columns.NUMERIC_SCALE, columns.CHARACTER_SET_NAME, columns.COLLATION_NAME, columns.COLUMN_TYPE, columns.COLUMN_KEY, columns.EXTRA, columns.COLUMN_COMMENT
from information_schema.statistics join information_schema.columns using(table_name,column_name) where table_name='user';
TABLE_NAME COLUMN_NAME TABLE_CATALOG TABLE_SCHEMA NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLLATION SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT TABLE_CATALOG TABLE_SCHEMA COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA COLUMN_COMMENT
-user Host NULL mysql 0 mysql PRIMARY 1 A NULL NULL BTREE NULL mysql NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
-user User NULL mysql 0 mysql PRIMARY 2 A NULL NULL BTREE NULL mysql NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
+user Host def mysql 0 mysql PRIMARY 1 A NULL NULL BTREE def mysql NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
+user User def mysql 0 mysql PRIMARY 2 A NULL NULL BTREE def mysql NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
drop table t1;
drop table t2;
drop table t3;
diff --git a/mysql-test/r/join_optimizer.result b/mysql-test/r/join_optimizer.result
new file mode 100644
index 00000000000..9e667506cfa
--- /dev/null
+++ b/mysql-test/r/join_optimizer.result
@@ -0,0 +1,37 @@
+drop table if exists t0,t1,t2,t3;
+#
+# BUG#38049 incorrect rows estimations with references from preceding table
+#
+create table t0 (a int);
+insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
+create table t1 (a varchar(32));
+insert into t1 values ('owner'),('requester'),('admincc'),('cc');
+CREATE TABLE t2 (
+id int(11) NOT NULL,
+type varchar(32) default NULL,
+PRIMARY KEY (id)
+);
+insert into t2 values (1,'owner'), (2,'admincc');
+CREATE TABLE t3 (
+id int(11) NOT NULL,
+domain varchar(32) default NULL,
+type varchar(32) default NULL,
+PRIMARY KEY (id)
+);
+set @domain='system';
+set @pk=0;
+INSERT INTO t3 select @pk:=@pk+1, 'system', t1.a from t1;
+INSERT INTO t3 select @pk:=@pk+1, 'queue', t1.a from t1, t0 where t0.a<3;
+INSERT INTO t3 select @pk:=@pk+1, 'ticket', t1.a from t1, t0 A, t0 B, t0 C;
+CREATE INDEX groups_d ON t3(domain);
+CREATE INDEX groups_t ON t3(type);
+CREATE INDEX groups_td ON t3(type, domain);
+CREATE INDEX groups_dt ON t3(domain, type);
+For table g this must use ref(groups_dt) and #rows should be around 15 and not 335:
+explain
+SELECT STRAIGHT_JOIN g.id FROM t2 a, t3 g USE INDEX(groups_dt)
+WHERE g.domain = 'queue' AND g.type = a.type;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE a ALL NULL NULL NULL NULL 2
+1 SIMPLE g ref groups_dt groups_dt 70 const,test.a.type 13 Using where
+drop table t0,t1,t2,t3;
diff --git a/mysql-test/r/join_outer.result b/mysql-test/r/join_outer.result
index 083be3737f7..dbe8b48d503 100644
--- a/mysql-test/r/join_outer.result
+++ b/mysql-test/r/join_outer.result
@@ -942,25 +942,29 @@ group_concat(t1.b,t2.c)
aaaaa
bbbbb
Warnings:
-Warning 1260 2 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 1 was cut by GROUP_CONCAT()
+Warning 1260 Row 2 was cut by GROUP_CONCAT()
select group_concat(t1.b,t2.c) from t1 inner join t2 using(a) group by t1.a;
group_concat(t1.b,t2.c)
aaaaa
bbbbb
Warnings:
-Warning 1260 2 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 1 was cut by GROUP_CONCAT()
+Warning 1260 Row 2 was cut by GROUP_CONCAT()
select group_concat(t1.b,t2.c) from t1 left join t2 using(a) group by a;
group_concat(t1.b,t2.c)
aaaaa
bbbbb
Warnings:
-Warning 1260 2 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 1 was cut by GROUP_CONCAT()
+Warning 1260 Row 2 was cut by GROUP_CONCAT()
select group_concat(t1.b,t2.c) from t1 inner join t2 using(a) group by a;
group_concat(t1.b,t2.c)
aaaaa
bbbbb
Warnings:
-Warning 1260 2 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 1 was cut by GROUP_CONCAT()
+Warning 1260 Row 2 was cut by GROUP_CONCAT()
drop table t1, t2;
set group_concat_max_len=default;
create table t1 (gid smallint(5) unsigned not null, x int(11) not null, y int(11) not null, art int(11) not null, primary key (gid,x,y));
diff --git a/mysql-test/r/key.result b/mysql-test/r/key.result
index fcc09a0244d..21fcfceff81 100644
--- a/mysql-test/r/key.result
+++ b/mysql-test/r/key.result
@@ -251,13 +251,13 @@ insert t1 values ('cccc', 'tttt'),
(0xD0B1212223D0B1D0B1D0B1D0B1D0B1, 0xD0B1D0B1212223D0B1D0B1D0B1D0B1),
(0xD0B1222123D0B1D0B1D0B1D0B1D0B1, 0xD0B1D0B1222123D0B1D0B1D0B1D0B1);
insert t1 (c) values ('cc22');
-ERROR 23000: Duplicate entry 'cc22' for key 'c'
+ERROR 23000: Duplicate entry 'cc' for key 'c'
insert t1 (t) values ('ttt22');
-ERROR 23000: Duplicate entry 'ttt22' for key 't'
+ERROR 23000: Duplicate entry 'ttt' for key 't'
insert t1 (c) values (0xD0B1212322D0B1D0B1D0B1D0B1D0B1);
-ERROR 23000: Duplicate entry 'б!#"Ð' for key 'c'
+ERROR 23000: Duplicate entry '\0431!' for key 'c'
insert t1 (t) values (0xD0B1D0B1212322D0B1D0B1D0B1D0B1);
-ERROR 23000: Duplicate entry 'бб!#"б' for key 't'
+ERROR 23000: Duplicate entry '\0431\0431!' for key 't'
select c from t1 where c='cccc';
c
cccc
diff --git a/mysql-test/r/key_cache.result b/mysql-test/r/key_cache.result
index 08d8059f61b..844109dba1f 100644
--- a/mysql-test/r/key_cache.result
+++ b/mysql-test/r/key_cache.result
@@ -274,8 +274,26 @@ Key_blocks_used 4
show status like 'key_blocks_unused';
Variable_name Value
Key_blocks_unused KEY_BLOCKS_UNUSED
+create table t1 (a int primary key);
+cache index t1 in keycache2;
+Table Op Msg_type Msg_text
+test.t1 assign_to_keycache status OK
+insert t1 values (1),(2),(3),(4),(5),(6),(7),(8);
set global keycache2.key_buffer_size=0;
+select * from t1;
+a
+1
+2
+3
+4
+5
+6
+7
+8
+drop table t1;
set global keycache3.key_buffer_size=100;
+Warnings:
+Warning 1292 Truncated incorrect key_buffer_size value: '100'
set global keycache3.key_buffer_size=0;
create table t1 (mytext text, FULLTEXT (mytext));
insert t1 values ('aaabbb');
@@ -334,8 +352,7 @@ test.t1 check status OK
DROP TABLE t1,t2;
set global key_cache_block_size= @my_key_cache_block_size;
set @@global.key_buffer_size=0;
-Warnings:
-Warning 1438 Cannot drop default keycache
+ERROR HY000: Cannot drop default keycache
select @@global.key_buffer_size;
@@global.key_buffer_size
2097152
diff --git a/mysql-test/r/loaddata.result b/mysql-test/r/loaddata.result
index 1e488b320d7..5e25132880f 100644
--- a/mysql-test/r/loaddata.result
+++ b/mysql-test/r/loaddata.result
@@ -251,15 +251,15 @@ CREATE TABLE t1 (c1 INT, c2 TIMESTAMP, c3 REAL, c4 DOUBLE);
INSERT INTO t1 (c1, c2, c3, c4) VALUES (10, '1970-02-01 01:02:03', 1.1E-100, 1.1E+100);
SELECT * FROM t1;
c1 c2 c3 c4
-10 1970-02-01 01:02:03 1.1e-100 1.1e+100
+10 1970-02-01 01:02:03 1.1e-100 1.1e100
SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/t1' FIELDS ENCLOSED BY '-' FROM t1;
--10- -1970\-02\-01 01:02:03- -1.1e\-100- -1.1e+100-
+-10- -1970\-02\-01 01:02:03- -1.1e\-100- -1.1e100-
EOF
TRUNCATE t1;
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/t1' INTO TABLE t1 FIELDS ENCLOSED BY '-';
SELECT * FROM t1;
c1 c2 c3 c4
-10 1970-02-01 01:02:03 1.1e-100 1.1e+100
+10 1970-02-01 01:02:03 1.1e-100 1.1e100
DROP TABLE t1;
# --
diff --git a/mysql-test/r/loadxml.result b/mysql-test/r/loadxml.result
new file mode 100644
index 00000000000..55e6759748a
--- /dev/null
+++ b/mysql-test/r/loadxml.result
@@ -0,0 +1,75 @@
+drop table if exists t1, t2;
+create table t1 (a int, b varchar(64));
+-- Load a static XML file
+load xml infile '../../std_data/loadxml.dat' into table t1
+rows identified by '<row>';
+select * from t1 order by a;
+a b
+1 b1
+2 b2
+3 b3
+11 b11
+111 b111
+112 b112 & < > " ' &unknown; -- check entities
+212 b212
+213 b213
+214 b214
+215 b215
+216 &bb b;
+delete from t1;
+-- Load a static XML file with 'IGNORE num ROWS'
+load xml infile '../../std_data/loadxml.dat' into table t1
+rows identified by '<row>' ignore 4 rows;
+select * from t1 order by a;
+a b
+111 b111
+112 b112 & < > " ' &unknown; -- check entities
+212 b212
+213 b213
+214 b214
+215 b215
+216 &bb b;
+-- Check 'mysqldump --xml' + 'LOAD XML' round trip
+delete from t1;
+load xml infile 'MYSQLTEST_VARDIR/tmp/loadxml-dump.xml' into table t1 rows identified by '<row>';;
+select * from t1 order by a;
+a b
+111 b111
+112 b112 & < > " ' &unknown; -- check entities
+212 b212
+213 b213
+214 b214
+215 b215
+216 &bb b;
+--Check that default row tag is '<row>
+delete from t1;
+load xml infile 'MYSQLTEST_VARDIR/tmp/loadxml-dump.xml' into table t1;;
+select * from t1 order by a;
+a b
+111 b111
+112 b112 & < > " ' &unknown; -- check entities
+212 b212
+213 b213
+214 b214
+215 b215
+216 &bb b;
+-- Check that 'xml' is not a keyword
+select 1 as xml;
+xml
+1
+create table t2(fl text);
+LOAD XML LOCAL INFILE "MYSQLTEST_VARDIR/tmp/loadxml-dump.xml" INTO TABLE t2 ROWS IDENTIFIED BY '<person>';;
+drop table t1;
+drop table t2;
+create table t1 (
+id int(11) not null,
+text text,
+primary key (id)
+) engine=MyISAM default charset=latin1;
+load xml infile '../../std_data/loadxml2.dat' into table t1;
+select * from t1;
+id text
+1 line1
+line2
+line3
+drop table t1;
diff --git a/mysql-test/r/locale.result b/mysql-test/r/locale.result
index 89883b070d2..af7f9e3c132 100644
--- a/mysql-test/r/locale.result
+++ b/mysql-test/r/locale.result
@@ -1,6 +1,69 @@
DROP TABLE IF EXISTS t1;
Start of 5.4 tests
#
+# WL#4642 Greek locale for DAYNAME, MONTHNAME, DATE_FORMAT
+#
+SET NAMES utf8;
+SET @@lc_time_names=109;
+SELECT @@lc_time_names;
+@@lc_time_names
+el_GR
+CREATE TABLE t1 (a DATE);
+INSERT INTO t1 VALUES
+('2006-01-01'),('2006-01-02'),('2006-01-03'),
+('2006-01-04'),('2006-01-05'),('2006-01-06'),('2006-01-07');
+SELECT a, date_format(a,'%a') as abday, dayname(a) as day FROM t1 ORDER BY a;
+a abday day
+2006-01-01 ÎšÏ…Ï ÎšÏ…Ïιακή
+2006-01-02 Δευ ΔευτέÏα
+2006-01-03 ΤÏί ΤÏίτη
+2006-01-04 Τετ ΤετάÏτη
+2006-01-05 Πέμ Πέμπτη
+2006-01-06 Î Î±Ï Î Î±Ïασκευή
+2006-01-07 Σάβ Σάββατο
+DROP TABLE t1;
+CREATE TABLE t1 (a DATE);
+INSERT INTO t1 VALUES
+('2006-01-01'),('2006-02-01'),('2006-03-01'),
+('2006-04-01'),('2006-05-01'),('2006-06-01'),
+('2006-07-01'),('2006-08-01'),('2006-09-01'),
+('2006-10-01'),('2006-11-01'),('2006-12-01');
+SELECT a, date_format(a,'%b') as abmon, monthname(a) as mon FROM t1 ORDER BY a;
+a abmon mon
+2006-01-01 Ιαν ΙανουάÏιος
+2006-02-01 Φεβ ΦεβÏουάÏιος
+2006-03-01 ÎœÎ¬Ï ÎœÎ¬Ïτιος
+2006-04-01 Î‘Ï€Ï Î‘Ï€Ïίλιος
+2006-05-01 Μάι Μάιος
+2006-06-01 ΙοÏν ΙοÏνιος
+2006-07-01 ΙοÏλ ΙοÏλιος
+2006-08-01 ΑÏγ ΑÏγουστος
+2006-09-01 Σεπ ΣεπτέμβÏιος
+2006-10-01 Οκτ ΟκτώβÏιος
+2006-11-01 Îοέ ÎοέμβÏιος
+2006-12-01 Δεκ ΔεκέμβÏιος
+SELECT format(123456.789, 3, 'el_GR');
+format(123456.789, 3, 'el_GR')
+123456.789
+DROP TABLE t1;
+#
+# Bug#46633 Obsolete Serbian locale name
+#
+SET lc_messages=sr_YU;
+Warnings:
+Warning 1287 'sr_YU' is deprecated; use 'sr_RS' instead
+SHOW VARIABLES LIKE 'lc_messages';
+Variable_name Value
+lc_messages sr_RS
+SET lc_messages=sr_RS;
+SHOW VARIABLES LIKE 'lc_messages';
+Variable_name Value
+lc_messages sr_RS
+SET lc_time_names=sr_RS;
+SELECT format(123456.789, 3, 'sr_RS');
+format(123456.789, 3, 'sr_RS')
+123456.789
+#
# Bug#43207 wrong LC_TIME names for romanian locale
#
SET NAMES utf8;
diff --git a/mysql-test/r/lock.result b/mysql-test/r/lock.result
index 7ec07fb5273..1f8f6aa04ae 100644
--- a/mysql-test/r/lock.result
+++ b/mysql-test/r/lock.result
@@ -48,6 +48,9 @@ unlock tables;
lock tables t1 write, t1 as t1_alias read;
insert into t1 select index1,nr from t1 as t1_alias;
drop table t1,t2;
+ERROR HY000: Table 't2' was not locked with LOCK TABLES
+unlock tables;
+drop table t1,t2;
create table t1 (c1 int);
create table t2 (c1 int);
create table t3 (c1 int);
@@ -69,6 +72,9 @@ ERROR HY000: Table 't2' was locked with a READ lock and can't be updated
delete t2 from t1,t2 where t1.a=t2.a;
ERROR HY000: Table 't2' was locked with a READ lock and can't be updated
drop table t1,t2;
+ERROR HY000: Table 't2' was locked with a READ lock and can't be updated
+unlock tables;
+drop table t2,t1;
End of 4.1 tests.
drop table if exists t1;
create table t1 (a int);
diff --git a/mysql-test/r/lock_multi.result b/mysql-test/r/lock_multi.result
index d8768e802ea..3f1165fd069 100644
--- a/mysql-test/r/lock_multi.result
+++ b/mysql-test/r/lock_multi.result
@@ -27,6 +27,7 @@ update t1,t2 set c=a where b=d;
select c from t2;
c
2
+unlock tables;
drop table t1;
drop table t2;
create table t1 (a int);
@@ -209,3 +210,12 @@ select @tlwa < @tlwb;
@tlwa < @tlwb
1
End of 5.1 tests
+drop table if exists t1;
+create table t1 (i int);
+connection: default
+lock tables t1 write;
+connection: flush
+flush tables with read lock;;
+connection: default
+flush tables;
+drop table t1;
diff --git a/mysql-test/r/lock_sync.result b/mysql-test/r/lock_sync.result
new file mode 100644
index 00000000000..fc4e8c850f6
--- /dev/null
+++ b/mysql-test/r/lock_sync.result
@@ -0,0 +1,66 @@
+#
+# Test for bug #45143 "All connections hang on concurrent ALTER TABLE".
+#
+# Concurrent execution of statements which required weak write lock
+# (TL_WRITE_ALLOW_WRITE) on several instances of the same table and
+# statements which tried to acquire stronger write lock (TL_WRITE,
+# TL_WRITE_ALLOW_READ) on this table might have led to deadlock.
+drop table if exists t1;
+# Create auxiliary connections used through the test.
+# Reset DEBUG_SYNC facility before using it.
+set debug_sync= 'RESET';
+# Turn off logging so calls to locking subsystem performed
+# for general_log table won't interfere with our test.
+set @old_general_log = @@global.general_log;
+set @@global.general_log= OFF;
+create table t1 (i int) engine=InnoDB;
+insert into t1 values (1);
+# Prepare user lock which will be used for resuming execution of
+# the first statement after it acquires TL_WRITE_ALLOW_WRITE lock.
+select get_lock("lock_bug45143_wait", 0);
+get_lock("lock_bug45143_wait", 0)
+1
+# Switch to connection 'con_bug45143_1'.
+# Sending:
+insert into t1 values (get_lock("lock_bug45143_wait", 100));;
+# Switch to connection 'con_bug45143_2'.
+# Wait until the above INSERT takes TL_WRITE_ALLOW_WRITE lock on 't1'
+# and then gets blocked on user lock 'lock_bug45143_wait'.
+# Ensure that upcoming SELECT waits after acquiring TL_WRITE_ALLOW_WRITE
+# lock for the first instance of 't1'.
+set debug_sync='thr_multi_lock_after_thr_lock SIGNAL parked WAIT_FOR go';
+# Sending:
+select count(*) > 0 from t1 as a, t1 as b for update;;
+# Switch to connection 'con_bug45143_3'.
+# Wait until the above SELECT ... FOR UPDATE is blocked after
+# acquiring lock for the the first instance of 't1'.
+set debug_sync= 'now WAIT_FOR parked';
+# Send LOCK TABLE statement which will try to get TL_WRITE lock on 't1':
+lock table t1 write;;
+# Switch to connection 'default'.
+# Wait until this LOCK TABLES statement starts waiting for table lock.
+# Allow SELECT ... FOR UPDATE to resume.
+# Since it already has TL_WRITE_ALLOW_WRITE lock on the first instance
+# of 't1' it should be able to get lock on the second instance without
+# waiting, even although there is another thread which has such lock
+# on this table and also there is a thread waiting for a TL_WRITE on it.
+set debug_sync= 'now SIGNAL go';
+# Switch to connection 'con_bug45143_2'.
+# Reap SELECT ... FOR UPDATE
+count(*) > 0
+1
+# Switch to connection 'default'.
+# Resume execution of the INSERT statement.
+select release_lock("lock_bug45143_wait");
+release_lock("lock_bug45143_wait")
+1
+# Switch to connection 'con_bug45143_1'.
+# Reap INSERT statement.
+# Switch to connection 'con_bug45143_3'.
+# Reap LOCK TABLES statement.
+unlock tables;
+# Switch to connection 'default'.
+# Do clean-up.
+set debug_sync= 'RESET';
+set @@global.general_log= @old_general_log;
+drop table t1;
diff --git a/mysql-test/r/log_state.result b/mysql-test/r/log_state.result
index 5c3e3d789a1..56e30ac59f8 100644
--- a/mysql-test/r/log_state.result
+++ b/mysql-test/r/log_state.result
@@ -309,6 +309,30 @@ 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;
End of 5.1 tests
+
+# --
+# -- Bug#38124: "general_log_file" variable silently unset when
+# -- using expression
+# --
+SET GLOBAL general_log_file = DEFAULT;
+SELECT @@general_log_file INTO @my_glf;
+SET GLOBAL general_log_file = 'BUG38124.LOG';
+SELECT @@general_log_file;
+@@general_log_file
+BUG38124.LOG
+SET GLOBAL general_log_file = concat('BUG38124-2.LOG');
+SELECT @@general_log_file;
+@@general_log_file
+BUG38124-2.LOG
+SET GLOBAL general_log_file = substr('BUG38124-2.LOG',3,6);
+SELECT @@general_log_file;
+@@general_log_file
+G38124
+SET GLOBAL general_log_file = DEFAULT;
+SELECT @@general_log_file = @my_glf;
+@@general_log_file = @my_glf
+1
+SET GLOBAL general_log_file = @old_general_log_file;
# Close connection con1
SET global general_log = @old_general_log;
SET global general_log_file = @old_general_log_file;
diff --git a/mysql-test/r/log_state_bug33693.result b/mysql-test/r/log_state_bug33693.result
new file mode 100644
index 00000000000..abf20fc7aa7
--- /dev/null
+++ b/mysql-test/r/log_state_bug33693.result
@@ -0,0 +1,3 @@
+SELECT INSTR(@@general_log_file, 'MYSQLTEST_VARDIR/run');;
+INSTR(@@general_log_file, 'MYSQLTEST_VARDIR/run')
+0
diff --git a/mysql-test/r/log_tables.result b/mysql-test/r/log_tables.result
index f8321520880..1666d5e0297 100644
--- a/mysql-test/r/log_tables.result
+++ b/mysql-test/r/log_tables.result
@@ -247,13 +247,10 @@ set global general_log='OFF';
set global slow_query_log='OFF';
set @save_storage_engine= @@session.storage_engine;
set storage_engine= MEMORY;
-alter table mysql.slow_log engine=ndb;
-ERROR HY000: This storage engine cannot be used for log tables"
-alter table mysql.slow_log engine=innodb;
-ERROR HY000: This storage engine cannot be used for log tables"
-alter table mysql.slow_log engine=archive;
-ERROR HY000: This storage engine cannot be used for log tables"
-alter table mysql.slow_log engine=blackhole;
+alter table mysql.slow_log engine=NonExistentEngine;
+Warnings:
+Warning 1286 Unknown storage engine 'NonExistentEngine'
+alter table mysql.slow_log engine=memory;
ERROR HY000: This storage engine cannot be used for log tables"
set storage_engine= @save_storage_engine;
drop table mysql.slow_log;
diff --git a/mysql-test/r/lowercase_fs_off.result b/mysql-test/r/lowercase_fs_off.result
index 4a59801692d..30f835a8ea3 100644
--- a/mysql-test/r/lowercase_fs_off.result
+++ b/mysql-test/r/lowercase_fs_off.result
@@ -22,8 +22,8 @@ f1
GRANT SELECT ON t1 to user_1@localhost;
select * from information_schema.table_privileges;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'user_1'@'localhost' NULL d1 T1 SELECT NO
-'user_1'@'localhost' NULL d1 t1 SELECT NO
+'user_1'@'localhost' def d1 T1 SELECT NO
+'user_1'@'localhost' def d1 t1 SELECT NO
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user_1@localhost;
DROP USER user_1@localhost;
DROP DATABASE d1;
diff --git a/mysql-test/r/lowercase_table2.result b/mysql-test/r/lowercase_table2.result
index 51c2ac0faf5..cf87fd1b5a4 100644
--- a/mysql-test/r/lowercase_table2.result
+++ b/mysql-test/r/lowercase_table2.result
@@ -174,3 +174,74 @@ TABLE_SCHEMA TABLE_NAME
mysqltest_LC2 myUC
use test;
drop database mysqltest_LC2;
+# End of 5.1 tests
+#
+# Test for bug #44738 "fill_schema_table_from_frm() opens tables without
+# lowercasing table name". Due to not properly normalizing table names
+# in lower_case_table_names modes in this function queries to I_S which
+# were executed through it left entries with incorrect key in table
+# definition cache. As result further queries to I_S that used this
+# function produced stale results in cases when table definition was
+# changed by a DDL statement. Also combination of this issue and a
+# similar problem in CREATE TABLE (it also has peeked into table
+# definition cache using non-normalized key) led to spurious
+# ER_TABLE_EXISTS_ERROR errors when one tried to create table with the
+# same name as a previously existing but dropped table.
+#
+drop database if exists mysqltest_UPPERCASE;
+drop table if exists t_bug44738_UPPERCASE;
+create database mysqltest_UPPERCASE;
+use mysqltest_UPPERCASE;
+create table t_bug44738_UPPERCASE (i int) comment='Old comment';
+create table t_bug44738_lowercase (i int) comment='Old comment';
+select table_schema, table_name, table_comment from information_schema.tables
+where table_schema like 'mysqltest_%' and table_name like 't_bug44738_%'
+ order by table_name;
+table_schema table_name table_comment
+mysqltest_UPPERCASE t_bug44738_lowercase Old comment
+mysqltest_UPPERCASE t_bug44738_UPPERCASE Old comment
+alter table t_bug44738_UPPERCASE comment='New comment';
+alter table t_bug44738_lowercase comment='New comment';
+# There should be no stale entries in TDC for our tables after the
+# above ALTER TABLE statements so new version of comments should be
+# returned by the below query to I_S.
+select table_schema, table_name, table_comment from information_schema.tables
+where table_schema like 'mysqltest_%' and table_name like 't_bug44738_%'
+ order by table_name;
+table_schema table_name table_comment
+mysqltest_UPPERCASE t_bug44738_lowercase New comment
+mysqltest_UPPERCASE t_bug44738_UPPERCASE New comment
+drop database mysqltest_UPPERCASE;
+use test;
+# Let us check that the original test case which led to discovery
+# of this problem also works.
+create table t_bug44738_UPPERCASE (i int);
+select table_schema, table_name, table_comment from information_schema.tables
+where table_schema = 'test' and table_name like 't_bug44738_%';
+table_schema table_name table_comment
+test t_bug44738_UPPERCASE
+drop table t_bug44738_UPPERCASE;
+# After the above DROP TABLE there are no entries in TDC which correspond
+# to our table and therefore the below statement should succeed.
+create table t_bug44738_UPPERCASE (i int);
+drop table t_bug44738_UPPERCASE;
+# Finally, let us check that another issue which was exposed by
+# the original test case is solved. I.e. that fuse in CREATE TABLE
+# which ensures that table is not created if there is an entry for
+# it in TDC even though it was removed from disk uses normalized
+# version of the table name.
+create table t_bug44738_UPPERCASE (i int) engine = myisam;
+# Load table definition in TDC.
+select table_schema, table_name, table_comment from information_schema.tables
+where table_schema = 'test' and table_name like 't_bug44738_%';
+table_schema table_name table_comment
+test t_bug44738_UPPERCASE
+# Simulate manual removal of the table.
+# After manual removal of table still there should be an entry for table
+# in TDC so attempt to create table with the same name should fail.
+create table t_bug44738_UPPERCASE (i int);
+ERROR 42S01: Table 't_bug44738_uppercase' already exists
+# And should succeed after FLUSH TABLES.
+flush tables;
+create table t_bug44738_UPPERCASE (i int);
+drop table t_bug44738_UPPERCASE;
diff --git a/mysql-test/r/merge.result b/mysql-test/r/merge.result
index 893ea5acf88..83152a0dd8d 100644
--- a/mysql-test/r/merge.result
+++ b/mysql-test/r/merge.result
@@ -914,7 +914,7 @@ SELECT * FROM tm1;
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
CHECK TABLE tm1;
Table Op Msg_type Msg_text
-test.tm1 check Error Table 'test.t2' is differently defined or of non-MyISAM type or doesn't exist
+test.tm1 check Warning Table 'test.t2' is differently defined or of non-MyISAM type or doesn't exist
test.tm1 check Error Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
test.tm1 check error Corrupt
ALTER TABLE t2 MODIFY a INT;
@@ -2023,7 +2023,7 @@ CREATE TABLE tm1 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1) INSERT_METHOD=FIRST;
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE
TABLE_SCHEMA = 'test' and TABLE_NAME='tm1';
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
-NULL test tm1 BASE TABLE NULL NULL NULL # # # # # # # # # # NULL # # Unable to open underlying table which is differently defined or of non-MyISAM ty
+def test tm1 BASE TABLE NULL NULL NULL # # # # # # # # # # NULL # # Unable to open underlying table which is differently defined or of non-MyISAM ty
DROP TABLE tm1;
CREATE TABLE t1(C1 INT, C2 INT, KEY C1(C1), KEY C2(C2)) ENGINE=MYISAM;
CREATE TABLE t2(C1 INT, C2 INT, KEY C1(C1), KEY C2(C2)) ENGINE=MYISAM;
@@ -2220,3 +2220,39 @@ tr1 CREATE DEFINER=`root`@`localhost` TRIGGER tr1 AFTER INSERT ON t3 FOR EACH R
DROP TRIGGER tr1;
DROP TABLE t1, t2, t3;
End of 5.1 tests
+#
+# An additional test case for Bug#27430 Crash in subquery code
+# when in PS and table DDL changed after PREPARE
+#
+# Test merge table with too many merge children.
+#
+drop table if exists t_parent;
+set @save_table_definition_cache=@@global.table_definition_cache;
+#
+# Set @@global.table_definition_cache to minimum
+#
+set @@global.table_definition_cache=400;
+set @a=null;
+#
+# Create 400 merge children
+#
+set @a=concat("create table t_parent (a int) union(", @a,
+") insert_method=first engine=mrg_myisam");
+prepare stmt from @a;
+execute stmt;
+prepare stmt from "select * from t_parent";
+execute stmt;
+ERROR HY000: Prepared statement needs to be re-prepared
+execute stmt;
+ERROR HY000: Prepared statement needs to be re-prepared
+execute stmt;
+ERROR HY000: Prepared statement needs to be re-prepared
+deallocate prepare stmt;
+#
+# Create merge parent
+#
+#
+# Cleanup
+#
+drop table t_parent;
+set @@global.table_definition_cache=@save_table_definition_cache;
diff --git a/mysql-test/r/metadata.result b/mysql-test/r/metadata.result
index 6b498e55d85..58dd97ee9f3 100644
--- a/mysql-test/r/metadata.result
+++ b/mysql-test/r/metadata.result
@@ -2,7 +2,7 @@ drop table if exists t1,t2;
select 1, 1.0, -1, "hello", NULL;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def 1 8 1 1 N 32897 0 63
-def 1.0 246 4 3 N 129 1 63
+def 1.0 246 4 3 N 32897 1 63
def -1 8 2 2 N 32897 0 63
def hello 253 5 5 N 1 31 8
def NULL 6 0 0 Y 32896 0 63
@@ -18,7 +18,7 @@ def test t1 t1 d d 3 11 0 Y 32768 0 63
def test t1 t1 e e 8 20 0 Y 32768 0 63
def test t1 t1 f f 4 3 0 Y 32768 2 63
def test t1 t1 g g 5 4 0 Y 32768 3 63
-def test t1 t1 h h 246 7 0 Y 0 4 63
+def test t1 t1 h h 246 7 0 Y 32768 4 63
def test t1 t1 i i 13 4 0 Y 32864 0 63
def test t1 t1 j j 10 10 0 Y 128 0 63
def test t1 t1 k k 7 19 0 N 9441 0 63
@@ -199,3 +199,95 @@ def IFNULL(d, d) IFNULL(d, d) 10 10 10 Y 128 0 63
def LEAST(d, d) LEAST(d, d) 10 10 10 Y 128 0 63
DROP TABLE t1;
End of 5.0 tests
+create table t1(
+# numeric types
+bool_col bool,
+boolean_col boolean,
+bit_col bit(5),
+tiny tinyint,
+tiny_uns tinyint unsigned,
+small smallint,
+small_uns smallint unsigned,
+medium mediumint,
+medium_uns mediumint unsigned,
+int_col int,
+int_col_uns int unsigned,
+big bigint,
+big_uns bigint unsigned,
+decimal_col decimal(10,5),
+# synonyms of DECIMAL
+numeric_col numeric(10),
+fixed_col fixed(10),
+dec_col dec(10),
+decimal_col_uns decimal(10,5) unsigned,
+fcol float,
+fcol_uns float unsigned,
+dcol double,
+double_precision_col double precision,
+dcol_uns double unsigned,
+# date/time types
+date_col date,
+time_col time,
+timestamp_col timestamp,
+year_col year,
+datetime_col datetime,
+# string types
+char_col char(5),
+varchar_col varchar(10),
+binary_col binary(10),
+varbinary_col varbinary(10),
+tinyblob_col tinyblob,
+blob_col blob,
+mediumblob_col mediumblob,
+longblob_col longblob,
+text_col text,
+mediumtext_col mediumtext,
+longtext_col longtext,
+enum_col enum("A","B","C"),
+set_col set("F","E","D")
+);
+select * from t1;
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def test t1 t1 bool_col bool_col 1 1 0 Y 32768 0 63
+def test t1 t1 boolean_col boolean_col 1 1 0 Y 32768 0 63
+def test t1 t1 bit_col bit_col 16 5 0 Y 32 0 63
+def test t1 t1 tiny tiny 1 4 0 Y 32768 0 63
+def test t1 t1 tiny_uns tiny_uns 1 3 0 Y 32800 0 63
+def test t1 t1 small small 2 6 0 Y 32768 0 63
+def test t1 t1 small_uns small_uns 2 5 0 Y 32800 0 63
+def test t1 t1 medium medium 9 9 0 Y 32768 0 63
+def test t1 t1 medium_uns medium_uns 9 8 0 Y 32800 0 63
+def test t1 t1 int_col int_col 3 11 0 Y 32768 0 63
+def test t1 t1 int_col_uns int_col_uns 3 10 0 Y 32800 0 63
+def test t1 t1 big big 8 20 0 Y 32768 0 63
+def test t1 t1 big_uns big_uns 8 20 0 Y 32800 0 63
+def test t1 t1 decimal_col decimal_col 246 12 0 Y 32768 5 63
+def test t1 t1 numeric_col numeric_col 246 11 0 Y 32768 0 63
+def test t1 t1 fixed_col fixed_col 246 11 0 Y 32768 0 63
+def test t1 t1 dec_col dec_col 246 11 0 Y 32768 0 63
+def test t1 t1 decimal_col_uns decimal_col_uns 246 11 0 Y 32800 5 63
+def test t1 t1 fcol fcol 4 12 0 Y 32768 31 63
+def test t1 t1 fcol_uns fcol_uns 4 12 0 Y 32800 31 63
+def test t1 t1 dcol dcol 5 22 0 Y 32768 31 63
+def test t1 t1 double_precision_col double_precision_col 5 22 0 Y 32768 31 63
+def test t1 t1 dcol_uns dcol_uns 5 22 0 Y 32800 31 63
+def test t1 t1 date_col date_col 10 10 0 Y 128 0 63
+def test t1 t1 time_col time_col 11 8 0 Y 128 0 63
+def test t1 t1 timestamp_col timestamp_col 7 19 0 N 9441 0 63
+def test t1 t1 year_col year_col 13 4 0 Y 32864 0 63
+def test t1 t1 datetime_col datetime_col 12 19 0 Y 128 0 63
+def test t1 t1 char_col char_col 254 5 0 Y 0 0 8
+def test t1 t1 varchar_col varchar_col 253 10 0 Y 0 0 8
+def test t1 t1 binary_col binary_col 254 10 0 Y 128 0 63
+def test t1 t1 varbinary_col varbinary_col 253 10 0 Y 128 0 63
+def test t1 t1 tinyblob_col tinyblob_col 252 255 0 Y 144 0 63
+def test t1 t1 blob_col blob_col 252 65535 0 Y 144 0 63
+def test t1 t1 mediumblob_col mediumblob_col 252 16777215 0 Y 144 0 63
+def test t1 t1 longblob_col longblob_col 252 4294967295 0 Y 144 0 63
+def test t1 t1 text_col text_col 252 65535 0 Y 16 0 8
+def test t1 t1 mediumtext_col mediumtext_col 252 16777215 0 Y 16 0 8
+def test t1 t1 longtext_col longtext_col 252 4294967295 0 Y 16 0 8
+def test t1 t1 enum_col enum_col 254 1 0 Y 256 0 8
+def test t1 t1 set_col set_col 254 5 0 Y 2048 0 8
+bool_col boolean_col bit_col tiny tiny_uns small small_uns medium medium_uns int_col int_col_uns big big_uns decimal_col numeric_col fixed_col dec_col decimal_col_uns fcol fcol_uns dcol double_precision_col dcol_uns date_col time_col timestamp_col year_col datetime_col char_col varchar_col binary_col varbinary_col tinyblob_col blob_col mediumblob_col longblob_col text_col mediumtext_col longtext_col enum_col set_col
+drop table t1;
diff --git a/mysql-test/r/multi_update.result b/mysql-test/r/multi_update.result
index 449333a4ae6..2513e94137f 100644
--- a/mysql-test/r/multi_update.result
+++ b/mysql-test/r/multi_update.result
@@ -604,7 +604,7 @@ a b
4 4
show master status /* there must be the UPDATE query event */;
File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 206
+master-bin.000001 344
delete from t1;
delete from t2;
insert into t1 values (1,2),(3,4),(4,4);
@@ -614,7 +614,7 @@ 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
+master-bin.000001 359
drop table t1, t2;
set @@session.binlog_format= @sav_binlog_format;
drop table if exists t1, t2, t3;
diff --git a/mysql-test/r/myisam-system.result b/mysql-test/r/myisam-system.result
index e0629d955ae..b3ba8066f5c 100644
--- a/mysql-test/r/myisam-system.result
+++ b/mysql-test/r/myisam-system.result
@@ -2,7 +2,7 @@ drop table if exists t1,t2;
create table t1 (a int) engine=myisam;
drop table if exists t1;
Warnings:
-Error 2 Can't find file: 't1' (errno: 2)
+Warning 2 Can't find file: 't1' (errno: 2)
create table t1 (a int) engine=myisam;
drop table t1;
Got one of the listed errors
diff --git a/mysql-test/r/myisam.result b/mysql-test/r/myisam.result
index c68bc91aa41..fb053f32d43 100644
--- a/mysql-test/r/myisam.result
+++ b/mysql-test/r/myisam.result
@@ -529,6 +529,7 @@ select straight_join * from t1,t2 force index (primary) where t1.a=t2.a;
a a b
1 1 1
2 2 1
+unlock tables;
drop table t1,t2;
CREATE TABLE t1 (c1 varchar(250) NOT NULL);
CREATE TABLE t2 (c1 varchar(250) NOT NULL, PRIMARY KEY (c1));
@@ -542,6 +543,7 @@ INSERT INTO t2 VALUES ('test000001'), ('test000005');
SELECT t1.c1 AS t1c1, t2.c1 AS t2c1 FROM t1, t2
WHERE t1.c1 = t2.c1 HAVING t1c1 != t2c1;
t1c1 t2c1
+UNLOCK TABLES;
DROP TABLE t1,t2;
CREATE TABLE t1 (`a` int(11) NOT NULL default '0', `b` int(11) NOT NULL default '0', UNIQUE KEY `a` USING RTREE (`a`,`b`)) ENGINE=MyISAM;
Got one of the listed errors
diff --git a/mysql-test/r/myisam_crash_before_flush_keys.result b/mysql-test/r/myisam_crash_before_flush_keys.result
index d3545ea47d0..43eb1625409 100644
--- a/mysql-test/r/myisam_crash_before_flush_keys.result
+++ b/mysql-test/r/myisam_crash_before_flush_keys.result
@@ -3,6 +3,8 @@
#
# Don't test this under valgrind, memory leaks will occur
# Binary must be compiled with debug for crash to occur
+call mtr.add_suppression("Got an error from thread_id=.*ha_myisam.cc:");
+call mtr.add_suppression("MySQL thread id .*, query id .* localhost.*root Checking table");
SET GLOBAL delay_key_write=ALL;
CREATE TABLE t1(a INT,
b INT,
diff --git a/mysql-test/r/myisampack.result b/mysql-test/r/myisampack.result
index fbcd8aed17a..dd14c31f32e 100644
--- a/mysql-test/r/myisampack.result
+++ b/mysql-test/r/myisampack.result
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS t1,t2,t3;
CREATE TABLE t1(c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, c4 DOUBLE, c5 DOUBLE,
c6 DOUBLE, c7 DOUBLE, c8 DOUBLE, c9 DOUBLE, a INT PRIMARY KEY);
INSERT INTO t1 VALUES
@@ -85,5 +86,37 @@ FLUSH TABLE mysql_db1.t1;
SELECT COUNT(*) FROM mysql_db1.t1 WHERE c2 < 5;
COUNT(*)
128
+# ===== myisampack.1 =====
+CREATE TABLE t1(a INT);
+INSERT INTO t1 VALUES(20);
+CREATE TABLE t2(a INT);
+INSERT INTO t2 VALUES(40);
+FLUSH TABLE t1,t2;
+#If the myisampack --join operation is successful, we have table t3(.frm)
+#so we should be able to query about the table from server.
+SELECT COUNT(a) FROM t3;
+COUNT(a)
+1024
+# ===== myisampack.2 =====
+FLUSH TABLE t3;
+#Tests the myisampack join operation with an existing destination .frm file,
+#the command should return correct exit status(0) and
+#we should be able to query the table.
+SELECT COUNT(a) FROM t3;
+COUNT(a)
+1024
+# ===== myisampack.3 =====
+DROP TABLE t3;
+#Tests the myisampack join operation without frm file for the first and second table
+#No frm file is generated in this and we shouldn't be able to access the newly
+#created table
+SELECT COUNT(a) FROM t3;
+ERROR 42S02: Table 'test.t3' doesn't exist
+# ===== myisampack.4 =====
+#Tests the myisampack join operation with an existing destination .frm,.MYI,.MDI
+#the command should fail with exit status 2
+myisampack: Can't create/write to file (Errcode: 17)
+Aborted: file is not compressed
+DROP TABLE t1,t2,t3;
DROP TABLE mysql_db1.t1;
DROP DATABASE mysql_db1;
diff --git a/mysql-test/r/mysql.result b/mysql-test/r/mysql.result
index 68f30ed80f8..3c53faff526 100644
--- a/mysql-test/r/mysql.result
+++ b/mysql-test/r/mysql.result
@@ -201,12 +201,210 @@ COUNT (*)
ERROR 2005 (HY000) at line 1: Unknown MySQL server host 'invalid_hostname' (errno)
End of 5.0 tests
WARNING: --server-arg option not supported in this configuration.
-Warning (Code 1286): Unknown table engine 'nonexistent'
+*************************** 1. row ***************************
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
++---+
+| 1 |
++---+
+| 1 |
++---+
+Warning (Code 1286): Unknown storage engine 'nonexistent'
Warning (Code 1266): Using storage engine MyISAM for table 't2'
-Warning (Code 1286): Unknown table engine 'nonexistent2'
+Warning (Code 1286): Unknown storage engine 'nonexistent2'
Warning (Code 1266): Using storage engine MyISAM for table 't2'
Error (Code 1050): Table 't2' already exists
drop tables t1, t2;
+Variable_name Value
+lc_messages ru_RU
<TABLE BORDER=1><TR><TH>&lt;</TH></TR><TR><TD>&lt; &amp; &gt;</TD></TR></TABLE>create table t1 (a char(5));
insert into t1 values ('\0b\0');
a
diff --git a/mysql-test/r/mysql_locale_posix.result b/mysql-test/r/mysql_locale_posix.result
new file mode 100644
index 00000000000..72a473bb89e
--- /dev/null
+++ b/mysql-test/r/mysql_locale_posix.result
@@ -0,0 +1,72 @@
+SET NAMES utf8;
+DROP DATABASE IF EXISTS `ó`;
+DROP DATABASE IF EXISTS `Ăł`;
+DROP DATABASE IF EXISTS `цÐ`;
+DROP DATABASE IF EXISTS `ó`;
+
+iso88591
+@@character_set_client
+latin1
+Database: ó
++--------+
+| Tables |
++--------+
++--------+
+
+iso88592
+@@character_set_client
+latin2
+Database: ó
++--------+
+| Tables |
++--------+
++--------+
+
+koi8r
+@@character_set_client
+koi8r
+Database: ó
++--------+
+| Tables |
++--------+
++--------+
+
+utf8
+@@character_set_client
+utf8
+Database: ó
++--------+
+| Tables |
++--------+
++--------+
+Database: ó
++--------+
+| Tables |
++--------+
++--------+
+Database: Ăł
++--------+
+| Tables |
++--------+
++--------+
+Database: цÐ
++--------+
+| Tables |
++--------+
++--------+
+SHOW DATABASES LIKE 'ó';
+Database (ó)
+ó
+SHOW DATABASES LIKE 'Ăł';
+Database (Ăł)
+Ăł
+SHOW DATABASES LIKE 'цÐ';
+Database (цÐ)
+цÐ
+SHOW DATABASES LIKE 'ó';
+Database (ó)
+ó
+DROP DATABASE `ó`;
+DROP DATABASE `Ăł`;
+DROP DATABASE `цÐ`;
+DROP DATABASE `ó`;
diff --git a/mysql-test/r/mysql_upgrade.result b/mysql-test/r/mysql_upgrade.result
index 821ad31871f..394beb042a5 100644
--- a/mysql-test/r/mysql_upgrade.result
+++ b/mysql-test/r/mysql_upgrade.result
@@ -169,3 +169,4 @@ 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.
+The --upgrade-system-tables option was used, databases won't be touched.
diff --git a/mysql-test/r/mysqlbinlog.result b/mysql-test/r/mysqlbinlog.result
index f5c40202101..097e51a78de 100644
--- a/mysql-test/r/mysqlbinlog.result
+++ b/mysql-test/r/mysqlbinlog.result
@@ -21,7 +21,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -37,24 +37,60 @@ SET TIMESTAMP=1000000000/*!*/;
create table t2 (id int auto_increment not null primary key)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
insert into t1 values ("abirvalg")
/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1000000000/*!*/;
insert into t2 values ()
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`word`)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`word`)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`word`)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`word`)
/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -64,18 +100,33 @@ ROLLBACK /* added by mysqlbinlog */;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
-use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`word`)
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
insert into t1 values ("Alas")
/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -86,29 +137,78 @@ ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
+/*!\C latin1 *//*!*/;
+SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=1/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
--- --position --
-Warning: The option '--position' is deprecated and will be removed in MySQL 5.6. Please use --start-position instead.
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
-use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
insert into t1 values ("Alas")
/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -122,7 +222,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -138,24 +238,60 @@ SET TIMESTAMP=1000000000/*!*/;
create table t2 (id int auto_increment not null primary key)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
insert into t1 values ("abirvalg")
/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1000000000/*!*/;
insert into t2 values ()
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`word`)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`word`)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`word`)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`word`)
/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -165,18 +301,33 @@ ROLLBACK /* added by mysqlbinlog */;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
-use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`word`)
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
insert into t1 values ("Alas")
/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -187,29 +338,78 @@ ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
+/*!\C latin1 *//*!*/;
+SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=1/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
--- --position --
-Warning: The option '--position' is deprecated and will be removed in MySQL 5.6. Please use --start-position instead.
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
-use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
insert into t1 values ("Alas")
/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -235,7 +435,6 @@ DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
-Warning: The option '--position' is deprecated and will be removed in MySQL 5.6. Please use --start-position instead.
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
@@ -302,7 +501,7 @@ DELIMITER /*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -352,7 +551,7 @@ DELIMITER /*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -362,31 +561,73 @@ SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a varchar(64) character set utf8)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a`)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
SET @@session.collation_database=7/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a`)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a`)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a`)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
SET @@session.collation_database=7/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-a-0' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a`)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-b-0' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a`)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-c-0' INTO TABLE `t1` CHARACTER SET koi8r FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a`)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
drop table t1
/*!*/;
DELIMITER ;
@@ -402,9 +643,9 @@ We expect this value to be 1
The bug being tested was that 'Query' lines were not preceded by '#'
If the line is in the table, it had to have been preceded by a '#'
-SELECT COUNT(*) AS `BUG#28293_expect_1` FROM patch WHERE a LIKE '%Query%';
-BUG#28293_expect_1
-1
+SELECT COUNT(*) AS `BUG#28293_expect_3` FROM patch WHERE a LIKE '%Query%';
+BUG#28293_expect_3
+3
DROP TABLE patch;
FLUSH LOGS;
CREATE TABLE t1(a INT);
@@ -429,7 +670,7 @@ CREATE TABLE t1 (a INT, b CHAR(64));
flush logs;
INSERT INTO t1 VALUES (1,USER());
flush logs;
-mysqlbinlog var/log/master-bin.000017 > var/tmp/bug31611.sql
+mysqlbinlog var/log/master-bin.000018 > var/tmp/bug31611.sql
mysql mysqltest1 -uuntrusted < var/tmp/bug31611.sql
INSERT INTO t1 VALUES (1,USER());
ERROR 42000: INSERT command denied to user 'untrusted'@'localhost' for table 't1'
@@ -455,7 +696,7 @@ an_int 1000
a_decimal 907.79
a_string Just a test
DROP TABLE t1;
->> mysqlbinlog var/log/master-bin.000019 > var/tmp/bug32580.sql
+>> mysqlbinlog var/log/master-bin.000020 > var/tmp/bug32580.sql
>> mysql test < var/tmp/bug32580.sql
SELECT * FROM t1;
a_real 158.883
diff --git a/mysql-test/r/mysqlbinlog2.result b/mysql-test/r/mysqlbinlog2.result
index dba9bdc9d70..52a589ca7c1 100644
--- a/mysql-test/r/mysqlbinlog2.result
+++ b/mysql-test/r/mysqlbinlog2.result
@@ -22,7 +22,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -31,26 +31,56 @@ SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "a")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=2/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "b")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=3/*!*/;
SET TIMESTAMP=1579609944/*!*/;
insert into t1 values(null, "c")
/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=4/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -61,35 +91,65 @@ ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
-SET INSERT_ID=1/*!*/;
-use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=1/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "a")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=2/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "b")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=3/*!*/;
SET TIMESTAMP=1579609944/*!*/;
insert into t1 values(null, "c")
/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=4/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -100,23 +160,45 @@ ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
-SET INSERT_ID=4/*!*/;
-use test/*!*/;
-SET TIMESTAMP=1579609946/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=3/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+insert into t1 values(null, "c")
+/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=4/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -130,7 +212,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -139,17 +221,25 @@ SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "a")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=2/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "b")
/*!*/;
-SET INSERT_ID=3/*!*/;
-SET TIMESTAMP=1579609944/*!*/;
-insert into t1 values(null, "c")
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
/*!*/;
DELIMITER ;
# End of log file
@@ -161,18 +251,21 @@ ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
-SET INSERT_ID=4/*!*/;
-use test/*!*/;
-SET TIMESTAMP=1579609946/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
-insert into t1 values(null, "d")
+BEGIN
+/*!*/;
+SET INSERT_ID=3/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+insert into t1 values(null, "c")
/*!*/;
DELIMITER ;
# End of log file
@@ -184,27 +277,45 @@ ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
-SET INSERT_ID=3/*!*/;
-use test/*!*/;
SET TIMESTAMP=1579609944/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=3/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
insert into t1 values(null, "c")
/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=4/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -218,7 +329,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -227,14 +338,26 @@ SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "a")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=2/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "b")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -249,7 +372,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -258,41 +381,77 @@ SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "a")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=2/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "b")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=3/*!*/;
SET TIMESTAMP=1579609944/*!*/;
insert into t1 values(null, "c")
/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=4/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
DELIMITER /*!*/;
-SET INSERT_ID=6/*!*/;
-use test/*!*/;
SET TIMESTAMP=1579609943/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=6/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609943/*!*/;
insert into t1 values(null, "f")
/*!*/;
+SET TIMESTAMP=1579609943/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -303,50 +462,86 @@ ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
-SET INSERT_ID=1/*!*/;
-use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=1/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "a")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=2/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "b")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=3/*!*/;
SET TIMESTAMP=1579609944/*!*/;
insert into t1 values(null, "c")
/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=4/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
DELIMITER /*!*/;
-SET INSERT_ID=6/*!*/;
-use test/*!*/;
SET TIMESTAMP=1579609943/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=6/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609943/*!*/;
insert into t1 values(null, "f")
/*!*/;
+SET TIMESTAMP=1579609943/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -357,38 +552,66 @@ ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
-SET INSERT_ID=4/*!*/;
-use test/*!*/;
-SET TIMESTAMP=1579609946/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=3/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+insert into t1 values(null, "c")
+/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=4/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
DELIMITER /*!*/;
-SET INSERT_ID=6/*!*/;
-use test/*!*/;
SET TIMESTAMP=1579609943/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=6/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609943/*!*/;
insert into t1 values(null, "f")
/*!*/;
+SET TIMESTAMP=1579609943/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -402,7 +625,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -411,28 +634,69 @@ SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "a")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=2/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "b")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=3/*!*/;
SET TIMESTAMP=1579609944/*!*/;
insert into t1 values(null, "c")
/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=4/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
DELIMITER /*!*/;
+SET TIMESTAMP=1579609943/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
+/*!\C latin1 *//*!*/;
+SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=6/*!*/;
DELIMITER ;
# End of log file
@@ -444,42 +708,66 @@ ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
-SET INSERT_ID=3/*!*/;
-use test/*!*/;
SET TIMESTAMP=1579609944/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=3/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
insert into t1 values(null, "c")
/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=4/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
DELIMITER /*!*/;
-SET INSERT_ID=6/*!*/;
-use test/*!*/;
SET TIMESTAMP=1579609943/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=6/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609943/*!*/;
insert into t1 values(null, "f")
/*!*/;
+SET TIMESTAMP=1579609943/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -493,7 +781,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -502,14 +790,26 @@ SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "a")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=2/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "b")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -523,7 +823,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -532,26 +832,56 @@ SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "a")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=2/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "b")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=3/*!*/;
SET TIMESTAMP=1579609944/*!*/;
insert into t1 values(null, "c")
/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=4/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -562,35 +892,65 @@ ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
-SET INSERT_ID=1/*!*/;
-use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=1/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "a")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=2/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "b")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=3/*!*/;
SET TIMESTAMP=1579609944/*!*/;
insert into t1 values(null, "c")
/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=4/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -600,23 +960,45 @@ ROLLBACK /* added by mysqlbinlog */;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
-SET INSERT_ID=4/*!*/;
-use test/*!*/;
-SET TIMESTAMP=1579609946/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=3/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+insert into t1 values(null, "c")
+/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=4/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -630,7 +1012,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -639,17 +1021,25 @@ SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "a")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=2/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "b")
/*!*/;
-SET INSERT_ID=3/*!*/;
-SET TIMESTAMP=1579609944/*!*/;
-insert into t1 values(null, "c")
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
/*!*/;
DELIMITER ;
# End of log file
@@ -660,18 +1050,21 @@ ROLLBACK /* added by mysqlbinlog */;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
-SET INSERT_ID=4/*!*/;
-use test/*!*/;
-SET TIMESTAMP=1579609946/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
-insert into t1 values(null, "d")
+BEGIN
+/*!*/;
+SET INSERT_ID=3/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+insert into t1 values(null, "c")
/*!*/;
DELIMITER ;
# End of log file
@@ -683,27 +1076,45 @@ ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
-SET INSERT_ID=3/*!*/;
-use test/*!*/;
SET TIMESTAMP=1579609944/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=3/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
insert into t1 values(null, "c")
/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=4/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -717,7 +1128,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -726,14 +1137,26 @@ SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "a")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=2/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "b")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -747,7 +1170,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -756,41 +1179,77 @@ SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "a")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=2/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "b")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=3/*!*/;
SET TIMESTAMP=1579609944/*!*/;
insert into t1 values(null, "c")
/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=4/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
DELIMITER /*!*/;
-SET INSERT_ID=6/*!*/;
-use test/*!*/;
SET TIMESTAMP=1579609943/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=6/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609943/*!*/;
insert into t1 values(null, "f")
/*!*/;
+SET TIMESTAMP=1579609943/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -801,50 +1260,86 @@ ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
-SET INSERT_ID=1/*!*/;
-use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=1/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "a")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=2/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "b")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=3/*!*/;
SET TIMESTAMP=1579609944/*!*/;
insert into t1 values(null, "c")
/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=4/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
DELIMITER /*!*/;
-SET INSERT_ID=6/*!*/;
-use test/*!*/;
SET TIMESTAMP=1579609943/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=6/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609943/*!*/;
insert into t1 values(null, "f")
/*!*/;
+SET TIMESTAMP=1579609943/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -854,38 +1349,66 @@ ROLLBACK /* added by mysqlbinlog */;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
-SET INSERT_ID=4/*!*/;
-use test/*!*/;
-SET TIMESTAMP=1579609946/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=3/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+insert into t1 values(null, "c")
+/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=4/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
DELIMITER /*!*/;
-SET INSERT_ID=6/*!*/;
-use test/*!*/;
SET TIMESTAMP=1579609943/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=6/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609943/*!*/;
insert into t1 values(null, "f")
/*!*/;
+SET TIMESTAMP=1579609943/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -899,7 +1422,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -908,29 +1431,69 @@ SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "a")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=2/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "b")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=3/*!*/;
SET TIMESTAMP=1579609944/*!*/;
insert into t1 values(null, "c")
/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=4/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
DELIMITER /*!*/;
-SET INSERT_ID=6/*!*/;
+SET TIMESTAMP=1579609943/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
+/*!\C latin1 *//*!*/;
+SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -941,42 +1504,66 @@ ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
-SET INSERT_ID=3/*!*/;
-use test/*!*/;
SET TIMESTAMP=1579609944/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=3/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
insert into t1 values(null, "c")
/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=4/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
DELIMITER /*!*/;
-SET INSERT_ID=6/*!*/;
-use test/*!*/;
SET TIMESTAMP=1579609943/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET INSERT_ID=6/*!*/;
+use test/*!*/;
+SET TIMESTAMP=1579609943/*!*/;
insert into t1 values(null, "f")
/*!*/;
+SET TIMESTAMP=1579609943/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -990,7 +1577,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -999,14 +1586,26 @@ SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "a")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=2/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "b")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -1020,7 +1619,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -1029,30 +1628,66 @@ SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "a")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=2/*!*/;
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "b")
/*!*/;
+SET TIMESTAMP=1579609942/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=3/*!*/;
SET TIMESTAMP=1579609944/*!*/;
insert into t1 values(null, "c")
/*!*/;
+SET TIMESTAMP=1579609944/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=4/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
+SET TIMESTAMP=1579609946/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=1579609943/*!*/;
+BEGIN
+/*!*/;
SET INSERT_ID=6/*!*/;
SET TIMESTAMP=1579609943/*!*/;
insert into t1 values(null, "f")
/*!*/;
+SET TIMESTAMP=1579609943/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
diff --git a/mysql-test/r/mysqlbinlog_row.result b/mysql-test/r/mysqlbinlog_row.result
index 9b562ac0fff..85416138c6d 100644
--- a/mysql-test/r/mysqlbinlog_row.result
+++ b/mysql-test/r/mysqlbinlog_row.result
@@ -339,7 +339,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/r/mysqlbinlog_row_innodb.result b/mysql-test/r/mysqlbinlog_row_innodb.result
index 86f0b67ebb3..dd98a12a0de 100644
--- a/mysql-test/r/mysqlbinlog_row_innodb.result
+++ b/mysql-test/r/mysqlbinlog_row_innodb.result
@@ -495,10 +495,10 @@ c15 0000000000
c16 -9223372036854775808
c17 0
c18 00000000000000000000
-c19 -3.40282e+38
+c19 -3.40282e38
c20 1.17549e-38
c21 000000000000
-c22 -1.7976931348623e+308
+c22 -1.7976931348623e308
c23 2.2250738585072e-308
c24 0000000000000000000000
c25 -9999999999
@@ -574,12 +574,12 @@ c15 4294967295
c16 9223372036854775807
c17 18446744073709551615
c18 18446744073709551615
-c19 3.40282e+38
-c20 3.40282e+38
-c21 03.40282e+38
-c22 1.7976931348623e+308
-c23 1.7976931348623e+308
-c24 001.7976931348623e+308
+c19 3.40282e38
+c20 3.40282e38
+c21 003.40282e38
+c22 1.7976931348623e308
+c23 1.7976931348623e308
+c24 0001.7976931348623e308
c25 9999999999
c26 9999999999
c27 9999999999
@@ -1557,12 +1557,12 @@ c15 4294967295
c16 9223372036854775807
c17 18446744073709551615
c18 18446744073709551615
-c19 3.40282e+38
-c20 3.40282e+38
-c21 03.40282e+38
-c22 1.7976931348623e+308
-c23 1.7976931348623e+308
-c24 001.7976931348623e+308
+c19 3.40282e38
+c20 3.40282e38
+c21 003.40282e38
+c22 1.7976931348623e308
+c23 1.7976931348623e308
+c24 0001.7976931348623e308
c25 9999999999
c26 9999999999
c27 9999999999
@@ -1636,10 +1636,10 @@ c15 0000000000
c16 -9223372036854775808
c17 0
c18 00000000000000000000
-c19 -3.40282e+38
+c19 -3.40282e38
c20 1.17549e-38
c21 000000000000
-c22 -1.7976931348623e+308
+c22 -1.7976931348623e308
c23 2.2250738585072e-308
c24 0000000000000000000000
c25 -9999999999
@@ -2256,7 +2256,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
@@ -2365,7 +2365,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
### INSERT INTO test.t1
### SET
-### @1=b'00000000' /* BIT(8) meta=256 nullable=1 is_null=0 */
+### @1=b'0' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'0000000000000000000000000000000000000000000000000000000000000000' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=-128 (128) /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=0 /* TINYINT meta=0 nullable=1 is_null=0 */
@@ -2458,7 +2458,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
### INSERT INTO test.t1
### SET
-### @1=b'00000001' /* BIT(8) meta=256 nullable=1 is_null=0 */
+### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=127 /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=-1 (255) /* TINYINT meta=0 nullable=1 is_null=0 */
@@ -2553,7 +2553,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
### INSERT INTO test.t1
### SET
-### @1=NULL /* type=16 meta=256 nullable=1 is_null=1 */
+### @1=NULL /* type=16 meta=1 nullable=1 is_null=1 */
### @2=NULL /* type=16 meta=2048 nullable=1 is_null=1 */
### @3=NULL /* type=1 meta=0 nullable=1 is_null=1 */
### @4=NULL /* type=1 meta=0 nullable=1 is_null=1 */
@@ -2580,7 +2580,7 @@ BEGIN
### @25=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @26=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @27=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
-### @28=NULL /* type=10 meta=0 nullable=1 is_null=1 */
+### @28=NULL /* type=14 meta=0 nullable=1 is_null=1 */
### @29=NULL /* type=12 meta=0 nullable=1 is_null=1 */
### @30=1000000000 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
### @31=NULL /* TIMESTAMP meta=0 nullable=1 is_null=1 */
@@ -2634,7 +2634,7 @@ BEGIN
### @79=3 /* INT meta=0 nullable=1 is_null=0 */
### INSERT INTO test.t1
### SET
-### @1=b'00000001' /* BIT(8) meta=256 nullable=1 is_null=0 */
+### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=127 /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=0 /* TINYINT meta=0 nullable=1 is_null=0 */
@@ -2727,7 +2727,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id # flags: STMT_END_F
### UPDATE test.t1
### WHERE
-### @1=b'00000000' /* BIT(8) meta=256 nullable=1 is_null=0 */
+### @1=b'0' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'0000000000000000000000000000000000000000000000000000000000000000' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=-128 (128) /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=0 /* TINYINT meta=0 nullable=1 is_null=0 */
@@ -2807,7 +2807,7 @@ BEGIN
### @78=b'00000000' /* SET(1 bytes) meta=63489 nullable=1 is_null=0 */
### @79=1 /* INT meta=0 nullable=1 is_null=0 */
### SET
-### @1=b'00000001' /* BIT(8) meta=256 nullable=1 is_null=0 */
+### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=127 /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=-1 (255) /* TINYINT meta=0 nullable=1 is_null=0 */
@@ -2900,7 +2900,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id # flags: STMT_END_F
### UPDATE test.t1
### WHERE
-### @1=b'00000001' /* BIT(8) meta=256 nullable=1 is_null=0 */
+### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=127 /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=-1 (255) /* TINYINT meta=0 nullable=1 is_null=0 */
@@ -2980,7 +2980,7 @@ BEGIN
### @78=b'00000111' /* SET(1 bytes) meta=63489 nullable=1 is_null=0 */
### @79=2 /* INT meta=0 nullable=1 is_null=0 */
### SET
-### @1=b'00000000' /* BIT(8) meta=256 nullable=1 is_null=0 */
+### @1=b'0' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'0000000000000000000000000000000000000000000000000000000000000000' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=-128 (128) /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=0 /* TINYINT meta=0 nullable=1 is_null=0 */
@@ -3073,7 +3073,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id # flags: STMT_END_F
### UPDATE test.t1
### WHERE
-### @1=NULL /* type=16 meta=256 nullable=1 is_null=1 */
+### @1=NULL /* type=16 meta=1 nullable=1 is_null=1 */
### @2=NULL /* type=16 meta=2048 nullable=1 is_null=1 */
### @3=NULL /* type=1 meta=0 nullable=1 is_null=1 */
### @4=NULL /* type=1 meta=0 nullable=1 is_null=1 */
@@ -3100,7 +3100,7 @@ BEGIN
### @25=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @26=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @27=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
-### @28=NULL /* type=10 meta=0 nullable=1 is_null=1 */
+### @28=NULL /* type=14 meta=0 nullable=1 is_null=1 */
### @29=NULL /* type=12 meta=0 nullable=1 is_null=1 */
### @30=1000000000 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
### @31=NULL /* TIMESTAMP meta=0 nullable=1 is_null=1 */
@@ -3153,7 +3153,7 @@ BEGIN
### @78=NULL /* TIMESTAMP meta=63489 nullable=1 is_null=1 */
### @79=3 /* INT meta=0 nullable=1 is_null=0 */
### SET
-### @1=b'00000001' /* BIT(8) meta=256 nullable=1 is_null=0 */
+### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=127 /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=0 /* TINYINT meta=0 nullable=1 is_null=0 */
@@ -3246,7 +3246,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id # flags: STMT_END_F
### UPDATE test.t1
### WHERE
-### @1=b'00000001' /* BIT(8) meta=256 nullable=1 is_null=0 */
+### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=127 /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=0 /* TINYINT meta=0 nullable=1 is_null=0 */
@@ -3326,7 +3326,7 @@ BEGIN
### @78=b'00000110' /* SET(1 bytes) meta=63489 nullable=1 is_null=0 */
### @79=4 /* INT meta=0 nullable=1 is_null=0 */
### SET
-### @1=NULL /* type=16 meta=256 nullable=1 is_null=1 */
+### @1=NULL /* type=16 meta=1 nullable=1 is_null=1 */
### @2=NULL /* type=16 meta=2048 nullable=1 is_null=1 */
### @3=NULL /* type=1 meta=0 nullable=1 is_null=1 */
### @4=NULL /* type=1 meta=0 nullable=1 is_null=1 */
@@ -3353,7 +3353,7 @@ BEGIN
### @25=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @26=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @27=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
-### @28=NULL /* type=10 meta=0 nullable=1 is_null=1 */
+### @28=NULL /* type=14 meta=0 nullable=1 is_null=1 */
### @29=NULL /* type=12 meta=0 nullable=1 is_null=1 */
### @30=1000000000 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
### @31=NULL /* TIMESTAMP meta=0 nullable=1 is_null=1 */
@@ -3419,7 +3419,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
### DELETE FROM test.t1
### WHERE
-### @1=b'00000001' /* BIT(8) meta=256 nullable=1 is_null=0 */
+### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=127 /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=-1 (255) /* TINYINT meta=0 nullable=1 is_null=0 */
@@ -3512,7 +3512,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
### DELETE FROM test.t1
### WHERE
-### @1=b'00000000' /* BIT(8) meta=256 nullable=1 is_null=0 */
+### @1=b'0' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'0000000000000000000000000000000000000000000000000000000000000000' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=-128 (128) /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=0 /* TINYINT meta=0 nullable=1 is_null=0 */
@@ -3605,7 +3605,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
### DELETE FROM test.t1
### WHERE
-### @1=b'00000001' /* BIT(8) meta=256 nullable=1 is_null=0 */
+### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=127 /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=0 /* TINYINT meta=0 nullable=1 is_null=0 */
@@ -3698,7 +3698,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
### DELETE FROM test.t1
### WHERE
-### @1=NULL /* type=16 meta=256 nullable=1 is_null=1 */
+### @1=NULL /* type=16 meta=1 nullable=1 is_null=1 */
### @2=NULL /* type=16 meta=2048 nullable=1 is_null=1 */
### @3=NULL /* type=1 meta=0 nullable=1 is_null=1 */
### @4=NULL /* type=1 meta=0 nullable=1 is_null=1 */
@@ -3725,7 +3725,7 @@ BEGIN
### @25=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @26=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @27=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
-### @28=NULL /* type=10 meta=0 nullable=1 is_null=1 */
+### @28=NULL /* type=14 meta=0 nullable=1 is_null=1 */
### @29=NULL /* type=12 meta=0 nullable=1 is_null=1 */
### @30=1000000000 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
### @31=NULL /* TIMESTAMP meta=0 nullable=1 is_null=1 */
@@ -3879,7 +3879,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
@@ -4246,7 +4246,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
@@ -4807,7 +4807,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
diff --git a/mysql-test/r/mysqlbinlog_row_myisam.result b/mysql-test/r/mysqlbinlog_row_myisam.result
index b9366d941f8..87f9ab877e1 100644
--- a/mysql-test/r/mysqlbinlog_row_myisam.result
+++ b/mysql-test/r/mysqlbinlog_row_myisam.result
@@ -495,10 +495,10 @@ c15 0000000000
c16 -9223372036854775808
c17 0
c18 00000000000000000000
-c19 -3.40282e+38
+c19 -3.40282e38
c20 1.17549e-38
c21 000000000000
-c22 -1.7976931348623e+308
+c22 -1.7976931348623e308
c23 2.2250738585072e-308
c24 0000000000000000000000
c25 -9999999999
@@ -574,12 +574,12 @@ c15 4294967295
c16 9223372036854775807
c17 18446744073709551615
c18 18446744073709551615
-c19 3.40282e+38
-c20 3.40282e+38
-c21 03.40282e+38
-c22 1.7976931348623e+308
-c23 1.7976931348623e+308
-c24 001.7976931348623e+308
+c19 3.40282e38
+c20 3.40282e38
+c21 003.40282e38
+c22 1.7976931348623e308
+c23 1.7976931348623e308
+c24 0001.7976931348623e308
c25 9999999999
c26 9999999999
c27 9999999999
@@ -1557,12 +1557,12 @@ c15 4294967295
c16 9223372036854775807
c17 18446744073709551615
c18 18446744073709551615
-c19 3.40282e+38
-c20 3.40282e+38
-c21 03.40282e+38
-c22 1.7976931348623e+308
-c23 1.7976931348623e+308
-c24 001.7976931348623e+308
+c19 3.40282e38
+c20 3.40282e38
+c21 003.40282e38
+c22 1.7976931348623e308
+c23 1.7976931348623e308
+c24 0001.7976931348623e308
c25 9999999999
c26 9999999999
c27 9999999999
@@ -1636,10 +1636,10 @@ c15 0000000000
c16 -9223372036854775808
c17 0
c18 00000000000000000000
-c19 -3.40282e+38
+c19 -3.40282e38
c20 1.17549e-38
c21 000000000000
-c22 -1.7976931348623e+308
+c22 -1.7976931348623e308
c23 2.2250738585072e-308
c24 0000000000000000000000
c25 -9999999999
@@ -2256,7 +2256,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
@@ -2584,7 +2584,7 @@ BEGIN
### @25=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @26=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @27=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
-### @28=NULL /* type=10 meta=0 nullable=1 is_null=1 */
+### @28=NULL /* type=14 meta=0 nullable=1 is_null=1 */
### @29=NULL /* type=12 meta=0 nullable=1 is_null=1 */
### @30=1000000000 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
### @31=NULL /* TIMESTAMP meta=0 nullable=1 is_null=1 */
@@ -3110,7 +3110,7 @@ BEGIN
### @25=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @26=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @27=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
-### @28=NULL /* type=10 meta=0 nullable=1 is_null=1 */
+### @28=NULL /* type=14 meta=0 nullable=1 is_null=1 */
### @29=NULL /* type=12 meta=0 nullable=1 is_null=1 */
### @30=1000000000 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
### @31=NULL /* TIMESTAMP meta=0 nullable=1 is_null=1 */
@@ -3365,7 +3365,7 @@ BEGIN
### @25=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @26=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @27=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
-### @28=NULL /* type=10 meta=0 nullable=1 is_null=1 */
+### @28=NULL /* type=14 meta=0 nullable=1 is_null=1 */
### @29=NULL /* type=12 meta=0 nullable=1 is_null=1 */
### @30=1000000000 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
### @31=NULL /* TIMESTAMP meta=0 nullable=1 is_null=1 */
@@ -3745,7 +3745,7 @@ BEGIN
### @25=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @26=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @27=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
-### @28=NULL /* type=10 meta=0 nullable=1 is_null=1 */
+### @28=NULL /* type=14 meta=0 nullable=1 is_null=1 */
### @29=NULL /* type=12 meta=0 nullable=1 is_null=1 */
### @30=1000000000 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
### @31=NULL /* TIMESTAMP meta=0 nullable=1 is_null=1 */
@@ -3901,7 +3901,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
@@ -4274,7 +4274,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
@@ -4845,7 +4845,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
diff --git a/mysql-test/r/mysqlbinlog_row_trans.result b/mysql-test/r/mysqlbinlog_row_trans.result
index 9c3348a9e76..5c96db7d19b 100644
--- a/mysql-test/r/mysqlbinlog_row_trans.result
+++ b/mysql-test/r/mysqlbinlog_row_trans.result
@@ -135,7 +135,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -215,85 +215,20 @@ COMMIT/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
-BEGIN
-/*!*/;
-# at #
-#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
-SET TIMESTAMP=1000000000/*!*/;
TRUNCATE TABLE t1
/*!*/;
# at #
-#010909 4:46:40 server id 1 end_log_pos # Xid = #
-COMMIT/*!*/;
-# at #
-#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
-SET TIMESTAMP=1000000000/*!*/;
-BEGIN
-/*!*/;
-# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
TRUNCATE TABLE t1
/*!*/;
# at #
-#010909 4:46:40 server id 1 end_log_pos # Xid = #
-COMMIT/*!*/;
-# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
# at #
# at #
-#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t1` mapped to number #
-#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
-### INSERT INTO test.t1
-### SET
-### @1=1 /* INT meta=0 nullable=1 is_null=0 */
-### @2='varchar-1' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
-### INSERT INTO test.t1
-### SET
-### @1=2 /* INT meta=0 nullable=1 is_null=0 */
-### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
-### INSERT INTO test.t1
-### SET
-### @1=3 /* INT meta=0 nullable=1 is_null=0 */
-### @2='varchar-3' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
-# at #
-# at #
-#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t1` mapped to number #
-#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id # flags: STMT_END_F
-### UPDATE test.t1
-### WHERE
-### @1=1 /* INT meta=0 nullable=1 is_null=0 */
-### @2='varchar-1' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
-### SET
-### @1=11 /* INT meta=0 nullable=1 is_null=0 */
-### @2='varchar-1' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
-### UPDATE test.t1
-### WHERE
-### @1=2 /* INT meta=0 nullable=1 is_null=0 */
-### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
-### SET
-### @1=12 /* INT meta=0 nullable=1 is_null=0 */
-### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
-### UPDATE test.t1
-### WHERE
-### @1=3 /* INT meta=0 nullable=1 is_null=0 */
-### @2='varchar-3' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
-### SET
-### @1=13 /* INT meta=0 nullable=1 is_null=0 */
-### @2='varchar-3' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
-# at #
-# at #
-#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t1` mapped to number #
-#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
-### DELETE FROM test.t1
-### WHERE
-### @1=12 /* INT meta=0 nullable=1 is_null=0 */
-### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
-# at #
-# at #
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t2` mapped to number #
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
### INSERT INTO test.t2
@@ -309,6 +244,16 @@ BEGIN
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-3' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
# at #
+#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+# at #
+#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+# at #
# at #
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t2` mapped to number #
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id # flags: STMT_END_F
@@ -334,33 +279,27 @@ BEGIN
### @1=13 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-3' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
# at #
-# at #
-#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t2` mapped to number #
-#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
-### DELETE FROM test.t2
-### WHERE
-### @1=12 /* INT meta=0 nullable=1 is_null=0 */
-### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
-# at #
-#010909 4:46:40 server id 1 end_log_pos # Xid = #
-COMMIT/*!*/;
-# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
-BEGIN
+COMMIT
/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
-TRUNCATE TABLE t1
+BEGIN
/*!*/;
# at #
-#010909 4:46:40 server id 1 end_log_pos # Xid = #
-COMMIT/*!*/;
+# at #
+#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t2` mapped to number #
+#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
+### DELETE FROM test.t2
+### WHERE
+### @1=12 /* INT meta=0 nullable=1 is_null=0 */
+### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
-TRUNCATE TABLE t2
+COMMIT
/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
@@ -417,6 +356,24 @@ BEGIN
### @1=12 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
# at #
+#010909 4:46:40 server id 1 end_log_pos # Xid = #
+COMMIT/*!*/;
+# at #
+#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+TRUNCATE TABLE t1
+/*!*/;
+# at #
+#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+TRUNCATE TABLE t2
+/*!*/;
+# at #
+#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+# at #
# at #
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t2` mapped to number #
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
@@ -433,6 +390,16 @@ BEGIN
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-3' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
# at #
+#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+# at #
+#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+# at #
# at #
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t2` mapped to number #
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id # flags: STMT_END_F
@@ -458,6 +425,16 @@ BEGIN
### @1=13 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-3' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
# at #
+#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+# at #
+#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+BEGIN
+/*!*/;
+# at #
# at #
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t2` mapped to number #
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
@@ -468,12 +445,7 @@ BEGIN
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
-ROLLBACK
-/*!*/;
-# at #
-#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
-SET TIMESTAMP=1000000000/*!*/;
-BEGIN
+COMMIT
/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
@@ -481,9 +453,6 @@ SET TIMESTAMP=1000000000/*!*/;
TRUNCATE TABLE t1
/*!*/;
# at #
-#010909 4:46:40 server id 1 end_log_pos # Xid = #
-COMMIT/*!*/;
-# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
TRUNCATE TABLE t2
diff --git a/mysql-test/r/mysqlcheck.result b/mysql-test/r/mysqlcheck.result
index 5f1a0565b10..06175955d7f 100644
--- a/mysql-test/r/mysqlcheck.result
+++ b/mysql-test/r/mysqlcheck.result
@@ -162,18 +162,15 @@ CREATE TABLE t1 (a INT);
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
WHERE TRIGGER_SCHEMA="#mysql50#a@b" ORDER BY trigger_name;
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL #mysql50#a@b tr1 INSERT NULL #mysql50#a@b #mysql50#c@d 0 NULL SET NEW.a = 10 * NEW.a ROW BEFORE NULL NULL OLD NEW NULL root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
-NULL #mysql50#a@b tr2 INSERT NULL #mysql50#a@b t1 0 NULL SET NEW.a = 100 * NEW.a ROW BEFORE NULL NULL OLD NEW NULL root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
-Warnings:
-Warning 1603 Triggers for table `#mysql50#a@b`.`#mysql50#c@d` have no creation context
-Warning 1603 Triggers for table `#mysql50#a@b`.`t1` have no creation context
+def #mysql50#a@b tr1 INSERT def #mysql50#a@b #mysql50#c@d 0 NULL SET NEW.a = 10 * NEW.a ROW BEFORE NULL NULL OLD NEW NULL root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+def #mysql50#a@b tr2 INSERT def #mysql50#a@b t1 0 NULL SET NEW.a = 100 * NEW.a ROW BEFORE NULL NULL OLD NEW NULL root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
mysqlcheck --fix-db-names --fix-table-names --all-databases
USE `a@b`;
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
WHERE TRIGGER_SCHEMA="a@b" ORDER BY trigger_name;
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL a@b tr1 INSERT NULL a@b c@d 0 NULL SET NEW.a = 10 * NEW.a ROW BEFORE NULL NULL OLD NEW NULL root@localhost utf8 utf8_general_ci latin1_swedish_ci
-NULL a@b tr2 INSERT NULL a@b t1 0 NULL SET NEW.a = 100 * NEW.a ROW BEFORE NULL NULL OLD NEW NULL root@localhost utf8 utf8_general_ci latin1_swedish_ci
+def a@b tr1 INSERT def a@b c@d 0 NULL SET NEW.a = 10 * NEW.a ROW BEFORE NULL NULL OLD NEW NULL root@localhost utf8 utf8_general_ci latin1_swedish_ci
+def a@b tr2 INSERT def a@b t1 0 NULL SET NEW.a = 100 * NEW.a ROW BEFORE NULL NULL OLD NEW NULL root@localhost utf8 utf8_general_ci latin1_swedish_ci
INSERT INTO `c@d` VALUES (2), (1);
SELECT * FROM `c@d`;
a
diff --git a/mysql-test/r/mysqld--help-notwin.result b/mysql-test/r/mysqld--help-notwin.result
new file mode 100644
index 00000000000..a66b722ba4b
--- /dev/null
+++ b/mysql-test/r/mysqld--help-notwin.result
@@ -0,0 +1,1001 @@
+The following options may be given as the first argument:
+--print-defaults Print the program argument list and exit
+--no-defaults Don't read default options from any options file
+--defaults-file=# Only read default options from the given file #
+--defaults-extra-file=# Read this file after the global files are read
+
+ --abort-slave-event-count=#
+ Option used by mysql-test for debugging and testing of
+ replication.
+ --allow-suspicious-udfs
+ Allows use of UDFs consisting of only one symbol xxx()
+ 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
+ -a, --ansi Use ANSI SQL syntax instead of MySQL syntax. This mode
+ will also set transaction isolation level 'serializable'.
+ --archive[=name] Enable or disable ARCHIVE plugin. Possible values are ON,
+ OFF, FORCE (don't start if the plugin fails to load).
+ --auto-increment-increment[=#]
+ Auto-increment columns are incremented by this
+ --auto-increment-offset[=#]
+ Offset added to Auto-increment columns. Used when
+ auto-increment-increment != 1
+ --automatic-sp-privileges
+ Creating and dropping stored procedures alters ACLs
+ (Defaults to on; use --skip-automatic-sp-privileges to disable.)
+ --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
+ -b, --basedir=name Path to installation directory. All paths are usually
+ resolved relative to this
+ --big-tables Allow big result sets by saving all temporary sets on
+ file (Solves most 'table full' errors)
+ --bind-address=name IP address to bind to.
+ --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
+ --binlog-direct-non-transactional-updates
+ Causes updates to non-transactional engines using
+ statement format to be written directly to binary log.
+ Before using this option make sure that 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.
+ --binlog-do-db=name Tells the master it should log updates for the specified
+ database, and exclude all others not explicitly
+ mentioned.
+ --binlog-format=name
+ What form of binary logging the master will use: either
+ ROW for row-based binary logging, STATEMENT for
+ statement-based binary logging, or MIXED. MIXED is
+ statement-based binary logging except for those
+ statements where only row-based is correct: those which
+ involve user-defined functions (i.e. UDFs) or the UUID()
+ function; for those, row-based binary logging is
+ automatically used. If NDBCLUSTER is enabled and
+ binlog-format is MIXED, the format switches to row-based
+ and back implicitly per each query accessing an
+ NDBCLUSTER table
+ --binlog-ignore-db=name
+ Tells the master that updates to the given database
+ should not be logged tothe binary log.
+ --binlog-row-event-max-size=#
+ 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.
+ --blackhole[=name] Enable or disable BLACKHOLE plugin. Possible values are
+ ON, OFF, FORCE (don't start if the plugin fails to load).
+ --bootstrap Used by mysql installation scripts.
+ --bulk-insert-buffer-size=#
+ Size of tree cache used in bulk insert optimisation. Note
+ that this is a limit per thread!
+ --character-set-client-handshake
+ Don't ignore client side character set value sent during
+ handshake.
+ (Defaults to on; use --skip-character-set-client-handshake to disable.)
+ --character-set-filesystem=name
+ Set the filesystem character set.
+ -C, --character-set-server=name
+ Set the default character set.
+ --character-sets-dir=name
+ Directory where character sets are
+ -r, --chroot=name Chroot mysqld daemon during startup.
+ --collation-server=name
+ Set the default collation.
+ --completion-type=name
+ The transaction completion type, one of NO_CHAIN, CHAIN,
+ RELEASE
+ --concurrent-insert[=name]
+ Use concurrent insert with MyISAM. Possible values are
+ NEVER, AUTO, ALWAYS
+ --connect-timeout=# The number of seconds the mysqld server is waiting for a
+ connect packet before responding with 'Bad handshake'
+ --console Write error output on screen; Don't remove the console
+ window on windows.
+ --core-file Write core on errors.
+ -h, --datadir=name Path to the database root directory
+ --date-format=name The DATE format (ignored)
+ --datetime-format=name
+ The DATETIME format (ignored)
+ -C, --default-character-set=name
+ Set the default character set (deprecated option, use
+ --character-set-server instead).
+ --default-collation=name
+ Set the default collation (deprecated option, use
+ --collation-server instead).
+ --default-storage-engine=name
+ The default storage engine for new tables
+ --default-time-zone=name
+ Set the default time zone.
+ --default-week-format=#
+ The default week format used by WEEK() functions
+ --delay-key-write[=name]
+ Type of DELAY_KEY_WRITE
+ --delay-key-write-for-all-tables
+ Don't flush key buffers between writes for any MyISAM
+ table (Deprecated option, use --delay-key-write=all
+ instead).
+ --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
+ --delayed-insert-timeout=#
+ How long a INSERT DELAYED thread should wait for INSERT
+ statements before terminating
+ --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
+ --disconnect-slave-event-count=#
+ Option used by mysql-test for debugging and testing of
+ replication.
+ --div-precision-increment=#
+ Precision of the result of '/' operator will be increased
+ on that value
+ --enable-locking Deprecated option, use --external-locking instead.
+ --engine-condition-pushdown
+ Push supported query conditions to the storage engine.
+ Deprecated, use --optimizer-switch instead.
+ (Defaults to on; use --skip-engine-condition-pushdown to disable.)
+ --event-scheduler[=name]
+ Enable the event scheduler. Possible values are ON, OFF,
+ and DISABLED (keep the event scheduler completely
+ deactivated, it cannot be activated run-time)
+ -T, --exit-info[=#] Used for debugging; Use at your own risk!
+ --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
+ --external-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.
+ --federated[=name] Enable or disable FEDERATED plugin. Possible values are
+ ON, OFF, FORCE (don't start if the plugin fails to load).
+ --flush Flush MyISAM tables to disk between SQL commands
+ --flush-time=# A dedicated thread is created to flush all tables at the
+ given interval
+ --ft-boolean-syntax=name
+ List of operators for MATCH ... AGAINST ( ... IN BOOLEAN
+ MODE)
+ --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
+ --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
+ --ft-query-expansion-limit=#
+ Number of best matches to use for query expansion
+ --ft-stopword-file=name
+ Use stopwords from this file instead of built-in list
+ --gdb Set up signals usable for debugging
+ --general-log Log connections and queries to a table or log file.
+ Defaults logging to a file hostname.log or a table
+ mysql.general_logif --log-output=TABLE is used
+ --general-log-file=name
+ Log connections and queries to given file
+ --group-concat-max-len=#
+ The maximum length of the result of function
+ GROUP_CONCAT()
+ -?, --help Display this help and exit.
+ --ignore-builtin-innodb
+ Disable initialization of builtin InnoDB plugin
+ --init-connect=name Command(s) that are executed for each new connection
+ --init-file=name Read SQL commands from this file at startup
+ --init-rpl-role=name
+ Set the replication role.
+ --init-slave=name Command(s) that are executed by a slave server each time
+ the SQL thread starts
+ --interactive-timeout=#
+ The number of seconds the server waits for activity on an
+ interactive connection before closing it
+ --join-buffer-size=#
+ The size of the buffer that is used for full joins
+ --keep-files-on-create
+ Don't overwrite stale .MYD and .MYI even if no directory
+ is specified
+ --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
+ --key-cache-age-threshold=#
+ This characterizes the number of hits a hot block has to
+ be untouched 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
+ --key-cache-block-size=#
+ The default size of key cache blocks
+ --key-cache-division-limit=#
+ The minimum percentage of warm blocks in key cache
+ -L, --language=name Client error messages in given language. May be given as
+ a full path. Deprecated. Use --lc-messages-dir instead.
+ --large-pages Enable support for large pages
+ --lc-messages=name Set the language used for the error messages.
+ -L, --lc-messages-dir=name
+ Directory where error messages are
+ --lc-time-names=name
+ Set the language used for the month names and the days of
+ the week.
+ --local-infile Enable LOAD DATA LOCAL INFILE
+ (Defaults to on; use --skip-local-infile to disable.)
+ -l, --log[=name] Log connections and queries to file (deprecated option,
+ use --general-log/--general-log-file instead).
+ --log-bin[=name] 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.
+ --log-bin-index=name
+ File that holds the names for last binary log files.
+ --log-bin-trust-function-creators
+ If set to FALSE (the default), then when --log-bin is
+ used, creation of a stored function (or trigger) is
+ allowed only to users having the SUPER privilege and only
+ if this stored function (trigger) may not break binary
+ logging. 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 TRUE
+ --log-error[=name] Error log file
+ --log-isam[=name] Log all MyISAM changes to file.
+ -0, --log-long-format
+ Log some extra information to update log. Please note
+ that this option is deprecated; see --log-short-format
+ option.
+ --log-output=name Syntax: log-output=value[,value...], where "value" could
+ be TABLE, FILE or NONE
+ --log-queries-not-using-indexes
+ Log queries that are executed without benefit of any
+ index to the slow log if it is open
+ --log-short-format Don't log extra information to update and slow-query
+ logs.
+ --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
+ --log-slow-admin-statements
+ Log slow OPTIMIZE, ANALYZE, ALTER and other
+ administrative statements to the slow log if it is open.
+ --log-slow-queries[=name]
+ 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.
+ --log-slow-slave-statements
+ Log slow statements executed by slave thread to the slow
+ log if it is open.
+ --log-tc=name Path to transaction coordinator log (used for
+ transactions that affect more than one storage engine,
+ when binary log is disabled)
+ --log-tc-size=# Size of transaction coordinator log.
+ --log-update[=name] The update log is deprecated since version 5.0, is
+ replaced by the binary log and this option justs turns on
+ --log-bin instead.
+ -W, --log-warnings[=#]
+ Log some not critical warnings to the log file
+ --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 precision
+ --low-priority-updates
+ INSERT/DELETE/UPDATE has lower priority than selects
+ --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
+ --master-info-file=name
+ 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-retry-count=#
+ The number of tries the slave will make to connect to the
+ master before giving up.
+ --max-allowed-packet=#
+ Max packet length to send to or receive from the server
+ --max-binlog-cache-size=#
+ Can be used to restrict the total size used to cache a
+ multi-transaction query
+ --max-binlog-dump-events=#
+ Option used by mysql-test for debugging and testing of
+ replication.
+ --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
+ --max-connect-errors=#
+ If there is more than this number of interrupted
+ connections from a host this host will be blocked from
+ further connections
+ --max-connections=# The number of simultaneous clients allowed
+ --max-delayed-threads=#
+ Don't start more than this number of threads to handle
+ INSERT DELAYED statements. If set to zero INSERT DELAYED
+ will be not used
+ --max-error-count=# Max number of errors/warnings to store for a statement
+ --max-heap-table-size=#
+ Don't allow creation of heap tables bigger than this
+ --max-join-size=# Joins that are probably going to read more than
+ max_join_size records return an error
+ --max-length-for-sort-data=#
+ Max number of bytes in sorted records
+ --max-prepared-stmt-count=#
+ Maximum number of prepared statements in the server
+ --max-relay-log-size=#
+ If non-zero: relay log will be rotated automatically when
+ the size exceeds this value; if zero: when the size
+ exceeds max_binlog_size
+ --max-seeks-for-key=#
+ Limit assumed max number of seeks when looking up rows
+ based on a key
+ --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)
+ --max-sp-recursion-depth[=#]
+ Maximum stored procedure recursion depth
+ --max-tmp-tables=# Maximum number of temporary tables a client can keep open
+ at a time
+ --max-user-connections=#
+ The maximum number of active connections for a single
+ user (0 = no limit)
+ --max-write-lock-count=#
+ After this many write locks, allow some read locks to run
+ in between
+ --memlock Lock mysqld in memory.
+ --min-examined-row-limit=#
+ Don't write queries to slow log that examine fewer rows
+ than that
+ --multi-range-count=#
+ Number of key ranges to request at once
+ --myisam-block-size=#
+ Block size to be used for MyISAM index pages
+ --myisam-data-pointer-size=#
+ Default pointer size to be used for MyISAM tables
+ --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
+ --myisam-mmap-size=#
+ Restricts the total memory used for memory mapping of
+ MySQL tables
+ --myisam-recover-options[=name]
+ Syntax: myisam-recover-options[=option[,option...]],
+ where option can be DEFAULT, BACKUP, FORCE, QUICK, or OFF
+ --myisam-repair-threads=#
+ If larger than 1, when repairing a MyISAM table all
+ indexes will be created in parallel, with one thread per
+ index. The value of 1 disables parallel repair
+ --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
+ --myisam-stats-method=name
+ Specifies how MyISAM index statistics collection code
+ should treat NULLs. Possible values of name are
+ NULLS_UNEQUAL (default behavior for 4.1 and later),
+ NULLS_EQUAL (emulate 4.0 behavior), and NULLS_IGNORED
+ --myisam-use-mmap Use memory mapping for reading and writing MyISAM tables
+ --net-buffer-length=#
+ Buffer length for TCP/IP and socket communication
+ --net-read-timeout=#
+ Number of seconds to wait for more data from a connection
+ before aborting the read
+ --net-retry-count=# If a read on a communication port is interrupted, retry
+ this many times before giving up
+ --net-write-timeout=#
+ Number of seconds to wait for a block to be written to a
+ connection before aborting the write
+ -n, --new Use very new possible "unsafe" functions
+ --old Use compatible behavior
+ --old-alter-table Use old, non-optimized alter table
+ --old-passwords Use old password encryption method (needed for 4.0 and
+ older clients)
+ --old-style-user-limits
+ Enable old-style user limits (before 5.0.3 user resources
+ were counted per each user+host vs. per account)
+ --one-thread (deprecated): Only use one thread (for debugging under
+ Linux). Use thread-handling=no-threads instead
+ --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 file descriptors
+ --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
+ --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. Values smaller 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 63, the
+ optimizer will switch to the original find_best
+ search(used for testing/comparison)
+ --optimizer-switch=name
+ optimizer_switch=option=val[,option=val...], where option
+ is one of {index_merge, index_merge_union,
+ index_merge_sort_union, index_merge_intersection,
+ engine_condition_pushdown} and val is one of {on, off,
+ default}
+ --partition[=name] Enable or disable partition plugin. Possible values are
+ ON, OFF, FORCE (don't start if the plugin fails to load).
+ --performance-schema
+ Enable the performance schema.
+ --performance-schema-events-waits-history-long-size=#
+ Number of rows in EVENTS_WAITS_HISTORY_LONG.
+ --performance-schema-events-waits-history-size=#
+ Number of rows per thread in EVENTS_WAITS_HISTORY.
+ --performance-schema-max-cond-classes=#
+ Maximum number of condition instruments.
+ --performance-schema-max-cond-instances=#
+ Maximum number of instrumented condition objects.
+ --performance-schema-max-file-classes=#
+ Maximum number of file instruments.
+ --performance-schema-max-file-handles=#
+ Maximum number of opened instrumented files.
+ --performance-schema-max-file-instances=#
+ Maximum number of instrumented files.
+ --performance-schema-max-mutex-classes=#
+ Maximum number of mutex instruments.
+ --performance-schema-max-mutex-instances=#
+ Maximum number of instrumented MUTEX objects.
+ --performance-schema-max-rwlock-classes=#
+ Maximum number of rwlock instruments.
+ --performance-schema-max-rwlock-instances=#
+ Maximum number of instrumented RWLOCK objects.
+ --performance-schema-max-table-handles=#
+ Maximum number of opened instrumented tables.
+ --performance-schema-max-table-instances=#
+ Maximum number of instrumented tables.
+ --performance-schema-max-thread-classes=#
+ Maximum number of thread instruments.
+ --performance-schema-max-thread-instances=#
+ Maximum number of instrumented threads.
+ --pid-file=name Pid file used by safe_mysqld
+ --plugin-dir=name Directory for plugins
+ --plugin-load=name 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.
+ -P, --port=# Port number to use for connection or 0 to default to,
+ my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default
+ (3306), whatever comes first
+ --port-open-timeout=#
+ Maximum time in seconds to wait for the port to become
+ free. (Default: no wait)
+ --preload-buffer-size=#
+ The size of the buffer that is allocated when preloading
+ indexes
+ --profiling-history-size=#
+ Limit of query profiling memory
+ --query-alloc-block-size=#
+ Allocation block size for query parsing and execution
+ --query-cache-limit=#
+ Don't cache results that are bigger than this
+ --query-cache-min-res-unit=#
+ The minimum size for blocks allocated by the query cache
+ --query-cache-size=#
+ The memory allocated to store results from old queries
+ --query-cache-type=name
+ OFF = Don't cache or retrieve results. ON = Cache all
+ results except SELECT SQL_NO_CACHE ... queries. DEMAND =
+ Cache only SELECT SQL_CACHE ... queries
+ --query-cache-wlock-invalidate
+ Invalidate queries in query cache on LOCK for write
+ --query-prealloc-size=#
+ Persistent buffer for query parsing and execution
+ --range-alloc-block-size=#
+ Allocation block size for storing ranges during
+ optimization
+ --read-buffer-size=#
+ 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
+ --read-only Make all non-temporary tables read-only, with the
+ exception for replication (slave) threads and users with
+ the SUPER privilege
+ --read-rnd-buffer-size=#
+ When reading rows in sorted order after a sort, the rows
+ are read through this buffer to avoid a disk seeks. If
+ not set, then it's set to the value of record_buffer
+ --record-buffer=# Deprecated; use --read-buffer-size instead.
+ --relay-log=name The location and name to use for relay logs
+ --relay-log-index=name
+ The location and name to use for the file that keeps a
+ list of the last relay logs
+ --relay-log-info-file=name
+ The location and name of the file that remembers where
+ the SQL replication thread is in the relay logs
+ --relay-log-purge if disabled - do not purge relay logs. if enabled - purge
+ them as soon as they are no more needed
+ (Defaults to on; use --skip-relay-log-purge to disable.)
+ --relay-log-recovery
+ Enables automatic relay log recovery right after the
+ database startup, which means that the IO Thread starts
+ re-fetching from the master right after the last
+ transaction processed
+ --relay-log-space-limit=#
+ Maximum space to use for all relay logs
+ --replicate-do-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.%.
+ --replicate-do-table=name
+ 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.
+ --replicate-ignore-db=name
+ 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.%.
+ --replicate-ignore-table=name
+ 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-datbase updates, in contrast to
+ replicate-ignore-db.
+ --replicate-rewrite-db=name
+ Updates to a database with a different name than the
+ original. Example:
+ replicate-rewrite-db=master_db_name->slave_db_name.
+ --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-wild-do-table=name
+ 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.
+ --replicate-wild-ignore-table=name
+ 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.
+ --report-host=name Hostname or IP of the slave to be reported to the master
+ during slave registration. Will appear in the output of
+ SHOW SLAVE HOSTS. Leave unset if you do not want the
+ slave to register itself with the master. Note that it is
+ not sufficient for the master to simply read the IP of
+ the slave off 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
+ --report-password=name
+ The account password of the slave to be reported to the
+ master during slave registration
+ --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
+ --report-user=name The account user name of the slave to be reported to the
+ master during slave registration
+ --rpl-recovery-rank=#
+ Unused, will be removed
+ --safe-mode Skip some optimize stages (for testing).
+ --safe-show-database
+ Deprecated option; use GRANT SHOW DATABASES instead...
+ --safe-user-create Don't allow new user creation by the user who has no
+ write privileges to the mysql.user table.
+ --secure-auth Disallow authentication for accounts that have old
+ (pre-4.1) passwords
+ --secure-file-priv=name
+ Limit LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE() to
+ files within specified directory
+ --server-id=# Uniquely identifies the server instance in the community
+ of replication partners
+ -O, --set-variable=name
+ Change the value of a variable. Please note that this
+ option is deprecated;you can set variables directly with
+ --variable-name=value.
+ --show-slave-auth-info
+ Show user and password in SHOW SLAVE HOSTS on this master
+ --skip-grant-tables Start without grant tables. This gives all users FULL
+ ACCESS to all tables!
+ --skip-host-cache Don't cache host names.
+ --skip-locking Deprecated option, use --skip-external-locking instead.
+ --skip-name-resolve Don't resolve hostnames. All hostnames are IP's or
+ 'localhost'.
+ --skip-networking Don't allow connection with TCP/IP
+ --skip-new Don't use new, possible wrong routines.
+ --skip-show-database
+ Don't allow 'SHOW DATABASE' commands
+ --skip-slave-start If set, slave is not autostarted.
+ --skip-stack-trace Don't print a stack trace on failure.
+ --skip-symlink Don't allow symlinking of tables. Deprecated option. Use
+ --skip-symbolic-links instead.
+ --skip-thread-priority
+ Don't give threads different priorities. This option is
+ deprecated because it has no effect; the implied behavior
+ is already the default.
+ --slave-compressed-protocol
+ Use compression on master/slave protocol
+ --slave-exec-mode=name
+ 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-load-tmpdir=name
+ The location where the slave should put its temporary
+ files when replicating a LOAD DATA INFILE command
+ --slave-net-timeout=#
+ Number of seconds to wait for more data from a
+ master/slave connection before aborting the read
+ --slave-skip-errors=name
+ Tells the slave thread to continue replication when a
+ query event returns an error from the provided list
+ --slave-transaction-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
+ --slave-type-conversions=name
+ Set of slave type conversions that are enabled. Legal
+ values are: ALL_LOSSY to enable lossy conversions and
+ ALL_NON_LOSSY to enable non-lossy conversions. If the
+ variable is assigned the empty set, no conversions are
+ allowed and it is expected that the types match exactly.
+ --slow-launch-time=#
+ If creating the thread takes longer than this value (in
+ seconds), the Slow_launch_threads counter will be
+ incremented
+ --slow-query-log Log slow queries to a table or log file. Defaults logging
+ to a file hostname-slow.log or a table mysql.slow_log if
+ --log-output=TABLE is used. Must be enabled to activate
+ other slow log options
+ --slow-query-log-file=name
+ Log slow queries to given log file. Defaults logging to
+ hostname-slow.log. Must be enabled to activate other slow
+ log options
+ --socket=name Socket file to use for connection
+ --sort-buffer-size=#
+ Each thread that needs to do a sort allocates a buffer of
+ this size
+ --sporadic-binlog-dump-fail
+ Option used by mysql-test for debugging and testing of
+ replication.
+ --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.
+ --sql-mode=name Syntax: sql-mode=mode[,mode[,mode...]]. See the manual
+ for the complete list of valid sql modes
+ -s, --symbolic-links
+ Enable symbolic link support.
+ --sync-binlog=# Synchronously flush binary log to disk after every #th
+ event. Use 0 (default) to disable synchronous flushing
+ --sync-frm Sync .frm files to disk on creation
+ (Defaults to on; use --skip-sync-frm to disable.)
+ --sync-master-info=#
+ Synchronously flush master info to disk after every #th
+ event. Use 0 (default) to disable synchronous flushing
+ --sync-relay-log=# Synchronously flush relay log to disk after every #th
+ event. Use 0 (default) to disable synchronous flushing
+ --sync-relay-log-info=#
+ Synchronously flush relay log info to disk after every
+ #th transaction. Use 0 (default) to disable synchronous
+ flushing
+ --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.
+ --table-cache=# Deprecated; use --table-open-cache instead.
+ --table-definition-cache=#
+ The number of cached table definitions
+ --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
+ --table-open-cache=#
+ The number of cached open tables
+ --tc-heuristic-recover=name
+ Decision to use in heuristic recover process. Possible
+ values are COMMIT or ROLLBACK.
+ --thread-cache-size=#
+ How many threads we should keep in a cache for reuse
+ --thread-handling=name
+ Define threads usage for handling queries, one of
+ one-thread-per-connection, no-threads
+ --thread-stack=# The stack size for each thread
+ --time-format=name The TIME format (ignored)
+ --timed-mutexes Specify whether to time mutexes (only InnoDB mutexes are
+ currently supported)
+ --tmp-table-size=# If an internal in-memory temporary table exceeds this
+ size, MySQL will automatically convert it to an on-disk
+ MyISAM table
+ -t, --tmpdir=name Path for temporary files. Several paths may be specified,
+ separated by a colon (:), in this case they are used in a
+ round-robin fashion
+ --transaction-alloc-block-size=#
+ Allocation block size for transactions to be stored in
+ binary log
+ --transaction-isolation=name
+ Default transaction isolation level.
+ --transaction-prealloc-size=#
+ Persistent buffer for transactions to be stored in binary
+ log
+ --updatable-views-with-limit=name
+ 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. 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)
+ -s, --use-symbolic-links
+ Enable symbolic link support. Deprecated option; use
+ --symbolic-links instead.
+ -u, --user=name Run mysqld daemon as user.
+ -v, --verbose Used with --help option for detailed help
+ -V, --version Output version information and exit.
+ --wait-timeout=# The number of seconds the server waits for activity on a
+ connection before closing it
+ -W, --warnings[=#] Deprecated; use --log-warnings instead.
+
+Variables (--variable-name=value)
+and boolean options {FALSE|TRUE} Value (after reading options)
+------------------------------------------------- ------------------------
+abort-slave-event-count 0
+allow-suspicious-udfs FALSE
+archive ON
+auto-increment-increment 1
+auto-increment-offset 1
+automatic-sp-privileges TRUE
+back-log 50
+big-tables FALSE
+bind-address (No default value)
+binlog-cache-size 32768
+binlog-direct-non-transactional-updates FALSE
+binlog-format STATEMENT
+binlog-row-event-max-size 1024
+blackhole ON
+bulk-insert-buffer-size 8388608
+character-set-client-handshake TRUE
+character-set-filesystem binary
+character-set-server latin1
+character-sets-dir MYSQL_SHAREDIR/charsets/
+chroot (No default value)
+collation-server latin1_swedish_ci
+completion-type NO_CHAIN
+concurrent-insert AUTO
+connect-timeout 10
+console FALSE
+date-format %Y-%m-%d
+datetime-format %Y-%m-%d %H:%i:%s
+default-character-set latin1
+default-collation latin1_swedish_ci
+default-storage-engine MyISAM
+default-time-zone (No default value)
+default-week-format 0
+delay-key-write ON
+delayed-insert-limit 100
+delayed-insert-timeout 300
+delayed-queue-size 1000
+disconnect-slave-event-count 0
+div-precision-increment 4
+enable-locking FALSE
+engine-condition-pushdown TRUE
+event-scheduler OFF
+expire-logs-days 0
+external-locking FALSE
+federated ON
+flush FALSE
+flush-time 0
+ft-boolean-syntax + -><()~*:""&|
+ft-max-word-len 84
+ft-min-word-len 4
+ft-query-expansion-limit 20
+ft-stopword-file (No default value)
+gdb FALSE
+general-log FALSE
+group-concat-max-len 1024
+help TRUE
+ignore-builtin-innodb FALSE
+init-connect
+init-file (No default value)
+init-rpl-role MASTER
+init-slave
+interactive-timeout 28800
+join-buffer-size 131072
+keep-files-on-create FALSE
+key-buffer-size 8388608
+key-cache-age-threshold 300
+key-cache-block-size 1024
+key-cache-division-limit 100
+language MYSQL_SHAREDIR/
+large-pages FALSE
+lc-messages en_US
+lc-messages-dir MYSQL_SHAREDIR/
+lc-time-names en_US
+local-infile TRUE
+log-bin (No default value)
+log-bin-index (No default value)
+log-bin-trust-function-creators FALSE
+log-error
+log-isam myisam.log
+log-output FILE
+log-queries-not-using-indexes FALSE
+log-short-format FALSE
+log-slave-updates FALSE
+log-slow-admin-statements FALSE
+log-slow-slave-statements FALSE
+log-tc tc.log
+log-tc-size 24576
+log-update (No default value)
+log-warnings 1
+long-query-time 10
+low-priority-updates FALSE
+lower-case-table-names 1
+master-info-file master.info
+master-retry-count 86400
+max-allowed-packet 1048576
+max-binlog-cache-size 18446744073709547520
+max-binlog-dump-events 0
+max-binlog-size 1073741824
+max-connect-errors 10
+max-connections 151
+max-delayed-threads 20
+max-error-count 64
+max-heap-table-size 16777216
+max-join-size 18446744073709551615
+max-length-for-sort-data 1024
+max-prepared-stmt-count 16382
+max-relay-log-size 0
+max-seeks-for-key 18446744073709551615
+max-sort-length 1024
+max-sp-recursion-depth 0
+max-tmp-tables 32
+max-user-connections 0
+max-write-lock-count 18446744073709551615
+memlock FALSE
+min-examined-row-limit 0
+multi-range-count 256
+myisam-block-size 1024
+myisam-data-pointer-size 6
+myisam-max-sort-file-size 9223372036853727232
+myisam-mmap-size 18446744073709551615
+myisam-recover-options OFF
+myisam-repair-threads 1
+myisam-sort-buffer-size 8388608
+myisam-stats-method nulls_unequal
+myisam-use-mmap FALSE
+net-buffer-length 16384
+net-read-timeout 30
+net-retry-count 10
+net-write-timeout 60
+new FALSE
+old FALSE
+old-alter-table FALSE
+old-passwords FALSE
+old-style-user-limits FALSE
+optimizer-prune-level 1
+optimizer-search-depth 62
+optimizer-switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
+partition ON
+performance-schema FALSE
+performance-schema-events-waits-history-long-size 10000
+performance-schema-events-waits-history-size 10
+performance-schema-max-cond-classes 80
+performance-schema-max-cond-instances 1000
+performance-schema-max-file-classes 50
+performance-schema-max-file-handles 32768
+performance-schema-max-file-instances 10000
+performance-schema-max-mutex-classes 200
+performance-schema-max-mutex-instances 1000
+performance-schema-max-rwlock-classes 20
+performance-schema-max-rwlock-instances 1000
+performance-schema-max-table-handles 100000
+performance-schema-max-table-instances 50000
+performance-schema-max-thread-classes 50
+performance-schema-max-thread-instances 1000
+plugin-dir MYSQL_LIBDIR/mysql/plugin
+plugin-load (No default value)
+port 3306
+port-open-timeout 0
+preload-buffer-size 32768
+profiling-history-size 15
+query-alloc-block-size 8192
+query-cache-limit 1048576
+query-cache-min-res-unit 4096
+query-cache-size 0
+query-cache-type ON
+query-cache-wlock-invalidate FALSE
+query-prealloc-size 8192
+range-alloc-block-size 4096
+read-buffer-size 131072
+read-only FALSE
+read-rnd-buffer-size 262144
+record-buffer 131072
+relay-log (No default value)
+relay-log-index (No default value)
+relay-log-info-file relay-log.info
+relay-log-purge TRUE
+relay-log-recovery FALSE
+relay-log-space-limit 0
+replicate-same-server-id FALSE
+report-host (No default value)
+report-password (No default value)
+report-port 3306
+report-user (No default value)
+rpl-recovery-rank 0
+safe-user-create FALSE
+secure-auth FALSE
+secure-file-priv (No default value)
+server-id 0
+show-slave-auth-info FALSE
+skip-grant-tables TRUE
+skip-networking FALSE
+skip-show-database FALSE
+skip-slave-start FALSE
+slave-compressed-protocol FALSE
+slave-exec-mode STRICT
+slave-net-timeout 3600
+slave-skip-errors (No default value)
+slave-transaction-retries 10
+slave-type-conversions
+slow-launch-time 2
+slow-query-log FALSE
+socket /tmp/mysql.sock
+sort-buffer-size 2097152
+sporadic-binlog-dump-fail FALSE
+sql-mode
+symbolic-links FALSE
+sync-binlog 0
+sync-frm TRUE
+sync-master-info 0
+sync-relay-log 0
+sync-relay-log-info 0
+sysdate-is-now FALSE
+table-cache 400
+table-definition-cache 400
+table-lock-wait-timeout 50
+table-open-cache 400
+tc-heuristic-recover COMMIT
+thread-cache-size 0
+thread-handling one-thread-per-connection
+thread-stack 262144
+time-format %H:%i:%s
+timed-mutexes FALSE
+tmp-table-size 16777216
+transaction-alloc-block-size 8192
+transaction-isolation REPEATABLE-READ
+transaction-prealloc-size 4096
+updatable-views-with-limit YES
+use-symbolic-links FALSE
+verbose TRUE
+wait-timeout 28800
+warnings 1
+
+To see what values a running MySQL server is using, type
+'mysqladmin variables' instead of 'mysqld --verbose --help'.
diff --git a/mysql-test/r/mysqld--help-win.result b/mysql-test/r/mysqld--help-win.result
new file mode 100644
index 00000000000..7e261fc203c
--- /dev/null
+++ b/mysql-test/r/mysqld--help-win.result
@@ -0,0 +1,998 @@
+The following options may be given as the first argument:
+--print-defaults Print the program argument list and exit
+--no-defaults Don't read default options from any options file
+--defaults-file=# Only read default options from the given file #
+--defaults-extra-file=# Read this file after the global files are read
+
+ --abort-slave-event-count=#
+ Option used by mysql-test for debugging and testing of
+ replication.
+ --allow-suspicious-udfs
+ Allows use of UDFs consisting of only one symbol xxx()
+ 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
+ -a, --ansi Use ANSI SQL syntax instead of MySQL syntax. This mode
+ will also set transaction isolation level 'serializable'.
+ --archive[=name] Enable or disable ARCHIVE plugin. Possible values are ON,
+ OFF, FORCE (don't start if the plugin fails to load).
+ --auto-increment-increment[=#]
+ Auto-increment columns are incremented by this
+ --auto-increment-offset[=#]
+ Offset added to Auto-increment columns. Used when
+ auto-increment-increment != 1
+ --automatic-sp-privileges
+ Creating and dropping stored procedures alters ACLs
+ (Defaults to on; use --skip-automatic-sp-privileges to disable.)
+ --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
+ -b, --basedir=name Path to installation directory. All paths are usually
+ resolved relative to this
+ --big-tables Allow big result sets by saving all temporary sets on
+ file (Solves most 'table full' errors)
+ --bind-address=name IP address to bind to.
+ --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
+ --binlog-do-db=name Tells the master it should log updates for the specified
+ database, and exclude all others not explicitly
+ mentioned.
+ --binlog-format=name
+ What form of binary logging the master will use: either
+ ROW for row-based binary logging, STATEMENT for
+ statement-based binary logging, or MIXED. MIXED is
+ statement-based binary logging except for those
+ statements where only row-based is correct: those which
+ involve user-defined functions (i.e. UDFs) or the UUID()
+ function; for those, row-based binary logging is
+ automatically used. If NDBCLUSTER is enabled and
+ binlog-format is MIXED, the format switches to row-based
+ and back implicitly per each query accessing an
+ NDBCLUSTER table
+ --binlog-ignore-db=name
+ Tells the master that updates to the given database
+ should not be logged tothe binary log.
+ --binlog-row-event-max-size=#
+ 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.
+ --blackhole[=name] Enable or disable BLACKHOLE plugin. Possible values are
+ ON, OFF, FORCE (don't start if the plugin fails to load).
+ --bootstrap Used by mysql installation scripts.
+ --bulk-insert-buffer-size=#
+ Size of tree cache used in bulk insert optimisation. Note
+ that this is a limit per thread!
+ --character-set-client-handshake
+ Don't ignore client side character set value sent during
+ handshake.
+ (Defaults to on; use --skip-character-set-client-handshake to disable.)
+ --character-set-filesystem=name
+ Set the filesystem character set.
+ -C, --character-set-server=name
+ Set the default character set.
+ --character-sets-dir=name
+ Directory where character sets are
+ -r, --chroot=name Chroot mysqld daemon during startup.
+ --collation-server=name
+ Set the default collation.
+ --completion-type=name
+ The transaction completion type, one of NO_CHAIN, CHAIN,
+ RELEASE
+ --concurrent-insert[=name]
+ Use concurrent insert with MyISAM. Possible values are
+ NEVER, AUTO, ALWAYS
+ --connect-timeout=# The number of seconds the mysqld server is waiting for a
+ connect packet before responding with 'Bad handshake'
+ --console Write error output on screen; Don't remove the console
+ window on windows.
+ --core-file Write core on errors.
+ -h, --datadir=name Path to the database root directory
+ --date-format=name The DATE format (ignored)
+ --datetime-format=name
+ The DATETIME format (ignored)
+ -C, --default-character-set=name
+ Set the default character set (deprecated option, use
+ --character-set-server instead).
+ --default-collation=name
+ Set the default collation (deprecated option, use
+ --collation-server instead).
+ --default-storage-engine=name
+ The default storage engine for new tables
+ --default-time-zone=name
+ Set the default time zone.
+ --default-week-format=#
+ The default week format used by WEEK() functions
+ --delay-key-write[=name]
+ Type of DELAY_KEY_WRITE
+ --delay-key-write-for-all-tables
+ Don't flush key buffers between writes for any MyISAM
+ table (Deprecated option, use --delay-key-write=all
+ instead).
+ --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
+ --delayed-insert-timeout=#
+ How long a INSERT DELAYED thread should wait for INSERT
+ statements before terminating
+ --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
+ --disconnect-slave-event-count=#
+ Option used by mysql-test for debugging and testing of
+ replication.
+ --div-precision-increment=#
+ Precision of the result of '/' operator will be increased
+ on that value
+ --enable-locking Deprecated option, use --external-locking instead.
+ --engine-condition-pushdown
+ Push supported query conditions to the storage engine.
+ Deprecated, use --optimizer-switch instead.
+ (Defaults to on; use --skip-engine-condition-pushdown to disable.)
+ --event-scheduler[=name]
+ Enable the event scheduler. Possible values are ON, OFF,
+ and DISABLED (keep the event scheduler completely
+ deactivated, it cannot be activated run-time)
+ -T, --exit-info[=#] Used for debugging; Use at your own risk!
+ --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
+ --external-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.
+ --federated[=name] Enable or disable FEDERATED plugin. Possible values are
+ ON, OFF, FORCE (don't start if the plugin fails to load).
+ --flush Flush MyISAM tables to disk between SQL commands
+ --flush-time=# A dedicated thread is created to flush all tables at the
+ given interval
+ --ft-boolean-syntax=name
+ List of operators for MATCH ... AGAINST ( ... IN BOOLEAN
+ MODE)
+ --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
+ --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
+ --ft-query-expansion-limit=#
+ Number of best matches to use for query expansion
+ --ft-stopword-file=name
+ Use stopwords from this file instead of built-in list
+ --gdb Set up signals usable for debugging
+ --general-log Log connections and queries to a table or log file.
+ Defaults logging to a file hostname.log or a table
+ mysql.general_logif --log-output=TABLE is used
+ --general-log-file=name
+ Log connections and queries to given file
+ --group-concat-max-len=#
+ The maximum length of the result of function
+ GROUP_CONCAT()
+ -?, --help Display this help and exit.
+ --ignore-builtin-innodb
+ Disable initialization of builtin InnoDB plugin
+ --init-connect=name Command(s) that are executed for each new connection
+ --init-file=name Read SQL commands from this file at startup
+ --init-rpl-role=name
+ Set the replication role.
+ --init-slave=name Command(s) that are executed by a slave server each time
+ the SQL thread starts
+ --interactive-timeout=#
+ The number of seconds the server waits for activity on an
+ interactive connection before closing it
+ --join-buffer-size=#
+ The size of the buffer that is used for full joins
+ --keep-files-on-create
+ Don't overwrite stale .MYD and .MYI even if no directory
+ is specified
+ --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
+ --key-cache-age-threshold=#
+ This characterizes the number of hits a hot block has to
+ be untouched 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
+ --key-cache-block-size=#
+ The default size of key cache blocks
+ --key-cache-division-limit=#
+ The minimum percentage of warm blocks in key cache
+ -L, --language=name Client error messages in given language. May be given as
+ a full path. Deprecated. Use --lc-messages-dir instead.
+ --lc-messages=name Set the language used for the error messages.
+ -L, --lc-messages-dir=name
+ Directory where error messages are
+ --lc-time-names=name
+ Set the language used for the month names and the days of
+ the week.
+ --local-infile Enable LOAD DATA LOCAL INFILE
+ (Defaults to on; use --skip-local-infile to disable.)
+ -l, --log[=name] Log connections and queries to file (deprecated option,
+ use --general-log/--general-log-file instead).
+ --log-bin[=name] 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.
+ --log-bin-index=name
+ File that holds the names for last binary log files.
+ --log-bin-trust-function-creators
+ If set to FALSE (the default), then when --log-bin is
+ used, creation of a stored function (or trigger) is
+ allowed only to users having the SUPER privilege and only
+ if this stored function (trigger) may not break binary
+ logging. 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 TRUE
+ --log-error[=name] Error log file
+ --log-isam[=name] Log all MyISAM changes to file.
+ -0, --log-long-format
+ Log some extra information to update log. Please note
+ that this option is deprecated; see --log-short-format
+ option.
+ --log-output=name Syntax: log-output=value[,value...], where "value" could
+ be TABLE, FILE or NONE
+ --log-queries-not-using-indexes
+ Log queries that are executed without benefit of any
+ index to the slow log if it is open
+ --log-short-format Don't log extra information to update and slow-query
+ logs.
+ --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
+ --log-slow-admin-statements
+ Log slow OPTIMIZE, ANALYZE, ALTER and other
+ administrative statements to the slow log if it is open.
+ --log-slow-queries[=name]
+ 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.
+ --log-slow-slave-statements
+ Log slow statements executed by slave thread to the slow
+ log if it is open.
+ --log-tc=name Path to transaction coordinator log (used for
+ transactions that affect more than one storage engine,
+ when binary log is disabled)
+ --log-tc-size=# Size of transaction coordinator log.
+ --log-update[=name] The update log is deprecated since version 5.0, is
+ replaced by the binary log and this option justs turns on
+ --log-bin instead.
+ -W, --log-warnings[=#]
+ Log some not critical warnings to the log file
+ --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 precision
+ --low-priority-updates
+ INSERT/DELETE/UPDATE has lower priority than selects
+ --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
+ --master-info-file=name
+ 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-retry-count=#
+ The number of tries the slave will make to connect to the
+ master before giving up.
+ --max-allowed-packet=#
+ Max packet length to send to or receive from the server
+ --max-binlog-cache-size=#
+ Can be used to restrict the total size used to cache a
+ multi-transaction query
+ --max-binlog-dump-events=#
+ Option used by mysql-test for debugging and testing of
+ replication.
+ --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
+ --max-connect-errors=#
+ If there is more than this number of interrupted
+ connections from a host this host will be blocked from
+ further connections
+ --max-connections=# The number of simultaneous clients allowed
+ --max-delayed-threads=#
+ Don't start more than this number of threads to handle
+ INSERT DELAYED statements. If set to zero INSERT DELAYED
+ will be not used
+ --max-error-count=# Max number of errors/warnings to store for a statement
+ --max-heap-table-size=#
+ Don't allow creation of heap tables bigger than this
+ --max-join-size=# Joins that are probably going to read more than
+ max_join_size records return an error
+ --max-length-for-sort-data=#
+ Max number of bytes in sorted records
+ --max-prepared-stmt-count=#
+ Maximum number of prepared statements in the server
+ --max-relay-log-size=#
+ If non-zero: relay log will be rotated automatically when
+ the size exceeds this value; if zero: when the size
+ exceeds max_binlog_size
+ --max-seeks-for-key=#
+ Limit assumed max number of seeks when looking up rows
+ based on a key
+ --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)
+ --max-sp-recursion-depth[=#]
+ Maximum stored procedure recursion depth
+ --max-tmp-tables=# Maximum number of temporary tables a client can keep open
+ at a time
+ --max-user-connections=#
+ The maximum number of active connections for a single
+ user (0 = no limit)
+ --max-write-lock-count=#
+ After this many write locks, allow some read locks to run
+ in between
+ --memlock Lock mysqld in memory.
+ --min-examined-row-limit=#
+ Don't write queries to slow log that examine fewer rows
+ than that
+ --multi-range-count=#
+ Number of key ranges to request at once
+ --myisam-block-size=#
+ Block size to be used for MyISAM index pages
+ --myisam-data-pointer-size=#
+ Default pointer size to be used for MyISAM tables
+ --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
+ --myisam-mmap-size=#
+ Restricts the total memory used for memory mapping of
+ MySQL tables
+ --myisam-recover-options[=name]
+ Syntax: myisam-recover-options[=option[,option...]],
+ where option can be DEFAULT, BACKUP, FORCE, QUICK, or OFF
+ --myisam-repair-threads=#
+ If larger than 1, when repairing a MyISAM table all
+ indexes will be created in parallel, with one thread per
+ index. The value of 1 disables parallel repair
+ --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
+ --myisam-stats-method=name
+ Specifies how MyISAM index statistics collection code
+ should treat NULLs. Possible values of name are
+ NULLS_UNEQUAL (default behavior for 4.1 and later),
+ NULLS_EQUAL (emulate 4.0 behavior), and NULLS_IGNORED
+ --myisam-use-mmap Use memory mapping for reading and writing MyISAM tables
+ --named-pipe Enable the named pipe (NT)
+ --net-buffer-length=#
+ Buffer length for TCP/IP and socket communication
+ --net-read-timeout=#
+ Number of seconds to wait for more data from a connection
+ before aborting the read
+ --net-retry-count=# If a read on a communication port is interrupted, retry
+ this many times before giving up
+ --net-write-timeout=#
+ Number of seconds to wait for a block to be written to a
+ connection before aborting the write
+ -n, --new Use very new possible "unsafe" functions
+ --old Use compatible behavior
+ --old-alter-table Use old, non-optimized alter table
+ --old-passwords Use old password encryption method (needed for 4.0 and
+ older clients)
+ --old-style-user-limits
+ Enable old-style user limits (before 5.0.3 user resources
+ were counted per each user+host vs. per account)
+ --one-thread (deprecated): Only use one thread (for debugging under
+ Linux). Use thread-handling=no-threads instead
+ --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 file descriptors
+ --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
+ --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. Values smaller 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 63, the
+ optimizer will switch to the original find_best
+ search(used for testing/comparison)
+ --optimizer-switch=name
+ optimizer_switch=option=val[,option=val...], where option
+ is one of {index_merge, index_merge_union,
+ index_merge_sort_union, index_merge_intersection,
+ engine_condition_pushdown} and val is one of {on, off,
+ default}
+ --partition[=name] Enable or disable partition plugin. Possible values are
+ ON, OFF, FORCE (don't start if the plugin fails to load).
+ --performance-schema
+ Enable the performance schema.
+ --performance-schema-events-waits-history-long-size=#
+ Number of rows in EVENTS_WAITS_HISTORY_LONG.
+ --performance-schema-events-waits-history-size=#
+ Number of rows per thread in EVENTS_WAITS_HISTORY.
+ --performance-schema-max-cond-classes=#
+ Maximum number of condition instruments.
+ --performance-schema-max-cond-instances=#
+ Maximum number of instrumented condition objects.
+ --performance-schema-max-file-classes=#
+ Maximum number of file instruments.
+ --performance-schema-max-file-handles=#
+ Maximum number of opened instrumented files.
+ --performance-schema-max-file-instances=#
+ Maximum number of instrumented files.
+ --performance-schema-max-mutex-classes=#
+ Maximum number of mutex instruments.
+ --performance-schema-max-mutex-instances=#
+ Maximum number of instrumented MUTEX objects.
+ --performance-schema-max-rwlock-classes=#
+ Maximum number of rwlock instruments.
+ --performance-schema-max-rwlock-instances=#
+ Maximum number of instrumented RWLOCK objects.
+ --performance-schema-max-table-handles=#
+ Maximum number of opened instrumented tables.
+ --performance-schema-max-table-instances=#
+ Maximum number of instrumented tables.
+ --performance-schema-max-thread-classes=#
+ Maximum number of thread instruments.
+ --performance-schema-max-thread-instances=#
+ Maximum number of instrumented threads.
+ --pid-file=name Pid file used by safe_mysqld
+ --plugin-dir=name Directory for plugins
+ --plugin-load=name 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.
+ -P, --port=# Port number to use for connection or 0 to default to,
+ my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default
+ (3306), whatever comes first
+ --port-open-timeout=#
+ Maximum time in seconds to wait for the port to become
+ free. (Default: no wait)
+ --preload-buffer-size=#
+ The size of the buffer that is allocated when preloading
+ indexes
+ --profiling-history-size=#
+ Limit of query profiling memory
+ --query-alloc-block-size=#
+ Allocation block size for query parsing and execution
+ --query-cache-limit=#
+ Don't cache results that are bigger than this
+ --query-cache-min-res-unit=#
+ The minimum size for blocks allocated by the query cache
+ --query-cache-size=#
+ The memory allocated to store results from old queries
+ --query-cache-type=name
+ OFF = Don't cache or retrieve results. ON = Cache all
+ results except SELECT SQL_NO_CACHE ... queries. DEMAND =
+ Cache only SELECT SQL_CACHE ... queries
+ --query-cache-wlock-invalidate
+ Invalidate queries in query cache on LOCK for write
+ --query-prealloc-size=#
+ Persistent buffer for query parsing and execution
+ --range-alloc-block-size=#
+ Allocation block size for storing ranges during
+ optimization
+ --read-buffer-size=#
+ 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
+ --read-only Make all non-temporary tables read-only, with the
+ exception for replication (slave) threads and users with
+ the SUPER privilege
+ --read-rnd-buffer-size=#
+ When reading rows in sorted order after a sort, the rows
+ are read through this buffer to avoid a disk seeks. If
+ not set, then it's set to the value of record_buffer
+ --record-buffer=# Deprecated; use --read-buffer-size instead.
+ --relay-log=name The location and name to use for relay logs
+ --relay-log-index=name
+ The location and name to use for the file that keeps a
+ list of the last relay logs
+ --relay-log-info-file=name
+ The location and name of the file that remembers where
+ the SQL replication thread is in the relay logs
+ --relay-log-purge if disabled - do not purge relay logs. if enabled - purge
+ them as soon as they are no more needed
+ (Defaults to on; use --skip-relay-log-purge to disable.)
+ --relay-log-recovery
+ Enables automatic relay log recovery right after the
+ database startup, which means that the IO Thread starts
+ re-fetching from the master right after the last
+ transaction processed
+ --relay-log-space-limit=#
+ Maximum space to use for all relay logs
+ --replicate-do-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.%.
+ --replicate-do-table=name
+ 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.
+ --replicate-ignore-db=name
+ 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.%.
+ --replicate-ignore-table=name
+ 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-datbase updates, in contrast to
+ replicate-ignore-db.
+ --replicate-rewrite-db=name
+ Updates to a database with a different name than the
+ original. Example:
+ replicate-rewrite-db=master_db_name->slave_db_name.
+ --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-wild-do-table=name
+ 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.
+ --replicate-wild-ignore-table=name
+ 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.
+ --report-host=name Hostname or IP of the slave to be reported to the master
+ during slave registration. Will appear in the output of
+ SHOW SLAVE HOSTS. Leave unset if you do not want the
+ slave to register itself with the master. Note that it is
+ not sufficient for the master to simply read the IP of
+ the slave off 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
+ --report-password=name
+ The account password of the slave to be reported to the
+ master during slave registration
+ --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
+ --report-user=name The account user name of the slave to be reported to the
+ master during slave registration
+ --rpl-recovery-rank=#
+ Unused, will be removed
+ --safe-mode Skip some optimize stages (for testing).
+ --safe-show-database
+ Deprecated option; use GRANT SHOW DATABASES instead...
+ --safe-user-create Don't allow new user creation by the user who has no
+ write privileges to the mysql.user table.
+ --secure-auth Disallow authentication for accounts that have old
+ (pre-4.1) passwords
+ --secure-file-priv=name
+ Limit LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE() to
+ files within specified directory
+ --server-id=# Uniquely identifies the server instance in the community
+ of replication partners
+ -O, --set-variable=name
+ Change the value of a variable. Please note that this
+ option is deprecated;you can set variables directly with
+ --variable-name=value.
+ --shared-memory Enable the shared memory
+ --shared-memory-base-name=name
+ Base name of shared memory
+ --show-slave-auth-info
+ Show user and password in SHOW SLAVE HOSTS on this master
+ --skip-grant-tables Start without grant tables. This gives all users FULL
+ ACCESS to all tables!
+ --skip-host-cache Don't cache host names.
+ --skip-locking Deprecated option, use --skip-external-locking instead.
+ --skip-name-resolve Don't resolve hostnames. All hostnames are IP's or
+ 'localhost'.
+ --skip-networking Don't allow connection with TCP/IP
+ --skip-new Don't use new, possible wrong routines.
+ --skip-show-database
+ Don't allow 'SHOW DATABASE' commands
+ --skip-slave-start If set, slave is not autostarted.
+ --skip-stack-trace Don't print a stack trace on failure.
+ --skip-symlink Don't allow symlinking of tables. Deprecated option. Use
+ --skip-symbolic-links instead.
+ --skip-thread-priority
+ Don't give threads different priorities. This option is
+ deprecated because it has no effect; the implied behavior
+ is already the default.
+ --slave-compressed-protocol
+ Use compression on master/slave protocol
+ --slave-exec-mode=name
+ 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-load-tmpdir=name
+ The location where the slave should put its temporary
+ files when replicating a LOAD DATA INFILE command
+ --slave-net-timeout=#
+ Number of seconds to wait for more data from a
+ master/slave connection before aborting the read
+ --slave-skip-errors=name
+ Tells the slave thread to continue replication when a
+ query event returns an error from the provided list
+ --slave-transaction-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
+ --slave-type-conversions=name
+ Set of slave type conversions that are enabled. Legal
+ values are: ALL_LOSSY to enable lossy conversions and
+ ALL_NON_LOSSY to enable non-lossy conversions. If the
+ variable is assigned the empty set, no conversions are
+ allowed and it is expected that the types match exactly.
+ --slow-launch-time=#
+ If creating the thread takes longer than this value (in
+ seconds), the Slow_launch_threads counter will be
+ incremented
+ --slow-query-log Log slow queries to a table or log file. Defaults logging
+ to a file hostname-slow.log or a table mysql.slow_log if
+ --log-output=TABLE is used. Must be enabled to activate
+ other slow log options
+ --slow-query-log-file=name
+ Log slow queries to given log file. Defaults logging to
+ hostname-slow.log. Must be enabled to activate other slow
+ log options
+ --socket=name Socket file to use for connection
+ --sort-buffer-size=#
+ Each thread that needs to do a sort allocates a buffer of
+ this size
+ --sporadic-binlog-dump-fail
+ Option used by mysql-test for debugging and testing of
+ replication.
+ --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.
+ --sql-mode=name Syntax: sql-mode=mode[,mode[,mode...]]. See the manual
+ for the complete list of valid sql modes
+ --standalone Dummy option to start as a standalone program (NT).
+ -s, --symbolic-links
+ Enable symbolic link support.
+ --sync-binlog=# Synchronously flush binary log to disk after every #th
+ event. Use 0 (default) to disable synchronous flushing
+ --sync-frm Sync .frm files to disk on creation
+ (Defaults to on; use --skip-sync-frm to disable.)
+ --sync-master-info=#
+ Synchronously flush master info to disk after every #th
+ event. Use 0 (default) to disable synchronous flushing
+ --sync-relay-log=# Synchronously flush relay log to disk after every #th
+ event. Use 0 (default) to disable synchronous flushing
+ --sync-relay-log-info=#
+ Synchronously flush relay log info to disk after every
+ #th transaction. Use 0 (default) to disable synchronous
+ flushing
+ --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.
+ --table-cache=# Deprecated; use --table-open-cache instead.
+ --table-definition-cache=#
+ The number of cached table definitions
+ --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
+ --table-open-cache=#
+ The number of cached open tables
+ --tc-heuristic-recover=name
+ Decision to use in heuristic recover process. Possible
+ values are COMMIT or ROLLBACK.
+ --thread-cache-size=#
+ How many threads we should keep in a cache for reuse
+ --thread-handling=name
+ Define threads usage for handling queries, one of
+ one-thread-per-connection, no-threads
+ --thread-stack=# The stack size for each thread
+ --time-format=name The TIME format (ignored)
+ --timed-mutexes Specify whether to time mutexes (only InnoDB mutexes are
+ currently supported)
+ --tmp-table-size=# If an internal in-memory temporary table exceeds this
+ size, MySQL will automatically convert it to an on-disk
+ MyISAM table
+ -t, --tmpdir=name Path for temporary files. Several paths may be specified,
+ separated by a semicolon (;), in this case they are used
+ in a round-robin fashion
+ --transaction-alloc-block-size=#
+ Allocation block size for transactions to be stored in
+ binary log
+ --transaction-isolation=name
+ Default transaction isolation level.
+ --transaction-prealloc-size=#
+ Persistent buffer for transactions to be stored in binary
+ log
+ --updatable-views-with-limit=name
+ 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. 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)
+ -s, --use-symbolic-links
+ Enable symbolic link support. Deprecated option; use
+ --symbolic-links instead.
+ -u, --user=name Run mysqld daemon as user.
+ -v, --verbose Used with --help option for detailed help
+ -V, --version Output version information and exit.
+ --wait-timeout=# The number of seconds the server waits for activity on a
+ connection before closing it
+ -W, --warnings[=#] Deprecated; use --log-warnings instead.
+
+Variables (--variable-name=value)
+and boolean options {FALSE|TRUE} Value (after reading options)
+------------------------------------------------- ------------------------
+abort-slave-event-count 0
+allow-suspicious-udfs FALSE
+archive ON
+auto-increment-increment 1
+auto-increment-offset 1
+automatic-sp-privileges TRUE
+back-log 50
+big-tables FALSE
+bind-address (No default value)
+binlog-cache-size 32768
+binlog-format STATEMENT
+binlog-row-event-max-size 1024
+blackhole ON
+bulk-insert-buffer-size 8388608
+character-set-client-handshake TRUE
+character-set-filesystem binary
+character-set-server latin1
+character-sets-dir MYSQL_SHAREDIR/charsets/
+chroot (No default value)
+collation-server latin1_swedish_ci
+completion-type NO_CHAIN
+concurrent-insert AUTO
+connect-timeout 10
+console FALSE
+date-format %Y-%m-%d
+datetime-format %Y-%m-%d %H:%i:%s
+default-character-set latin1
+default-collation latin1_swedish_ci
+default-storage-engine MyISAM
+default-time-zone (No default value)
+default-week-format 0
+delay-key-write ON
+delayed-insert-limit 100
+delayed-insert-timeout 300
+delayed-queue-size 1000
+disconnect-slave-event-count 0
+div-precision-increment 4
+enable-locking FALSE
+engine-condition-pushdown TRUE
+event-scheduler OFF
+expire-logs-days 0
+external-locking FALSE
+federated ON
+flush FALSE
+flush-time 1800
+ft-boolean-syntax + -><()~*:""&|
+ft-max-word-len 84
+ft-min-word-len 4
+ft-query-expansion-limit 20
+ft-stopword-file (No default value)
+gdb FALSE
+general-log FALSE
+group-concat-max-len 1024
+help TRUE
+ignore-builtin-innodb FALSE
+init-connect
+init-file (No default value)
+init-rpl-role MASTER
+init-slave
+interactive-timeout 28800
+join-buffer-size 131072
+keep-files-on-create FALSE
+key-buffer-size 8388608
+key-cache-age-threshold 300
+key-cache-block-size 1024
+key-cache-division-limit 100
+language MYSQL_SHAREDIR/
+lc-messages en_US
+lc-messages-dir MYSQL_SHAREDIR/
+lc-time-names en_US
+local-infile TRUE
+log-bin (No default value)
+log-bin-index (No default value)
+log-bin-trust-function-creators FALSE
+log-error
+log-isam myisam.log
+log-output FILE
+log-queries-not-using-indexes FALSE
+log-short-format FALSE
+log-slave-updates FALSE
+log-slow-admin-statements FALSE
+log-slow-slave-statements FALSE
+log-tc tc.log
+log-tc-size 24576
+log-update (No default value)
+log-warnings 1
+long-query-time 10
+low-priority-updates FALSE
+lower-case-table-names 1
+master-info-file master.info
+master-retry-count 86400
+max-allowed-packet 1048576
+max-binlog-cache-size 18446744073709547520
+max-binlog-dump-events 0
+max-binlog-size 1073741824
+max-connect-errors 10
+max-connections 151
+max-delayed-threads 20
+max-error-count 64
+max-heap-table-size 16777216
+max-join-size 18446744073709551615
+max-length-for-sort-data 1024
+max-prepared-stmt-count 16382
+max-relay-log-size 0
+max-seeks-for-key 18446744073709551615
+max-sort-length 1024
+max-sp-recursion-depth 0
+max-tmp-tables 32
+max-user-connections 0
+max-write-lock-count 18446744073709551615
+memlock FALSE
+min-examined-row-limit 0
+multi-range-count 256
+myisam-block-size 1024
+myisam-data-pointer-size 6
+myisam-max-sort-file-size 9223372036853727232
+myisam-mmap-size 18446744073709551615
+myisam-recover-options OFF
+myisam-repair-threads 1
+myisam-sort-buffer-size 8388608
+myisam-stats-method nulls_unequal
+myisam-use-mmap FALSE
+named-pipe FALSE
+net-buffer-length 16384
+net-read-timeout 30
+net-retry-count 10
+net-write-timeout 60
+new FALSE
+old FALSE
+old-alter-table FALSE
+old-passwords FALSE
+old-style-user-limits FALSE
+optimizer-prune-level 1
+optimizer-search-depth 62
+optimizer-switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
+partition ON
+performance-schema FALSE
+performance-schema-events-waits-history-long-size 10000
+performance-schema-events-waits-history-size 10
+performance-schema-max-cond-classes 80
+performance-schema-max-cond-instances 1000
+performance-schema-max-file-classes 50
+performance-schema-max-file-handles 32768
+performance-schema-max-file-instances 10000
+performance-schema-max-mutex-classes 200
+performance-schema-max-mutex-instances 1000
+performance-schema-max-rwlock-classes 20
+performance-schema-max-rwlock-instances 1000
+performance-schema-max-table-handles 100000
+performance-schema-max-table-instances 50000
+performance-schema-max-thread-classes 50
+performance-schema-max-thread-instances 1000
+plugin-dir MYSQL_LIBDIR/plugin
+plugin-load (No default value)
+port 3306
+port-open-timeout 0
+preload-buffer-size 32768
+profiling-history-size 15
+query-alloc-block-size 8192
+query-cache-limit 1048576
+query-cache-min-res-unit 4096
+query-cache-size 0
+query-cache-type ON
+query-cache-wlock-invalidate FALSE
+query-prealloc-size 8192
+range-alloc-block-size 4096
+read-buffer-size 131072
+read-only FALSE
+read-rnd-buffer-size 262144
+record-buffer 131072
+relay-log (No default value)
+relay-log-index (No default value)
+relay-log-info-file relay-log.info
+relay-log-purge TRUE
+relay-log-recovery FALSE
+relay-log-space-limit 0
+replicate-same-server-id FALSE
+report-host (No default value)
+report-password (No default value)
+report-port 3306
+report-user (No default value)
+rpl-recovery-rank 0
+safe-user-create FALSE
+secure-auth FALSE
+secure-file-priv (No default value)
+server-id 0
+shared-memory FALSE
+shared-memory-base-name MYSQL
+show-slave-auth-info FALSE
+skip-grant-tables TRUE
+skip-networking FALSE
+skip-show-database FALSE
+skip-slave-start FALSE
+slave-compressed-protocol FALSE
+slave-exec-mode STRICT
+slave-net-timeout 3600
+slave-skip-errors (No default value)
+slave-transaction-retries 10
+slave-type-conversions
+slow-launch-time 2
+slow-query-log FALSE
+socket MySQL
+sort-buffer-size 2097152
+sporadic-binlog-dump-fail FALSE
+sql-mode
+symbolic-links FALSE
+sync-binlog 0
+sync-frm TRUE
+sync-master-info 0
+sync-relay-log 0
+sync-relay-log-info 0
+sysdate-is-now FALSE
+table-cache 400
+table-definition-cache 400
+table-lock-wait-timeout 50
+table-open-cache 400
+tc-heuristic-recover COMMIT
+thread-cache-size 0
+thread-handling one-thread-per-connection
+thread-stack 262144
+time-format %H:%i:%s
+timed-mutexes FALSE
+tmp-table-size 16777216
+transaction-alloc-block-size 8192
+transaction-isolation REPEATABLE-READ
+transaction-prealloc-size 4096
+updatable-views-with-limit YES
+use-symbolic-links FALSE
+verbose TRUE
+wait-timeout 28800
+warnings 1
+
+To see what values a running MySQL server is using, type
+'mysqladmin variables' instead of 'mysqld --verbose --help'.
diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result
index 8162e1aca05..4724a111837 100644
--- a/mysql-test/r/mysqldump.result
+++ b/mysql-test/r/mysqldump.result
@@ -40,7 +40,7 @@ CREATE TABLE `t1` (
`a` decimal(64,20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
-INSERT INTO `t1` VALUES ('1234567890123456789012345678901234567890.00000000000000000000'),('987654321098765432109876543210987654321.00000000000000000000');
+INSERT INTO `t1` VALUES (1234567890123456789012345678901234567890.00000000000000000000),(987654321098765432109876543210987654321.00000000000000000000);
DROP TABLE t1;
#
# Bug#2055 mysqldump should replace "-inf" numeric field values with "NULL"
@@ -55,7 +55,7 @@ CREATE TABLE `t1` (
`a` double DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
-INSERT INTO `t1` VALUES (RES);
+INSERT INTO `t1` VALUES (-1.7976931348623157e308);
DROP TABLE t1;
#
# Bug#3361 mysqldump quotes DECIMAL values inconsistently
@@ -77,7 +77,7 @@ CREATE TABLE `t1` (
`b` float DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
-INSERT INTO `t1` VALUES ('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456);
+INSERT INTO `t1` VALUES (1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456);
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `t1` (
@@ -85,7 +85,7 @@ CREATE TABLE `t1` (
`b` float DEFAULT NULL
);
/*!40101 SET character_set_client = @saved_cs_client */;
-INSERT INTO `t1` VALUES ('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456);
+INSERT INTO `t1` VALUES (1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456);
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
@@ -108,7 +108,7 @@ CREATE TABLE `t1` (
LOCK TABLES `t1` WRITE;
/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
-INSERT INTO `t1` VALUES ('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456);
+INSERT INTO `t1` VALUES (1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456);
/*!40000 ALTER TABLE `t1` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
@@ -135,7 +135,7 @@ CREATE TABLE `t1` (
);
/*!40101 SET character_set_client = @saved_cs_client */;
-INSERT INTO `t1` VALUES ('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456);
+INSERT INTO `t1` VALUES (1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456);
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
@@ -2391,7 +2391,7 @@ trg3 UPDATE t1 begin
if new.a = -1 then
set @fired:= "Yes";
end if;
-end AFTER 0000-00-00 00:00:00 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+end AFTER 0000-00-00 00:00:00 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
INSERT INTO t1 (a) VALUES (1),(2),(3),(22);
update t1 set a = 4 where a=3;
@@ -2468,7 +2468,7 @@ DELIMITER ;
/*!50003 SET character_set_results = latin1 */ ;
/*!50003 SET collation_connection = latin1_swedish_ci */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER' */ ;
+/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 trigger trg3 after update on t1 for each row
begin
@@ -2500,7 +2500,7 @@ UNLOCK TABLES;
/*!50003 SET character_set_results = latin1 */ ;
/*!50003 SET collation_connection = latin1_swedish_ci */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER' */ ;
+/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 trigger trg4 before insert on t2 for each row
begin
@@ -2594,12 +2594,12 @@ trg3 UPDATE t1 begin
if new.a = -1 then
set @fired:= "Yes";
end if;
-end AFTER # STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+end AFTER # STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
trg4 INSERT t2 begin
if new.a > 10 then
set @fired:= "No";
end if;
-end BEFORE # STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+end BEFORE # STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
DROP TABLE t1, t2;
#
# Bug#9136 my_print_defaults changed behaviour between 4.1.7 and 4.1.10a
@@ -3554,11 +3554,11 @@ use test;
create user mysqltest_1@localhost;
create table t1(a int, b varchar(34));
reset master;
-mysqldump: Couldn't execute 'FLUSH /*!40101 LOCAL */ TABLES': Access denied; you need the RELOAD privilege for this operation (1227)
-mysqldump: Couldn't execute 'FLUSH /*!40101 LOCAL */ TABLES': Access denied; you need the RELOAD privilege for this operation (1227)
+mysqldump: Couldn't execute 'FLUSH /*!40101 LOCAL */ TABLES': Access denied; you need (at least one of) the RELOAD privilege(s) for this operation (1227)
+mysqldump: Couldn't execute 'FLUSH /*!40101 LOCAL */ TABLES': Access denied; you need (at least one of) the RELOAD privilege(s) for this operation (1227)
grant RELOAD on *.* to mysqltest_1@localhost;
-mysqldump: Couldn't execute 'SHOW MASTER STATUS': Access denied; you need the SUPER,REPLICATION CLIENT privilege for this operation (1227)
-mysqldump: Couldn't execute 'SHOW MASTER STATUS': Access denied; you need the SUPER,REPLICATION CLIENT privilege for this operation (1227)
+mysqldump: Couldn't execute 'SHOW MASTER STATUS': Access denied; you need (at least one of) the SUPER,REPLICATION CLIENT privilege(s) for this operation (1227)
+mysqldump: Couldn't execute 'SHOW MASTER STATUS': Access denied; you need (at least one of) the SUPER,REPLICATION CLIENT privilege(s) for this operation (1227)
grant REPLICATION CLIENT on *.* to mysqltest_1@localhost;
drop table t1;
drop user mysqltest_1@localhost;
@@ -3611,7 +3611,7 @@ DROP TABLE IF EXISTS `TABLES`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TEMPORARY TABLE `TABLES` (
- `TABLE_CATALOG` varchar(512) DEFAULT NULL,
+ `TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
`TABLE_TYPE` varchar(64) NOT NULL DEFAULT '',
@@ -4223,7 +4223,7 @@ Db Name Definer Time zone Type Execute at Interval value Interval field Starts E
first ee1 root@localhost UTC ONE TIME 2035-12-31 20:01:23 NULL NULL NULL NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
show create event ee1;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ee1 UTC CREATE EVENT `ee1` ON SCHEDULE AT '2035-12-31 20:01:23' ON COMPLETION NOT PRESERVE ENABLE DO set @a=5 latin1 latin1_swedish_ci latin1_swedish_ci
+ee1 UTC CREATE DEFINER=`root`@`localhost` EVENT `ee1` ON SCHEDULE AT '2035-12-31 20:01:23' ON COMPLETION NOT PRESERVE ENABLE DO set @a=5 latin1 latin1_swedish_ci latin1_swedish_ci
drop database first;
create database second;
use second;
@@ -4232,7 +4232,7 @@ Db Name Definer Time zone Type Execute at Interval value Interval field Starts E
second ee1 root@localhost UTC ONE TIME 2035-12-31 20:01:23 NULL NULL NULL NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
show create event ee1;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ee1 UTC CREATE EVENT `ee1` ON SCHEDULE AT '2035-12-31 20:01:23' ON COMPLETION NOT PRESERVE ENABLE DO set @a=5 latin1 latin1_swedish_ci latin1_swedish_ci
+ee1 UTC CREATE DEFINER=`root`@`localhost` EVENT `ee1` ON SCHEDULE AT '2035-12-31 20:01:23' ON COMPLETION NOT PRESERVE ENABLE DO set @a=5 latin1 latin1_swedish_ci latin1_swedish_ci
create event ee2 on schedule at '2018-12-31 21:01:23' do set @a=5;
create event ee3 on schedule at '2030-12-31 22:01:23' do set @a=5;
show events;
diff --git a/mysql-test/r/mysqlshow.result b/mysql-test/r/mysqlshow.result
index 42081c309d0..4293465df67 100644
--- a/mysql-test/r/mysqlshow.result
+++ b/mysql-test/r/mysqlshow.result
@@ -90,6 +90,7 @@ Database: information_schema
| GLOBAL_STATUS |
| GLOBAL_VARIABLES |
| KEY_COLUMN_USAGE |
+| PARAMETERS |
| PARTITIONS |
| PLUGINS |
| PROCESSLIST |
@@ -102,11 +103,19 @@ Database: information_schema
| SESSION_VARIABLES |
| STATISTICS |
| TABLES |
+| TABLESPACES |
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| TRIGGERS |
| USER_PRIVILEGES |
| VIEWS |
+| INNODB_CMP_RESET |
+| INNODB_TRX |
+| INNODB_CMPMEM_RESET |
+| INNODB_LOCK_WAITS |
+| INNODB_CMPMEM |
+| INNODB_CMP |
+| INNODB_LOCKS |
+---------------------------------------+
Database: INFORMATION_SCHEMA
+---------------------------------------+
@@ -123,6 +132,7 @@ Database: INFORMATION_SCHEMA
| GLOBAL_STATUS |
| GLOBAL_VARIABLES |
| KEY_COLUMN_USAGE |
+| PARAMETERS |
| PARTITIONS |
| PLUGINS |
| PROCESSLIST |
@@ -135,11 +145,19 @@ Database: INFORMATION_SCHEMA
| SESSION_VARIABLES |
| STATISTICS |
| TABLES |
+| TABLESPACES |
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| TRIGGERS |
| USER_PRIVILEGES |
| VIEWS |
+| INNODB_CMP_RESET |
+| INNODB_TRX |
+| INNODB_CMPMEM_RESET |
+| INNODB_LOCK_WAITS |
+| INNODB_CMPMEM |
+| INNODB_CMP |
+| INNODB_LOCKS |
+---------------------------------------+
Wildcard: inf_rmation_schema
+--------------------+
diff --git a/mysql-test/r/not_partition.result b/mysql-test/r/not_partition.result
index f516f8634ce..fc3e0d64b5e 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 storage engine 'partition'
TRUNCATE TABLE t1;
-ERROR 42000: Unknown table engine 'partition'
+ERROR 42000: Unknown storage engine 'partition'
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
-test.t1 analyze Error Unknown table engine 'partition'
+test.t1 analyze Error Unknown storage 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 storage 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 storage 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 storage 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 storage 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 storage 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 storage 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 storage engine 'partition'
test.t1 analyze error Corrupt
ALTER TABLE t1 REBUILD PARTITION ALL;
-ERROR 42000: Unknown table engine 'partition'
+ERROR 42000: Unknown storage engine 'partition'
ALTER TABLE t1 ENGINE Memory;
-ERROR 42000: Unknown table engine 'partition'
+ERROR 42000: Unknown storage engine 'partition'
ALTER TABLE t1 ADD (new INT);
-ERROR 42000: Unknown table engine 'partition'
+ERROR 42000: Unknown storage engine 'partition'
DROP TABLE t1;
CREATE TABLE t1 (
firstname VARCHAR(25) NOT NULL,
@@ -52,9 +52,9 @@ joined DATE NOT NULL
)
PARTITION BY KEY(joined)
PARTITIONS 6;
-ERROR HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-partition' to have it working
+ERROR HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-plugin-partition' to have it working
ALTER TABLE t1 PARTITION BY KEY(joined) PARTITIONS 2;
-ERROR HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-partition' to have it working
+ERROR HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-plugin-partition' to have it working
drop table t1;
ERROR 42S02: Unknown table 't1'
CREATE TABLE t1 (
@@ -71,7 +71,7 @@ PARTITION p2 VALUES LESS THAN (1980),
PARTITION p3 VALUES LESS THAN (1990),
PARTITION p4 VALUES LESS THAN MAXVALUE
);
-ERROR HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-partition' to have it working
+ERROR HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-plugin-partition' to have it working
drop table t1;
ERROR 42S02: Unknown table 't1'
CREATE TABLE t1 (id INT, purchased DATE)
@@ -82,7 +82,7 @@ PARTITION p0 VALUES LESS THAN (1990),
PARTITION p1 VALUES LESS THAN (2000),
PARTITION p2 VALUES LESS THAN MAXVALUE
);
-ERROR HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-partition' to have it working
+ERROR HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-plugin-partition' to have it working
drop table t1;
ERROR 42S02: Unknown table 't1'
create table t1 (a varchar(10) charset latin1 collate latin1_bin);
diff --git a/mysql-test/r/odbc.result b/mysql-test/r/odbc.result
index 5629d3dab33..3dbac12ca7c 100644
--- a/mysql-test/r/odbc.result
+++ b/mysql-test/r/odbc.result
@@ -1,4 +1,5 @@
drop table if exists t1;
+set @@session.sql_auto_is_null=1;
select {fn length("hello")}, { date "1997-10-20" };
{fn length("hello")} 1997-10-20
5 1997-10-20
@@ -7,9 +8,9 @@ insert into t1 SET A=NULL,B=1;
insert into t1 SET a=null,b=2;
select * from t1 where a is null and b=2;
a b
-2 2
select * from t1 where a is null;
a b
+2 2
explain select * from t1 where b is null;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
@@ -25,3 +26,4 @@ SELECT sql_no_cache a, last_insert_id() FROM t1;
a last_insert_id()
1 1
DROP TABLE t1;
+set @@session.sql_auto_is_null=default;
diff --git a/mysql-test/r/optimizer_switch_eng_cond_pushdown1.result b/mysql-test/r/optimizer_switch_eng_cond_pushdown1.result
new file mode 100644
index 00000000000..a8313ec246c
--- /dev/null
+++ b/mysql-test/r/optimizer_switch_eng_cond_pushdown1.result
@@ -0,0 +1,5 @@
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+1 1 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
diff --git a/mysql-test/r/optimizer_switch_eng_cond_pushdown2.result b/mysql-test/r/optimizer_switch_eng_cond_pushdown2.result
new file mode 100644
index 00000000000..d7e84c57f42
--- /dev/null
+++ b/mysql-test/r/optimizer_switch_eng_cond_pushdown2.result
@@ -0,0 +1,5 @@
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+0 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
diff --git a/mysql-test/r/outfile.result b/mysql-test/r/outfile.result
index e5f5a53c1f3..84ef17857f4 100644
--- a/mysql-test/r/outfile.result
+++ b/mysql-test/r/outfile.result
Binary files differ
diff --git a/mysql-test/r/parser.result b/mysql-test/r/parser.result
index 7e703de0876..467bb7c5cb8 100644
--- a/mysql-test/r/parser.result
+++ b/mysql-test/r/parser.result
@@ -522,7 +522,7 @@ select conv(255 AS p1, 10 AS p2, 16 AS p3);
ERROR 42000: Incorrect parameters in the call to native function 'conv'
select atan(10);
atan(10)
-1.47112767430373
+1.4711276743037347
select atan(10 AS p1);
ERROR 42000: Incorrect parameters in the call to native function 'atan'
select atan(10 p1);
@@ -533,7 +533,7 @@ select atan(10 "p1");
ERROR 42000: Incorrect parameters in the call to native function 'atan'
select atan(10, 20);
atan(10, 20)
-0.463647609000806
+0.4636476090008061
select atan(10 AS p1, 20);
ERROR 42000: Incorrect parameters in the call to native function 'atan'
select atan(10 p1, 20);
diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result
index 08357795046..b72cc607fe2 100644
--- a/mysql-test/r/partition.result
+++ b/mysql-test/r/partition.result
@@ -94,6 +94,42 @@ INSERT INTO t1 VALUES (NULL);
SELECT * FROM t1 WHERE pk < 0 ORDER BY pk;
pk
DROP TABLE t1;
+CREATE TABLE t1 (a INT)
+ENGINE=NonExistentEngine;
+Warnings:
+Warning 1286 Unknown storage engine 'NonExistentEngine'
+Warning 1266 Using storage engine MyISAM for table 't1'
+DROP TABLE t1;
+CREATE TABLE t1 (a INT)
+ENGINE=NonExistentEngine
+PARTITION BY HASH (a);
+Warnings:
+Warning 1286 Unknown storage engine 'NonExistentEngine'
+Warning 1266 Using storage engine MyISAM for table 't1'
+DROP TABLE t1;
+CREATE TABLE t1 (a INT)
+ENGINE=Memory;
+ALTER TABLE t1 ENGINE=NonExistentEngine;
+Warnings:
+Warning 1286 Unknown storage engine 'NonExistentEngine'
+ALTER TABLE t1
+PARTITION BY HASH (a)
+(PARTITION p0 ENGINE=Memory,
+PARTITION p1 ENGINE=NonExistentEngine);
+Warnings:
+Warning 1286 Unknown storage engine 'NonExistentEngine'
+ALTER TABLE t1 ENGINE=NonExistentEngine;
+Warnings:
+Warning 1286 Unknown storage engine 'NonExistentEngine'
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (a)
+(PARTITION p0 ENGINE = MEMORY,
+ PARTITION p1 ENGINE = MEMORY) */
+DROP TABLE t1;
CREATE TABLE t1 (a INT NOT NULL, KEY(a))
PARTITION BY RANGE(a)
(PARTITION p1 VALUES LESS THAN (200), PARTITION pmax VALUES LESS THAN MAXVALUE);
@@ -433,14 +469,12 @@ create table t1 (a bigint)
partition by range (a)
(partition p0 values less than (0xFFFFFFFFFFFFFFFF),
partition p1 values less than (10));
-ERROR 42000: VALUES value must be of same type as partition function near '),
-partition p1 values less than (10))' at line 3
+ERROR HY000: VALUES value must be of same type as partition function
create table t1 (a bigint)
partition by list (a)
(partition p0 values in (0xFFFFFFFFFFFFFFFF),
partition p1 values in (10));
-ERROR 42000: VALUES value must be of same type as partition function near '),
-partition p1 values in (10))' at line 3
+ERROR HY000: VALUES value must be of same type as partition function
create table t1 (a bigint unsigned)
partition by range (a)
(partition p0 values less than (100),
@@ -1254,7 +1288,6 @@ COMMIT;
END|
CALL test.p1(12);
Warnings:
-Note 1051 Unknown table 't1'
Warning 1196 Some non-transactional changed tables couldn't be rolled back
CALL test.p1(13);
Warnings:
@@ -1435,7 +1468,7 @@ DROP TABLE t1;
CREATE TABLE t1 (a int)
PARTITION BY RANGE(a)
(PARTITION p0 VALUES LESS THAN (NULL));
-ERROR 42000: Not allowed to use NULL value in VALUES LESS THAN near '))' at line 3
+ERROR HY000: Not allowed to use NULL value in VALUES LESS THAN
create table t1 (s1 int auto_increment primary key)
partition by list (s1)
(partition p1 values in (1),
@@ -2069,23 +2102,4 @@ COUNT(*)
0
DROP TABLE t1;
SET SESSION SQL_MODE=DEFAULT;
-#
-# BUG#45816 - assertion failure with index containing double
-# column on partitioned table
-#
-CREATE TABLE t1 (
-a INT DEFAULT NULL,
-b DOUBLE DEFAULT NULL,
-c INT DEFAULT NULL,
-KEY idx2(b,a)
-) PARTITION BY HASH(c) PARTITIONS 3;
-INSERT INTO t1 VALUES (6,8,9);
-INSERT INTO t1 VALUES (6,8,10);
-SELECT 1 FROM t1 JOIN t1 AS t2 USING (a) FOR UPDATE;
-1
-1
-1
-1
-1
-DROP TABLE t1;
End of 5.1 tests
diff --git a/mysql-test/r/partition_archive.result b/mysql-test/r/partition_archive.result
index de64b09e042..186a7930251 100644
--- a/mysql-test/r/partition_archive.result
+++ b/mysql-test/r/partition_archive.result
@@ -1,3 +1,25 @@
+CREATE TABLE t1 (f1 DATE NOT NULL)
+ENGINE = ARCHIVE PARTITION BY RANGE (TO_DAYS(f1))
+(partition p1 values less than (733751),
+partition p2 values less than MAXVALUE);
+INSERT INTO t1 VALUES(CURRENT_DATE);
+SELECT DATA_LENGTH, INDEX_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH INDEX_LENGTH
+190 0
+SELECT DATA_LENGTH, INDEX_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH INDEX_LENGTH
+190 0
+DROP TABLE t1;
+CREATE TABLE t1 (f1 DATE NOT NULL)
+ENGINE = ARCHIVE;
+INSERT INTO t1 VALUES(CURRENT_DATE);
+SELECT DATA_LENGTH, INDEX_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH INDEX_LENGTH
+8658 0
+SELECT DATA_LENGTH, INDEX_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH INDEX_LENGTH
+8658 0
+DROP TABLE t1;
drop database if exists db99;
drop table if exists t1;
create database db99;
diff --git a/mysql-test/r/partition_column.result b/mysql-test/r/partition_column.result
new file mode 100644
index 00000000000..ddc48b635cf
--- /dev/null
+++ b/mysql-test/r/partition_column.result
@@ -0,0 +1,602 @@
+drop table if exists t1;
+create table t1 (a int, b int)
+partition by range columns (a,b)
+( partition p0 values less than (maxvalue, 10),
+partition p1 values less than (maxvalue, maxvalue));
+ERROR HY000: VALUES LESS THAN value must be strictly increasing for each partition
+create table t1 (a int, b int, c int)
+partition by range columns (a,b,c)
+( partition p0 values less than (1, maxvalue, 10),
+partition p1 values less than (1, maxvalue, maxvalue));
+ERROR HY000: VALUES LESS THAN value must be strictly increasing for each partition
+create table t1 (a varchar(5) character set ucs2 collate ucs2_bin)
+partition by range columns (a)
+(partition p0 values less than (0x0041));
+insert into t1 values (0x00410000);
+select hex(a) from t1 where a like 'A_';
+hex(a)
+00410000
+explain partitions select hex(a) from t1 where a like 'A_';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0 system NULL NULL NULL NULL 1
+alter table t1 remove partitioning;
+select hex(a) from t1 where a like 'A_';
+hex(a)
+00410000
+create index a on t1 (a);
+select hex(a) from t1 where a like 'A_';
+hex(a)
+00410000
+insert into t1 values ('A_');
+select hex(a) from t1;
+hex(a)
+00410000
+0041005F
+drop table t1;
+create table t1 (a varchar(1) character set latin1 collate latin1_general_ci)
+partition by range columns(a)
+( partition p0 values less than ('a'),
+partition p1 values less than ('b'),
+partition p2 values less than ('c'),
+partition p3 values less than ('d'));
+insert into t1 values ('A'),('a'),('B'),('b'),('C'),('c');
+select * from t1 where a > 'B' collate latin1_bin;
+a
+a
+b
+C
+c
+select * from t1 where a <> 'B' collate latin1_bin;
+a
+A
+a
+b
+C
+c
+alter table t1 remove partitioning;
+select * from t1 where a > 'B' collate latin1_bin;
+a
+a
+b
+C
+c
+select * from t1 where a <> 'B' collate latin1_bin;
+a
+A
+a
+b
+C
+c
+drop table t1;
+create table t1 (a varchar(2) character set latin1,
+b varchar(2) character set latin1)
+partition by list columns(a,b)
+(partition p0 values in (('a','a')));
+insert into t1 values ('A','A');
+select * from t1 where b <> 'a' collate latin1_bin AND
+a = 'A' collate latin1_bin;
+a b
+A A
+alter table t1 remove partitioning;
+select * from t1 where b <> 'a' collate latin1_bin AND
+a = 'A' collate latin1_bin;
+a b
+A A
+drop table t1;
+create table t1 (a varchar(5))
+partition by list columns(a)
+( partition p0 values in ('\''),
+ partition p1 values in ('\\'),
+ partition p2 values in ('\0'));
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(5) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+/*!50500 PARTITION BY LIST COLUMNS(a)
+(PARTITION p0 VALUES IN ('''') ENGINE = MyISAM,
+ PARTITION p1 VALUES IN ('\\') ENGINE = MyISAM,
+ PARTITION p2 VALUES IN ('\0') ENGINE = MyISAM) */
+drop table t1;
+set @@sql_mode=allow_invalid_dates;
+create table t1 (a char, b char, c date)
+partition by range columns (a,b,c)
+( partition p0 values less than (0,0,to_days('3000-11-31')));
+ERROR HY000: Partition column values of incorrect type
+create table t1 (a char, b char, c date)
+partition by range columns (a,b,c)
+( partition p0 values less than (0,0,'3000-11-31'));
+ERROR HY000: Partition column values of incorrect type
+set @@sql_mode='';
+create table t1 (a int, b char(10), c varchar(25), d datetime)
+partition by range columns(a,b,c,d)
+subpartition by hash (to_seconds(d))
+subpartitions 4
+( partition p0 values less than (1, 0, MAXVALUE, '1900-01-01'),
+partition p1 values less than (1, 'a', MAXVALUE, '1999-01-01'),
+partition p2 values less than (1, 'a', MAXVALUE, MAXVALUE),
+partition p3 values less than (1, MAXVALUE, MAXVALUE, MAXVALUE));
+ERROR HY000: Partition column values of incorrect type
+create table t1 (a int, b char(10), c varchar(25), d datetime)
+partition by range columns(a,b,c,d)
+subpartition by hash (to_seconds(d))
+subpartitions 4
+( partition p0 values less than (1, '0', MAXVALUE, '1900-01-01'),
+partition p1 values less than (1, 'a', MAXVALUE, '1999-01-01'),
+partition p2 values less than (1, 'b', MAXVALUE, MAXVALUE),
+partition p3 values less than (1, MAXVALUE, MAXVALUE, MAXVALUE));
+select partition_method, partition_expression, partition_description
+from information_schema.partitions where table_name = "t1";
+partition_method partition_expression partition_description
+RANGE COLUMNS a,b,c,d 1,'0',MAXVALUE,'1900-01-01'
+RANGE COLUMNS a,b,c,d 1,'0',MAXVALUE,'1900-01-01'
+RANGE COLUMNS a,b,c,d 1,'0',MAXVALUE,'1900-01-01'
+RANGE COLUMNS a,b,c,d 1,'0',MAXVALUE,'1900-01-01'
+RANGE COLUMNS a,b,c,d 1,'a',MAXVALUE,'1999-01-01'
+RANGE COLUMNS a,b,c,d 1,'a',MAXVALUE,'1999-01-01'
+RANGE COLUMNS a,b,c,d 1,'a',MAXVALUE,'1999-01-01'
+RANGE COLUMNS a,b,c,d 1,'a',MAXVALUE,'1999-01-01'
+RANGE COLUMNS a,b,c,d 1,'b',MAXVALUE,MAXVALUE
+RANGE COLUMNS a,b,c,d 1,'b',MAXVALUE,MAXVALUE
+RANGE COLUMNS a,b,c,d 1,'b',MAXVALUE,MAXVALUE
+RANGE COLUMNS a,b,c,d 1,'b',MAXVALUE,MAXVALUE
+RANGE COLUMNS a,b,c,d 1,MAXVALUE,MAXVALUE,MAXVALUE
+RANGE COLUMNS a,b,c,d 1,MAXVALUE,MAXVALUE,MAXVALUE
+RANGE COLUMNS a,b,c,d 1,MAXVALUE,MAXVALUE,MAXVALUE
+RANGE COLUMNS a,b,c,d 1,MAXVALUE,MAXVALUE,MAXVALUE
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL,
+ `b` char(10) DEFAULT NULL,
+ `c` varchar(25) DEFAULT NULL,
+ `d` datetime DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+/*!50500 PARTITION BY RANGE COLUMNS(a,b,c,d)
+SUBPARTITION BY HASH (to_seconds(d))
+SUBPARTITIONS 4
+(PARTITION p0 VALUES LESS THAN (1,'0',MAXVALUE,'1900-01-01') ENGINE = MyISAM,
+ PARTITION p1 VALUES LESS THAN (1,'a',MAXVALUE,'1999-01-01') ENGINE = MyISAM,
+ PARTITION p2 VALUES LESS THAN (1,'b',MAXVALUE,MAXVALUE) ENGINE = MyISAM,
+ PARTITION p3 VALUES LESS THAN (1,MAXVALUE,MAXVALUE,MAXVALUE) ENGINE = MyISAM) */
+drop table t1;
+create table t1 (a int, b int)
+partition by range columns (a,b)
+(partition p0 values less than (NULL, maxvalue));
+ERROR HY000: Not allowed to use NULL value in VALUES LESS THAN
+create table t1 (a int, b int)
+partition by list columns(a,b)
+( partition p0 values in ((maxvalue, 0)));
+Got one of the listed errors
+create table t1 (a int, b int)
+partition by list columns (a,b)
+( partition p0 values in ((0,0)));
+alter table t1 add partition
+(partition p1 values in (maxvalue, maxvalue));
+Got one of the listed errors
+drop table t1;
+create table t1 (a int, b int)
+partition by key (a,a);
+ERROR HY000: Duplicate partition field name 'a'
+create table t1 (a int, b int)
+partition by list columns(a,a)
+( partition p values in ((1,1)));
+ERROR HY000: Duplicate partition field name 'a'
+create table t1 (a int signed)
+partition by list (a)
+( partition p0 values in (1, 3, 5, 7, 9, NULL),
+partition p1 values in (2, 4, 6, 8, 0));
+insert into t1 values (NULL),(0),(1),(2),(2),(4),(4),(4),(8),(8);
+select * from t1 where NULL <= a;
+a
+select * from t1 where a is null;
+a
+NULL
+explain partitions select * from t1 where a is null;
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 2 Using where
+select * from t1 where a <= 1;
+a
+1
+0
+drop table t1;
+create table t1 (a int signed)
+partition by list columns(a)
+( partition p0 values in (1, 3, 5, 7, 9, NULL),
+partition p1 values in (2, 4, 6, 8, 0));
+insert into t1 values (NULL),(0),(1),(2),(2),(4),(4),(4),(8),(8);
+select * from t1 where a <= NULL;
+a
+select * from t1 where a is null;
+a
+NULL
+explain partitions select * from t1 where a is null;
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 2 Using where
+select * from t1 where a <= 1;
+a
+1
+0
+drop table t1;
+create table t1 (a int, b int)
+partition by list columns(a,b)
+( partition p0 values in ((1, NULL), (2, NULL), (NULL, NULL)),
+partition p1 values in ((1,1), (2,2)),
+partition p2 values in ((3, NULL), (NULL, 1)));
+select partition_method, partition_expression, partition_description
+from information_schema.partitions where table_name = "t1";
+partition_method partition_expression partition_description
+LIST COLUMNS a,b (1,NULL),(2,NULL),(NULL,NULL)
+LIST COLUMNS a,b (1,1),(2,2)
+LIST COLUMNS a,b (3,NULL),(NULL,1)
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL,
+ `b` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+/*!50500 PARTITION BY LIST COLUMNS(a,b)
+(PARTITION p0 VALUES IN ((1,NULL),(2,NULL),(NULL,NULL)) ENGINE = MyISAM,
+ PARTITION p1 VALUES IN ((1,1),(2,2)) ENGINE = MyISAM,
+ PARTITION p2 VALUES IN ((3,NULL),(NULL,1)) ENGINE = MyISAM) */
+insert into t1 values (3, NULL);
+insert into t1 values (NULL, 1);
+insert into t1 values (NULL, NULL);
+insert into t1 values (1, NULL);
+insert into t1 values (2, NULL);
+insert into t1 values (1,1);
+insert into t1 values (2,2);
+select * from t1 where a = 1;
+a b
+1 NULL
+1 1
+select * from t1 where a = 2;
+a b
+2 NULL
+2 2
+select * from t1 where a > 8;
+a b
+select * from t1 where a not between 8 and 8;
+a b
+2 NULL
+2 2
+3 NULL
+1 NULL
+1 1
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL,
+ `b` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+/*!50500 PARTITION BY LIST COLUMNS(a,b)
+(PARTITION p0 VALUES IN ((1,NULL),(2,NULL),(NULL,NULL)) ENGINE = MyISAM,
+ PARTITION p1 VALUES IN ((1,1),(2,2)) ENGINE = MyISAM,
+ PARTITION p2 VALUES IN ((3,NULL),(NULL,1)) ENGINE = MyISAM) */
+drop table t1;
+create table t1 (a int)
+partition by list (a)
+( partition p0 values in (1),
+partition p1 values in (1));
+ERROR HY000: Multiple definition of same constant in list partitioning
+create table t1 (a int)
+partition by list (a)
+( partition p0 values in (2, 1),
+partition p1 values in (4, NULL, 3));
+select partition_method, partition_expression, partition_description
+from information_schema.partitions where table_name = "t1";
+partition_method partition_expression partition_description
+LIST a 2,1
+LIST a NULL,4,3
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (a)
+(PARTITION p0 VALUES IN (2,1) ENGINE = MyISAM,
+ PARTITION p1 VALUES IN (NULL,4,3) ENGINE = MyISAM) */
+insert into t1 values (1);
+insert into t1 values (2);
+insert into t1 values (3);
+insert into t1 values (4);
+insert into t1 values (NULL);
+insert into t1 values (5);
+ERROR HY000: Table has no partition for value 5
+drop table t1;
+create table t1 (a int)
+partition by list columns(a)
+( partition p0 values in (2, 1),
+partition p1 values in ((4), (NULL), (3)));
+ERROR 42000: Row expressions in VALUES IN only allowed for multi-field column partitioning near '))' at line 4
+create table t1 (a int)
+partition by list columns(a)
+( partition p0 values in (2, 1),
+partition p1 values in (4, NULL, 3));
+select partition_method, partition_expression, partition_description
+from information_schema.partitions where table_name = "t1";
+partition_method partition_expression partition_description
+LIST COLUMNS a 2,1
+LIST COLUMNS a 4,NULL,3
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+/*!50500 PARTITION BY LIST COLUMNS(a)
+(PARTITION p0 VALUES IN (2,1) ENGINE = MyISAM,
+ PARTITION p1 VALUES IN (4,NULL,3) ENGINE = MyISAM) */
+insert into t1 values (1);
+insert into t1 values (2);
+insert into t1 values (3);
+insert into t1 values (4);
+insert into t1 values (NULL);
+insert into t1 values (5);
+ERROR HY000: Table has no partition for value from column_list
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+/*!50500 PARTITION BY LIST COLUMNS(a)
+(PARTITION p0 VALUES IN (2,1) ENGINE = MyISAM,
+ PARTITION p1 VALUES IN (4,NULL,3) ENGINE = MyISAM) */
+drop table t1;
+create table t1 (a int, b char(10), c varchar(5), d int)
+partition by range columns(a,b,c)
+subpartition by key (c,d)
+subpartitions 3
+( partition p0 values less than (1,'abc','abc'),
+partition p1 values less than (2,'abc','abc'),
+partition p2 values less than (3,'abc','abc'),
+partition p3 values less than (4,'abc','abc'));
+select partition_method, partition_expression, partition_description
+from information_schema.partitions where table_name = "t1";
+partition_method partition_expression partition_description
+RANGE COLUMNS a,b,c 1,'abc','abc'
+RANGE COLUMNS a,b,c 1,'abc','abc'
+RANGE COLUMNS a,b,c 1,'abc','abc'
+RANGE COLUMNS a,b,c 2,'abc','abc'
+RANGE COLUMNS a,b,c 2,'abc','abc'
+RANGE COLUMNS a,b,c 2,'abc','abc'
+RANGE COLUMNS a,b,c 3,'abc','abc'
+RANGE COLUMNS a,b,c 3,'abc','abc'
+RANGE COLUMNS a,b,c 3,'abc','abc'
+RANGE COLUMNS a,b,c 4,'abc','abc'
+RANGE COLUMNS a,b,c 4,'abc','abc'
+RANGE COLUMNS a,b,c 4,'abc','abc'
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL,
+ `b` char(10) DEFAULT NULL,
+ `c` varchar(5) DEFAULT NULL,
+ `d` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+/*!50500 PARTITION BY RANGE COLUMNS(a,b,c)
+SUBPARTITION BY KEY (c,d)
+SUBPARTITIONS 3
+(PARTITION p0 VALUES LESS THAN (1,'abc','abc') ENGINE = MyISAM,
+ PARTITION p1 VALUES LESS THAN (2,'abc','abc') ENGINE = MyISAM,
+ PARTITION p2 VALUES LESS THAN (3,'abc','abc') ENGINE = MyISAM,
+ PARTITION p3 VALUES LESS THAN (4,'abc','abc') ENGINE = MyISAM) */
+insert into t1 values (1,'a','b',1),(2,'a','b',2),(3,'a','b',3);
+insert into t1 values (1,'b','c',1),(2,'b','c',2),(3,'b','c',3);
+insert into t1 values (1,'c','d',1),(2,'c','d',2),(3,'c','d',3);
+insert into t1 values (1,'d','e',1),(2,'d','e',2),(3,'d','e',3);
+select * from t1 where (a = 1 AND b < 'd' AND (c = 'b' OR (c = 'c' AND d = 1)) OR
+(a = 1 AND b >= 'a' AND (c = 'c' OR (c = 'd' AND d = 2))));
+a b c d
+1 a b 1
+1 b c 1
+drop table t1;
+create table t1 (a int, b varchar(2), c int)
+partition by range columns (a, b, c)
+(partition p0 values less than (1, 'A', 1),
+partition p1 values less than (1, 'B', 1));
+select partition_method, partition_expression, partition_description
+from information_schema.partitions where table_name = "t1";
+partition_method partition_expression partition_description
+RANGE COLUMNS a,b,c 1,'A',1
+RANGE COLUMNS a,b,c 1,'B',1
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL,
+ `b` varchar(2) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+/*!50500 PARTITION BY RANGE COLUMNS(a,b,c)
+(PARTITION p0 VALUES LESS THAN (1,'A',1) ENGINE = MyISAM,
+ PARTITION p1 VALUES LESS THAN (1,'B',1) ENGINE = MyISAM) */
+insert into t1 values (1, 'A', 1);
+explain partitions select * from t1 where a = 1 AND b <= 'A' and c = 1;
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0,p1 system NULL NULL NULL NULL 1
+select * from t1 where a = 1 AND b <= 'A' and c = 1;
+a b c
+1 A 1
+drop table t1;
+create table t1 (a char, b char, c char)
+partition by list columns(a)
+( partition p0 values in ('a'));
+insert into t1 (a) values ('a');
+select * from t1 where a = 'a';
+a b c
+a NULL NULL
+drop table t1;
+create table t1 (d time)
+partition by range columns(d)
+( partition p0 values less than ('2000-01-01'),
+partition p1 values less than ('2040-01-01'));
+ERROR HY000: Partition column values of incorrect type
+create table t1 (d timestamp)
+partition by range columns(d)
+( partition p0 values less than ('2000-01-01'),
+partition p1 values less than ('2040-01-01'));
+ERROR HY000: Field 'd' is of a not allowed type for this type of partitioning
+create table t1 (d bit(1))
+partition by range columns(d)
+( partition p0 values less than (0),
+partition p1 values less than (1));
+ERROR HY000: Field 'd' is of a not allowed type for this type of partitioning
+create table t1 (a int, b int)
+partition by range columns(a,b)
+(partition p0 values less than (maxvalue, 10));
+drop table t1;
+create table t1 (d date)
+partition by range columns(d)
+( partition p0 values less than ('2000-01-01'),
+partition p1 values less than ('2009-01-01'));
+drop table t1;
+create table t1 (d date)
+partition by range columns(d)
+( partition p0 values less than ('1999-01-01'),
+partition p1 values less than ('2000-01-01'));
+drop table t1;
+create table t1 (d date)
+partition by range columns(d)
+( partition p0 values less than ('2000-01-01'),
+partition p1 values less than ('3000-01-01'));
+drop table t1;
+create table t1 (a int, b int)
+partition by range columns(a,b)
+(partition p2 values less than (99,99),
+partition p1 values less than (99,999));
+insert into t1 values (99,998);
+select * from t1 where b = 998;
+a b
+99 998
+drop table t1;
+create table t1 as select to_seconds(null) as to_seconds;
+select data_type from information_schema.columns
+where column_name='to_seconds';
+data_type
+int
+drop table t1;
+create table t1 (a int, b int)
+partition by list columns(a,b)
+(partition p0 values in ((maxvalue,maxvalue)));
+ERROR 42000: Cannot use MAXVALUE as value in VALUES IN near 'maxvalue,maxvalue)))' at line 3
+create table t1 (a int, b int)
+partition by range columns(a,b)
+(partition p0 values less than (maxvalue,maxvalue));
+drop table t1;
+create table t1 (a int)
+partition by list columns(a)
+(partition p0 values in (0));
+select partition_method from information_schema.partitions where table_name='t1';
+partition_method
+LIST COLUMNS
+drop table t1;
+create table t1 (a char(6))
+partition by range columns(a)
+(partition p0 values less than ('H23456'),
+partition p1 values less than ('M23456'));
+insert into t1 values ('F23456');
+select * from t1;
+a
+F23456
+drop table t1;
+create table t1 (a char(6))
+partition by range columns(a)
+(partition p0 values less than (H23456),
+partition p1 values less than (M23456));
+ERROR 42S22: Unknown column 'H23456' in 'field list'
+create table t1 (a char(6))
+partition by range columns(a)
+(partition p0 values less than (23456),
+partition p1 values less than (23456));
+ERROR HY000: Partition column values of incorrect type
+create table t1 (a int, b int)
+partition by range columns(a,b)
+(partition p0 values less than (10));
+ERROR 42000: Inconsistency in usage of column lists for partitioning near '))' at line 3
+create table t1 (a int, b int)
+partition by range columns(a,b)
+(partition p0 values less than (1,1,1);
+ERROR HY000: Inconsistency in usage of column lists for partitioning
+create table t1 (a int, b int)
+partition by range columns(a,b)
+(partition p0 values less than (1, 0),
+partition p1 values less than (2, maxvalue),
+partition p2 values less than (3, 3),
+partition p3 values less than (10, maxvalue));
+insert into t1 values (11,0);
+ERROR HY000: Table has no partition for value from column_list
+insert into t1 values (0,1),(1,1),(2,1),(3,1),(3,4),(4,9),(9,1);
+select * from t1;
+a b
+0 1
+1 1
+2 1
+3 1
+3 4
+4 9
+9 1
+alter table t1
+partition by range columns(b,a)
+(partition p0 values less than (1,2),
+partition p1 values less than (3,3),
+partition p2 values less than (9,5));
+explain partitions select * from t1 where b < 2;
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 7 Using where
+select * from t1 where b < 2;
+a b
+0 1
+1 1
+2 1
+3 1
+9 1
+explain partitions select * from t1 where b < 4;
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0,p1,p2 ALL NULL NULL NULL NULL 7 Using where
+select * from t1 where b < 4;
+a b
+0 1
+1 1
+2 1
+3 1
+9 1
+alter table t1 reorganize partition p1 into
+(partition p11 values less than (2,2),
+partition p12 values less than (3,3));
+alter table t1 reorganize partition p0 into
+(partition p01 values less than (0,3),
+partition p02 values less than (1,1));
+ERROR HY000: Reorganize of range partitions cannot change total ranges except for last partition where it can extend the range
+alter table t1 reorganize partition p2 into
+(partition p2 values less than(9,6,1));
+ERROR HY000: Inconsistency in usage of column lists for partitioning
+alter table t1 reorganize partition p2 into
+(partition p2 values less than (10));
+ERROR HY000: Inconsistency in usage of column lists for partitioning
+alter table t1 reorganize partition p2 into
+(partition p21 values less than (4,7),
+partition p22 values less than (9,5));
+explain partitions select * from t1 where b < 4;
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0,p11,p12,p21 ALL NULL NULL NULL NULL 7 Using where
+select * from t1 where b < 4;
+a b
+0 1
+1 1
+2 1
+3 1
+9 1
+drop table t1;
+create table t1 (a int, b int)
+partition by list columns(a,b)
+subpartition by hash (b)
+subpartitions 2
+(partition p0 values in ((0,0), (1,1)),
+partition p1 values in ((1000,1000)));
+insert into t1 values (1000,1000);
+drop table t1;
+create table t1 (a char, b char, c char)
+partition by range columns(a,b,c)
+( partition p0 values less than ('a','b','c'));
+alter table t1 add partition
+(partition p1 values less than ('b','c','d'));
+drop table t1;
diff --git a/mysql-test/r/partition_column_prune.result b/mysql-test/r/partition_column_prune.result
new file mode 100644
index 00000000000..82c49453d43
--- /dev/null
+++ b/mysql-test/r/partition_column_prune.result
@@ -0,0 +1,66 @@
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+create table t1 (a char, b char, c char)
+partition by range columns(a,b,c)
+( partition p0 values less than ('a','b','c'));
+insert into t1 values ('a', NULL, 'd');
+explain partitions select * from t1 where a = 'a' AND c = 'd';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0 system NULL NULL NULL NULL 1
+select * from t1 where a = 'a' AND c = 'd';
+a b c
+a NULL d
+drop table t1;
+create table t1 (a int not null) partition by range columns(a) (
+partition p0 values less than (10),
+partition p1 values less than (20),
+partition p2 values less than (30),
+partition p3 values less than (40),
+partition p4 values less than (50),
+partition p5 values less than (60),
+partition p6 values less than (70)
+);
+insert into t1 values (5),(15),(25),(35),(45),(55),(65);
+insert into t1 values (5),(15),(25),(35),(45),(55),(65);
+create table t2 (a int not null) partition by range(a) (
+partition p0 values less than (10),
+partition p1 values less than (20),
+partition p2 values less than (30),
+partition p3 values less than (40),
+partition p4 values less than (50),
+partition p5 values less than (60),
+partition p6 values less than (70)
+);
+insert into t2 values (5),(15),(25),(35),(45),(55),(65);
+insert into t2 values (5),(15),(25),(35),(45),(55),(65);
+explain partitions select * from t1 where a > 35 and a < 45;
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p3,p4 ALL NULL NULL NULL NULL 4 Using where
+explain partitions select * from t2 where a > 35 and a < 45;
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 p3,p4 ALL NULL NULL NULL NULL 4 Using where
+drop table t1, t2;
+create table t1 (a int not null, b int not null )
+partition by range columns(a,b) (
+partition p01 values less than (2,10),
+partition p02 values less than (2,20),
+partition p03 values less than (2,30),
+partition p11 values less than (4,10),
+partition p12 values less than (4,20),
+partition p13 values less than (4,30),
+partition p21 values less than (6,10),
+partition p22 values less than (6,20),
+partition p23 values less than (6,30)
+);
+insert into t1 values (2,5), (2,15), (2,25),
+(4,5), (4,15), (4,25), (6,5), (6,15), (6,25);
+insert into t1 select * from t1;
+explain partitions select * from t1 where a=2;
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p01,p02,p03,p11 ALL NULL NULL NULL NULL 13 Using where
+explain partitions select * from t1 where a=4;
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p11,p12,p13,p21 ALL NULL NULL NULL NULL 16 Using where
+explain partitions select * from t1 where a=2 and b < 22;
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p01,p02,p03 ALL NULL NULL NULL NULL 16 Using where
+drop table t1;
diff --git a/mysql-test/r/partition_datatype.result b/mysql-test/r/partition_datatype.result
index 607afb71da5..47ea799f497 100644
--- a/mysql-test/r/partition_datatype.result
+++ b/mysql-test/r/partition_datatype.result
@@ -273,7 +273,7 @@ select * from t1 where a = 'y';
a
y
drop table t1;
-create table t1 (a varchar(65531)) partition by key (a);
+create table t1 (a varchar(3068)) partition by key (a);
insert into t1 values ('bbbb');
insert into t1 values ('aaaa');
select * from t1 where a = 'aaaa';
@@ -286,7 +286,7 @@ select * from t1 where a = 'bbbb';
a
bbbb
drop table t1;
-create table t1 (a varchar(65532)) partition by key (a);
+create table t1 (a varchar(3069)) partition by key (a);
insert into t1 values ('bbbb');
insert into t1 values ('aaaa');
select * from t1 where a = 'aaaa';
@@ -299,7 +299,7 @@ select * from t1 where a = 'bbbb';
a
bbbb
drop table t1;
-create table t1 (a varchar(65533) not null) partition by key (a);
+create table t1 (a varchar(3070) not null) partition by key (a);
insert into t1 values ('bbbb');
insert into t1 values ('aaaa');
select * from t1 where a = 'aaaa';
@@ -312,6 +312,8 @@ select * from t1 where a = 'bbbb';
a
bbbb
drop table t1;
+create table t1 (a varchar(3070)) partition by key (a);
+ERROR HY000: The total length of the partitioning fields is too large
create table t1 (a varchar(65533)) partition by key (a);
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
create table t1 (a varchar(65534) not null) partition by key (a);
diff --git a/mysql-test/r/partition_error.result b/mysql-test/r/partition_error.result
index b692203823d..0a8b7e1b424 100644
--- a/mysql-test/r/partition_error.result
+++ b/mysql-test/r/partition_error.result
@@ -361,8 +361,7 @@ partition by range (a)
partitions 2
(partition x1 values less than (4.0) tablespace ts1,
partition x2 values less than (8) tablespace ts2);
-ERROR 42000: VALUES value must be of same type as partition function near ') tablespace ts1,
-partition x2 values less than (8) tablespace ts2)' at line 8
+ERROR HY000: VALUES value must be of same type as partition function
CREATE TABLE t1 (
a int not null,
b int not null,
@@ -412,8 +411,7 @@ partition by list (a)
partitions 2
(partition x1 values less than 4,
partition x2 values less than (5));
-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 '4,
-partition x2 values less than (5))' at line 8
+ERROR HY000: Only RANGE PARTITIONING can use VALUES LESS THAN in partition definition
CREATE TABLE t1 (
a int not null,
b int not null,
@@ -423,7 +421,7 @@ partition by range (a)
partitions 2
(partition x1 values less than maxvalue,
partition x2 values less than (5));
-ERROR 42000: MAXVALUE can only be used in last partition definition near '))' at line 9
+ERROR HY000: MAXVALUE can only be used in last partition definition
CREATE TABLE t1 (
a int not null,
b int not null,
@@ -433,7 +431,7 @@ partition by range (a)
partitions 2
(partition x1 values less than maxvalue,
partition x2 values less than maxvalue);
-ERROR 42000: MAXVALUE can only be used in last partition definition near 'maxvalue)' at line 9
+ERROR HY000: MAXVALUE can only be used in last partition definition
CREATE TABLE t1 (
a int not null,
b int not null,
@@ -602,8 +600,7 @@ partition by list (a)
partitions 2
(partition x1 values in (4.0, 12+8),
partition x2 values in (3, 21));
-ERROR 42000: VALUES value must be of same type as partition function near ' 12+8),
-partition x2 values in (3, 21))' at line 8
+ERROR HY000: VALUES value must be of same type as partition function
CREATE TABLE t1 (
a int not null,
b int not null,
diff --git a/mysql-test/r/partition_hash.result b/mysql-test/r/partition_hash.result
index 19da70db5a0..dcefd70ff43 100644
--- a/mysql-test/r/partition_hash.result
+++ b/mysql-test/r/partition_hash.result
@@ -93,7 +93,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0,p1,p2,p3 ALL NULL NULL NULL NULL 9 Using where
explain partitions select * from t1 where a >= 1 and a <= 5;
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 p0,p1,p2,p3 ALL NULL NULL NULL NULL 9 Using where
+1 SIMPLE t1 p0,p1,p2 ALL NULL NULL NULL NULL 9 Using where
drop table t1;
CREATE TABLE t1 (
a int not null,
diff --git a/mysql-test/r/partition_innodb.result b/mysql-test/r/partition_innodb.result
index f2f6ef138ff..186082c435f 100644
--- a/mysql-test/r/partition_innodb.result
+++ b/mysql-test/r/partition_innodb.result
@@ -1,4 +1,39 @@
drop table if exists t1;
+create table t1 (a varchar(5), b int signed, c varchar(10), d datetime)
+partition by range columns(b,c)
+subpartition by hash(to_seconds(d))
+( partition p0 values less than (2, 'b'),
+partition p1 values less than (4, 'd'),
+partition p2 values less than (10, 'za'));
+insert into t1 values ('a', 3, 'w', '2001-10-27 04:34:00');
+insert into t1 values ('r', 7, 'w', '2001-10-27 05:34:00');
+insert into t1 values ('g', 10, 'w', '2001-10-27 06:34:00');
+update t1 set a = 'c' where a > 'f';
+drop table t1;
+create table t1 (a varchar(5))
+engine=memory
+partition by range columns(a)
+( partition p0 values less than ('m'),
+partition p1 values less than ('za'));
+insert into t1 values ('j');
+update t1 set a = 'z' where (a >= 'j');
+drop table t1;
+create table t1 (a varchar(5))
+engine=myisam
+partition by range columns(a)
+( partition p0 values less than ('m'),
+partition p1 values less than ('za'));
+insert into t1 values ('j');
+update t1 set a = 'z' where (a >= 'j');
+drop table t1;
+create table t1 (a varchar(5))
+engine=innodb
+partition by range columns(a)
+( partition p0 values less than ('m'),
+partition p1 values less than ('za'));
+insert into t1 values ('j');
+update t1 set a = 'z' where (a >= 'j');
+drop table t1;
create table t1 (a int not null,
b datetime not null,
primary key (a,b))
@@ -25,13 +60,7 @@ SET @old_tx_isolation := @@session.tx_isolation;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
SET autocommit = 0;
UPDATE t1 SET DATA = data*2 WHERE id = 3;
-SHOW ENGINE InnoDB STATUS;
-Type Name Status
-InnoDB 2 lock struct(s) 1 row lock(s)
UPDATE t1 SET data = data*2 WHERE data = 2;
-SHOW ENGINE InnoDB STATUS;
-Type Name Status
-InnoDB 6 lock struct(s) 2 row lock(s)
SET @@session.tx_isolation = @old_tx_isolation;
DROP TABLE t1;
# Bug#37721, test of ORDER BY on PK and WHERE on INDEX
@@ -167,7 +196,7 @@ create table t1 (a int)
engine = x
partition by key (a);
Warnings:
-Warning 1286 Unknown table engine 'x'
+Warning 1286 Unknown storage engine 'x'
Warning 1266 Using storage engine MyISAM for table 't1'
show create table t1;
Table Create Table
@@ -181,7 +210,8 @@ engine = innodb
partition by list (a)
(partition p0 values in (0));
alter table t1 engine = x;
-ERROR HY000: The mix of handlers in the partitions is not allowed in this version of MySQL
+Warnings:
+Warning 1286 Unknown storage engine 'x'
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
diff --git a/mysql-test/r/partition_innodb_builtin.result b/mysql-test/r/partition_innodb_builtin.result
deleted file mode 100644
index 384ce0790a4..00000000000
--- a/mysql-test/r/partition_innodb_builtin.result
+++ /dev/null
@@ -1,39 +0,0 @@
-SET NAMES utf8;
-CREATE TABLE `t``\""e` (a INT, PRIMARY KEY (a))
-ENGINE=InnoDB
-PARTITION BY RANGE (a)
-SUBPARTITION BY HASH (a)
-(PARTITION `p0``\""e` VALUES LESS THAN (100)
-(SUBPARTITION `sp0``\""e`,
-SUBPARTITION `sp1``\""e`),
-PARTITION `p1``\""e` VALUES LESS THAN (MAXVALUE)
-(SUBPARTITION `sp2``\""e`,
-SUBPARTITION `sp3``\""e`));
-INSERT INTO `t``\""e` VALUES (0), (2), (6), (10), (14), (18), (22);
-START TRANSACTION;
-# con1
-SET NAMES utf8;
-START TRANSACTION;
-# default connection
-UPDATE `t``\""e` SET a = 16 WHERE a = 0;
-# con1
-UPDATE `t``\""e` SET a = 8 WHERE a = 22;
-UPDATE `t``\""e` SET a = 12 WHERE a = 0;
-# default connection
-UPDATE `t``\""e` SET a = 4 WHERE a = 22;
-ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
-# First table reported in 'SHOW ENGINE InnoDB STATUS'
-SHOW ENGINE InnoDB STATUS;
-Type Name Status
-InnoDB index `PRIMARY` of table `test`.`t``\""e` /* Partition `p0``\""e`, Subpartition `sp0``\""e` */
-set @old_sql_mode = @@sql_mode;
-set sql_mode = 'ANSI_QUOTES';
-SHOW ENGINE InnoDB STATUS;
-Type Name Status
-InnoDB index `PRIMARY` of table `test`.`t``\""e` /* Partition `p0``\""e`, Subpartition `sp0``\""e` */
-set @@sql_mode = @old_sql_mode;
-# con1
-ROLLBACK;
-# default connection
-DROP TABLE `t``\""e`;
-SET NAMES DEFAULT;
diff --git a/mysql-test/r/partition_innodb_stmt.result b/mysql-test/r/partition_innodb_stmt.result
index 2735b0d2193..67c33cf7732 100644
--- a/mysql-test/r/partition_innodb_stmt.result
+++ b/mysql-test/r/partition_innodb_stmt.result
@@ -42,7 +42,7 @@ id
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
BEGIN;
INSERT INTO t1 VALUES(9);
-ERROR HY000: Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
+ERROR HY000: Cannot execute statement: binlogging impossible since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
COMMIT;
COMMIT;
DROP TABLE t1;
diff --git a/mysql-test/r/partition_key_cache.result b/mysql-test/r/partition_key_cache.result
new file mode 100644
index 00000000000..c5241c6ea90
--- /dev/null
+++ b/mysql-test/r/partition_key_cache.result
@@ -0,0 +1,415 @@
+DROP TABLE IF EXISTS t1, t2, v, x;
+# Actual test of key caches
+# Verifing that reads/writes use the key cache correctly
+SELECT @org_key_cache_buffer_size:= @@global.default.key_buffer_size;
+@org_key_cache_buffer_size:= @@global.default.key_buffer_size
+1048576
+# Minimize default key cache (almost disabled).
+SET @@global.default.key_buffer_size = 4096;
+CREATE TABLE t1 (
+a INT,
+b INT,
+c INT NOT NULL,
+PRIMARY KEY (a),
+KEY `inx_b` (b))
+PARTITION BY RANGE (a)
+SUBPARTITION BY HASH (a)
+(PARTITION p0 VALUES LESS THAN (1167602410)
+(SUBPARTITION sp0,
+SUBPARTITION sp1),
+PARTITION p1 VALUES LESS THAN MAXVALUE
+(SUBPARTITION sp2,
+SUBPARTITION sp3));
+CREATE TABLE t2 (
+a INT,
+b INT,
+c INT NOT NULL,
+PRIMARY KEY (a),
+KEY `inx_b` (b));
+FLUSH TABLES;
+FLUSH STATUS;
+SET @a:=1167602400;
+CREATE VIEW v AS SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4;
+CREATE VIEW x AS SELECT 1 FROM v,v a,v b;
+FLUSH STATUS;
+INSERT t1 SELECT @a, @a * (1 - ((@a % 2) * 2)) , 1167612400 - (@a:=@a+1) FROM x, x y;
+reads vs requests
+reads == requests
+writes vs requests
+writes == requests
+# row distribution:
+SELECT PARTITION_NAME, SUBPARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA='test' and TABLE_NAME='t1';
+PARTITION_NAME SUBPARTITION_NAME TABLE_ROWS
+p0 sp0 5
+p0 sp1 5
+p1 sp2 2043
+p1 sp3 2043
+DROP VIEW x;
+DROP VIEW v;
+FLUSH TABLES;
+FLUSH STATUS;
+SELECT COUNT(b) FROM t1 WHERE b >= 0;
+COUNT(b)
+2048
+Zero key reads?
+No!
+INSERT t2 SELECT a,b,c FROM t1;
+reads vs requests
+reads == requests
+writes vs requests
+writes == requests
+FLUSH STATUS;
+SELECT COUNT(b) FROM t2 WHERE b >= 0;
+COUNT(b)
+2048
+Zero key reads?
+No!
+FLUSH TABLES;
+# Setting the default key cache to 1M
+SET GLOBAL key_buffer_size = 1024*1024;
+FLUSH STATUS;
+# All these have to read the indexes
+LOAD INDEX INTO CACHE t1 PARTITION (p1);
+Table Op Msg_type Msg_text
+test.t1 preload_keys status OK
+Zero key reads?
+No!
+SELECT COUNT(b) FROM t1 WHERE b >= 0;
+COUNT(b)
+2048
+Zero key reads?
+No!
+SELECT COUNT(b) FROM t2 WHERE b >= 0;
+COUNT(b)
+2048
+Zero key reads?
+No!
+# All these should be able to use the key cache
+SELECT COUNT(b) FROM t1 WHERE b >= 0;
+COUNT(b)
+2048
+Zero key reads?
+Yes!
+SELECT COUNT(b) FROM t2 WHERE b >= 0;
+COUNT(b)
+2048
+Zero key reads?
+Yes!
+FLUSH TABLES;
+LOAD INDEX INTO CACHE t1 PARTITION (p1,p0);
+Table Op Msg_type Msg_text
+test.t1 preload_keys status OK
+Zero key reads?
+No!
+# should not be zero
+SELECT COUNT(b) FROM t1 WHERE b >= 0;
+COUNT(b)
+2048
+Zero key reads?
+Yes!
+LOAD INDEX INTO CACHE t2;
+Table Op Msg_type Msg_text
+test.t2 preload_keys status OK
+Zero key reads?
+No!
+# should not be zero
+SELECT COUNT(b) FROM t2 WHERE b >= 0;
+COUNT(b)
+2048
+Zero key reads?
+Yes!
+FLUSH TABLES;
+LOAD INDEX INTO CACHE t1 PARTITION (p1,p0) IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.t1 preload_keys status OK
+Zero key reads?
+No!
+# should not be zero
+SELECT COUNT(b) FROM t1 WHERE b >= 0;
+COUNT(b)
+2048
+Zero key reads?
+No!
+LOAD INDEX INTO CACHE t2 IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.t2 preload_keys status OK
+Zero key reads?
+No!
+# should not be zero
+SELECT COUNT(b) FROM t2 WHERE b >= 0;
+COUNT(b)
+2048
+Zero key reads?
+No!
+TRUNCATE TABLE t2;
+INSERT t2 SELECT a,b,c FROM t1;
+reads vs requests
+reads != requests
+writes vs requests
+writes != requests
+DROP TABLE t1,t2;
+SET GLOBAL hot_cache.key_buffer_size = 1024*1024;
+SET GLOBAL warm_cache.key_buffer_size = 1024*1024;
+SET @@global.cold_cache.key_buffer_size = 1024*1024;
+SELECT @@global.default.key_buffer_size a, @@global.default.key_cache_block_size b, @@global.default.key_cache_age_threshold c, @@global.default.key_cache_division_limit d;
+a b c d
+1048576 1024 300 100
+SELECT @@global.hot_cache.key_buffer_size a, @@global.hot_cache.key_cache_block_size b, @@global.hot_cache.key_cache_age_threshold c, @@global.hot_cache.key_cache_division_limit d;
+a b c d
+1048576 1024 300 100
+SELECT @@global.warm_cache.key_buffer_size a, @@global.warm_cache.key_cache_block_size b, @@global.warm_cache.key_cache_age_threshold c, @@global.warm_cache.key_cache_division_limit d;
+a b c d
+1048576 1024 300 100
+SELECT @@global.cold_cache.key_buffer_size a, @@global.cold_cache.key_cache_block_size b, @@global.cold_cache.key_cache_age_threshold c, @@global.cold_cache.key_cache_division_limit d;
+a b c d
+1048576 1024 300 100
+CREATE TABLE t1 (
+a INT,
+b VARCHAR(257),
+c INT NOT NULL,
+PRIMARY KEY (a),
+KEY `inx_b` (b),
+KEY `inx_c`(c))
+PARTITION BY RANGE (a)
+SUBPARTITION BY HASH (a)
+(PARTITION p0 VALUES LESS THAN (10)
+(SUBPARTITION sp0,
+SUBPARTITION sp1),
+PARTITION p1 VALUES LESS THAN MAXVALUE
+(SUBPARTITION sp2,
+SUBPARTITION sp3));
+CREATE TABLE t2 (
+a INT,
+b VARCHAR(257),
+c INT NOT NULL,
+PRIMARY KEY (a),
+KEY `inx_b` (b),
+KEY `inx_c`(c));
+SET @a:=1167602400;
+CREATE VIEW v AS SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4;
+CREATE VIEW x AS SELECT 1 FROM v,v a,v b;
+INSERT t1 SELECT @a, CONCAT('X_', @a, ' MySQL'), 1167612400 - (@a:=@a+1) FROM x, x a;
+DROP VIEW x;
+DROP VIEW v;
+INSERT t2 SELECT a, b, c FROM t1;
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+4096
+SELECT COUNT(*) FROM t2;
+COUNT(*)
+4096
+FLUSH TABLES;
+# Restrict partitioned commands to partitioned tables only
+CACHE INDEX t2 PARTITION (p0) KEY (`inx_b`) IN hot_cache;
+ERROR HY000: Partition management on a not partitioned table is not possible
+CACHE INDEX t2 PARTITION (p0,`p1`) INDEX (`PRIMARY`) IN hot_cache;
+ERROR HY000: Partition management on a not partitioned table is not possible
+CACHE INDEX t2 PARTITION (`p1`) INDEX (`PRIMARY`,`inx_b`) IN hot_cache;
+ERROR HY000: Partition management on a not partitioned table is not possible
+CACHE INDEX t2 PARTITION (ALL) KEY (`inx_b`,`PRIMARY`) IN hot_cache;
+ERROR HY000: Partition management on a not partitioned table is not possible
+# Basic key cache testing
+# The manual correctly says: "The syntax of CACHE INDEX enables you to
+# specify that only particular indexes from a table should be assigned
+# to the cache. The current implementation assigns all the table's
+# indexes to the cache, so there is no reason to specify anything
+# other than the table name."
+# So the most of the test only tests the syntax
+CACHE INDEX t2 INDEX (`inx_b`) IN hot_cache;
+Table Op Msg_type Msg_text
+test.t2 assign_to_keycache status OK
+CACHE INDEX t2 KEY (`PRIMARY`) IN warm_cache;
+Table Op Msg_type Msg_text
+test.t2 assign_to_keycache status OK
+CACHE INDEX t2 KEY (`PRIMARY`,`inx_b`) IN cold_cache;
+Table Op Msg_type Msg_text
+test.t2 assign_to_keycache status OK
+CACHE INDEX t2 INDEX (inx_b,`PRIMARY`) IN default;
+Table Op Msg_type Msg_text
+test.t2 assign_to_keycache status OK
+CACHE INDEX t1 PARTITION (p0) KEY (`inx_b`) IN cold_cache;
+Table Op Msg_type Msg_text
+test.t1 assign_to_keycache status OK
+CACHE INDEX t1 PARTITIONS (p0) KEY (`inx_b`) IN cold_cache;
+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 'PARTITIONS (p0) KEY (`inx_b`) IN cold_cache' at line 1
+# only one table at a time if specifying partitions
+CACHE INDEX t1,t2 PARTITION (p0) KEY (`inx_b`) IN cold_cache;
+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 'PARTITION (p0) KEY (`inx_b`) IN cold_cache' at line 1
+CACHE INDEX t1 PARTITION (`p0`,p1) INDEX (`PRIMARY`) IN warm_cache;
+Table Op Msg_type Msg_text
+test.t1 assign_to_keycache status OK
+CACHE INDEX t1 PARTITION (`p1`) INDEX (`PRIMARY`,inx_b) IN hot_cache;
+Table Op Msg_type Msg_text
+test.t1 assign_to_keycache status OK
+CACHE INDEX t1 PARTITION (ALL) KEY (`inx_b`,`PRIMARY`) IN default;
+Table Op Msg_type Msg_text
+test.t1 assign_to_keycache status OK
+CACHE INDEX t1 PARTITION (ALL) IN hot_cache;
+Table Op Msg_type Msg_text
+test.t1 assign_to_keycache status OK
+CACHE INDEX t1 INDEX (`inx_b`) IN default;
+Table Op Msg_type Msg_text
+test.t1 assign_to_keycache status OK
+CACHE INDEX t1 KEY (`PRIMARY`) IN hot_cache;
+Table Op Msg_type Msg_text
+test.t1 assign_to_keycache status OK
+CACHE INDEX t1 KEY (`PRIMARY`,`inx_b`) IN warm_cache;
+Table Op Msg_type Msg_text
+test.t1 assign_to_keycache status OK
+CACHE INDEX t1 INDEX (`inx_b`,`PRIMARY`) IN cold_cache;
+Table Op Msg_type Msg_text
+test.t1 assign_to_keycache status OK
+CACHE INDEX t1 IN hot_cache;
+Table Op Msg_type Msg_text
+test.t1 assign_to_keycache status OK
+# Test of non existent key cache:
+CACHE INDEX t1 IN non_existent_key_cache;
+ERROR HY000: Unknown key cache 'non_existent_key_cache'
+# Basic testing of LOAD INDEX
+LOAD INDEX INTO CACHE t2;
+Table Op Msg_type Msg_text
+test.t2 preload_keys status OK
+# PRIMARY and secondary keys have different block sizes
+LOAD INDEX INTO CACHE t2 ignore leaves;
+Table Op Msg_type Msg_text
+test.t2 preload_keys error Indexes use different block sizes
+test.t2 preload_keys status Operation failed
+# Must have INDEX or KEY before the index list
+LOAD INDEX INTO CACHE t2 (`PRIMARY`);
+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 '(`PRIMARY`)' at line 1
+# Test of IGNORE LEAVES
+LOAD INDEX INTO CACHE t2 INDEX (`PRIMARY`);
+Table Op Msg_type Msg_text
+test.t2 preload_keys status OK
+LOAD INDEX INTO CACHE t2 KEY (`PRIMARY`,`inx_b`) IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.t2 preload_keys error Indexes use different block sizes
+test.t2 preload_keys status Operation failed
+CACHE INDEX t2 IN warm_cache;
+Table Op Msg_type Msg_text
+test.t2 assign_to_keycache status OK
+CACHE INDEX t1 IN cold_cache;
+Table Op Msg_type Msg_text
+test.t1 assign_to_keycache status OK
+LOAD INDEX INTO CACHE t2 KEY (`PRIMARY`) IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.t2 preload_keys error Indexes use different block sizes
+test.t2 preload_keys status Operation failed
+CACHE INDEX t2 INDEX (`inx_b`, `inx_c`) IN hot_cache;
+Table Op Msg_type Msg_text
+test.t2 assign_to_keycache status OK
+LOAD INDEX INTO CACHE t2 KEY (`inx_b`, `inx_c`) IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.t2 preload_keys error Indexes use different block sizes
+test.t2 preload_keys status Operation failed
+CACHE INDEX t2 IN warm_cache;
+Table Op Msg_type Msg_text
+test.t2 assign_to_keycache status OK
+CACHE INDEX t2 INDEX (`PRIMARY`, `inx_c`) IN hot_cache;
+Table Op Msg_type Msg_text
+test.t2 assign_to_keycache status OK
+LOAD INDEX INTO CACHE t2 KEY (`PRIMARY`,`inx_c`) IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.t2 preload_keys error Indexes use different block sizes
+test.t2 preload_keys status Operation failed
+CACHE INDEX t2 INDEX (`inx_b`,`PRIMARY`) IN default;
+Table Op Msg_type Msg_text
+test.t2 assign_to_keycache status OK
+LOAD INDEX INTO CACHE t2 KEY (`PRIMARY`,`inx_b`);
+Table Op Msg_type Msg_text
+test.t2 preload_keys status OK
+CACHE INDEX t2 IN default;
+Table Op Msg_type Msg_text
+test.t2 assign_to_keycache status OK
+LOAD INDEX INTO CACHE t2 IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.t2 preload_keys error Indexes use different block sizes
+test.t2 preload_keys status Operation failed
+LOAD INDEX INTO CACHE t2 PARTITION (p1) INDEX (`PRIMARY`);
+ERROR HY000: Partition management on a not partitioned table is not possible
+LOAD INDEX INTO CACHE t1, t2;
+Table Op Msg_type Msg_text
+test.t1 preload_keys status OK
+test.t2 preload_keys status OK
+# only one table at a time if specifying partitions
+LOAD INDEX INTO CACHE t1 PARTITION (p0), t2;
+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 ' t2' at line 1
+LOAD INDEX INTO CACHE t1 IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.t1 preload_keys error Indexes use different block sizes
+test.t1 preload_keys error Subpartition sp2 returned error
+test.t1 preload_keys status Operation failed
+LOAD INDEX INTO CACHE t1 INDEX (`PRIMARY`);
+Table Op Msg_type Msg_text
+test.t1 preload_keys status OK
+LOAD INDEX INTO CACHE t1 INDEX (`PRIMARY`,`inx_b`) IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.t1 preload_keys error Indexes use different block sizes
+test.t1 preload_keys error Subpartition sp2 returned error
+test.t1 preload_keys status Operation failed
+LOAD INDEX INTO CACHE t1 INDEX (`inx_b`) IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.t1 preload_keys error Indexes use different block sizes
+test.t1 preload_keys error Subpartition sp2 returned error
+test.t1 preload_keys status Operation failed
+LOAD INDEX INTO CACHE t1 INDEX (`PRIMARY`) IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.t1 preload_keys error Indexes use different block sizes
+test.t1 preload_keys error Subpartition sp2 returned error
+test.t1 preload_keys status Operation failed
+LOAD INDEX INTO CACHE t1 INDEX (`PRIMARY`,`inx_b`);
+Table Op Msg_type Msg_text
+test.t1 preload_keys status OK
+LOAD INDEX INTO CACHE t1 PARTITION (p1) INDEX (`PRIMARY`);
+Table Op Msg_type Msg_text
+test.t1 preload_keys status OK
+LOAD INDEX INTO CACHE t1 PARTITION (`p1`,p0) KEY (`PRIMARY`) IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.t1 preload_keys error Indexes use different block sizes
+test.t1 preload_keys error Subpartition sp2 returned error
+test.t1 preload_keys status Operation failed
+LOAD INDEX INTO CACHE t1 PARTITION (ALL);
+Table Op Msg_type Msg_text
+test.t1 preload_keys status OK
+LOAD INDEX INTO CACHE t1 PARTITIONS ALL;
+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 'PARTITIONS ALL' at line 1
+LOAD INDEX INTO CACHE t1 PARTITION (p1,`p0`) IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.t1 preload_keys error Indexes use different block sizes
+test.t1 preload_keys error Subpartition sp2 returned error
+test.t1 preload_keys status Operation failed
+DROP INDEX `inx_b` on t1;
+DROP INDEX `inx_b` on t2;
+CACHE INDEX t2 PARTITION (p0) KEY (`inx_b`) IN hot_cache;
+ERROR HY000: Partition management on a not partitioned table is not possible
+CACHE INDEX t2 INDEX (`inx_b`) IN hot_cache;
+Table Op Msg_type Msg_text
+test.t2 assign_to_keycache Error Key 'inx_b' doesn't exist in table 't2'
+test.t2 assign_to_keycache status Operation failed
+CACHE INDEX t1 PARTITION (p0) KEY (`inx_b`) IN hot_cache;
+Table Op Msg_type Msg_text
+test.t1 assign_to_keycache error Subpartition sp0 returned error
+test.t1 assign_to_keycache Error Key 'inx_b' doesn't exist in table 't1'
+test.t1 assign_to_keycache status Operation failed
+CACHE INDEX t1 INDEX (`inx_b`) IN hot_cache;
+Table Op Msg_type Msg_text
+test.t1 assign_to_keycache error Subpartition sp0 returned error
+test.t1 assign_to_keycache Error Key 'inx_b' doesn't exist in table 't1'
+test.t1 assign_to_keycache status Operation failed
+DROP TABLE t1,t2;
+SET GLOBAL hot_cache.key_buffer_size = 0;
+SET GLOBAL warm_cache.key_buffer_size = 0;
+SET @@global.cold_cache.key_buffer_size = 0;
+SELECT @@global.default.key_buffer_size a, @@global.default.key_cache_block_size b, @@global.default.key_cache_age_threshold c, @@global.default.key_cache_division_limit d;
+a b c d
+1048576 1024 300 100
+SELECT @@global.hot_cache.key_buffer_size a, @@global.hot_cache.key_cache_block_size b, @@global.hot_cache.key_cache_age_threshold c, @@global.hot_cache.key_cache_division_limit d;
+a b c d
+0 1024 300 100
+SELECT @@global.warm_cache.key_buffer_size a, @@global.warm_cache.key_cache_block_size b, @@global.warm_cache.key_cache_age_threshold c, @@global.warm_cache.key_cache_division_limit d;
+a b c d
+0 1024 300 100
+SELECT @@global.cold_cache.key_buffer_size a, @@global.cold_cache.key_cache_block_size b, @@global.cold_cache.key_cache_age_threshold c, @@global.cold_cache.key_cache_division_limit d;
+a b c d
+0 1024 300 100
+SET @@global.default.key_buffer_size = @org_key_cache_buffer_size;
diff --git a/mysql-test/r/partition_list.result b/mysql-test/r/partition_list.result
index a68a67c6386..e22fc11e5bb 100644
--- a/mysql-test/r/partition_list.result
+++ b/mysql-test/r/partition_list.result
@@ -54,6 +54,17 @@ subpartitions 2
partition p1 values in (1),
partition pnull values in (null, 2),
partition p3 values in (3));
+select partition_method, partition_expression, partition_description
+from information_schema.partitions where table_name = "t1";
+partition_method partition_expression partition_description
+LIST a 0
+LIST a 0
+LIST a 1
+LIST a 1
+LIST a NULL,2
+LIST a NULL,2
+LIST a 3
+LIST a 3
insert into t1 values (0,0),(0,1),(1,0),(1,1),(null,0),(null,1);
insert into t1 values (2,0),(2,1),(3,0),(3,1);
explain partitions select * from t1 where a is null;
diff --git a/mysql-test/r/partition_mgm_err.result b/mysql-test/r/partition_mgm_err.result
index f8403988f47..a13278d724e 100644
--- a/mysql-test/r/partition_mgm_err.result
+++ b/mysql-test/r/partition_mgm_err.result
@@ -41,7 +41,7 @@ ERROR HY000: Reorganize of range partitions cannot change total ranges except fo
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
(PARTITION x01 VALUES LESS THAN (4),
PARTITION x11 VALUES LESS THAN (2));
-ERROR HY000: Reorganize of range partitions cannot change total ranges except for last partition where it can extend the range
+ERROR HY000: VALUES LESS THAN value must be strictly increasing for each partition
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
(PARTITION x01 VALUES LESS THAN (6),
PARTITION x11 VALUES LESS THAN (4));
diff --git a/mysql-test/r/partition_pruning.result b/mysql-test/r/partition_pruning.result
index cf0474a3f6b..bd81e2b5d4f 100644
--- a/mysql-test/r/partition_pruning.result
+++ b/mysql-test/r/partition_pruning.result
@@ -1266,6 +1266,335 @@ EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0001-01-01' AND '1001-01-01
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0001-01-01,pNULL,p1001-01-01 ALL NULL NULL NULL NULL 7 Using where
DROP TABLE t1;
+# TO_SECONDS, test of LIST and index
+CREATE TABLE t1 (a DATE, KEY(a))
+PARTITION BY LIST (TO_SECONDS(a))
+(PARTITION `p0001-01-01` VALUES IN (TO_SECONDS('0001-01-01')),
+PARTITION `p2001-01-01` VALUES IN (TO_SECONDS('2001-01-01')),
+PARTITION `pNULL` VALUES IN (NULL),
+PARTITION `p0000-01-02` VALUES IN (TO_SECONDS('0000-01-02')),
+PARTITION `p1001-01-01` VALUES IN (TO_SECONDS('1001-01-01')));
+INSERT INTO t1 VALUES ('0000-00-00'), ('0000-01-02'), ('0001-01-01'),
+('1001-00-00'), ('1001-01-01'), ('1002-00-00'), ('2001-01-01');
+SELECT * FROM t1 WHERE a < '1001-01-01';
+a
+0000-00-00
+0000-01-02
+0001-01-01
+1001-00-00
+SELECT * FROM t1 WHERE a <= '1001-01-01';
+a
+0000-00-00
+0000-01-02
+0001-01-01
+1001-00-00
+1001-01-01
+SELECT * FROM t1 WHERE a >= '1001-01-01';
+a
+1001-01-01
+1002-00-00
+2001-01-01
+SELECT * FROM t1 WHERE a > '1001-01-01';
+a
+1002-00-00
+2001-01-01
+SELECT * FROM t1 WHERE a = '1001-01-01';
+a
+1001-01-01
+SELECT * FROM t1 WHERE a < '1001-00-00';
+a
+0000-00-00
+0000-01-02
+0001-01-01
+SELECT * FROM t1 WHERE a <= '1001-00-00';
+a
+0000-00-00
+0000-01-02
+0001-01-01
+1001-00-00
+SELECT * FROM t1 WHERE a >= '1001-00-00';
+a
+1001-00-00
+1001-01-01
+1002-00-00
+2001-01-01
+SELECT * FROM t1 WHERE a > '1001-00-00';
+a
+1001-01-01
+1002-00-00
+2001-01-01
+SELECT * FROM t1 WHERE a = '1001-00-00';
+a
+1001-00-00
+# Disabling warnings for the invalid date
+SELECT * FROM t1 WHERE a < '1999-02-31';
+a
+0000-00-00
+0000-01-02
+0001-01-01
+1001-00-00
+1001-01-01
+1002-00-00
+SELECT * FROM t1 WHERE a <= '1999-02-31';
+a
+0000-00-00
+0000-01-02
+0001-01-01
+1001-00-00
+1001-01-01
+1002-00-00
+SELECT * FROM t1 WHERE a >= '1999-02-31';
+a
+2001-01-01
+SELECT * FROM t1 WHERE a > '1999-02-31';
+a
+2001-01-01
+SELECT * FROM t1 WHERE a = '1999-02-31';
+a
+SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
+a
+0000-00-00
+0000-01-02
+0001-01-01
+1001-00-00
+1001-01-01
+1002-00-00
+SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
+a
+0000-00-00
+0000-01-02
+0001-01-01
+1001-00-00
+1001-01-01
+SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
+a
+1001-00-00
+1001-01-01
+1002-00-00
+SELECT * FROM t1 WHERE a BETWEEN '0001-01-01' AND '1001-01-01';
+a
+0001-01-01
+1001-00-00
+1001-01-01
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1001-01-01';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 range a a 4 NULL 3 Using where; Using index
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-01-01';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 4 Using where; Using index
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-01-01';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 range a a 4 NULL 4 Using where; Using index
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-01-01';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p2001-01-01,pNULL range a a 4 NULL 3 Using where; Using index
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1001-01-01';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p1001-01-01 system a NULL NULL NULL 1
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1001-00-00';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 range a a 4 NULL 3 Using where; Using index
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-00-00';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 range a a 4 NULL 3 Using where; Using index
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-00-00';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 range a a 4 NULL 4 Using where; Using index
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-00-00';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 range a a 4 NULL 4 Using where; Using index
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1001-00-00';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 pNULL ref a a 4 const 1 Using where; Using index
+# Disabling warnings for the invalid date
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1999-02-31';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 5 Using where; Using index
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1999-02-31';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 5 Using where; Using index
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1999-02-31';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p2001-01-01,pNULL range a a 4 NULL 2 Using where; Using index
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1999-02-31';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p2001-01-01,pNULL range a a 4 NULL 2 Using where; Using index
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1999-02-31';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 pNULL ref a a 4 const 1 Using where; Using index
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 5 Using where; Using index
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 4 Using where; Using index
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 pNULL,p1001-01-01 range a a 4 NULL 2 Using where; Using index
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0001-01-01' AND '1001-01-01';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0001-01-01,pNULL,p1001-01-01 range a a 4 NULL 3 Using where; Using index
+# test without index
+ALTER TABLE t1 DROP KEY a;
+SELECT * FROM t1 WHERE a < '1001-01-01';
+a
+0000-00-00
+0000-01-02
+0001-01-01
+1001-00-00
+SELECT * FROM t1 WHERE a <= '1001-01-01';
+a
+0000-00-00
+0000-01-02
+0001-01-01
+1001-00-00
+1001-01-01
+SELECT * FROM t1 WHERE a >= '1001-01-01';
+a
+1001-01-01
+1002-00-00
+2001-01-01
+SELECT * FROM t1 WHERE a > '1001-01-01';
+a
+1002-00-00
+2001-01-01
+SELECT * FROM t1 WHERE a = '1001-01-01';
+a
+1001-01-01
+SELECT * FROM t1 WHERE a < '1001-00-00';
+a
+0000-00-00
+0000-01-02
+0001-01-01
+SELECT * FROM t1 WHERE a <= '1001-00-00';
+a
+0000-00-00
+0000-01-02
+0001-01-01
+1001-00-00
+SELECT * FROM t1 WHERE a >= '1001-00-00';
+a
+1001-00-00
+1001-01-01
+1002-00-00
+2001-01-01
+SELECT * FROM t1 WHERE a > '1001-00-00';
+a
+1001-01-01
+1002-00-00
+2001-01-01
+SELECT * FROM t1 WHERE a = '1001-00-00';
+a
+1001-00-00
+# Disabling warnings for the invalid date
+SELECT * FROM t1 WHERE a < '1999-02-31';
+a
+0000-00-00
+0000-01-02
+0001-01-01
+1001-00-00
+1001-01-01
+1002-00-00
+SELECT * FROM t1 WHERE a <= '1999-02-31';
+a
+0000-00-00
+0000-01-02
+0001-01-01
+1001-00-00
+1001-01-01
+1002-00-00
+SELECT * FROM t1 WHERE a >= '1999-02-31';
+a
+2001-01-01
+SELECT * FROM t1 WHERE a > '1999-02-31';
+a
+2001-01-01
+SELECT * FROM t1 WHERE a = '1999-02-31';
+a
+SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
+a
+0000-00-00
+0000-01-02
+0001-01-01
+1001-00-00
+1001-01-01
+1002-00-00
+SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
+a
+0000-00-00
+0000-01-02
+0001-01-01
+1001-00-00
+1001-01-01
+SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
+a
+1001-00-00
+1001-01-01
+1002-00-00
+SELECT * FROM t1 WHERE a BETWEEN '0001-01-01' AND '1001-01-01';
+a
+0001-01-01
+1001-00-00
+1001-01-01
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1001-01-01';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 ALL NULL NULL NULL NULL 7 Using where
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-01-01';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 ALL NULL NULL NULL NULL 7 Using where
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-01-01';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 ALL NULL NULL NULL NULL 7 Using where
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-01-01';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p2001-01-01,pNULL ALL NULL NULL NULL NULL 7 Using where
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1001-01-01';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p1001-01-01 system NULL NULL NULL NULL 1
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1001-00-00';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 ALL NULL NULL NULL NULL 7 Using where
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-00-00';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 ALL NULL NULL NULL NULL 7 Using where
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-00-00';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 ALL NULL NULL NULL NULL 7 Using where
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-00-00';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 ALL NULL NULL NULL NULL 7 Using where
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1001-00-00';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 pNULL ALL NULL NULL NULL NULL 7 Using where
+# Disabling warnings for the invalid date
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1999-02-31';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 ALL NULL NULL NULL NULL 7 Using where
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1999-02-31';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 ALL NULL NULL NULL NULL 7 Using where
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1999-02-31';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p2001-01-01,pNULL ALL NULL NULL NULL NULL 7 Using where
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1999-02-31';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p2001-01-01,pNULL ALL NULL NULL NULL NULL 7 Using where
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1999-02-31';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 pNULL ALL NULL NULL NULL NULL 7 Using where
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 ALL NULL NULL NULL NULL 7 Using where
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 ALL NULL NULL NULL NULL 7 Using where
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 pNULL,p1001-01-01 ALL NULL NULL NULL NULL 7 Using where
+EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0001-01-01' AND '1001-01-01';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0001-01-01,pNULL,p1001-01-01 ALL NULL NULL NULL NULL 7 Using where
+DROP TABLE t1;
# Test with DATETIME column NOT NULL
CREATE TABLE t1 (
a int(10) unsigned NOT NULL,
@@ -2838,3 +3167,22 @@ explain partitions select * from t1 where recdate < '2006-01-01 00:00:00';
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 2 Using where
drop table t1;
+#
+# BUG#33730 Full table scan instead selected partitions for query more than 10 partitions
+#
+create table t0 (a int);
+insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
+create table t1 (a int)
+partition by range(a+0) (
+partition p0 values less than (64),
+partition p1 values less than (128),
+partition p2 values less than (255)
+);
+insert into t1 select A.a + 10*B.a from t0 A, t0 B;
+explain partitions select * from t1 where a between 10 and 13;
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 64 Using where
+explain partitions select * from t1 where a between 10 and 10+33;
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0,p1,p2 ALL NULL NULL NULL NULL 100 Using where
+drop table t0, t1;
diff --git a/mysql-test/r/partition_range.result b/mysql-test/r/partition_range.result
index 02d2f6359c5..0bd7605a5c8 100644
--- a/mysql-test/r/partition_range.result
+++ b/mysql-test/r/partition_range.result
@@ -1,6 +1,136 @@
drop table if exists t1, t2;
create table t1 (a int)
partition by range (a)
+subpartition by hash(to_seconds(a))
+(partition p0 values less than (1));
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+/*!50500 PARTITION BY RANGE (a)
+SUBPARTITION BY HASH (to_seconds(a))
+(PARTITION p0 VALUES LESS THAN (1) ENGINE = MyISAM) */
+drop table t1;
+create table t1 (a int)
+partition by range (a)
+( partition p0 values less than (NULL),
+partition p1 values less than (MAXVALUE));
+ERROR HY000: Not allowed to use NULL value in VALUES LESS THAN
+create table t1 (a datetime not null)
+partition by range (TO_SECONDS(a))
+( partition p0 VALUES LESS THAN (TO_SECONDS('2007-03-08 00:00:00')),
+partition p1 VALUES LESS THAN (TO_SECONDS('2007-04-01 00:00:00')));
+select partition_method, partition_expression, partition_description
+from information_schema.partitions where table_name = "t1";
+partition_method partition_expression partition_description
+RANGE TO_SECONDS(a) 63340531200
+RANGE TO_SECONDS(a) 63342604800
+INSERT INTO t1 VALUES ('2007-03-01 12:00:00'), ('2007-03-07 12:00:00');
+INSERT INTO t1 VALUES ('2007-03-08 12:00:00'), ('2007-03-15 12:00:00');
+explain partitions select * from t1 where a < '2007-03-08 00:00:00';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 2 Using where
+explain partitions select * from t1 where a < '2007-03-08 00:00:01';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 4 Using where
+explain partitions select * from t1 where a <= '2007-03-08 00:00:00';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 4 Using where
+explain partitions select * from t1 where a <= '2007-03-07 23:59:59';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 4 Using where
+explain partitions select * from t1 where a < '2007-03-07 23:59:59';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 4 Using where
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` datetime NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+/*!50500 PARTITION BY RANGE (TO_SECONDS(a))
+(PARTITION p0 VALUES LESS THAN (63340531200) ENGINE = MyISAM,
+ PARTITION p1 VALUES LESS THAN (63342604800) ENGINE = MyISAM) */
+drop table t1;
+create table t1 (a date)
+partition by range(to_seconds(a))
+(partition p0 values less than (to_seconds('2004-01-01')),
+partition p1 values less than (to_seconds('2005-01-01')));
+insert into t1 values ('2003-12-30'),('2004-12-31');
+select * from t1;
+a
+2003-12-30
+2004-12-31
+explain partitions select * from t1 where a <= '2003-12-31';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0 system NULL NULL NULL NULL 1
+select * from t1 where a <= '2003-12-31';
+a
+2003-12-30
+explain partitions select * from t1 where a <= '2005-01-01';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 2 Using where
+select * from t1 where a <= '2005-01-01';
+a
+2003-12-30
+2004-12-31
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` date DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+/*!50500 PARTITION BY RANGE (to_seconds(a))
+(PARTITION p0 VALUES LESS THAN (63240134400) ENGINE = MyISAM,
+ PARTITION p1 VALUES LESS THAN (63271756800) ENGINE = MyISAM) */
+drop table t1;
+create table t1 (a datetime)
+partition by range(to_seconds(a))
+(partition p0 values less than (to_seconds('2004-01-01 12:00:00')),
+partition p1 values less than (to_seconds('2005-01-01 12:00:00')));
+insert into t1 values ('2004-01-01 11:59:29'),('2005-01-01 11:59:59');
+select * from t1;
+a
+2004-01-01 11:59:29
+2005-01-01 11:59:59
+explain partitions select * from t1 where a <= '2004-01-01 11:59.59';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0 system NULL NULL NULL NULL 1
+select * from t1 where a <= '2004-01-01 11:59:59';
+a
+2004-01-01 11:59:29
+explain partitions select * from t1 where a <= '2005-01-01';
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 2 Using where
+select * from t1 where a <= '2005-01-01';
+a
+2004-01-01 11:59:29
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` datetime DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+/*!50500 PARTITION BY RANGE (to_seconds(a))
+(PARTITION p0 VALUES LESS THAN (63240177600) ENGINE = MyISAM,
+ PARTITION p1 VALUES LESS THAN (63271800000) ENGINE = MyISAM) */
+drop table t1;
+create table t1 (a int, b char(20))
+partition by range columns(a,b)
+(partition p0 values less than (1));
+ERROR 42000: Inconsistency in usage of column lists for partitioning near '))' at line 3
+create table t1 (a int, b char(20))
+partition by range(a)
+(partition p0 values less than (1,"b"));
+ERROR HY000: Cannot have more than one value for this type of RANGE partitioning
+create table t1 (a int, b char(20))
+partition by range(a)
+(partition p0 values less than (1,"b"));
+ERROR HY000: Cannot have more than one value for this type of RANGE partitioning
+create table t1 (a int, b char(20))
+partition by range columns(b)
+(partition p0 values less than ("b"));
+drop table t1;
+create table t1 (a int)
+partition by range (a)
( partition p0 values less than (maxvalue));
alter table t1 add partition (partition p1 values less than (100000));
ERROR HY000: MAXVALUE can only be used in last partition definition
diff --git a/mysql-test/r/partition_sync.result b/mysql-test/r/partition_sync.result
new file mode 100644
index 00000000000..31cf0569464
--- /dev/null
+++ b/mysql-test/r/partition_sync.result
@@ -0,0 +1,25 @@
+#
+# Bug #43867 ALTER TABLE on a partitioned table
+# causes unnecessary deadlocks
+#
+CREATE TABLE t1 (a int) PARTITION BY RANGE (a)
+(PARTITION p0 VALUES LESS THAN (1),
+PARTITION p1 VALUES LESS THAN (2));
+INSERT INTO t1 VALUES (0),(1);
+# Connection 2
+BEGIN;
+SELECT * FROM t1;
+a
+0
+1
+# Connection 1
+ALTER TABLE t1 DROP PARTITION p3;
+ERROR HY000: Error in list of partitions to DROP
+# Connection 2
+# This failed with deadlock and should not do so.
+SELECT * FROM t1;
+a
+0
+1
+# Connection 1
+DROP TABLE t1;
diff --git a/mysql-test/r/partition_truncate.result b/mysql-test/r/partition_truncate.result
new file mode 100644
index 00000000000..8f594a319df
--- /dev/null
+++ b/mysql-test/r/partition_truncate.result
@@ -0,0 +1,18 @@
+drop table if exists t1, t2, t3, t4;
+create table t1 (a int)
+partition by list (a)
+(partition p1 values in (0));
+alter table t1 truncate partition p1,p1;
+ERROR HY000: Incorrect partition name
+alter table t1 truncate partition p0;
+ERROR HY000: Incorrect partition name
+drop table t1;
+create table t1 (a int)
+partition by list (a)
+subpartition by hash (a)
+subpartitions 1
+(partition p1 values in (1)
+(subpartition sp1));
+alter table t1 truncate partition sp1;
+ERROR HY000: Incorrect partition name
+drop table t1;
diff --git a/mysql-test/r/partition_utf8.result b/mysql-test/r/partition_utf8.result
new file mode 100644
index 00000000000..339871f1f4a
--- /dev/null
+++ b/mysql-test/r/partition_utf8.result
@@ -0,0 +1,53 @@
+set names utf8;
+create table t1 (a varchar(2) character set cp1250)
+partition by list columns (a)
+( partition p0 values in (0x81));
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(2) CHARACTER SET cp1250 DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+/*!50500 PARTITION BY LIST COLUMNS(a)
+(PARTITION p0 VALUES IN (_cp1250 0x81) ENGINE = MyISAM) */
+drop table t1;
+create table t1 (a varchar(2) character set cp1250)
+partition by list columns (a)
+( partition p0 values in (0x80));
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(2) CHARACTER SET cp1250 DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+/*!50500 PARTITION BY LIST COLUMNS(a)
+(PARTITION p0 VALUES IN ('€') ENGINE = MyISAM) */
+drop table t1;
+create table t1 (a varchar(1500), b varchar(1570))
+partition by list columns(a,b)
+( partition p0 values in (('a','b')));
+ERROR HY000: The total length of the partitioning fields is too large
+create table t1 (a varchar(1023) character set utf8 collate utf8_spanish2_ci)
+partition by range columns(a)
+( partition p0 values less than ('CZ'),
+partition p1 values less than ('CH'),
+partition p2 values less than ('D'));
+insert into t1 values ('czz'),('chi'),('ci'),('cg');
+select * from t1 where a between 'cg' AND 'ci';
+a
+ci
+cg
+drop table t1;
+create table t1 (a varchar(2) character set ucs2)
+partition by list columns (a)
+(partition p0 values in (0x2020),
+partition p1 values in (''));
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(2) CHARACTER SET ucs2 DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+/*!50500 PARTITION BY LIST COLUMNS(a)
+(PARTITION p0 VALUES IN ('†') ENGINE = MyISAM,
+ PARTITION p1 VALUES IN ('') ENGINE = MyISAM) */
+insert into t1 values ('');
+insert into t1 values (_ucs2 0x2020);
+drop table t1;
diff --git a/mysql-test/r/plugin.result b/mysql-test/r/plugin.result
index 782d2a5a9a4..0d5bc29fc8c 100644
--- a/mysql-test/r/plugin.result
+++ b/mysql-test/r/plugin.result
@@ -1,6 +1,6 @@
CREATE TABLE t1(a int) ENGINE=EXAMPLE;
Warnings:
-Warning 1286 Unknown table engine 'EXAMPLE'
+Warning 1286 Unknown storage engine 'EXAMPLE'
Warning 1266 Using storage engine MyISAM for table 't1'
DROP TABLE t1;
INSTALL PLUGIN example SONAME 'ha_example.so';
@@ -12,6 +12,15 @@ CREATE TABLE t1(a int) ENGINE=EXAMPLE;
SELECT * FROM t1;
a
DROP TABLE t1;
+set global example_ulong_var=500;
+set global example_enum_var= e1;
+show status like 'example%';
+Variable_name Value
+example_func_example enum_var is 0, ulong_var is 500, really
+show variables like 'example%';
+Variable_name Value
+example_enum_var e1
+example_ulong_var 500
UNINSTALL PLUGIN example;
UNINSTALL PLUGIN EXAMPLE;
ERROR 42000: PLUGIN EXAMPLE does not exist
@@ -25,7 +34,7 @@ INSTALL PLUGIN example SONAME 'ha_example.so';
SET GLOBAL example_enum_var= e1;
SET GLOBAL example_enum_var= e2;
SET GLOBAL example_enum_var= impossible;
-ERROR 42000: Variable 'enum_var' can't be set to the value of 'impossible'
+ERROR 42000: Variable 'example_enum_var' can't be set to the value of 'impossible'
UNINSTALL PLUGIN example;
INSTALL PLUGIN example SONAME 'ha_example.so';
select @@session.sql_mode into @old_sql_mode;
@@ -36,7 +45,7 @@ select @@global.example_ulong_var;
500
set global example_ulong_var=1111;
Warnings:
-Warning 1292 Truncated incorrect ulong_var value: '1111'
+Warning 1292 Truncated incorrect example_ulong_var value: '1111'
select @@global.example_ulong_var;
@@global.example_ulong_var
1000
@@ -46,7 +55,7 @@ select @@global.example_ulong_var;
@@global.example_ulong_var
500
set global example_ulong_var=1111;
-ERROR 42000: Variable 'ulong_var' can't be set to the value of '1111'
+ERROR 42000: Variable 'example_ulong_var' can't be set to the value of '1111'
select @@global.example_ulong_var;
@@global.example_ulong_var
500
diff --git a/mysql-test/r/profiling.result b/mysql-test/r/profiling.result
index c96074eb830..6292cd085e4 100644
--- a/mysql-test/r/profiling.result
+++ b/mysql-test/r/profiling.result
@@ -9,8 +9,6 @@ profiling_history_size 15
select @@profiling;
@@profiling
0
-set global profiling = ON;
-ERROR HY000: Variable 'profiling' is a SESSION variable and can't be used with SET GLOBAL
set @start_value= @@global.profiling_history_size;
set global profiling_history_size=100;
show global variables like 'profil%';
@@ -298,6 +296,13 @@ id
1
2
3
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'hello'
+Warning 1292 Truncated incorrect DOUBLE value: 'hello'
+Warning 1292 Truncated incorrect DOUBLE value: 'hello'
+Warning 1292 Truncated incorrect DOUBLE value: 'hello'
+Warning 1292 Truncated incorrect DOUBLE value: 'hello'
+Warning 1292 Truncated incorrect DOUBLE value: 'hello'
select @@profiling;
@@profiling
1
diff --git a/mysql-test/r/ps.result b/mysql-test/r/ps.result
index 1e67bfa7d37..c9628e43ddd 100644
--- a/mysql-test/r/ps.result
+++ b/mysql-test/r/ps.result
@@ -1194,13 +1194,13 @@ SET @aux= "SELECT COUNT(*)
prepare my_stmt from @aux;
execute my_stmt;
COUNT(*)
-39
+40
execute my_stmt;
COUNT(*)
-39
+40
execute my_stmt;
COUNT(*)
-39
+40
deallocate prepare my_stmt;
drop procedure if exists p1|
drop table if exists t1|
@@ -2795,17 +2795,21 @@ Warnings:
Note 1051 Unknown table 't1'
call proc_1();
Level Code Message
+Note 1051 Unknown table 't1'
drop table if exists t2;
Warnings:
Note 1051 Unknown table 't2'
call proc_1();
Level Code Message
+Note 1051 Unknown table 't2'
drop table if exists t1, t2;
Warnings:
Note 1051 Unknown table 't1'
Note 1051 Unknown table 't2'
call proc_1();
Level Code Message
+Note 1051 Unknown table 't1'
+Note 1051 Unknown table 't2'
drop procedure proc_1;
create function func_1() returns int begin show warnings; return 1; end|
ERROR 0A000: Not allowed to return a result set from a function
@@ -2988,4 +2992,165 @@ select @plaintext;
bcd
deallocate prepare encode;
deallocate prepare decode;
+
End of 5.1 tests.
+
+#
+# WL#4435: Support OUT-parameters in prepared statements.
+#
+
+DROP PROCEDURE IF EXISTS p_string;
+DROP PROCEDURE IF EXISTS p_double;
+DROP PROCEDURE IF EXISTS p_int;
+DROP PROCEDURE IF EXISTS p_decimal;
+
+CREATE PROCEDURE p_string(
+IN v0 INT,
+OUT v1 CHAR(32),
+IN v2 CHAR(32),
+INOUT v3 CHAR(32))
+BEGIN
+SET v0 = -1;
+SET v1 = 'test_v1';
+SET v2 = 'n/a';
+SET v3 = 'test_v3';
+END|
+
+CREATE PROCEDURE p_double(
+IN v0 INT,
+OUT v1 DOUBLE(4, 2),
+IN v2 DOUBLE(4, 2),
+INOUT v3 DOUBLE(4, 2))
+BEGIN
+SET v0 = -1;
+SET v1 = 12.34;
+SET v2 = 98.67;
+SET v3 = 56.78;
+END|
+
+CREATE PROCEDURE p_int(
+IN v0 CHAR(10),
+OUT v1 INT,
+IN v2 INT,
+INOUT v3 INT)
+BEGIN
+SET v0 = 'n/a';
+SET v1 = 1234;
+SET v2 = 9876;
+SET v3 = 5678;
+END|
+
+CREATE PROCEDURE p_decimal(
+IN v0 INT,
+OUT v1 DECIMAL(4, 2),
+IN v2 DECIMAL(4, 2),
+INOUT v3 DECIMAL(4, 2))
+BEGIN
+SET v0 = -1;
+SET v1 = 12.34;
+SET v2 = 98.67;
+SET v3 = 56.78;
+END|
+
+PREPARE stmt_str FROM 'CALL p_string(?, ?, ?, ?)';
+PREPARE stmt_dbl FROM 'CALL p_double(?, ?, ?, ?)';
+PREPARE stmt_int FROM 'CALL p_int(?, ?, ?, ?)';
+PREPARE stmt_dec FROM 'CALL p_decimal(?, ?, ?, ?)';
+
+SET @x_str_1 = NULL;
+SET @x_str_2 = NULL;
+SET @x_str_3 = NULL;
+SET @x_dbl_1 = NULL;
+SET @x_dbl_2 = NULL;
+SET @x_dbl_3 = NULL;
+SET @x_int_1 = NULL;
+SET @x_int_2 = NULL;
+SET @x_int_3 = NULL;
+SET @x_dec_1 = NULL;
+SET @x_dec_2 = NULL;
+SET @x_dec_3 = NULL;
+
+-- Testing strings...
+
+EXECUTE stmt_str USING @x_int_1, @x_str_1, @x_str_2, @x_str_3;
+SELECT @x_int_1, @x_str_1, @x_str_2, @x_str_3;
+@x_int_1 @x_str_1 @x_str_2 @x_str_3
+NULL test_v1 NULL test_v3
+
+EXECUTE stmt_str USING @x_int_1, @x_str_1, @x_str_2, @x_str_3;
+SELECT @x_int_1, @x_str_1, @x_str_2, @x_str_3;
+@x_int_1 @x_str_1 @x_str_2 @x_str_3
+NULL test_v1 NULL test_v3
+
+-- Testing doubles...
+
+EXECUTE stmt_dbl USING @x_int_1, @x_dbl_1, @x_dbl_2, @x_dbl_3;
+SELECT @x_int_1, @x_dbl_1, @x_dbl_2, @x_dbl_3;
+@x_int_1 @x_dbl_1 @x_dbl_2 @x_dbl_3
+NULL 12.34 NULL 56.78
+
+EXECUTE stmt_dbl USING @x_int_1, @x_dbl_1, @x_dbl_2, @x_dbl_3;
+SELECT @x_int_1, @x_dbl_1, @x_dbl_2, @x_dbl_3;
+@x_int_1 @x_dbl_1 @x_dbl_2 @x_dbl_3
+NULL 12.34 NULL 56.78
+
+-- Testing ints...
+
+EXECUTE stmt_int USING @x_str_1, @x_int_1, @x_int_2, @x_int_3;
+SELECT @x_str_1, @x_int_1, @x_int_2, @x_int_3;
+@x_str_1 @x_int_1 @x_int_2 @x_int_3
+test_v1 1234 NULL 5678
+
+EXECUTE stmt_int USING @x_str_1, @x_int_1, @x_int_2, @x_int_3;
+SELECT @x_str_1, @x_int_1, @x_int_2, @x_int_3;
+@x_str_1 @x_int_1 @x_int_2 @x_int_3
+test_v1 1234 NULL 5678
+
+-- Testing decs...
+
+EXECUTE stmt_dec USING @x_int_1, @x_dec_1, @x_dec_2, @x_dec_3;
+SELECT @x_int_1, @x_dec_1, @x_dec_2, @x_dec_3;
+@x_int_1 @x_dec_1 @x_dec_2 @x_dec_3
+1234 12.34 NULL 56.78
+
+EXECUTE stmt_dec USING @x_int_1, @x_dec_1, @x_dec_2, @x_dec_3;
+SELECT @x_int_1, @x_dec_1, @x_dec_2, @x_dec_3;
+@x_int_1 @x_dec_1 @x_dec_2 @x_dec_3
+1234 12.34 NULL 56.78
+
+DEALLOCATE PREPARE stmt_str;
+DEALLOCATE PREPARE stmt_dbl;
+DEALLOCATE PREPARE stmt_int;
+DEALLOCATE PREPARE stmt_dec;
+
+DROP PROCEDURE p_string;
+DROP PROCEDURE p_double;
+DROP PROCEDURE p_int;
+DROP PROCEDURE p_decimal;
+
+DROP PROCEDURE IF EXISTS p1;
+DROP PROCEDURE IF EXISTS p2;
+
+CREATE PROCEDURE p1(OUT v1 CHAR(10))
+SET v1 = 'test1';
+
+CREATE PROCEDURE p2(OUT v2 CHAR(10))
+BEGIN
+SET @query = 'CALL p1(?)';
+PREPARE stmt1 FROM @query;
+EXECUTE stmt1 USING @u1;
+DEALLOCATE PREPARE stmt1;
+SET v2 = @u1;
+END|
+
+CALL p2(@a);
+SELECT @a;
+@a
+test1
+
+DROP PROCEDURE p1;
+DROP PROCEDURE p2;
+
+# End of WL#4435.
+
+End of 6.0 tests.
diff --git a/mysql-test/r/ps_1general.result b/mysql-test/r/ps_1general.result
index 1b2a0cc50b2..4f6e5238c3f 100644
--- a/mysql-test/r/ps_1general.result
+++ b/mysql-test/r/ps_1general.result
@@ -262,6 +262,7 @@ Database
information_schema
mtr
mysql
+performance_schema
test
prepare stmt4 from ' show tables from test like ''t2%'' ';
execute stmt4;
@@ -279,6 +280,9 @@ b char(10) YES NULL
SET @arg00=1;
execute stmt4 using @arg00;
Field Type Null Key Default Extra
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'a'
+Warning 1292 Truncated incorrect DOUBLE value: 'b'
prepare stmt4 from ' show columns from t2 from test like ''a%'' ';
execute stmt4;
Field Type Null Key Default Extra
@@ -409,8 +413,6 @@ prepare stmt1 from ' optimize table t1 ' ;
prepare stmt1 from ' analyze table t1 ' ;
prepare stmt1 from ' checksum table t1 ' ;
prepare stmt1 from ' repair table t1 ' ;
-prepare stmt1 from ' restore table t1 from ''<MYSQLTEST_VARDIR>/tmp/data.txt'' ' ;
-ERROR HY000: This command is not supported in the prepared statement protocol yet
prepare stmt1 from ' handler t1 open ';
ERROR HY000: This command is not supported in the prepared statement protocol yet
prepare stmt3 from ' commit ' ;
diff --git a/mysql-test/r/ps_2myisam.result b/mysql-test/r/ps_2myisam.result
index a91d13d11a1..4f9444c1542 100644
--- a/mysql-test/r/ps_2myisam.result
+++ b/mysql-test/r/ps_2myisam.result
@@ -59,8 +59,8 @@ def test t9 t9 c7 c7 4 12 1 Y 32768 31 63
def test t9 t9 c8 c8 5 22 1 Y 32768 31 63
def test t9 t9 c9 c9 5 22 1 Y 32768 31 63
def test t9 t9 c10 c10 5 22 1 Y 32768 31 63
-def test t9 t9 c11 c11 246 9 6 Y 0 4 63
-def test t9 t9 c12 c12 246 10 6 Y 0 4 63
+def test t9 t9 c11 c11 246 9 6 Y 32768 4 63
+def test t9 t9 c12 c12 246 10 6 Y 32768 4 63
def test t9 t9 c13 c13 10 10 10 Y 128 0 63
def test t9 t9 c14 c14 12 19 19 Y 128 0 63
def test t9 t9 c15 c15 7 19 19 N 9441 0 63
@@ -1807,8 +1807,8 @@ select * from t5 ;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def test t5 t5 const01 const01 3 1 1 N 32769 0 63
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
-def test t5 t5 const02 const02 246 4 3 N 1 1 63
-def test t5 t5 param02 param02 246 67 32 Y 0 30 63
+def test t5 t5 const02 const02 246 4 3 N 32769 1 63
+def test t5 t5 param02 param02 246 67 32 Y 32768 30 63
def test t5 t5 const03 const03 5 17 1 N 32769 31 63
def test t5 t5 param03 param03 5 23 1 Y 32768 31 63
def test t5 t5 const04 const04 253 3 3 N 1 0 8
@@ -1829,7 +1829,7 @@ def test t5 t5 const11 const11 3 4 4 Y 32768 0 63
def test t5 t5 param11 param11 8 20 4 Y 32768 0 63
def test t5 t5 const12 const12 254 0 0 Y 128 0 63
def test t5 t5 param12 param12 8 20 0 Y 32768 0 63
-def test t5 t5 param13 param13 246 67 0 Y 0 30 63
+def test t5 t5 param13 param13 246 67 0 Y 32768 30 63
def test t5 t5 param14 param14 252 4294967295 0 Y 16 0 8
def test t5 t5 param15 param15 252 4294967295 0 Y 144 0 63
const01 8
@@ -1927,8 +1927,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -1974,8 +1974,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2024,8 +2024,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2064,8 +2064,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2112,8 +2112,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2156,8 +2156,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2202,8 +2202,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2240,8 +2240,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2585,10 +2585,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 9.22337e+18
-c8 9.22337203685478e+18
-c9 9.22337203685478e+18
-c10 9.22337203685478e+18
+c7 9.22337e18
+c8 9.223372036854776e18
+c9 9.223372036854776e18
+c10 9.223372036854776e18
c12 9999.9999
execute my_delete ;
set @arg00= '9223372036854775807' ;
@@ -2608,10 +2608,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 9.22337e+18
-c8 9.22337203685478e+18
-c9 9.22337203685478e+18
-c10 9.22337203685478e+18
+c7 9.22337e18
+c8 9.223372036854776e18
+c9 9.223372036854776e18
+c10 9.223372036854776e18
c12 9999.9999
execute my_delete ;
set @arg00= -9223372036854775808 ;
@@ -2631,10 +2631,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -9.22337e+18
-c8 -9.22337203685478e+18
-c9 -9.22337203685478e+18
-c10 -9.22337203685478e+18
+c7 -9.22337e18
+c8 -9.223372036854776e18
+c9 -9.223372036854776e18
+c10 -9.223372036854776e18
c12 -9999.9999
execute my_delete ;
set @arg00= '-9223372036854775808' ;
@@ -2654,10 +2654,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -9.22337e+18
-c8 -9.22337203685478e+18
-c9 -9.22337203685478e+18
-c10 -9.22337203685478e+18
+c7 -9.22337e18
+c8 -9.223372036854776e18
+c9 -9.223372036854776e18
+c10 -9.223372036854776e18
c12 -9999.9999
execute my_delete ;
set @arg00= 1.11111111111111111111e+50 ;
@@ -2679,10 +2679,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 3.40282e+38
-c8 1.11111111111111e+50
-c9 1.11111111111111e+50
-c10 1.11111111111111e+50
+c7 3.40282e38
+c8 1.111111111111111e50
+c9 1.111111111111111e50
+c10 1.111111111111111e50
c12 9999.9999
execute my_delete ;
set @arg00= '1.11111111111111111111e+50' ;
@@ -2704,10 +2704,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 3.40282e+38
-c8 1.11111111111111e+50
-c9 1.11111111111111e+50
-c10 1.11111111111111e+50
+c7 3.40282e38
+c8 1.111111111111111e50
+c9 1.111111111111111e50
+c10 1.111111111111111e50
c12 9999.9999
execute my_delete ;
set @arg00= -1.11111111111111111111e+50 ;
@@ -2729,10 +2729,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -3.40282e+38
-c8 -1.11111111111111e+50
-c9 -1.11111111111111e+50
-c10 -1.11111111111111e+50
+c7 -3.40282e38
+c8 -1.111111111111111e50
+c9 -1.111111111111111e50
+c10 -1.111111111111111e50
c12 -9999.9999
execute my_delete ;
set @arg00= '-1.11111111111111111111e+50' ;
@@ -2754,10 +2754,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -3.40282e+38
-c8 -1.11111111111111e+50
-c9 -1.11111111111111e+50
-c10 -1.11111111111111e+50
+c7 -3.40282e38
+c8 -1.111111111111111e50
+c9 -1.111111111111111e50
+c10 -1.111111111111111e50
c12 -9999.9999
execute my_delete ;
test_sequence
@@ -2822,10 +2822,10 @@ c1 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30
51 5 51.0 51.0 51.0 51.0 51.0 51.0 51.0 51.0 51.0 51.0
52 5 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0
53 5 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0
-54 5 54 54 54.00 54.00 54.00 54.00 54.00 54.00 54.00 54.00
-55 5 55 55 55 55 55 55 55 55 55 55
-56 6 56 56 56.00 56.00 56.00 56.00 56.00 56.00 56.00 56.00
-57 6 57 57 57.00 57.00 57.00 57.00 57.00 57.00 57.00 57.00
+54 5 54 54 54 54 54 54 54 54 54 54
+55 6 55 55 55 55 55 55 55 55 55 55
+56 6 56 56 56 56 56 56 56 56 56 56
+57 6 57 57 57 57 57 57 57 57 57 57
60 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
61 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
62 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
@@ -3039,7 +3039,7 @@ c1 c13 c14 c15 c16 c17
42 0000-00-00 0000-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
43 0000-00-00 0000-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
50 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
-51 2010-00-00 2010-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
+51 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
52 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
53 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
60 NULL NULL 1991-01-01 01:01:01 NULL NULL
diff --git a/mysql-test/r/ps_3innodb.result b/mysql-test/r/ps_3innodb.result
index 50c94d6cc4e..772a7462342 100644
--- a/mysql-test/r/ps_3innodb.result
+++ b/mysql-test/r/ps_3innodb.result
@@ -59,8 +59,8 @@ def test t9 t9 c7 c7 4 12 1 Y 32768 31 63
def test t9 t9 c8 c8 5 22 1 Y 32768 31 63
def test t9 t9 c9 c9 5 22 1 Y 32768 31 63
def test t9 t9 c10 c10 5 22 1 Y 32768 31 63
-def test t9 t9 c11 c11 246 9 6 Y 0 4 63
-def test t9 t9 c12 c12 246 10 6 Y 0 4 63
+def test t9 t9 c11 c11 246 9 6 Y 32768 4 63
+def test t9 t9 c12 c12 246 10 6 Y 32768 4 63
def test t9 t9 c13 c13 10 10 10 Y 128 0 63
def test t9 t9 c14 c14 12 19 19 Y 128 0 63
def test t9 t9 c15 c15 7 19 19 N 9441 0 63
@@ -1790,8 +1790,8 @@ select * from t5 ;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def test t5 t5 const01 const01 3 1 1 N 32769 0 63
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
-def test t5 t5 const02 const02 246 4 3 N 1 1 63
-def test t5 t5 param02 param02 246 67 32 Y 0 30 63
+def test t5 t5 const02 const02 246 4 3 N 32769 1 63
+def test t5 t5 param02 param02 246 67 32 Y 32768 30 63
def test t5 t5 const03 const03 5 17 1 N 32769 31 63
def test t5 t5 param03 param03 5 23 1 Y 32768 31 63
def test t5 t5 const04 const04 253 3 3 N 1 0 8
@@ -1812,7 +1812,7 @@ def test t5 t5 const11 const11 3 4 4 Y 32768 0 63
def test t5 t5 param11 param11 8 20 4 Y 32768 0 63
def test t5 t5 const12 const12 254 0 0 Y 128 0 63
def test t5 t5 param12 param12 8 20 0 Y 32768 0 63
-def test t5 t5 param13 param13 246 67 0 Y 0 30 63
+def test t5 t5 param13 param13 246 67 0 Y 32768 30 63
def test t5 t5 param14 param14 252 4294967295 0 Y 16 0 8
def test t5 t5 param15 param15 252 4294967295 0 Y 144 0 63
const01 8
@@ -1910,8 +1910,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -1957,8 +1957,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2007,8 +2007,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2047,8 +2047,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2095,8 +2095,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2139,8 +2139,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2185,8 +2185,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2223,8 +2223,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2568,10 +2568,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 9.22337e+18
-c8 9.22337203685478e+18
-c9 9.22337203685478e+18
-c10 9.22337203685478e+18
+c7 9.22337e18
+c8 9.223372036854776e18
+c9 9.223372036854776e18
+c10 9.223372036854776e18
c12 9999.9999
execute my_delete ;
set @arg00= '9223372036854775807' ;
@@ -2591,10 +2591,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 9.22337e+18
-c8 9.22337203685478e+18
-c9 9.22337203685478e+18
-c10 9.22337203685478e+18
+c7 9.22337e18
+c8 9.223372036854776e18
+c9 9.223372036854776e18
+c10 9.223372036854776e18
c12 9999.9999
execute my_delete ;
set @arg00= -9223372036854775808 ;
@@ -2614,10 +2614,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -9.22337e+18
-c8 -9.22337203685478e+18
-c9 -9.22337203685478e+18
-c10 -9.22337203685478e+18
+c7 -9.22337e18
+c8 -9.223372036854776e18
+c9 -9.223372036854776e18
+c10 -9.223372036854776e18
c12 -9999.9999
execute my_delete ;
set @arg00= '-9223372036854775808' ;
@@ -2637,10 +2637,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -9.22337e+18
-c8 -9.22337203685478e+18
-c9 -9.22337203685478e+18
-c10 -9.22337203685478e+18
+c7 -9.22337e18
+c8 -9.223372036854776e18
+c9 -9.223372036854776e18
+c10 -9.223372036854776e18
c12 -9999.9999
execute my_delete ;
set @arg00= 1.11111111111111111111e+50 ;
@@ -2662,10 +2662,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 3.40282e+38
-c8 1.11111111111111e+50
-c9 1.11111111111111e+50
-c10 1.11111111111111e+50
+c7 3.40282e38
+c8 1.111111111111111e50
+c9 1.111111111111111e50
+c10 1.111111111111111e50
c12 9999.9999
execute my_delete ;
set @arg00= '1.11111111111111111111e+50' ;
@@ -2687,10 +2687,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 3.40282e+38
-c8 1.11111111111111e+50
-c9 1.11111111111111e+50
-c10 1.11111111111111e+50
+c7 3.40282e38
+c8 1.111111111111111e50
+c9 1.111111111111111e50
+c10 1.111111111111111e50
c12 9999.9999
execute my_delete ;
set @arg00= -1.11111111111111111111e+50 ;
@@ -2712,10 +2712,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -3.40282e+38
-c8 -1.11111111111111e+50
-c9 -1.11111111111111e+50
-c10 -1.11111111111111e+50
+c7 -3.40282e38
+c8 -1.111111111111111e50
+c9 -1.111111111111111e50
+c10 -1.111111111111111e50
c12 -9999.9999
execute my_delete ;
set @arg00= '-1.11111111111111111111e+50' ;
@@ -2737,10 +2737,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -3.40282e+38
-c8 -1.11111111111111e+50
-c9 -1.11111111111111e+50
-c10 -1.11111111111111e+50
+c7 -3.40282e38
+c8 -1.111111111111111e50
+c9 -1.111111111111111e50
+c10 -1.111111111111111e50
c12 -9999.9999
execute my_delete ;
test_sequence
@@ -2805,10 +2805,10 @@ c1 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30
51 5 51.0 51.0 51.0 51.0 51.0 51.0 51.0 51.0 51.0 51.0
52 5 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0
53 5 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0
-54 5 54 54 54.00 54.00 54.00 54.00 54.00 54.00 54.00 54.00
-55 5 55 55 55 55 55 55 55 55 55 55
-56 6 56 56 56.00 56.00 56.00 56.00 56.00 56.00 56.00 56.00
-57 6 57 57 57.00 57.00 57.00 57.00 57.00 57.00 57.00 57.00
+54 5 54 54 54 54 54 54 54 54 54 54
+55 6 55 55 55 55 55 55 55 55 55 55
+56 6 56 56 56 56 56 56 56 56 56 56
+57 6 57 57 57 57 57 57 57 57 57 57
60 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
61 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
62 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
@@ -3022,7 +3022,7 @@ c1 c13 c14 c15 c16 c17
42 0000-00-00 0000-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
43 0000-00-00 0000-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
50 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
-51 2010-00-00 2010-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
+51 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
52 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
53 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
60 NULL NULL 1991-01-01 01:01:01 NULL NULL
diff --git a/mysql-test/r/ps_4heap.result b/mysql-test/r/ps_4heap.result
index a85809d3800..84bf7a6fa00 100644
--- a/mysql-test/r/ps_4heap.result
+++ b/mysql-test/r/ps_4heap.result
@@ -60,8 +60,8 @@ def test t9 t9 c7 c7 4 12 1 Y 32768 31 63
def test t9 t9 c8 c8 5 22 1 Y 32768 31 63
def test t9 t9 c9 c9 5 22 1 Y 32768 31 63
def test t9 t9 c10 c10 5 22 1 Y 32768 31 63
-def test t9 t9 c11 c11 246 9 6 Y 0 4 63
-def test t9 t9 c12 c12 246 10 6 Y 0 4 63
+def test t9 t9 c11 c11 246 9 6 Y 32768 4 63
+def test t9 t9 c12 c12 246 10 6 Y 32768 4 63
def test t9 t9 c13 c13 10 10 10 Y 128 0 63
def test t9 t9 c14 c14 12 19 19 Y 128 0 63
def test t9 t9 c15 c15 7 19 19 N 9441 0 63
@@ -1791,8 +1791,8 @@ select * from t5 ;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def test t5 t5 const01 const01 3 1 1 N 32769 0 63
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
-def test t5 t5 const02 const02 246 4 3 N 1 1 63
-def test t5 t5 param02 param02 246 67 32 Y 0 30 63
+def test t5 t5 const02 const02 246 4 3 N 32769 1 63
+def test t5 t5 param02 param02 246 67 32 Y 32768 30 63
def test t5 t5 const03 const03 5 17 1 N 32769 31 63
def test t5 t5 param03 param03 5 23 1 Y 32768 31 63
def test t5 t5 const04 const04 253 3 3 N 1 0 8
@@ -1813,7 +1813,7 @@ def test t5 t5 const11 const11 3 4 4 Y 32768 0 63
def test t5 t5 param11 param11 8 20 4 Y 32768 0 63
def test t5 t5 const12 const12 254 0 0 Y 128 0 63
def test t5 t5 param12 param12 8 20 0 Y 32768 0 63
-def test t5 t5 param13 param13 246 67 0 Y 0 30 63
+def test t5 t5 param13 param13 246 67 0 Y 32768 30 63
def test t5 t5 param14 param14 252 4294967295 0 Y 16 0 8
def test t5 t5 param15 param15 252 4294967295 0 Y 144 0 63
const01 8
@@ -1911,8 +1911,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -1958,8 +1958,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2008,8 +2008,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2048,8 +2048,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2096,8 +2096,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2140,8 +2140,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2186,8 +2186,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2224,8 +2224,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2569,10 +2569,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 9.22337e+18
-c8 9.22337203685478e+18
-c9 9.22337203685478e+18
-c10 9.22337203685478e+18
+c7 9.22337e18
+c8 9.223372036854776e18
+c9 9.223372036854776e18
+c10 9.223372036854776e18
c12 9999.9999
execute my_delete ;
set @arg00= '9223372036854775807' ;
@@ -2592,10 +2592,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 9.22337e+18
-c8 9.22337203685478e+18
-c9 9.22337203685478e+18
-c10 9.22337203685478e+18
+c7 9.22337e18
+c8 9.223372036854776e18
+c9 9.223372036854776e18
+c10 9.223372036854776e18
c12 9999.9999
execute my_delete ;
set @arg00= -9223372036854775808 ;
@@ -2615,10 +2615,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -9.22337e+18
-c8 -9.22337203685478e+18
-c9 -9.22337203685478e+18
-c10 -9.22337203685478e+18
+c7 -9.22337e18
+c8 -9.223372036854776e18
+c9 -9.223372036854776e18
+c10 -9.223372036854776e18
c12 -9999.9999
execute my_delete ;
set @arg00= '-9223372036854775808' ;
@@ -2638,10 +2638,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -9.22337e+18
-c8 -9.22337203685478e+18
-c9 -9.22337203685478e+18
-c10 -9.22337203685478e+18
+c7 -9.22337e18
+c8 -9.223372036854776e18
+c9 -9.223372036854776e18
+c10 -9.223372036854776e18
c12 -9999.9999
execute my_delete ;
set @arg00= 1.11111111111111111111e+50 ;
@@ -2663,10 +2663,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 3.40282e+38
-c8 1.11111111111111e+50
-c9 1.11111111111111e+50
-c10 1.11111111111111e+50
+c7 3.40282e38
+c8 1.111111111111111e50
+c9 1.111111111111111e50
+c10 1.111111111111111e50
c12 9999.9999
execute my_delete ;
set @arg00= '1.11111111111111111111e+50' ;
@@ -2688,10 +2688,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 3.40282e+38
-c8 1.11111111111111e+50
-c9 1.11111111111111e+50
-c10 1.11111111111111e+50
+c7 3.40282e38
+c8 1.111111111111111e50
+c9 1.111111111111111e50
+c10 1.111111111111111e50
c12 9999.9999
execute my_delete ;
set @arg00= -1.11111111111111111111e+50 ;
@@ -2713,10 +2713,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -3.40282e+38
-c8 -1.11111111111111e+50
-c9 -1.11111111111111e+50
-c10 -1.11111111111111e+50
+c7 -3.40282e38
+c8 -1.111111111111111e50
+c9 -1.111111111111111e50
+c10 -1.111111111111111e50
c12 -9999.9999
execute my_delete ;
set @arg00= '-1.11111111111111111111e+50' ;
@@ -2738,10 +2738,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -3.40282e+38
-c8 -1.11111111111111e+50
-c9 -1.11111111111111e+50
-c10 -1.11111111111111e+50
+c7 -3.40282e38
+c8 -1.111111111111111e50
+c9 -1.111111111111111e50
+c10 -1.111111111111111e50
c12 -9999.9999
execute my_delete ;
test_sequence
@@ -2807,7 +2807,7 @@ c1 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30
52 5 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0
53 5 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0
54 5 54 54 54 54 54 54 54 54 54 54
-55 5 55 55 55 55 55 55 55 55 55 55
+55 6 55 55 55 55 55 55 55 55 55 55
56 6 56 56 56 56 56 56 56 56 56 56
57 6 57 57 57 57 57 57 57 57 57 57
60 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
@@ -3023,7 +3023,7 @@ c1 c13 c14 c15 c16 c17
42 0000-00-00 0000-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
43 0000-00-00 0000-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
50 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
-51 2010-00-00 2010-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
+51 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
52 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
53 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
60 NULL NULL 1991-01-01 01:01:01 NULL NULL
diff --git a/mysql-test/r/ps_5merge.result b/mysql-test/r/ps_5merge.result
index fd1b69c0ffd..61d2822fd5b 100644
--- a/mysql-test/r/ps_5merge.result
+++ b/mysql-test/r/ps_5merge.result
@@ -102,8 +102,8 @@ def test t9 t9 c7 c7 4 12 1 Y 32768 31 63
def test t9 t9 c8 c8 5 22 1 Y 32768 31 63
def test t9 t9 c9 c9 5 22 1 Y 32768 31 63
def test t9 t9 c10 c10 5 22 1 Y 32768 31 63
-def test t9 t9 c11 c11 246 9 6 Y 0 4 63
-def test t9 t9 c12 c12 246 10 6 Y 0 4 63
+def test t9 t9 c11 c11 246 9 6 Y 32768 4 63
+def test t9 t9 c12 c12 246 10 6 Y 32768 4 63
def test t9 t9 c13 c13 10 10 10 Y 128 0 63
def test t9 t9 c14 c14 12 19 19 Y 128 0 63
def test t9 t9 c15 c15 7 19 19 N 9441 0 63
@@ -1727,8 +1727,8 @@ select * from t5 ;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def test t5 t5 const01 const01 3 1 1 N 32769 0 63
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
-def test t5 t5 const02 const02 246 4 3 N 1 1 63
-def test t5 t5 param02 param02 246 67 32 Y 0 30 63
+def test t5 t5 const02 const02 246 4 3 N 32769 1 63
+def test t5 t5 param02 param02 246 67 32 Y 32768 30 63
def test t5 t5 const03 const03 5 17 1 N 32769 31 63
def test t5 t5 param03 param03 5 23 1 Y 32768 31 63
def test t5 t5 const04 const04 253 3 3 N 1 0 8
@@ -1749,7 +1749,7 @@ def test t5 t5 const11 const11 3 4 4 Y 32768 0 63
def test t5 t5 param11 param11 8 20 4 Y 32768 0 63
def test t5 t5 const12 const12 254 0 0 Y 128 0 63
def test t5 t5 param12 param12 8 20 0 Y 32768 0 63
-def test t5 t5 param13 param13 246 67 0 Y 0 30 63
+def test t5 t5 param13 param13 246 67 0 Y 32768 30 63
def test t5 t5 param14 param14 252 4294967295 0 Y 16 0 8
def test t5 t5 param15 param15 252 4294967295 0 Y 144 0 63
const01 8
@@ -1847,8 +1847,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -1894,8 +1894,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -1944,8 +1944,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -1984,8 +1984,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2032,8 +2032,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2076,8 +2076,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2122,8 +2122,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2160,8 +2160,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2505,10 +2505,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 9.22337e+18
-c8 9.22337203685478e+18
-c9 9.22337203685478e+18
-c10 9.22337203685478e+18
+c7 9.22337e18
+c8 9.223372036854776e18
+c9 9.223372036854776e18
+c10 9.223372036854776e18
c12 9999.9999
execute my_delete ;
set @arg00= '9223372036854775807' ;
@@ -2528,10 +2528,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 9.22337e+18
-c8 9.22337203685478e+18
-c9 9.22337203685478e+18
-c10 9.22337203685478e+18
+c7 9.22337e18
+c8 9.223372036854776e18
+c9 9.223372036854776e18
+c10 9.223372036854776e18
c12 9999.9999
execute my_delete ;
set @arg00= -9223372036854775808 ;
@@ -2551,10 +2551,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -9.22337e+18
-c8 -9.22337203685478e+18
-c9 -9.22337203685478e+18
-c10 -9.22337203685478e+18
+c7 -9.22337e18
+c8 -9.223372036854776e18
+c9 -9.223372036854776e18
+c10 -9.223372036854776e18
c12 -9999.9999
execute my_delete ;
set @arg00= '-9223372036854775808' ;
@@ -2574,10 +2574,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -9.22337e+18
-c8 -9.22337203685478e+18
-c9 -9.22337203685478e+18
-c10 -9.22337203685478e+18
+c7 -9.22337e18
+c8 -9.223372036854776e18
+c9 -9.223372036854776e18
+c10 -9.223372036854776e18
c12 -9999.9999
execute my_delete ;
set @arg00= 1.11111111111111111111e+50 ;
@@ -2599,10 +2599,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 3.40282e+38
-c8 1.11111111111111e+50
-c9 1.11111111111111e+50
-c10 1.11111111111111e+50
+c7 3.40282e38
+c8 1.111111111111111e50
+c9 1.111111111111111e50
+c10 1.111111111111111e50
c12 9999.9999
execute my_delete ;
set @arg00= '1.11111111111111111111e+50' ;
@@ -2624,10 +2624,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 3.40282e+38
-c8 1.11111111111111e+50
-c9 1.11111111111111e+50
-c10 1.11111111111111e+50
+c7 3.40282e38
+c8 1.111111111111111e50
+c9 1.111111111111111e50
+c10 1.111111111111111e50
c12 9999.9999
execute my_delete ;
set @arg00= -1.11111111111111111111e+50 ;
@@ -2649,10 +2649,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -3.40282e+38
-c8 -1.11111111111111e+50
-c9 -1.11111111111111e+50
-c10 -1.11111111111111e+50
+c7 -3.40282e38
+c8 -1.111111111111111e50
+c9 -1.111111111111111e50
+c10 -1.111111111111111e50
c12 -9999.9999
execute my_delete ;
set @arg00= '-1.11111111111111111111e+50' ;
@@ -2674,10 +2674,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -3.40282e+38
-c8 -1.11111111111111e+50
-c9 -1.11111111111111e+50
-c10 -1.11111111111111e+50
+c7 -3.40282e38
+c8 -1.111111111111111e50
+c9 -1.111111111111111e50
+c10 -1.111111111111111e50
c12 -9999.9999
execute my_delete ;
test_sequence
@@ -2742,10 +2742,10 @@ c1 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30
51 5 51.0 51.0 51.0 51.0 51.0 51.0 51.0 51.0 51.0 51.0
52 5 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0
53 5 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0
-54 5 54 54 54.00 54.00 54.00 54.00 54.00 54.00 54.00 54.00
-55 5 55 55 55 55 55 55 55 55 55 55
-56 6 56 56 56.00 56.00 56.00 56.00 56.00 56.00 56.00 56.00
-57 6 57 57 57.00 57.00 57.00 57.00 57.00 57.00 57.00 57.00
+54 5 54 54 54 54 54 54 54 54 54 54
+55 6 55 55 55 55 55 55 55 55 55 55
+56 6 56 56 56 56 56 56 56 56 56 56
+57 6 57 57 57 57 57 57 57 57 57 57
60 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
61 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
62 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
@@ -2959,7 +2959,7 @@ c1 c13 c14 c15 c16 c17
42 0000-00-00 0000-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
43 0000-00-00 0000-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
50 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
-51 2010-00-00 2010-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
+51 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
52 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
53 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
60 NULL NULL 1991-01-01 01:01:01 NULL NULL
@@ -3124,8 +3124,8 @@ def test t9 t9 c7 c7 4 12 1 Y 32768 31 63
def test t9 t9 c8 c8 5 22 1 Y 32768 31 63
def test t9 t9 c9 c9 5 22 1 Y 32768 31 63
def test t9 t9 c10 c10 5 22 1 Y 32768 31 63
-def test t9 t9 c11 c11 246 9 6 Y 0 4 63
-def test t9 t9 c12 c12 246 10 6 Y 0 4 63
+def test t9 t9 c11 c11 246 9 6 Y 32768 4 63
+def test t9 t9 c12 c12 246 10 6 Y 32768 4 63
def test t9 t9 c13 c13 10 10 10 Y 128 0 63
def test t9 t9 c14 c14 12 19 19 Y 128 0 63
def test t9 t9 c15 c15 7 19 19 N 9441 0 63
@@ -4749,8 +4749,8 @@ select * from t5 ;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def test t5 t5 const01 const01 3 1 1 N 32769 0 63
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
-def test t5 t5 const02 const02 246 4 3 N 1 1 63
-def test t5 t5 param02 param02 246 67 32 Y 0 30 63
+def test t5 t5 const02 const02 246 4 3 N 32769 1 63
+def test t5 t5 param02 param02 246 67 32 Y 32768 30 63
def test t5 t5 const03 const03 5 17 1 N 32769 31 63
def test t5 t5 param03 param03 5 23 1 Y 32768 31 63
def test t5 t5 const04 const04 253 3 3 N 1 0 8
@@ -4771,7 +4771,7 @@ def test t5 t5 const11 const11 3 4 4 Y 32768 0 63
def test t5 t5 param11 param11 8 20 4 Y 32768 0 63
def test t5 t5 const12 const12 254 0 0 Y 128 0 63
def test t5 t5 param12 param12 8 20 0 Y 32768 0 63
-def test t5 t5 param13 param13 246 67 0 Y 0 30 63
+def test t5 t5 param13 param13 246 67 0 Y 32768 30 63
def test t5 t5 param14 param14 252 4294967295 0 Y 16 0 8
def test t5 t5 param15 param15 252 4294967295 0 Y 144 0 63
const01 8
@@ -4869,8 +4869,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -4916,8 +4916,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -4966,8 +4966,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -5006,8 +5006,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -5054,8 +5054,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -5098,8 +5098,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -5144,8 +5144,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -5182,8 +5182,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -5527,10 +5527,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 9.22337e+18
-c8 9.22337203685478e+18
-c9 9.22337203685478e+18
-c10 9.22337203685478e+18
+c7 9.22337e18
+c8 9.223372036854776e18
+c9 9.223372036854776e18
+c10 9.223372036854776e18
c12 9999.9999
execute my_delete ;
set @arg00= '9223372036854775807' ;
@@ -5550,10 +5550,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 9.22337e+18
-c8 9.22337203685478e+18
-c9 9.22337203685478e+18
-c10 9.22337203685478e+18
+c7 9.22337e18
+c8 9.223372036854776e18
+c9 9.223372036854776e18
+c10 9.223372036854776e18
c12 9999.9999
execute my_delete ;
set @arg00= -9223372036854775808 ;
@@ -5573,10 +5573,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -9.22337e+18
-c8 -9.22337203685478e+18
-c9 -9.22337203685478e+18
-c10 -9.22337203685478e+18
+c7 -9.22337e18
+c8 -9.223372036854776e18
+c9 -9.223372036854776e18
+c10 -9.223372036854776e18
c12 -9999.9999
execute my_delete ;
set @arg00= '-9223372036854775808' ;
@@ -5596,10 +5596,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -9.22337e+18
-c8 -9.22337203685478e+18
-c9 -9.22337203685478e+18
-c10 -9.22337203685478e+18
+c7 -9.22337e18
+c8 -9.223372036854776e18
+c9 -9.223372036854776e18
+c10 -9.223372036854776e18
c12 -9999.9999
execute my_delete ;
set @arg00= 1.11111111111111111111e+50 ;
@@ -5621,10 +5621,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 3.40282e+38
-c8 1.11111111111111e+50
-c9 1.11111111111111e+50
-c10 1.11111111111111e+50
+c7 3.40282e38
+c8 1.111111111111111e50
+c9 1.111111111111111e50
+c10 1.111111111111111e50
c12 9999.9999
execute my_delete ;
set @arg00= '1.11111111111111111111e+50' ;
@@ -5646,10 +5646,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 3.40282e+38
-c8 1.11111111111111e+50
-c9 1.11111111111111e+50
-c10 1.11111111111111e+50
+c7 3.40282e38
+c8 1.111111111111111e50
+c9 1.111111111111111e50
+c10 1.111111111111111e50
c12 9999.9999
execute my_delete ;
set @arg00= -1.11111111111111111111e+50 ;
@@ -5671,10 +5671,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -3.40282e+38
-c8 -1.11111111111111e+50
-c9 -1.11111111111111e+50
-c10 -1.11111111111111e+50
+c7 -3.40282e38
+c8 -1.111111111111111e50
+c9 -1.111111111111111e50
+c10 -1.111111111111111e50
c12 -9999.9999
execute my_delete ;
set @arg00= '-1.11111111111111111111e+50' ;
@@ -5696,10 +5696,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -3.40282e+38
-c8 -1.11111111111111e+50
-c9 -1.11111111111111e+50
-c10 -1.11111111111111e+50
+c7 -3.40282e38
+c8 -1.111111111111111e50
+c9 -1.111111111111111e50
+c10 -1.111111111111111e50
c12 -9999.9999
execute my_delete ;
test_sequence
@@ -5764,10 +5764,10 @@ c1 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30
51 5 51.0 51.0 51.0 51.0 51.0 51.0 51.0 51.0 51.0 51.0
52 5 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0
53 5 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0
-54 5 54 54 54.00 54.00 54.00 54.00 54.00 54.00 54.00 54.00
-55 5 55 55 55 55 55 55 55 55 55 55
-56 6 56 56 56.00 56.00 56.00 56.00 56.00 56.00 56.00 56.00
-57 6 57 57 57.00 57.00 57.00 57.00 57.00 57.00 57.00 57.00
+54 5 54 54 54 54 54 54 54 54 54 54
+55 6 55 55 55 55 55 55 55 55 55 55
+56 6 56 56 56 56 56 56 56 56 56 56
+57 6 57 57 57 57 57 57 57 57 57 57
60 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
61 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
62 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
@@ -5981,7 +5981,7 @@ c1 c13 c14 c15 c16 c17
42 0000-00-00 0000-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
43 0000-00-00 0000-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
50 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
-51 2010-00-00 2010-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
+51 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
52 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
53 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
60 NULL NULL 1991-01-01 01:01:01 NULL NULL
diff --git a/mysql-test/r/query_cache.result b/mysql-test/r/query_cache.result
index 2817bec2198..eab0c51f974 100644
--- a/mysql-test/r/query_cache.result
+++ b/mysql-test/r/query_cache.result
@@ -176,21 +176,6 @@ a
1
2
3
-select * from t1 union select sql_cache * from t1;
-a
-1
-2
-3
-select * from t1 where a IN (select sql_cache a from t1);
-a
-1
-2
-3
-select * from t1 where a IN (select a from t1 union select sql_cache a from t1);
-a
-1
-2
-3
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 4
@@ -207,41 +192,6 @@ a
1
2
3
-select * from t1 union select sql_no_cache * from t1;
-a
-1
-2
-3
-select * from t1 where a IN (select sql_no_cache a from t1);
-a
-1
-2
-3
-select * from t1 where a IN (select a from t1 union select sql_no_cache a from t1);
-a
-1
-2
-3
-select sql_cache sql_no_cache * from t1;
-a
-1
-2
-3
-select sql_cache * from t1 union select sql_no_cache * from t1;
-a
-1
-2
-3
-select sql_cache * from t1 where a IN (select sql_no_cache a from t1);
-a
-1
-2
-3
-select sql_cache * from t1 where a IN (select a from t1 union select sql_no_cache a from t1);
-a
-1
-2
-3
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
@@ -342,19 +292,18 @@ create table mysqltest.t1 (i int not null auto_increment, a int, primary key (i)
insert into mysqltest.t1 (a) values (1);
select * from mysqltest.t1 where i is null;
i a
-1 1
create table t1(a int);
select * from t1;
a
show status like "Qcache_queries_in_cache";
Variable_name Value
-Qcache_queries_in_cache 1
+Qcache_queries_in_cache 2
select * from mysqltest.t1;
i a
1 1
show status like "Qcache_queries_in_cache";
Variable_name Value
-Qcache_queries_in_cache 2
+Qcache_queries_in_cache 3
drop database mysqltest;
show status like "Qcache_queries_in_cache";
Variable_name Value
@@ -559,6 +508,8 @@ AAA
drop table t1;
create table t1 (a int);
set GLOBAL query_cache_size=1000;
+Warnings:
+Warning 1292 Truncated incorrect query_cache_size value: '1000'
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 0
@@ -889,7 +840,7 @@ select group_concat(a) FROM t1 group by b;
group_concat(a)
1234567890
Warnings:
-Warning 1260 1 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 1 was cut by GROUP_CONCAT()
set group_concat_max_len=1024;
select group_concat(a) FROM t1 group by b;
group_concat(a)
@@ -992,19 +943,19 @@ COUNT(*)
0
Warnings:
Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 1
-Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 0
+Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 1
SELECT COUNT(*) FROM t1 WHERE date BETWEEN '20050326' AND '20050328 invalid';
COUNT(*)
0
Warnings:
Warning 1292 Incorrect datetime value: '20050328 invalid' for column 'date' at row 1
-Warning 1292 Incorrect datetime value: '20050328 invalid' for column 'date' at row 0
+Warning 1292 Incorrect datetime value: '20050328 invalid' for column 'date' at row 1
SELECT COUNT(*) FROM t1 WHERE date BETWEEN '20050326' AND '20050327 invalid';
COUNT(*)
0
Warnings:
Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 1
-Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 0
+Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 1
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
@@ -1393,9 +1344,9 @@ set global query_cache_size=0;
create table t1 (a int);
insert into t1 values (1),(2),(3);
set GLOBAL query_cache_type=1;
-set GLOBAL query_cache_limit=10000;
+set GLOBAL query_cache_limit=10240;
set GLOBAL query_cache_min_res_unit=0;
-set GLOBAL query_cache_size= 100000;
+set GLOBAL query_cache_size= 102400;
reset query cache;
set LOCAL default_week_format = 0;
select week('2007-01-04');
@@ -1485,13 +1436,7 @@ set GLOBAL query_cache_type=default;
set GLOBAL query_cache_limit=default;
set GLOBAL query_cache_min_res_unit=default;
set GLOBAL query_cache_size= default;
-set GLOBAL query_cache_size=1000000;
-create table t1 (a char);
-insert into t1 values ('c');
-a
-drop table t1;
-set GLOBAL query_cache_size= default;
-set GLOBAL query_cache_size=1000000;
+set GLOBAL query_cache_size=1024000;
create table t1 (a char);
insert into t1 values ('c');
a
@@ -1619,7 +1564,7 @@ SET GLOBAL query_cache_size= default;
#
# Bug#25132 disabled query cache: Qcache_free_blocks = 1
#
-set global query_cache_size=100000;
+set global query_cache_size=102400;
set global query_cache_size=0;
set global query_cache_type=0;
show status like 'Qcache_free_blocks';
@@ -1638,7 +1583,7 @@ CREATE TABLE t1 (c1 INT NOT NULL) ENGINE=MyISAM;
INSERT INTO t1 (c1) VALUES (1), (2);
SHOW GLOBAL VARIABLES LIKE 'concurrent_insert';
Variable_name Value
-concurrent_insert 0
+concurrent_insert NEVER
SHOW STATUS LIKE 'Qcache_hits';
Variable_name Value
Qcache_hits 0
@@ -1724,4 +1669,55 @@ SELECT 1 FROM t1 GROUP BY
1
DROP TABLE t1;
SET GLOBAL query_cache_size= default;
+CREATE TABLE t1( a INT );
+SET @v = ( SELECT SQL_CACHE 1 );
+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 '1 )' at line 1
+SET @v = ( SELECT SQL_NO_CACHE 1 );
+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 '1 )' at line 1
+SELECT a FROM t1 WHERE a IN ( SELECT SQL_CACHE a FROM t1 );
+ERROR 42S22: Unknown column 'SQL_CACHE' in 'field list'
+SELECT a FROM t1 WHERE a IN ( SELECT SQL_NO_CACHE a FROM t1 );
+ERROR 42S22: Unknown column 'SQL_NO_CACHE' in 'field list'
+SELECT ( SELECT SQL_CACHE a FROM t1 );
+ERROR 42S22: Unknown column 'SQL_CACHE' in 'field list'
+SELECT ( SELECT SQL_NO_CACHE a FROM t1 );
+ERROR 42S22: Unknown column 'SQL_NO_CACHE' in 'field list'
+SELECT SQL_CACHE * FROM t1;
+a
+SELECT SQL_NO_CACHE * FROM t1;
+a
+SELECT * FROM t1 UNION SELECT SQL_CACHE * FROM t1;
+ERROR 42000: Incorrect usage/placement of 'SQL_CACHE'
+SELECT * FROM t1 UNION SELECT SQL_NO_CACHE * FROM t1;
+ERROR 42000: Incorrect usage/placement of 'SQL_NO_CACHE'
+SELECT * FROM t1 WHERE a IN (SELECT SQL_CACHE a FROM t1);
+ERROR 42S22: Unknown column 'SQL_CACHE' in 'field list'
+SELECT * FROM t1 WHERE a IN (SELECT a FROM t1 UNION SELECT SQL_CACHE a FROM t1);
+ERROR 42S22: Unknown column 'SQL_CACHE' in 'field list'
+SELECT * FROM t1 UNION SELECT SQL_NO_CACHE * FROM t1;
+ERROR 42000: Incorrect usage/placement of 'SQL_NO_CACHE'
+SELECT * FROM t1 WHERE a IN (SELECT SQL_NO_CACHE a FROM t1);
+ERROR 42S22: Unknown column 'SQL_NO_CACHE' in 'field list'
+SELECT * FROM t1 WHERE a IN
+(SELECT a FROM t1 UNION SELECT SQL_NO_CACHE a FROM t1);
+ERROR 42S22: Unknown column 'SQL_NO_CACHE' in 'field list'
+SELECT SQL_CACHE SQL_NO_CACHE * FROM t1;
+ERROR HY000: Incorrect usage of SQL_CACHE and SQL_NO_CACHE
+SELECT SQL_NO_CACHE SQL_CACHE * FROM t1;
+ERROR HY000: Incorrect usage of SQL_NO_CACHE and SQL_CACHE
+SELECT SQL_CACHE * FROM t1 UNION SELECT SQL_CACHE * FROM t1;
+ERROR 42000: Incorrect usage/placement of 'SQL_CACHE'
+SELECT SQL_CACHE * FROM t1 UNION SELECT SQL_NO_CACHE * FROM t1;
+ERROR 42000: Incorrect usage/placement of 'SQL_NO_CACHE'
+SELECT SQL_NO_CACHE * FROM t1 UNION SELECT SQL_CACHE * FROM t1;
+ERROR 42000: Incorrect usage/placement of 'SQL_CACHE'
+SELECT SQL_NO_CACHE * FROM t1 UNION SELECT SQL_NO_CACHE * FROM t1;
+ERROR 42000: Incorrect usage/placement of 'SQL_NO_CACHE'
+SELECT SQL_CACHE * FROM t1 WHERE a IN
+(SELECT SQL_NO_CACHE a FROM t1);
+ERROR 42S22: Unknown column 'SQL_NO_CACHE' in 'field list'
+SELECT SQL_CACHE * FROM t1 WHERE a IN
+(SELECT a FROM t1 UNION SELECT SQL_NO_CACHE a FROM t1);
+ERROR 42S22: Unknown column 'SQL_NO_CACHE' in 'field list'
+DROP TABLE t1;
End of 5.1 tests
diff --git a/mysql-test/r/query_cache_disabled.result b/mysql-test/r/query_cache_disabled.result
new file mode 100644
index 00000000000..f2f58580ca2
--- /dev/null
+++ b/mysql-test/r/query_cache_disabled.result
@@ -0,0 +1,14 @@
+SHOW GLOBAL VARIABLES LIKE 'query_cache_type';
+Variable_name Value
+query_cache_type OFF
+SET GLOBAL query_cache_type=ON;
+ERROR HY000: Query cache is disabled; restart the server with query_cache_type=1 to enable it
+SET GLOBAL query_cache_type=DEMAND;
+ERROR HY000: Query cache is disabled; restart the server with query_cache_type=1 to enable it
+SET GLOBAL query_cache_type=OFF;
+ERROR HY000: Query cache is disabled; restart the server with query_cache_type=1 to enable it
+SET GLOBAL query_cache_size=1024*1024;
+SHOW GLOBAL VARIABLES LIKE 'query_cache_size';
+Variable_name Value
+query_cache_size 1048576
+SET GLOBAL query_cache_size=0;
diff --git a/mysql-test/r/query_cache_notembedded.result b/mysql-test/r/query_cache_notembedded.result
index d9bf7a6d814..25894634bf3 100644
--- a/mysql-test/r/query_cache_notembedded.result
+++ b/mysql-test/r/query_cache_notembedded.result
@@ -93,6 +93,7 @@ a
3
SELECT * FROM t1;
a
+UNLOCK TABLES;
drop table t1;
flush query cache;
reset query cache;
diff --git a/mysql-test/r/query_cache_ps_no_prot.result b/mysql-test/r/query_cache_ps_no_prot.result
index 0efb2540c64..02e660450d1 100644
--- a/mysql-test/r/query_cache_ps_no_prot.result
+++ b/mysql-test/r/query_cache_ps_no_prot.result
@@ -1,7 +1,7 @@
---- establish connection con1 (root) ----
---- switch to connection default ----
set @initial_query_cache_size = @@global.query_cache_size;
-set @@global.query_cache_size=100000;
+set @@global.query_cache_size=102400;
flush status;
drop table if exists t1;
create table t1(c1 int);
@@ -211,7 +211,7 @@ show status like 'Qcache_hits';
Variable_name Value
Qcache_hits 16
---- switch to connection default ----
-set global query_cache_size=100000;
+set global query_cache_size=102400;
execute stmt1;
c1
10
@@ -297,7 +297,7 @@ prepare stmt1 from "select * from t1 where c1=10";
---- switch to connection con1 ----
prepare stmt3 from "select * from t1 where c1=10";
---- switch to connection default ----
-set global query_cache_size=100000;
+set global query_cache_size=102400;
show status like 'Qcache_hits';
Variable_name Value
Qcache_hits 21
@@ -344,7 +344,7 @@ Qcache_hits 21
---- switch to connection default ----
set global query_cache_size=0;
prepare stmt1 from "select * from t1 where c1=?";
-set global query_cache_size=100000;
+set global query_cache_size=102400;
show status like 'Qcache_hits';
Variable_name Value
Qcache_hits 21
@@ -529,5 +529,46 @@ DROP DATABASE mysqltest1;
use test;
########################################################################
+#
+# Bug#27430 Crash in subquery code when in PS and table DDL changed
+# after PREPARE
+# Check the effect of automatic reprepare on query cache
+#
+########################################################################
+drop table if exists t1;
+create table t1 (a varchar(255));
+insert into t1 (a) values ("Pack my box with five dozen liquor jugs.");
+flush status;
+prepare stmt from "select a from t1";
+execute stmt;
+a
+Pack my box with five dozen liquor jugs.
+set @@global.query_cache_size=0;
+alter table t1 add column b int;
+execute stmt;
+a
+Pack my box with five dozen liquor jugs.
+set @@global.query_cache_size=102400;
+execute stmt;
+a
+Pack my box with five dozen liquor jugs.
+execute stmt;
+a
+Pack my box with five dozen liquor jugs.
+#
+# Sic: ALTER TABLE caused an automatic reprepare
+# of the prepared statement. Since the query cache was disabled
+# at the time of reprepare, the new prepared statement doesn't
+# work with it.
+#
+show status like 'Qcache_hits';
+Variable_name Value
+Qcache_hits 0
+show status like 'Qcache_queries_in_cache';
+Variable_name Value
+Qcache_queries_in_cache 0
+# Cleanup
+deallocate prepare stmt;
+drop table t1;
set @@global.query_cache_size=@initial_query_cache_size;
flush status;
diff --git a/mysql-test/r/query_cache_ps_ps_prot.result b/mysql-test/r/query_cache_ps_ps_prot.result
index dc0c4a0193a..2115ecc62ff 100644
--- a/mysql-test/r/query_cache_ps_ps_prot.result
+++ b/mysql-test/r/query_cache_ps_ps_prot.result
@@ -1,7 +1,7 @@
---- establish connection con1 (root) ----
---- switch to connection default ----
set @initial_query_cache_size = @@global.query_cache_size;
-set @@global.query_cache_size=100000;
+set @@global.query_cache_size=102400;
flush status;
drop table if exists t1;
create table t1(c1 int);
@@ -211,7 +211,7 @@ show status like 'Qcache_hits';
Variable_name Value
Qcache_hits 14
---- switch to connection default ----
-set global query_cache_size=100000;
+set global query_cache_size=102400;
execute stmt1;
c1
10
@@ -297,7 +297,7 @@ prepare stmt1 from "select * from t1 where c1=10";
---- switch to connection con1 ----
prepare stmt3 from "select * from t1 where c1=10";
---- switch to connection default ----
-set global query_cache_size=100000;
+set global query_cache_size=102400;
show status like 'Qcache_hits';
Variable_name Value
Qcache_hits 19
@@ -344,7 +344,7 @@ Qcache_hits 19
---- switch to connection default ----
set global query_cache_size=0;
prepare stmt1 from "select * from t1 where c1=?";
-set global query_cache_size=100000;
+set global query_cache_size=102400;
show status like 'Qcache_hits';
Variable_name Value
Qcache_hits 19
@@ -529,5 +529,46 @@ DROP DATABASE mysqltest1;
use test;
########################################################################
+#
+# Bug#27430 Crash in subquery code when in PS and table DDL changed
+# after PREPARE
+# Check the effect of automatic reprepare on query cache
+#
+########################################################################
+drop table if exists t1;
+create table t1 (a varchar(255));
+insert into t1 (a) values ("Pack my box with five dozen liquor jugs.");
+flush status;
+prepare stmt from "select a from t1";
+execute stmt;
+a
+Pack my box with five dozen liquor jugs.
+set @@global.query_cache_size=0;
+alter table t1 add column b int;
+execute stmt;
+a
+Pack my box with five dozen liquor jugs.
+set @@global.query_cache_size=102400;
+execute stmt;
+a
+Pack my box with five dozen liquor jugs.
+execute stmt;
+a
+Pack my box with five dozen liquor jugs.
+#
+# Sic: ALTER TABLE caused an automatic reprepare
+# of the prepared statement. Since the query cache was disabled
+# at the time of reprepare, the new prepared statement doesn't
+# work with it.
+#
+show status like 'Qcache_hits';
+Variable_name Value
+Qcache_hits 0
+show status like 'Qcache_queries_in_cache';
+Variable_name Value
+Qcache_queries_in_cache 0
+# Cleanup
+deallocate prepare stmt;
+drop table t1;
set @@global.query_cache_size=@initial_query_cache_size;
flush status;
diff --git a/mysql-test/r/range.result b/mysql-test/r/range.result
index 64e00521cd2..aa04bfc25ea 100644
--- a/mysql-test/r/range.result
+++ b/mysql-test/r/range.result
@@ -1587,8 +1587,8 @@ str_to_date('2007-20-00', '%Y-%m-%d') <= ''
NULL
Warnings:
Warning 1292 Truncated incorrect date value: ''
-Error 1411 Incorrect datetime value: '2007-20-00' for function str_to_date
-Error 1411 Incorrect datetime value: '2007-20-00' for function str_to_date
+Warning 1411 Incorrect datetime value: '2007-20-00' for function str_to_date
+Warning 1411 Incorrect datetime value: '2007-20-00' for function str_to_date
SELECT str_to_date('2007-10-00', '%Y-%m-%d') BETWEEN '' AND '2007/10/20';
str_to_date('2007-10-00', '%Y-%m-%d') BETWEEN '' AND '2007/10/20'
1
@@ -1598,7 +1598,7 @@ SELECT str_to_date('2007-20-00', '%Y-%m-%d') BETWEEN '2007/10/20' AND '';
str_to_date('2007-20-00', '%Y-%m-%d') BETWEEN '2007/10/20' AND ''
NULL
Warnings:
-Error 1411 Incorrect datetime value: '2007-20-00' for function str_to_date
+Warning 1411 Incorrect datetime value: '2007-20-00' for function str_to_date
SELECT str_to_date('', '%Y-%m-%d');
str_to_date('', '%Y-%m-%d')
0000-00-00
diff --git a/mysql-test/r/rpl_mysqldump_slave.result b/mysql-test/r/rpl_mysqldump_slave.result
new file mode 100644
index 00000000000..158a43a658c
--- /dev/null
+++ b/mysql-test/r/rpl_mysqldump_slave.result
@@ -0,0 +1,17 @@
+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;
+#
+# New --dump-slave, --apply-slave-statements functionality
+#
+use test;
+CHANGE MASTER TO MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=107;
+STOP SLAVE;
+CHANGE MASTER TO MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=107;
+START SLAVE;
+STOP SLAVE;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT='MASTER_MYPORT', MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=107;
+START SLAVE;
diff --git a/mysql-test/r/schema.result b/mysql-test/r/schema.result
index 564fb3626df..402d3e1d987 100644
--- a/mysql-test/r/schema.result
+++ b/mysql-test/r/schema.result
@@ -9,5 +9,6 @@ information_schema
foo
mtr
mysql
+performance_schema
test
drop schema foo;
diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result
index dce927a5c8d..41dd44fc4d0 100644
--- a/mysql-test/r/select.result
+++ b/mysql-test/r/select.result
@@ -2784,26 +2784,26 @@ 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(key1) from t1 where key1 <= 0.6158;
max(key1)
-0.615800023078918
+0.6158000230789185
select max(key2) from t2 where key2 <= 1.6158;
max(key2)
-1.61580002307892
+1.6158000230789185
select min(key1) from t1 where key1 >= 0.3762;
min(key1)
-0.376199990510941
+0.37619999051094055
select min(key2) from t2 where key2 >= 1.3762;
min(key2)
-1.37619996070862
+1.3761999607086182
select max(key1), min(key2) from t1, t2
where key1 <= 0.6158 and key2 >= 1.3762;
max(key1) min(key2)
-0.615800023078918 1.37619996070862
+0.6158000230789185 1.3761999607086182
select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
max(key1)
-0.615800023078918
+0.6158000230789185
select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
min(key1)
-0.376199990510941
+0.37619999051094055
DROP TABLE t1,t2;
CREATE TABLE t1 (i BIGINT UNSIGNED NOT NULL);
INSERT INTO t1 VALUES (10);
@@ -4423,9 +4423,14 @@ CREATE TABLE t1(a INT);
INSERT INTO t1 VALUES (2),(3);
# Should not crash
SELECT 1 FROM t1 WHERE a <> 1 AND NOT
-ROW(a,a) <=> ROW((SELECT 1 FROM t1 WHERE 1=2),(SELECT 1 FROM t1))
+ROW(1,a) <=> ROW(1,(SELECT 1 FROM t1))
INTO @var0;
ERROR 21000: Subquery returns more than 1 row
+SELECT 1 FROM t1 WHERE a <> 1 AND NOT
+ROW(a,a) <=> ROW((SELECT 1 FROM t1 WHERE 1=2),(SELECT 1 FROM t1));
+1
+1
+1
DROP TABLE t1;
#
# Bug #48458: simple query tries to allocate enormous amount of
@@ -4454,7 +4459,7 @@ EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01' AND a='2001-01-01 00:00:0
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
Warnings:
-Note 1003 select '2001-01-01 00:00:00' AS `a` from `test`.`t1` where 1
+Note 1003 select '2001-01-01 00:00:00' AS `a` from dual where 1
DROP TABLE t1;
CREATE TABLE t1(a DATE NOT NULL);
INSERT INTO t1 VALUES('2001-01-01');
@@ -4465,7 +4470,7 @@ EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01' AND a='2001-01-01 00:00:0
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
Warnings:
-Note 1003 select '2001-01-01' AS `a` from `test`.`t1` where 1
+Note 1003 select '2001-01-01' AS `a` from dual where 1
DROP TABLE t1;
CREATE TABLE t1(a TIMESTAMP NOT NULL);
INSERT INTO t1 VALUES('2001-01-01');
@@ -4476,7 +4481,7 @@ EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01' AND a='2001-01-01 00:00:0
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
Warnings:
-Note 1003 select '2001-01-01 00:00:00' AS `a` from `test`.`t1` where 1
+Note 1003 select '2001-01-01 00:00:00' AS `a` from dual where 1
DROP TABLE t1;
CREATE TABLE t1(a DATETIME NOT NULL, b DATE NOT NULL);
INSERT INTO t1 VALUES('2001-01-01', '2001-01-01');
@@ -4487,7 +4492,7 @@ EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01' AND a=b AND b='2001-01-01
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
Warnings:
-Note 1003 select '2001-01-01 00:00:00' AS `a`,'2001-01-01' AS `b` from `test`.`t1` where 1
+Note 1003 select '2001-01-01 00:00:00' AS `a`,'2001-01-01' AS `b` from dual where 1
DROP TABLE t1;
CREATE TABLE t1(a DATETIME NOT NULL, b VARCHAR(20) NOT NULL);
INSERT INTO t1 VALUES('2001-01-01', '2001-01-01');
@@ -4497,7 +4502,7 @@ EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01' AND a=b AND b='2001-01-01
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
Warnings:
-Note 1003 select '2001-01-01 00:00:00' AS `a`,'2001-01-01' AS `b` from `test`.`t1` where 0
+Note 1003 select '2001-01-01 00:00:00' AS `a`,'2001-01-01' AS `b` from dual where 0
SELECT * FROM t1 WHERE a='2001-01-01 00:00:00' AND a=b AND b='2001-01-01';
a b
2001-01-01 00:00:00 2001-01-01
@@ -4505,7 +4510,7 @@ EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01 00:00:00' AND a=b AND b='2
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
Warnings:
-Note 1003 select '2001-01-01 00:00:00' AS `a`,'2001-01-01' AS `b` from `test`.`t1` where 1
+Note 1003 select '2001-01-01 00:00:00' AS `a`,'2001-01-01' AS `b` from dual where 1
DROP TABLE t1;
CREATE TABLE t1(a DATETIME NOT NULL, b DATE NOT NULL);
INSERT INTO t1 VALUES('2001-01-01', '2001-01-01');
@@ -4524,7 +4529,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE y system NULL NULL NULL NULL 1 100.00
1 SIMPLE z system NULL NULL NULL NULL 1 100.00
Warnings:
-Note 1003 select '2001-01-01 00:00:00' AS `a`,'2001-01-01 00:00:00' AS `a`,'2001-01-01 00:00:00' AS `a` from `test`.`t1` `x` join `test`.`t1` `y` join `test`.`t1` `z` where 1
+Note 1003 select '2001-01-01 00:00:00' AS `a`,'2001-01-01 00:00:00' AS `a`,'2001-01-01 00:00:00' AS `a` from dual where 1
DROP TABLE t1;
End of 5.0 tests
create table t1(a INT, KEY (a));
@@ -4575,7 +4580,7 @@ EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND a=a) OR b > 2;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
Warnings:
-Note 1003 select '1' AS `a`,'1' AS `b` from `test`.`t1` where 1
+Note 1003 select '1' AS `a`,'1' AS `b` from dual where 1
SELECT * FROM t1 WHERE (a=a AND a=a) OR b > 2;
a b
1 1
@@ -4676,6 +4681,72 @@ field2
15:13:38
drop table A,AA,B,BB;
#end of test for bug#45266
+#
+# Bug#33546: Slowdown on re-evaluation of constant expressions.
+#
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
+CREATE TABLE t2 (b INT);
+INSERT INTO t2 VALUES (2);
+SELECT * FROM t1 WHERE a = 1 + 1;
+a
+2
+EXPLAIN EXTENDED SELECT * FROM t1 WHERE a = 1 + 1;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
+Warnings:
+Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where (`test`.`t1`.`a` = <cache>((1 + 1)))
+SELECT * FROM t1 HAVING a = 1 + 1;
+a
+2
+EXPLAIN EXTENDED SELECT * FROM t1 HAVING a = 1 + 1;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00
+Warnings:
+Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` having (`test`.`t1`.`a` = <cache>((1 + 1)))
+SELECT * FROM t1, t2 WHERE a = b + (1 + 1);
+a b
+4 2
+EXPLAIN EXTENDED SELECT * FROM t1, t2 WHERE a = b + (1 + 1);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t2 system NULL NULL NULL NULL 1 100.00
+1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
+Warnings:
+Note 1003 select `test`.`t1`.`a` AS `a`,'2' AS `b` from `test`.`t1` where (`test`.`t1`.`a` = <cache>(('2' + (1 + 1))))
+SELECT * FROM t2 LEFT JOIN t1 ON a = b + 1;
+b a
+2 3
+EXPLAIN EXTENDED SELECT * FROM t2 LEFT JOIN t1 ON a = b + 1;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t2 system NULL NULL NULL NULL 1 100.00
+1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00
+Warnings:
+Note 1003 select '2' AS `b`,`test`.`t1`.`a` AS `a` from `test`.`t1` where 1
+EXPLAIN EXTENDED SELECT * FROM t1 WHERE a > UNIX_TIMESTAMP('2009-03-10 00:00:00');
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
+Warnings:
+Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where (`test`.`t1`.`a` > <cache>(unix_timestamp('2009-03-10 00:00:00')))
+CREATE FUNCTION f1() RETURNS INT DETERMINISTIC
+BEGIN
+SET @cnt := @cnt + 1;
+RETURN 1;
+END;|
+SET @cnt := 0;
+SELECT * FROM t1 WHERE a = f1();
+a
+1
+SELECT @cnt;
+@cnt
+1
+EXPLAIN EXTENDED SELECT * FROM t1 WHERE a = f1();
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
+Warnings:
+Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where (`test`.`t1`.`a` = <cache>(`f1`()))
+DROP TABLE t1, t2;
+DROP FUNCTION f1;
+# End of bug#33546
#
# BUG#48052: Valgrind warning - uninitialized value in init_read_record()
#
diff --git a/mysql-test/r/select_safe.result b/mysql-test/r/select_safe.result
index feac9efcb13..5e5ef55477c 100644
--- a/mysql-test/r/select_safe.result
+++ b/mysql-test/r/select_safe.result
@@ -1,5 +1,5 @@
drop table if exists t1;
-SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=4, SQL_MAX_JOIN_SIZE=9;
+SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=4, MAX_JOIN_SIZE=9;
create table t1 (a int auto_increment primary key, b char(20));
insert into t1 values(1,"test");
SELECT SQL_BUFFER_RESULT * from t1;
@@ -90,4 +90,4 @@ set local max_join_size=1;
select * from (select 1 union select 2 union select 3) x;
ERROR 42000: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
drop table t1;
-SET SQL_SAFE_UPDATES=0,SQL_SELECT_LIMIT=DEFAULT, SQL_MAX_JOIN_SIZE=DEFAULT;
+SET SQL_SAFE_UPDATES=0,SQL_SELECT_LIMIT=DEFAULT, MAX_JOIN_SIZE=DEFAULT;
diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result
index ec0a70ff581..22b5b29a0c1 100644
--- a/mysql-test/r/show_check.result
+++ b/mysql-test/r/show_check.result
@@ -61,18 +61,18 @@ Table Op Msg_type Msg_text
test.t1 check status OK
show index from t1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def STATISTICS TABLE_NAME Table 253 64 2 N 1 0 8
-def STATISTICS NON_UNIQUE Non_unique 8 1 1 N 32769 0 63
-def STATISTICS INDEX_NAME Key_name 253 64 7 N 1 0 8
-def STATISTICS SEQ_IN_INDEX Seq_in_index 8 2 1 N 32769 0 63
-def STATISTICS COLUMN_NAME Column_name 253 64 1 N 1 0 8
-def STATISTICS COLLATION Collation 253 1 1 Y 0 0 8
-def STATISTICS CARDINALITY Cardinality 8 21 1 Y 32768 0 63
-def STATISTICS SUB_PART Sub_part 8 3 0 Y 32768 0 63
-def STATISTICS PACKED Packed 253 10 0 Y 0 0 8
-def STATISTICS NULLABLE Null 253 3 0 N 1 0 8
-def STATISTICS INDEX_TYPE Index_type 253 16 5 N 1 0 8
-def STATISTICS COMMENT Comment 253 16 0 Y 0 0 8
+def information_schema STATISTICS STATISTICS TABLE_NAME Table 253 64 2 N 1 0 8
+def information_schema STATISTICS STATISTICS NON_UNIQUE Non_unique 8 1 1 N 32769 0 63
+def information_schema STATISTICS STATISTICS INDEX_NAME Key_name 253 64 7 N 1 0 8
+def information_schema STATISTICS STATISTICS SEQ_IN_INDEX Seq_in_index 8 2 1 N 32769 0 63
+def information_schema STATISTICS STATISTICS COLUMN_NAME Column_name 253 64 1 N 1 0 8
+def information_schema STATISTICS STATISTICS COLLATION Collation 253 1 1 Y 0 0 8
+def information_schema STATISTICS STATISTICS CARDINALITY Cardinality 8 21 1 Y 32768 0 63
+def information_schema STATISTICS STATISTICS SUB_PART Sub_part 8 3 0 Y 32768 0 63
+def information_schema STATISTICS STATISTICS PACKED Packed 253 10 0 Y 0 0 8
+def information_schema STATISTICS STATISTICS NULLABLE Null 253 3 0 N 1 0 8
+def information_schema STATISTICS STATISTICS INDEX_TYPE Index_type 253 16 5 N 1 0 8
+def information_schema STATISTICS STATISTICS COMMENT Comment 253 16 0 Y 0 0 8
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 5 NULL NULL BTREE
t1 1 b 1 b A 1 NULL NULL BTREE
@@ -99,53 +99,54 @@ drop table t1;
-- after Bug#29394 is implemented.
show variables like "wait_timeout%";
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def VARIABLES VARIABLE_NAME Variable_name 253 64 12 N 1 0 8
-def VARIABLES VARIABLE_VALUE Value 253 1024 5 Y 0 0 8
+def information_schema VARIABLES VARIABLES VARIABLE_NAME Variable_name 253 64 12 N 1 0 8
+def information_schema VARIABLES VARIABLES VARIABLE_VALUE Value 253 1024 5 Y 0 0 8
Variable_name Value
wait_timeout 28800
show variables like "WAIT_timeout%";
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def VARIABLES VARIABLE_NAME Variable_name 253 64 12 N 1 0 8
-def VARIABLES VARIABLE_VALUE Value 253 1024 5 Y 0 0 8
+def information_schema VARIABLES VARIABLES VARIABLE_NAME Variable_name 253 64 12 N 1 0 8
+def information_schema VARIABLES VARIABLES VARIABLE_VALUE Value 253 1024 5 Y 0 0 8
Variable_name Value
wait_timeout 28800
show variables like "this_doesn't_exists%";
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def VARIABLES VARIABLE_NAME Variable_name 253 64 0 N 1 0 8
-def VARIABLES VARIABLE_VALUE Value 253 1024 0 Y 0 0 8
+def information_schema VARIABLES VARIABLES VARIABLE_NAME Variable_name 253 64 0 N 1 0 8
+def information_schema VARIABLES VARIABLES VARIABLE_VALUE Value 253 1024 0 Y 0 0 8
Variable_name Value
show table status from test like "this_doesn't_exists%";
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def TABLES TABLE_NAME Name 253 64 0 N 1 0 8
-def TABLES ENGINE Engine 253 64 0 Y 0 0 8
-def TABLES VERSION Version 8 21 0 Y 32800 0 63
-def TABLES ROW_FORMAT Row_format 253 10 0 Y 0 0 8
-def TABLES TABLE_ROWS Rows 8 21 0 Y 32800 0 63
-def TABLES AVG_ROW_LENGTH Avg_row_length 8 21 0 Y 32800 0 63
-def TABLES DATA_LENGTH Data_length 8 21 0 Y 32800 0 63
-def TABLES MAX_DATA_LENGTH Max_data_length 8 21 0 Y 32800 0 63
-def TABLES INDEX_LENGTH Index_length 8 21 0 Y 32800 0 63
-def TABLES DATA_FREE Data_free 8 21 0 Y 32800 0 63
-def TABLES AUTO_INCREMENT Auto_increment 8 21 0 Y 32800 0 63
-def TABLES CREATE_TIME Create_time 12 19 0 Y 128 0 63
-def TABLES UPDATE_TIME Update_time 12 19 0 Y 128 0 63
-def TABLES CHECK_TIME Check_time 12 19 0 Y 128 0 63
-def TABLES TABLE_COLLATION Collation 253 32 0 Y 0 0 8
-def TABLES CHECKSUM Checksum 8 21 0 Y 32800 0 63
-def TABLES CREATE_OPTIONS Create_options 253 255 0 Y 0 0 8
-def TABLES TABLE_COMMENT Comment 253 80 0 N 1 0 8
+def information_schema TABLES TABLES TABLE_NAME Name 253 64 0 N 1 0 8
+def information_schema TABLES TABLES ENGINE Engine 253 64 0 Y 0 0 8
+def information_schema TABLES TABLES VERSION Version 8 21 0 Y 32800 0 63
+def information_schema TABLES TABLES ROW_FORMAT Row_format 253 10 0 Y 0 0 8
+def information_schema TABLES TABLES TABLE_ROWS Rows 8 21 0 Y 32800 0 63
+def information_schema TABLES TABLES AVG_ROW_LENGTH Avg_row_length 8 21 0 Y 32800 0 63
+def information_schema TABLES TABLES DATA_LENGTH Data_length 8 21 0 Y 32800 0 63
+def information_schema TABLES TABLES MAX_DATA_LENGTH Max_data_length 8 21 0 Y 32800 0 63
+def information_schema TABLES TABLES INDEX_LENGTH Index_length 8 21 0 Y 32800 0 63
+def information_schema TABLES TABLES DATA_FREE Data_free 8 21 0 Y 32800 0 63
+def information_schema TABLES TABLES AUTO_INCREMENT Auto_increment 8 21 0 Y 32800 0 63
+def information_schema TABLES TABLES CREATE_TIME Create_time 12 19 0 Y 128 0 63
+def information_schema TABLES TABLES UPDATE_TIME Update_time 12 19 0 Y 128 0 63
+def information_schema TABLES TABLES CHECK_TIME Check_time 12 19 0 Y 128 0 63
+def information_schema TABLES TABLES TABLE_COLLATION Collation 253 32 0 Y 0 0 8
+def information_schema TABLES TABLES CHECKSUM Checksum 8 21 0 Y 32800 0 63
+def information_schema TABLES TABLES CREATE_OPTIONS Create_options 253 255 0 Y 0 0 8
+def information_schema TABLES TABLES TABLE_COMMENT Comment 253 80 0 N 1 0 8
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
show databases;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def SCHEMATA SCHEMA_NAME Database 253 64 18 N 1 0 8
+def information_schema SCHEMATA SCHEMATA SCHEMA_NAME Database 253 64 18 N 1 0 8
Database
information_schema
mtr
mysql
+performance_schema
test
show databases like "test%";
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def SCHEMATA SCHEMA_NAME Database (test%) 253 64 4 N 1 0 8
+def information_schema SCHEMATA SCHEMATA SCHEMA_NAME Database (test%) 253 64 4 N 1 0 8
Database (test%)
test
create table t1 (f1 int not null, f2 int not null, f3 int not null, f4 int not null, primary key(f1,f2,f3,f4));
@@ -626,18 +627,18 @@ PRIMARY KEY(field1(1000))
);
show index from t1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def STATISTICS TABLE_NAME Table 253 64 2 N 1 0 63
-def STATISTICS NON_UNIQUE Non_unique 8 1 1 N 32769 0 63
-def STATISTICS INDEX_NAME Key_name 253 64 7 N 1 0 63
-def STATISTICS SEQ_IN_INDEX Seq_in_index 8 2 1 N 32769 0 63
-def STATISTICS COLUMN_NAME Column_name 253 64 6 N 1 0 63
-def STATISTICS COLLATION Collation 253 1 1 Y 0 0 63
-def STATISTICS CARDINALITY Cardinality 8 21 1 Y 32768 0 63
-def STATISTICS SUB_PART Sub_part 8 3 4 Y 32768 0 63
-def STATISTICS PACKED Packed 253 10 0 Y 0 0 63
-def STATISTICS NULLABLE Null 253 3 0 N 1 0 63
-def STATISTICS INDEX_TYPE Index_type 253 16 5 N 1 0 63
-def STATISTICS COMMENT Comment 253 16 0 Y 0 0 63
+def information_schema STATISTICS STATISTICS TABLE_NAME Table 253 64 2 N 1 0 63
+def information_schema STATISTICS STATISTICS NON_UNIQUE Non_unique 8 1 1 N 32769 0 63
+def information_schema STATISTICS STATISTICS INDEX_NAME Key_name 253 64 7 N 1 0 63
+def information_schema STATISTICS STATISTICS SEQ_IN_INDEX Seq_in_index 8 2 1 N 32769 0 63
+def information_schema STATISTICS STATISTICS COLUMN_NAME Column_name 253 64 6 N 1 0 63
+def information_schema STATISTICS STATISTICS COLLATION Collation 253 1 1 Y 0 0 63
+def information_schema STATISTICS STATISTICS CARDINALITY Cardinality 8 21 1 Y 32768 0 63
+def information_schema STATISTICS STATISTICS SUB_PART Sub_part 8 3 4 Y 32768 0 63
+def information_schema STATISTICS STATISTICS PACKED Packed 253 10 0 Y 0 0 63
+def information_schema STATISTICS STATISTICS NULLABLE Null 253 3 0 N 1 0 63
+def information_schema STATISTICS STATISTICS INDEX_TYPE Index_type 253 16 5 N 1 0 63
+def information_schema STATISTICS STATISTICS COMMENT Comment 253 16 0 Y 0 0 63
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 0 PRIMARY 1 field1 A 0 1000 NULL BTREE
drop table t1;
@@ -737,20 +738,11 @@ View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sql_no_cache now() AS `NOW()` binary binary
DROP VIEW v1;
CREATE VIEW v1 AS SELECT SQL_CACHE SQL_NO_CACHE NOW();
-SHOW CREATE VIEW v1;
-View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sql_no_cache now() AS `NOW()` binary binary
-DROP VIEW v1;
+ERROR HY000: Incorrect usage of SQL_CACHE and SQL_NO_CACHE
CREATE VIEW v1 AS SELECT SQL_NO_CACHE SQL_CACHE NOW();
-SHOW CREATE VIEW v1;
-View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sql_no_cache now() AS `NOW()` binary binary
-DROP VIEW v1;
+ERROR HY000: Incorrect usage of SQL_NO_CACHE and SQL_CACHE
CREATE VIEW v1 AS SELECT SQL_CACHE SQL_NO_CACHE SQL_CACHE NOW();
-SHOW CREATE VIEW v1;
-View Create View character_set_client collation_connection
-v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sql_no_cache now() AS `NOW()` binary binary
-DROP VIEW v1;
+ERROR HY000: Incorrect usage of SQL_CACHE and SQL_NO_CACHE
CREATE PROCEDURE p1()
BEGIN
SET @s= 'CREATE VIEW v1 AS SELECT SQL_CACHE 1';
@@ -808,8 +800,6 @@ show plugins;
show columns in t1;
show slave hosts;
show keys in t1;
-show column types;
-show table types;
show storage engines;
show authors;
show contributors;
@@ -859,21 +849,21 @@ set names utf8;
----------------------------------------------------------------
SHOW CHARACTER SET LIKE 'utf8';
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def CHARACTER_SETS CHARACTER_SET_NAME Charset 253 96 4 N 1 0 33
-def CHARACTER_SETS DESCRIPTION Description 253 180 13 N 1 0 33
-def CHARACTER_SETS DEFAULT_COLLATE_NAME Default collation 253 96 15 N 1 0 33
-def CHARACTER_SETS MAXLEN Maxlen 8 3 1 N 32769 0 63
+def information_schema CHARACTER_SETS CHARACTER_SETS CHARACTER_SET_NAME Charset 253 96 4 N 1 0 33
+def information_schema CHARACTER_SETS CHARACTER_SETS DESCRIPTION Description 253 180 13 N 1 0 33
+def information_schema CHARACTER_SETS CHARACTER_SETS DEFAULT_COLLATE_NAME Default collation 253 96 15 N 1 0 33
+def information_schema CHARACTER_SETS CHARACTER_SETS MAXLEN Maxlen 8 3 1 N 32769 0 63
Charset Description Default collation Maxlen
utf8 UTF-8 Unicode utf8_general_ci 3
----------------------------------------------------------------
SHOW COLLATION LIKE 'latin1_bin';
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def COLLATIONS COLLATION_NAME Collation 253 96 10 N 1 0 33
-def COLLATIONS CHARACTER_SET_NAME Charset 253 96 6 N 1 0 33
-def COLLATIONS ID Id 8 11 2 N 32769 0 63
-def COLLATIONS IS_DEFAULT Default 253 9 0 N 1 0 33
-def COLLATIONS IS_COMPILED Compiled 253 9 3 N 1 0 33
-def COLLATIONS SORTLEN Sortlen 8 3 1 N 32769 0 63
+def information_schema COLLATIONS COLLATIONS COLLATION_NAME Collation 253 96 10 N 1 0 33
+def information_schema COLLATIONS COLLATIONS CHARACTER_SET_NAME Charset 253 96 6 N 1 0 33
+def information_schema COLLATIONS COLLATIONS ID Id 8 11 2 N 32769 0 63
+def information_schema COLLATIONS COLLATIONS IS_DEFAULT Default 253 9 0 N 1 0 33
+def information_schema COLLATIONS COLLATIONS IS_COMPILED Compiled 253 9 3 N 1 0 33
+def information_schema COLLATIONS COLLATIONS SORTLEN Sortlen 8 3 1 N 32769 0 63
Collation Charset Id Default Compiled Sortlen
latin1_bin latin1 47 Yes 1
----------------------------------------------------------------
@@ -886,7 +876,7 @@ mysqltest1 CREATE DATABASE `mysqltest1` /*!40100 DEFAULT CHARACTER SET latin1 */
----------------------------------------------------------------
SHOW DATABASES LIKE 'mysqltest1';
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def SCHEMATA SCHEMA_NAME Database (mysqltest1) 253 192 10 N 1 0 33
+def information_schema SCHEMATA SCHEMATA SCHEMA_NAME Database (mysqltest1) 253 192 10 N 1 0 33
Database (mysqltest1)
mysqltest1
----------------------------------------------------------------
@@ -902,18 +892,18 @@ t1 CREATE TABLE `t1` (
----------------------------------------------------------------
SHOW INDEX FROM t1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def STATISTICS TABLE_NAME Table 253 192 2 N 1 0 33
-def STATISTICS NON_UNIQUE Non_unique 8 1 1 N 32769 0 63
-def STATISTICS INDEX_NAME Key_name 253 192 7 N 1 0 33
-def STATISTICS SEQ_IN_INDEX Seq_in_index 8 2 1 N 32769 0 63
-def STATISTICS COLUMN_NAME Column_name 253 192 1 N 1 0 33
-def STATISTICS COLLATION Collation 253 3 1 Y 0 0 33
-def STATISTICS CARDINALITY Cardinality 8 21 1 Y 32768 0 63
-def STATISTICS SUB_PART Sub_part 8 3 0 Y 32768 0 63
-def STATISTICS PACKED Packed 253 30 0 Y 0 0 33
-def STATISTICS NULLABLE Null 253 9 0 N 1 0 33
-def STATISTICS INDEX_TYPE Index_type 253 48 5 N 1 0 33
-def STATISTICS COMMENT Comment 253 48 0 Y 0 0 33
+def information_schema STATISTICS STATISTICS TABLE_NAME Table 253 192 2 N 1 0 33
+def information_schema STATISTICS STATISTICS NON_UNIQUE Non_unique 8 1 1 N 32769 0 63
+def information_schema STATISTICS STATISTICS INDEX_NAME Key_name 253 192 7 N 1 0 33
+def information_schema STATISTICS STATISTICS SEQ_IN_INDEX Seq_in_index 8 2 1 N 32769 0 63
+def information_schema STATISTICS STATISTICS COLUMN_NAME Column_name 253 192 1 N 1 0 33
+def information_schema STATISTICS STATISTICS COLLATION Collation 253 3 1 Y 0 0 33
+def information_schema STATISTICS STATISTICS CARDINALITY Cardinality 8 21 1 Y 32768 0 63
+def information_schema STATISTICS STATISTICS SUB_PART Sub_part 8 3 0 Y 32768 0 63
+def information_schema STATISTICS STATISTICS PACKED Packed 253 30 0 Y 0 0 33
+def information_schema STATISTICS STATISTICS NULLABLE Null 253 9 0 N 1 0 33
+def information_schema STATISTICS STATISTICS INDEX_TYPE Index_type 253 48 5 N 1 0 33
+def information_schema STATISTICS STATISTICS COMMENT Comment 253 48 0 Y 0 0 33
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 0 PRIMARY 1 c A 0 NULL NULL BTREE
----------------------------------------------------------------
@@ -930,17 +920,17 @@ TABLE_COMMENT
FROM INFORMATION_SCHEMA.TABLES
WHERE table_name = 't1';
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def TABLES TABLE_CATALOG TABLE_CATALOG 253 1536 0 Y 0 0 33
-def TABLES TABLE_SCHEMA TABLE_SCHEMA 253 192 4 N 1 0 33
-def TABLES TABLE_NAME TABLE_NAME 253 192 2 N 1 0 33
-def TABLES TABLE_TYPE TABLE_TYPE 253 192 10 N 1 0 33
-def TABLES ENGINE ENGINE 253 192 6 Y 0 0 33
-def TABLES ROW_FORMAT ROW_FORMAT 253 30 5 Y 0 0 33
-def TABLES TABLE_COLLATION TABLE_COLLATION 253 96 17 Y 0 0 33
-def TABLES CREATE_OPTIONS CREATE_OPTIONS 253 765 0 Y 0 0 33
-def TABLES TABLE_COMMENT TABLE_COMMENT 253 240 0 N 1 0 33
+def information_schema TABLES TABLES TABLE_CATALOG TABLE_CATALOG 253 1536 3 N 1 0 33
+def information_schema TABLES TABLES TABLE_SCHEMA TABLE_SCHEMA 253 192 4 N 1 0 33
+def information_schema TABLES TABLES TABLE_NAME TABLE_NAME 253 192 2 N 1 0 33
+def information_schema TABLES TABLES TABLE_TYPE TABLE_TYPE 253 192 10 N 1 0 33
+def information_schema TABLES TABLES ENGINE ENGINE 253 192 6 Y 0 0 33
+def information_schema TABLES TABLES ROW_FORMAT ROW_FORMAT 253 30 5 Y 0 0 33
+def information_schema TABLES TABLES TABLE_COLLATION TABLE_COLLATION 253 96 17 Y 0 0 33
+def information_schema TABLES TABLES CREATE_OPTIONS CREATE_OPTIONS 253 765 0 Y 0 0 33
+def information_schema TABLES TABLES TABLE_COMMENT TABLE_COMMENT 253 240 0 N 1 0 33
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE ROW_FORMAT TABLE_COLLATION CREATE_OPTIONS TABLE_COMMENT
-NULL test t1 BASE TABLE MyISAM Fixed latin1_swedish_ci
+def test t1 BASE TABLE MyISAM Fixed latin1_swedish_ci
----------------------------------------------------------------
SELECT
TABLE_CATALOG,
@@ -960,53 +950,53 @@ COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 't1';
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def COLUMNS TABLE_CATALOG TABLE_CATALOG 253 1536 0 Y 0 0 33
-def COLUMNS TABLE_SCHEMA TABLE_SCHEMA 253 192 4 N 1 0 33
-def COLUMNS TABLE_NAME TABLE_NAME 253 192 2 N 1 0 33
-def COLUMNS COLUMN_NAME COLUMN_NAME 253 192 1 N 1 0 33
-def COLUMNS COLUMN_DEFAULT COLUMN_DEFAULT 252 589815 0 Y 16 0 33
-def COLUMNS IS_NULLABLE IS_NULLABLE 253 9 2 N 1 0 33
-def COLUMNS DATA_TYPE DATA_TYPE 253 192 3 N 1 0 33
-def COLUMNS CHARACTER_SET_NAME CHARACTER_SET_NAME 253 96 0 Y 0 0 33
-def COLUMNS COLLATION_NAME COLLATION_NAME 253 96 0 Y 0 0 33
-def COLUMNS COLUMN_TYPE COLUMN_TYPE 252 589815 7 N 17 0 33
-def COLUMNS COLUMN_KEY COLUMN_KEY 253 9 3 N 1 0 33
-def COLUMNS EXTRA EXTRA 253 81 0 N 1 0 33
-def COLUMNS PRIVILEGES PRIVILEGES 253 240 31 N 1 0 33
-def COLUMNS COLUMN_COMMENT COLUMN_COMMENT 253 765 0 N 1 0 33
+def information_schema COLUMNS COLUMNS TABLE_CATALOG TABLE_CATALOG 253 1536 3 N 1 0 33
+def information_schema COLUMNS COLUMNS TABLE_SCHEMA TABLE_SCHEMA 253 192 4 N 1 0 33
+def information_schema COLUMNS COLUMNS TABLE_NAME TABLE_NAME 253 192 2 N 1 0 33
+def information_schema COLUMNS COLUMNS COLUMN_NAME COLUMN_NAME 253 192 1 N 1 0 33
+def information_schema COLUMNS COLUMNS COLUMN_DEFAULT COLUMN_DEFAULT 252 589815 0 Y 16 0 33
+def information_schema COLUMNS COLUMNS IS_NULLABLE IS_NULLABLE 253 9 2 N 1 0 33
+def information_schema COLUMNS COLUMNS DATA_TYPE DATA_TYPE 253 192 3 N 1 0 33
+def information_schema COLUMNS COLUMNS CHARACTER_SET_NAME CHARACTER_SET_NAME 253 96 0 Y 0 0 33
+def information_schema COLUMNS COLUMNS COLLATION_NAME COLLATION_NAME 253 96 0 Y 0 0 33
+def information_schema COLUMNS COLUMNS COLUMN_TYPE COLUMN_TYPE 252 589815 7 N 17 0 33
+def information_schema COLUMNS COLUMNS COLUMN_KEY COLUMN_KEY 253 9 3 N 1 0 33
+def information_schema COLUMNS COLUMNS EXTRA EXTRA 253 81 0 N 1 0 33
+def information_schema COLUMNS COLUMNS PRIVILEGES PRIVILEGES 253 240 31 N 1 0 33
+def information_schema COLUMNS COLUMNS COLUMN_COMMENT COLUMN_COMMENT 253 765 0 N 1 0 33
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
-NULL test t1 c NULL NO int NULL NULL int(11) PRI select,insert,update,references
+def test t1 c NULL NO int NULL NULL int(11) PRI select,insert,update,references
----------------------------------------------------------------
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 information_schema TABLE_NAMES TABLE_NAMES TABLE_NAME Tables_in_test (t1) 253 192 2 N 1 0 33
Tables_in_test (t1)
t1
----------------------------------------------------------------
SHOW COLUMNS FROM t1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def COLUMNS COLUMN_NAME Field 253 192 1 N 1 0 33
-def COLUMNS COLUMN_TYPE Type 252 589815 7 N 17 0 33
-def COLUMNS IS_NULLABLE Null 253 9 2 N 1 0 33
-def COLUMNS COLUMN_KEY Key 253 9 3 N 1 0 33
-def COLUMNS COLUMN_DEFAULT Default 252 589815 0 Y 16 0 33
-def COLUMNS EXTRA Extra 253 81 0 N 1 0 33
+def information_schema COLUMNS COLUMNS COLUMN_NAME Field 253 192 1 N 1 0 33
+def information_schema COLUMNS COLUMNS COLUMN_TYPE Type 252 589815 7 N 17 0 33
+def information_schema COLUMNS COLUMNS IS_NULLABLE Null 253 9 2 N 1 0 33
+def information_schema COLUMNS COLUMNS COLUMN_KEY Key 253 9 3 N 1 0 33
+def information_schema COLUMNS COLUMNS COLUMN_DEFAULT Default 252 589815 0 Y 16 0 33
+def information_schema COLUMNS COLUMNS EXTRA Extra 253 81 0 N 1 0 33
Field Type Null Key Default Extra
c int(11) NO PRI NULL
----------------------------------------------------------------
SHOW TRIGGERS LIKE 't1';
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def TRIGGERS TRIGGER_NAME Trigger 253 192 5 N 1 0 33
-def TRIGGERS EVENT_MANIPULATION Event 253 18 6 N 1 0 33
-def TRIGGERS EVENT_OBJECT_TABLE Table 253 192 2 N 1 0 33
-def TRIGGERS ACTION_STATEMENT Statement 252 589815 10 N 17 0 33
-def TRIGGERS ACTION_TIMING Timing 253 18 6 N 1 0 33
-def TRIGGERS CREATED Created 12 19 0 Y 128 0 63
-def TRIGGERS SQL_MODE sql_mode 253 24576 0 N 1 0 33
-def TRIGGERS DEFINER Definer 253 231 14 N 1 0 33
-def TRIGGERS CHARACTER_SET_CLIENT character_set_client 253 96 6 N 1 0 33
-def TRIGGERS COLLATION_CONNECTION collation_connection 253 96 6 N 1 0 33
-def TRIGGERS DATABASE_COLLATION Database Collation 253 96 17 N 1 0 33
+def information_schema TRIGGERS TRIGGERS TRIGGER_NAME Trigger 253 192 5 N 1 0 33
+def information_schema TRIGGERS TRIGGERS EVENT_MANIPULATION Event 253 18 6 N 1 0 33
+def information_schema TRIGGERS TRIGGERS EVENT_OBJECT_TABLE Table 253 192 2 N 1 0 33
+def information_schema TRIGGERS TRIGGERS ACTION_STATEMENT Statement 252 589815 10 N 17 0 33
+def information_schema TRIGGERS TRIGGERS ACTION_TIMING Timing 253 18 6 N 1 0 33
+def information_schema TRIGGERS TRIGGERS CREATED Created 12 19 0 Y 128 0 63
+def information_schema TRIGGERS TRIGGERS SQL_MODE sql_mode 253 24576 0 N 1 0 33
+def information_schema TRIGGERS TRIGGERS DEFINER Definer 253 231 14 N 1 0 33
+def information_schema TRIGGERS TRIGGERS CHARACTER_SET_CLIENT character_set_client 253 96 6 N 1 0 33
+def information_schema TRIGGERS TRIGGERS COLLATION_CONNECTION collation_connection 253 96 6 N 1 0 33
+def information_schema TRIGGERS TRIGGERS DATABASE_COLLATION Database Collation 253 96 17 N 1 0 33
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
t1_bi INSERT t1 SET @a = 1 BEFORE NULL root@localhost binary binary latin1_swedish_ci
----------------------------------------------------------------
@@ -1031,25 +1021,25 @@ DEFINER
FROM INFORMATION_SCHEMA.TRIGGERS
WHERE trigger_name = 't1_bi';
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def TRIGGERS TRIGGER_CATALOG TRIGGER_CATALOG 253 1536 0 Y 0 0 33
-def TRIGGERS TRIGGER_SCHEMA TRIGGER_SCHEMA 253 192 4 N 1 0 33
-def TRIGGERS TRIGGER_NAME TRIGGER_NAME 253 192 5 N 1 0 33
-def TRIGGERS EVENT_MANIPULATION EVENT_MANIPULATION 253 18 6 N 1 0 33
-def TRIGGERS EVENT_OBJECT_CATALOG EVENT_OBJECT_CATALOG 253 1536 0 Y 0 0 33
-def TRIGGERS EVENT_OBJECT_SCHEMA EVENT_OBJECT_SCHEMA 253 192 4 N 1 0 33
-def TRIGGERS EVENT_OBJECT_TABLE EVENT_OBJECT_TABLE 253 192 2 N 1 0 33
-def TRIGGERS ACTION_CONDITION ACTION_CONDITION 252 589815 0 Y 16 0 33
-def TRIGGERS ACTION_STATEMENT ACTION_STATEMENT 252 589815 10 N 17 0 33
-def TRIGGERS ACTION_ORIENTATION ACTION_ORIENTATION 253 27 3 N 1 0 33
-def TRIGGERS ACTION_TIMING ACTION_TIMING 253 18 6 N 1 0 33
-def TRIGGERS ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_OLD_TABLE 253 192 0 Y 0 0 33
-def TRIGGERS ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_NEW_TABLE 253 192 0 Y 0 0 33
-def TRIGGERS ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_OLD_ROW 253 9 3 N 1 0 33
-def TRIGGERS ACTION_REFERENCE_NEW_ROW ACTION_REFERENCE_NEW_ROW 253 9 3 N 1 0 33
-def TRIGGERS SQL_MODE SQL_MODE 253 24576 0 N 1 0 33
-def TRIGGERS DEFINER DEFINER 253 231 14 N 1 0 33
+def information_schema TRIGGERS TRIGGERS TRIGGER_CATALOG TRIGGER_CATALOG 253 1536 3 N 1 0 33
+def information_schema TRIGGERS TRIGGERS TRIGGER_SCHEMA TRIGGER_SCHEMA 253 192 4 N 1 0 33
+def information_schema TRIGGERS TRIGGERS TRIGGER_NAME TRIGGER_NAME 253 192 5 N 1 0 33
+def information_schema TRIGGERS TRIGGERS EVENT_MANIPULATION EVENT_MANIPULATION 253 18 6 N 1 0 33
+def information_schema TRIGGERS TRIGGERS EVENT_OBJECT_CATALOG EVENT_OBJECT_CATALOG 253 1536 3 N 1 0 33
+def information_schema TRIGGERS TRIGGERS EVENT_OBJECT_SCHEMA EVENT_OBJECT_SCHEMA 253 192 4 N 1 0 33
+def information_schema TRIGGERS TRIGGERS EVENT_OBJECT_TABLE EVENT_OBJECT_TABLE 253 192 2 N 1 0 33
+def information_schema TRIGGERS TRIGGERS ACTION_CONDITION ACTION_CONDITION 252 589815 0 Y 16 0 33
+def information_schema TRIGGERS TRIGGERS ACTION_STATEMENT ACTION_STATEMENT 252 589815 10 N 17 0 33
+def information_schema TRIGGERS TRIGGERS ACTION_ORIENTATION ACTION_ORIENTATION 253 27 3 N 1 0 33
+def information_schema TRIGGERS TRIGGERS ACTION_TIMING ACTION_TIMING 253 18 6 N 1 0 33
+def information_schema TRIGGERS TRIGGERS ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_OLD_TABLE 253 192 0 Y 0 0 33
+def information_schema TRIGGERS TRIGGERS ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_NEW_TABLE 253 192 0 Y 0 0 33
+def information_schema TRIGGERS TRIGGERS ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_OLD_ROW 253 9 3 N 1 0 33
+def information_schema TRIGGERS TRIGGERS ACTION_REFERENCE_NEW_ROW ACTION_REFERENCE_NEW_ROW 253 9 3 N 1 0 33
+def information_schema TRIGGERS TRIGGERS SQL_MODE SQL_MODE 253 24576 0 N 1 0 33
+def information_schema TRIGGERS TRIGGERS DEFINER DEFINER 253 231 14 N 1 0 33
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW SQL_MODE DEFINER
-NULL test t1_bi INSERT NULL test t1 NULL SET @a = 1 ROW BEFORE NULL NULL OLD NEW root@localhost
+def test t1_bi INSERT def test t1 NULL SET @a = 1 ROW BEFORE NULL NULL OLD NEW root@localhost
----------------------------------------------------------------
SHOW CREATE VIEW v1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
@@ -1064,18 +1054,18 @@ SELECT *
FROM INFORMATION_SCHEMA.VIEWS
WHERE table_name = 'v1';
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def VIEWS TABLE_CATALOG TABLE_CATALOG 253 1536 0 Y 0 0 33
-def VIEWS TABLE_SCHEMA TABLE_SCHEMA 253 192 4 N 1 0 33
-def VIEWS TABLE_NAME TABLE_NAME 253 192 2 N 1 0 33
-def VIEWS VIEW_DEFINITION VIEW_DEFINITION 252 589815 15 N 17 0 33
-def VIEWS CHECK_OPTION CHECK_OPTION 253 24 4 N 1 0 33
-def VIEWS IS_UPDATABLE IS_UPDATABLE 253 9 2 N 1 0 33
-def VIEWS DEFINER DEFINER 253 231 14 N 1 0 33
-def VIEWS SECURITY_TYPE SECURITY_TYPE 253 21 7 N 1 0 33
-def VIEWS CHARACTER_SET_CLIENT CHARACTER_SET_CLIENT 253 96 6 N 1 0 33
-def VIEWS COLLATION_CONNECTION COLLATION_CONNECTION 253 96 6 N 1 0 33
+def information_schema VIEWS VIEWS TABLE_CATALOG TABLE_CATALOG 253 1536 3 N 1 0 33
+def information_schema VIEWS VIEWS TABLE_SCHEMA TABLE_SCHEMA 253 192 4 N 1 0 33
+def information_schema VIEWS VIEWS TABLE_NAME TABLE_NAME 253 192 2 N 1 0 33
+def information_schema VIEWS VIEWS VIEW_DEFINITION VIEW_DEFINITION 252 589815 15 N 17 0 33
+def information_schema VIEWS VIEWS CHECK_OPTION CHECK_OPTION 253 24 4 N 1 0 33
+def information_schema VIEWS VIEWS IS_UPDATABLE IS_UPDATABLE 253 9 2 N 1 0 33
+def information_schema VIEWS VIEWS DEFINER DEFINER 253 231 14 N 1 0 33
+def information_schema VIEWS VIEWS SECURITY_TYPE SECURITY_TYPE 253 21 7 N 1 0 33
+def information_schema VIEWS VIEWS CHARACTER_SET_CLIENT CHARACTER_SET_CLIENT 253 96 6 N 1 0 33
+def information_schema VIEWS VIEWS COLLATION_CONNECTION COLLATION_CONNECTION 253 96 6 N 1 0 33
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL test v1 select 1 AS `1` NONE NO root@localhost DEFINER binary binary
+def test v1 select 1 AS `1` NONE NO root@localhost DEFINER binary binary
----------------------------------------------------------------
SHOW CREATE PROCEDURE p1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
@@ -1111,26 +1101,26 @@ DEFINER
FROM INFORMATION_SCHEMA.ROUTINES
WHERE routine_name = 'p1';
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def ROUTINES SPECIFIC_NAME SPECIFIC_NAME 253 192 2 N 1 0 33
-def ROUTINES ROUTINE_CATALOG ROUTINE_CATALOG 253 1536 0 Y 0 0 33
-def ROUTINES ROUTINE_SCHEMA ROUTINE_SCHEMA 253 192 4 N 1 0 33
-def ROUTINES ROUTINE_NAME ROUTINE_NAME 253 192 2 N 1 0 33
-def ROUTINES ROUTINE_TYPE ROUTINE_TYPE 253 27 9 N 1 0 33
-def ROUTINES DTD_IDENTIFIER DTD_IDENTIFIER 253 192 0 Y 0 0 33
-def ROUTINES ROUTINE_BODY ROUTINE_BODY 253 24 3 N 1 0 33
-def ROUTINES ROUTINE_DEFINITION ROUTINE_DEFINITION 252 589815 8 Y 16 0 33
-def ROUTINES EXTERNAL_NAME EXTERNAL_NAME 253 192 0 Y 0 0 33
-def ROUTINES EXTERNAL_LANGUAGE EXTERNAL_LANGUAGE 253 192 0 Y 0 0 33
-def ROUTINES PARAMETER_STYLE PARAMETER_STYLE 253 24 3 N 1 0 33
-def ROUTINES IS_DETERMINISTIC IS_DETERMINISTIC 253 9 2 N 1 0 33
-def ROUTINES SQL_DATA_ACCESS SQL_DATA_ACCESS 253 192 12 N 1 0 33
-def ROUTINES SQL_PATH SQL_PATH 253 192 0 Y 0 0 33
-def ROUTINES SECURITY_TYPE SECURITY_TYPE 253 21 7 N 1 0 33
-def ROUTINES SQL_MODE SQL_MODE 253 24576 0 N 1 0 33
-def ROUTINES ROUTINE_COMMENT ROUTINE_COMMENT 253 192 0 N 1 0 33
-def ROUTINES DEFINER DEFINER 253 231 14 N 1 0 33
+def information_schema ROUTINES ROUTINES SPECIFIC_NAME SPECIFIC_NAME 253 192 2 N 1 0 33
+def information_schema ROUTINES ROUTINES ROUTINE_CATALOG ROUTINE_CATALOG 253 1536 3 N 1 0 33
+def information_schema ROUTINES ROUTINES ROUTINE_SCHEMA ROUTINE_SCHEMA 253 192 4 N 1 0 33
+def information_schema ROUTINES ROUTINES ROUTINE_NAME ROUTINE_NAME 253 192 2 N 1 0 33
+def information_schema ROUTINES ROUTINES ROUTINE_TYPE ROUTINE_TYPE 253 27 9 N 1 0 33
+def information_schema ROUTINES ROUTINES DTD_IDENTIFIER DTD_IDENTIFIER 252 589815 0 Y 16 0 33
+def information_schema ROUTINES ROUTINES ROUTINE_BODY ROUTINE_BODY 253 24 3 N 1 0 33
+def information_schema ROUTINES ROUTINES ROUTINE_DEFINITION ROUTINE_DEFINITION 252 589815 8 Y 16 0 33
+def information_schema ROUTINES ROUTINES EXTERNAL_NAME EXTERNAL_NAME 253 192 0 Y 0 0 33
+def information_schema ROUTINES ROUTINES EXTERNAL_LANGUAGE EXTERNAL_LANGUAGE 253 192 0 Y 0 0 33
+def information_schema ROUTINES ROUTINES PARAMETER_STYLE PARAMETER_STYLE 253 24 3 N 1 0 33
+def information_schema ROUTINES ROUTINES IS_DETERMINISTIC IS_DETERMINISTIC 253 9 2 N 1 0 33
+def information_schema ROUTINES ROUTINES SQL_DATA_ACCESS SQL_DATA_ACCESS 253 192 12 N 1 0 33
+def information_schema ROUTINES ROUTINES SQL_PATH SQL_PATH 253 192 0 Y 0 0 33
+def information_schema ROUTINES ROUTINES SECURITY_TYPE SECURITY_TYPE 253 21 7 N 1 0 33
+def information_schema ROUTINES ROUTINES SQL_MODE SQL_MODE 253 24576 0 N 1 0 33
+def information_schema ROUTINES ROUTINES ROUTINE_COMMENT ROUTINE_COMMENT 252 589815 0 N 17 0 33
+def information_schema ROUTINES ROUTINES DEFINER DEFINER 253 231 14 N 1 0 33
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE SQL_MODE ROUTINE_COMMENT DEFINER
-p1 NULL test p1 PROCEDURE NULL SQL SELECT 1 NULL NULL SQL NO CONTAINS SQL NULL DEFINER root@localhost
+p1 def test p1 PROCEDURE NULL SQL SELECT 1 NULL NULL SQL NO CONTAINS SQL NULL DEFINER root@localhost
----------------------------------------------------------------
SHOW CREATE FUNCTION f1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
@@ -1166,26 +1156,26 @@ DEFINER
FROM INFORMATION_SCHEMA.ROUTINES
WHERE routine_name = 'f1';
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def ROUTINES SPECIFIC_NAME SPECIFIC_NAME 253 192 2 N 1 0 33
-def ROUTINES ROUTINE_CATALOG ROUTINE_CATALOG 253 1536 0 Y 0 0 33
-def ROUTINES ROUTINE_SCHEMA ROUTINE_SCHEMA 253 192 4 N 1 0 33
-def ROUTINES ROUTINE_NAME ROUTINE_NAME 253 192 2 N 1 0 33
-def ROUTINES ROUTINE_TYPE ROUTINE_TYPE 253 27 8 N 1 0 33
-def ROUTINES DTD_IDENTIFIER DTD_IDENTIFIER 253 192 7 Y 0 0 33
-def ROUTINES ROUTINE_BODY ROUTINE_BODY 253 24 3 N 1 0 33
-def ROUTINES ROUTINE_DEFINITION ROUTINE_DEFINITION 252 589815 8 Y 16 0 33
-def ROUTINES EXTERNAL_NAME EXTERNAL_NAME 253 192 0 Y 0 0 33
-def ROUTINES EXTERNAL_LANGUAGE EXTERNAL_LANGUAGE 253 192 0 Y 0 0 33
-def ROUTINES PARAMETER_STYLE PARAMETER_STYLE 253 24 3 N 1 0 33
-def ROUTINES IS_DETERMINISTIC IS_DETERMINISTIC 253 9 2 N 1 0 33
-def ROUTINES SQL_DATA_ACCESS SQL_DATA_ACCESS 253 192 12 N 1 0 33
-def ROUTINES SQL_PATH SQL_PATH 253 192 0 Y 0 0 33
-def ROUTINES SECURITY_TYPE SECURITY_TYPE 253 21 7 N 1 0 33
-def ROUTINES SQL_MODE SQL_MODE 253 24576 0 N 1 0 33
-def ROUTINES ROUTINE_COMMENT ROUTINE_COMMENT 253 192 0 N 1 0 33
-def ROUTINES DEFINER DEFINER 253 231 14 N 1 0 33
+def information_schema ROUTINES ROUTINES SPECIFIC_NAME SPECIFIC_NAME 253 192 2 N 1 0 33
+def information_schema ROUTINES ROUTINES ROUTINE_CATALOG ROUTINE_CATALOG 253 1536 3 N 1 0 33
+def information_schema ROUTINES ROUTINES ROUTINE_SCHEMA ROUTINE_SCHEMA 253 192 4 N 1 0 33
+def information_schema ROUTINES ROUTINES ROUTINE_NAME ROUTINE_NAME 253 192 2 N 1 0 33
+def information_schema ROUTINES ROUTINES ROUTINE_TYPE ROUTINE_TYPE 253 27 8 N 1 0 33
+def information_schema ROUTINES ROUTINES DTD_IDENTIFIER DTD_IDENTIFIER 252 589815 7 Y 16 0 33
+def information_schema ROUTINES ROUTINES ROUTINE_BODY ROUTINE_BODY 253 24 3 N 1 0 33
+def information_schema ROUTINES ROUTINES ROUTINE_DEFINITION ROUTINE_DEFINITION 252 589815 8 Y 16 0 33
+def information_schema ROUTINES ROUTINES EXTERNAL_NAME EXTERNAL_NAME 253 192 0 Y 0 0 33
+def information_schema ROUTINES ROUTINES EXTERNAL_LANGUAGE EXTERNAL_LANGUAGE 253 192 0 Y 0 0 33
+def information_schema ROUTINES ROUTINES PARAMETER_STYLE PARAMETER_STYLE 253 24 3 N 1 0 33
+def information_schema ROUTINES ROUTINES IS_DETERMINISTIC IS_DETERMINISTIC 253 9 2 N 1 0 33
+def information_schema ROUTINES ROUTINES SQL_DATA_ACCESS SQL_DATA_ACCESS 253 192 12 N 1 0 33
+def information_schema ROUTINES ROUTINES SQL_PATH SQL_PATH 253 192 0 Y 0 0 33
+def information_schema ROUTINES ROUTINES SECURITY_TYPE SECURITY_TYPE 253 21 7 N 1 0 33
+def information_schema ROUTINES ROUTINES SQL_MODE SQL_MODE 253 24576 0 N 1 0 33
+def information_schema ROUTINES ROUTINES ROUTINE_COMMENT ROUTINE_COMMENT 252 589815 0 N 17 0 33
+def information_schema ROUTINES ROUTINES DEFINER DEFINER 253 231 14 N 1 0 33
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE SQL_MODE ROUTINE_COMMENT DEFINER
-f1 NULL test f1 FUNCTION int(11) SQL RETURN 1 NULL NULL SQL NO CONTAINS SQL NULL DEFINER root@localhost
+f1 def test f1 FUNCTION int(11) SQL RETURN 1 NULL NULL SQL NO CONTAINS SQL NULL DEFINER root@localhost
----------------------------------------------------------------
DROP DATABASE mysqltest1;
DROP TABLE t1;
@@ -1292,11 +1282,6 @@ delete from mysql.db where user='mysqltest_4';
delete from mysql.tables_priv where user='mysqltest_4';
flush privileges;
drop database mysqltest;
-show full plugin;
-show warnings;
-Level Code Message
-Warning 1287 The syntax 'SHOW PLUGIN' is deprecated and will be removed in MySQL 6.0. Please use 'SHOW PLUGINS' instead
-show plugin;
show plugins;
create database `mysqlttest\1`;
create table `mysqlttest\1`.`a\b` (a int);
@@ -1314,13 +1299,13 @@ Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_par
drop table `mysqlttest\1`.`a\b`;
drop database `mysqlttest\1`;
show engine foobar status;
-ERROR 42000: Unknown table engine 'foobar'
+ERROR 42000: Unknown storage engine 'foobar'
show engine foobar logs;
-ERROR 42000: Unknown table engine 'foobar'
+ERROR 42000: Unknown storage engine 'foobar'
show engine foobar mutex;
-ERROR 42000: Unknown table engine 'foobar'
+ERROR 42000: Unknown storage engine 'foobar'
show engine mutex status;
-ERROR 42000: Unknown table engine 'mutex'
+ERROR 42000: Unknown storage engine 'mutex'
show engine csv status;
Type Name Status
show engine csv logs;
@@ -1442,13 +1427,12 @@ FOR EACH ROW
SET NEW.c1 = 'теÑÑ‚' koi8r koi8r_general_ci latin1_swedish_ci
SHOW CREATE EVENT ev1;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-ev1 SYSTEM CREATE EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO SELECT 'теÑÑ‚' AS test koi8r koi8r_general_ci latin1_swedish_ci
+ev1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO SELECT 'теÑÑ‚' AS test koi8r koi8r_general_ci latin1_swedish_ci
DROP VIEW v1;
DROP PROCEDURE p1;
DROP FUNCTION f1;
DROP TABLE t1;
DROP EVENT ev1;
-SHOW TABLE TYPES;
CREATE USER test_u@localhost;
GRANT PROCESS ON *.* TO test_u@localhost;
SHOW ENGINE MYISAM MUTEX;
diff --git a/mysql-test/r/signal.result b/mysql-test/r/signal.result
new file mode 100644
index 00000000000..7fb09b87778
--- /dev/null
+++ b/mysql-test/r/signal.result
@@ -0,0 +1,2362 @@
+#
+# PART 1: syntax
+#
+#
+# Test every new reserved and non reserved keywords
+#
+drop table if exists signal_non_reserved;
+create table signal_non_reserved (
+class_origin int,
+subclass_origin int,
+constraint_catalog int,
+constraint_schema int,
+constraint_name int,
+catalog_name int,
+schema_name int,
+table_name int,
+column_name int,
+cursor_name int,
+message_text int,
+sqlcode int
+);
+drop table signal_non_reserved;
+drop table if exists diag_non_reserved;
+create table diag_non_reserved (
+diagnostics int,
+current int,
+stacked int,
+exception int
+);
+drop table diag_non_reserved;
+drop table if exists diag_cond_non_reserved;
+create table diag_cond_non_reserved (
+condition_identifier int,
+condition_number int,
+condition_name int,
+connection_name int,
+message_length int,
+message_octet_length int,
+parameter_mode int,
+parameter_name int,
+parameter_ordinal_position int,
+returned_sqlstate int,
+routine_catalog int,
+routine_name int,
+routine_schema int,
+server_name int,
+specific_name int,
+trigger_catalog int,
+trigger_name int,
+trigger_schema int
+);
+drop table diag_cond_non_reserved;
+drop table if exists diag_stmt_non_reserved;
+create table diag_stmt_non_reserved (
+number int,
+more int,
+command_function int,
+command_function_code int,
+dynamic_function int,
+dynamic_function_code int,
+row_count int,
+transactions_committed int,
+transactions_rolled_back int,
+transaction_active int
+);
+drop table diag_stmt_non_reserved;
+drop table if exists test_reserved;
+create table test_reserved (signal int);
+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 'signal int)' at line 1
+create table test_reserved (resignal int);
+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 'resignal int)' at line 1
+create table test_reserved (condition int);
+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 'condition int)' at line 1
+#
+# Test the SIGNAL syntax
+#
+drop procedure if exists test_invalid;
+drop procedure if exists test_signal_syntax;
+drop function if exists test_signal_func;
+create procedure test_invalid()
+begin
+SIGNAL;
+end $$
+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 ';
+end' at line 3
+create procedure test_invalid()
+begin
+SIGNAL foo;
+end $$
+ERROR 42000: Undefined CONDITION: foo
+create procedure test_invalid()
+begin
+DECLARE foo CONDITION FOR 1234;
+SIGNAL foo;
+end $$
+ERROR HY000: SIGNAL/RESIGNAL can only use a CONDITION defined with SQLSTATE
+create procedure test_signal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo;
+end $$
+drop procedure test_signal_syntax $$
+create procedure test_signal_syntax()
+begin
+SIGNAL SQLSTATE '23000';
+end $$
+drop procedure test_signal_syntax $$
+create procedure test_signal_syntax()
+begin
+SIGNAL SQLSTATE VALUE '23000';
+end $$
+drop procedure test_signal_syntax $$
+create procedure test_signal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET CLASS_ORIGIN = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+create procedure test_signal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET SUBCLASS_ORIGIN = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+create procedure test_signal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET CONSTRAINT_CATALOG = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+create procedure test_signal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET CONSTRAINT_SCHEMA = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+create procedure test_signal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET CONSTRAINT_NAME = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+create procedure test_signal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET CATALOG_NAME = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+create procedure test_signal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET SCHEMA_NAME = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+create procedure test_signal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET TABLE_NAME = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+create procedure test_signal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET COLUMN_NAME = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+create procedure test_signal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET CURSOR_NAME = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+create procedure test_signal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET MESSAGE_TEXT = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+create procedure test_signal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET MYSQL_ERRNO = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+create procedure test_invalid()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET CLASS_ORIGIN = 'foo', CLASS_ORIGIN = 'bar';
+end $$
+ERROR 42000: Duplicate condition information item 'CLASS_ORIGIN'
+create procedure test_invalid()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET MESSAGE_TEXT = 'foo', MESSAGE_TEXT = 'bar';
+end $$
+ERROR 42000: Duplicate condition information item 'MESSAGE_TEXT'
+create procedure test_invalid()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET MYSQL_ERRNO = 'foo', MYSQL_ERRNO = 'bar';
+end $$
+ERROR 42000: Duplicate condition information item 'MYSQL_ERRNO'
+create procedure test_signal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET
+CLASS_ORIGIN = 'foo',
+SUBCLASS_ORIGIN = 'foo',
+CONSTRAINT_CATALOG = 'foo',
+CONSTRAINT_SCHEMA = 'foo',
+CONSTRAINT_NAME = 'foo',
+CATALOG_NAME = 'foo',
+SCHEMA_NAME = 'foo',
+TABLE_NAME = 'foo',
+COLUMN_NAME = 'foo',
+CURSOR_NAME = 'foo',
+MESSAGE_TEXT = 'foo',
+MYSQL_ERRNO = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+SIGNAL SQLSTATE '00000' $$
+ERROR 42000: Bad SQLSTATE: '00000'
+SIGNAL SQLSTATE '00001' $$
+ERROR 42000: Bad SQLSTATE: '00001'
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '00000';
+end $$
+ERROR 42000: Bad SQLSTATE: '00000'
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '00001';
+end $$
+ERROR 42000: Bad SQLSTATE: '00001'
+#
+# Test conditions information that SIGNAL can not set
+#
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '12345' SET bla_bla = 'foo';
+end $$
+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 'bla_bla = 'foo';
+end' at line 3
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '12345' SET CONDITION_IDENTIFIER = 'foo';
+end $$
+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 'CONDITION_IDENTIFIER = 'foo';
+end' at line 3
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '12345' SET CONDITION_NUMBER = 'foo';
+end $$
+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 'CONDITION_NUMBER = 'foo';
+end' at line 3
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '12345' SET CONNECTION_NAME = 'foo';
+end $$
+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 'CONNECTION_NAME = 'foo';
+end' at line 3
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '12345' SET MESSAGE_LENGTH = 'foo';
+end $$
+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 'MESSAGE_LENGTH = 'foo';
+end' at line 3
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '12345' SET MESSAGE_OCTET_LENGTH = 'foo';
+end $$
+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 'MESSAGE_OCTET_LENGTH = 'foo';
+end' at line 3
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '12345' SET PARAMETER_MODE = 'foo';
+end $$
+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 'PARAMETER_MODE = 'foo';
+end' at line 3
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '12345' SET PARAMETER_NAME = 'foo';
+end $$
+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 'PARAMETER_NAME = 'foo';
+end' at line 3
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '12345' SET PARAMETER_ORDINAL_POSITION = 'foo';
+end $$
+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 'PARAMETER_ORDINAL_POSITION = 'foo';
+end' at line 3
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '12345' SET RETURNED_SQLSTATE = 'foo';
+end $$
+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 'RETURNED_SQLSTATE = 'foo';
+end' at line 3
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '12345' SET ROUTINE_CATALOG = 'foo';
+end $$
+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 'ROUTINE_CATALOG = 'foo';
+end' at line 3
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '12345' SET ROUTINE_NAME = 'foo';
+end $$
+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 'ROUTINE_NAME = 'foo';
+end' at line 3
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '12345' SET ROUTINE_SCHEMA = 'foo';
+end $$
+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 'ROUTINE_SCHEMA = 'foo';
+end' at line 3
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '12345' SET SERVER_NAME = 'foo';
+end $$
+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 'SERVER_NAME = 'foo';
+end' at line 3
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '12345' SET SPECIFIC_NAME = 'foo';
+end $$
+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 'SPECIFIC_NAME = 'foo';
+end' at line 3
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '12345' SET TRIGGER_CATALOG = 'foo';
+end $$
+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 'TRIGGER_CATALOG = 'foo';
+end' at line 3
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '12345' SET TRIGGER_NAME = 'foo';
+end $$
+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 'TRIGGER_NAME = 'foo';
+end' at line 3
+create procedure test_invalid()
+begin
+SIGNAL SQLSTATE '12345' SET TRIGGER_SCHEMA = 'foo';
+end $$
+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 'TRIGGER_SCHEMA = 'foo';
+end' at line 3
+#
+# Test the RESIGNAL syntax
+#
+drop procedure if exists test_invalid;
+drop procedure if exists test_resignal_syntax;
+create procedure test_invalid()
+begin
+RESIGNAL foo;
+end $$
+ERROR 42000: Undefined CONDITION: foo
+create procedure test_resignal_syntax()
+begin
+RESIGNAL;
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_invalid()
+begin
+DECLARE foo CONDITION FOR 1234;
+RESIGNAL foo;
+end $$
+ERROR HY000: SIGNAL/RESIGNAL can only use a CONDITION defined with SQLSTATE
+create procedure test_resignal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+RESIGNAL foo;
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+RESIGNAL SQLSTATE '23000';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+RESIGNAL SQLSTATE VALUE '23000';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+RESIGNAL SET CLASS_ORIGIN = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+RESIGNAL foo SET CLASS_ORIGIN = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+RESIGNAL SET SUBCLASS_ORIGIN = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+RESIGNAL foo SET SUBCLASS_ORIGIN = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+RESIGNAL SET CONSTRAINT_CATALOG = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+RESIGNAL foo SET CONSTRAINT_CATALOG = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+RESIGNAL SET CONSTRAINT_SCHEMA = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+RESIGNAL foo SET CONSTRAINT_SCHEMA = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+RESIGNAL SET CONSTRAINT_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+RESIGNAL foo SET CONSTRAINT_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+RESIGNAL SET CATALOG_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+RESIGNAL foo SET CATALOG_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+RESIGNAL SET SCHEMA_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+RESIGNAL foo SET SCHEMA_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+RESIGNAL SET TABLE_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+RESIGNAL foo SET TABLE_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+RESIGNAL SET COLUMN_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+RESIGNAL foo SET COLUMN_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+RESIGNAL SET CURSOR_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+RESIGNAL foo SET CURSOR_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+RESIGNAL SET MESSAGE_TEXT = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+RESIGNAL foo SET MESSAGE_TEXT = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+RESIGNAL SET MYSQL_ERRNO = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_resignal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+RESIGNAL foo SET MYSQL_ERRNO = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_invalid()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+RESIGNAL foo SET CLASS_ORIGIN = 'foo', CLASS_ORIGIN = 'bar';
+end $$
+ERROR 42000: Duplicate condition information item 'CLASS_ORIGIN'
+create procedure test_invalid()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+RESIGNAL foo SET MESSAGE_TEXT = 'foo', MESSAGE_TEXT = 'bar';
+end $$
+ERROR 42000: Duplicate condition information item 'MESSAGE_TEXT'
+create procedure test_invalid()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+RESIGNAL foo SET MYSQL_ERRNO = 'foo', MYSQL_ERRNO = 'bar';
+end $$
+ERROR 42000: Duplicate condition information item 'MYSQL_ERRNO'
+create procedure test_resignal_syntax()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+RESIGNAL foo SET
+CLASS_ORIGIN = 'foo',
+SUBCLASS_ORIGIN = 'foo',
+CONSTRAINT_CATALOG = 'foo',
+CONSTRAINT_SCHEMA = 'foo',
+CONSTRAINT_NAME = 'foo',
+CATALOG_NAME = 'foo',
+SCHEMA_NAME = 'foo',
+TABLE_NAME = 'foo',
+COLUMN_NAME = 'foo',
+CURSOR_NAME = 'foo',
+MESSAGE_TEXT = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+create procedure test_invalid()
+begin
+RESIGNAL SQLSTATE '00000';
+end $$
+ERROR 42000: Bad SQLSTATE: '00000'
+create procedure test_invalid()
+begin
+RESIGNAL SQLSTATE '00001';
+end $$
+ERROR 42000: Bad SQLSTATE: '00001'
+#
+# PART 2: non preparable statements
+#
+prepare stmt from 'SIGNAL SQLSTATE \'23000\'';
+ERROR HY000: This command is not supported in the prepared statement protocol yet
+prepare stmt from 'RESIGNAL SQLSTATE \'23000\'';
+ERROR HY000: This command is not supported in the prepared statement protocol yet
+#
+# PART 3: runtime execution
+#
+drop procedure if exists test_signal;
+drop procedure if exists test_resignal;
+drop table if exists t_warn;
+drop table if exists t_cursor;
+create table t_warn(a integer(2));
+create table t_cursor(a integer);
+#
+# SIGNAL can also appear in a query
+#
+SIGNAL foo;
+ERROR 42000: Undefined CONDITION: foo
+SIGNAL SQLSTATE '01000';
+Warnings:
+Warning 1642 Unhandled user-defined warning condition
+SIGNAL SQLSTATE '02000';
+ERROR 02000: Unhandled user-defined not found condition
+SIGNAL SQLSTATE '23000';
+ERROR 23000: Unhandled user-defined exception condition
+SIGNAL SQLSTATE VALUE '23000';
+ERROR 23000: Unhandled user-defined exception condition
+SIGNAL SQLSTATE 'HY000' SET MYSQL_ERRNO = 65536;
+ERROR 42000: Variable 'MYSQL_ERRNO' can't be set to the value of '65536'
+SIGNAL SQLSTATE 'HY000' SET MYSQL_ERRNO = 99999;
+ERROR 42000: Variable 'MYSQL_ERRNO' can't be set to the value of '99999'
+SIGNAL SQLSTATE 'HY000' SET MYSQL_ERRNO = 4294967295;
+ERROR 42000: Variable 'MYSQL_ERRNO' can't be set to the value of '4294967295'
+SIGNAL SQLSTATE 'HY000' SET MYSQL_ERRNO = 0;
+ERROR 42000: Variable 'MYSQL_ERRNO' can't be set to the value of '0'
+SIGNAL SQLSTATE 'HY000' SET MYSQL_ERRNO = -1;
+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 '-1' at line 1
+SIGNAL SQLSTATE 'HY000' SET MYSQL_ERRNO = 65535;
+ERROR HY000: Unhandled user-defined exception condition
+#
+# RESIGNAL can also appear in a query
+#
+RESIGNAL;
+ERROR 0K000: RESIGNAL when handler not active
+RESIGNAL foo;
+ERROR 42000: Undefined CONDITION: foo
+RESIGNAL SQLSTATE '12345';
+ERROR 0K000: RESIGNAL when handler not active
+RESIGNAL SQLSTATE VALUE '12345';
+ERROR 0K000: RESIGNAL when handler not active
+#
+# Different kind of SIGNAL conditions
+#
+create procedure test_signal()
+begin
+# max range
+DECLARE foo CONDITION FOR SQLSTATE 'AABBB';
+SIGNAL foo SET MYSQL_ERRNO = 65535;
+end $$
+call test_signal() $$
+ERROR AABBB: Unhandled user-defined exception condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+# max range
+DECLARE foo CONDITION FOR SQLSTATE 'AABBB';
+SIGNAL foo SET MYSQL_ERRNO = 65536;
+end $$
+call test_signal() $$
+ERROR 42000: Variable 'MYSQL_ERRNO' can't be set to the value of '65536'
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+# Error
+DECLARE foo CONDITION FOR SQLSTATE '99999';
+SIGNAL foo SET MYSQL_ERRNO = 9999;
+end $$
+call test_signal() $$
+ERROR 99999: Unhandled user-defined exception condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+# warning
+DECLARE too_few_records CONDITION FOR SQLSTATE '01000';
+SIGNAL too_few_records SET MYSQL_ERRNO = 1261;
+end $$
+call test_signal() $$
+Warnings:
+Warning 1261 Unhandled user-defined warning condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+# Not found
+DECLARE sp_fetch_no_data CONDITION FOR SQLSTATE '02000';
+SIGNAL sp_fetch_no_data SET MYSQL_ERRNO = 1329;
+end $$
+call test_signal() $$
+ERROR 02000: Unhandled user-defined not found condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+# Error
+DECLARE sp_cursor_already_open CONDITION FOR SQLSTATE '24000';
+SIGNAL sp_cursor_already_open SET MYSQL_ERRNO = 1325;
+end $$
+call test_signal() $$
+ERROR 24000: Unhandled user-defined exception condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+# Severe error
+DECLARE lock_deadlock CONDITION FOR SQLSTATE '40001';
+SIGNAL lock_deadlock SET MYSQL_ERRNO = 1213;
+end $$
+call test_signal() $$
+ERROR 40001: Unhandled user-defined exception condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+# Unknown -> error
+DECLARE foo CONDITION FOR SQLSTATE "99999";
+SIGNAL foo;
+end $$
+call test_signal() $$
+ERROR 99999: Unhandled user-defined exception condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+# warning, no subclass
+DECLARE warn CONDITION FOR SQLSTATE "01000";
+SIGNAL warn;
+end $$
+call test_signal() $$
+Warnings:
+Warning 1642 Unhandled user-defined warning condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+# warning, with subclass
+DECLARE warn CONDITION FOR SQLSTATE "01123";
+SIGNAL warn;
+end $$
+call test_signal() $$
+Warnings:
+Warning 1642 Unhandled user-defined warning condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+# Not found, no subclass
+DECLARE not_found CONDITION FOR SQLSTATE "02000";
+SIGNAL not_found;
+end $$
+call test_signal() $$
+ERROR 02000: Unhandled user-defined not found condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+# Not found, with subclass
+DECLARE not_found CONDITION FOR SQLSTATE "02XXX";
+SIGNAL not_found;
+end $$
+call test_signal() $$
+ERROR 02XXX: Unhandled user-defined not found condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+# Error, no subclass
+DECLARE error CONDITION FOR SQLSTATE "12000";
+SIGNAL error;
+end $$
+call test_signal() $$
+ERROR 12000: Unhandled user-defined exception condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+# Error, with subclass
+DECLARE error CONDITION FOR SQLSTATE "12ABC";
+SIGNAL error;
+end $$
+call test_signal() $$
+ERROR 12ABC: Unhandled user-defined exception condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+# Severe error, no subclass
+DECLARE error CONDITION FOR SQLSTATE "40000";
+SIGNAL error;
+end $$
+call test_signal() $$
+ERROR 40000: Unhandled user-defined exception condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+# Severe error, with subclass
+DECLARE error CONDITION FOR SQLSTATE "40001";
+SIGNAL error;
+end $$
+call test_signal() $$
+ERROR 40001: Unhandled user-defined exception condition
+drop procedure test_signal $$
+#
+# Test the scope of condition
+#
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '99999';
+begin
+DECLARE foo CONDITION FOR 8888;
+end;
+SIGNAL foo SET MYSQL_ERRNO=9999; /* outer */
+end $$
+call test_signal() $$
+ERROR 99999: Unhandled user-defined exception condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR 9999;
+begin
+DECLARE foo CONDITION FOR SQLSTATE '88888';
+SIGNAL foo SET MYSQL_ERRNO=8888; /* inner */
+end;
+end $$
+call test_signal() $$
+ERROR 88888: Unhandled user-defined exception condition
+drop procedure test_signal $$
+#
+# Test SET MYSQL_ERRNO
+#
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '99999';
+SIGNAL foo SET MYSQL_ERRNO = 1111;
+end $$
+call test_signal() $$
+ERROR 99999: Unhandled user-defined exception condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE warn CONDITION FOR SQLSTATE "01000";
+SIGNAL warn SET MYSQL_ERRNO = 1111;
+end $$
+call test_signal() $$
+Warnings:
+Warning 1111 Unhandled user-defined warning condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE not_found CONDITION FOR SQLSTATE "02000";
+SIGNAL not_found SET MYSQL_ERRNO = 1111;
+end $$
+call test_signal() $$
+ERROR 02000: Unhandled user-defined not found condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE error CONDITION FOR SQLSTATE "55000";
+SIGNAL error SET MYSQL_ERRNO = 1111;
+end $$
+call test_signal() $$
+ERROR 55000: Unhandled user-defined exception condition
+drop procedure test_signal $$
+#
+# Test SET MESSAGE_TEXT
+#
+SIGNAL SQLSTATE '77777' SET MESSAGE_TEXT='' $$
+ERROR 77777:
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '77777';
+SIGNAL foo SET
+MESSAGE_TEXT = "",
+MYSQL_ERRNO=5678;
+end $$
+call test_signal() $$
+ERROR 77777:
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '99999';
+SIGNAL foo SET
+MESSAGE_TEXT = "Something bad happened",
+MYSQL_ERRNO=9999;
+end $$
+call test_signal() $$
+ERROR 99999: Something bad happened
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE warn CONDITION FOR SQLSTATE "01000";
+SIGNAL warn SET MESSAGE_TEXT = "Something bad happened";
+end $$
+call test_signal() $$
+Warnings:
+Warning 1642 Something bad happened
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE not_found CONDITION FOR SQLSTATE "02000";
+SIGNAL not_found SET MESSAGE_TEXT = "Something bad happened";
+end $$
+call test_signal() $$
+ERROR 02000: Something bad happened
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE error CONDITION FOR SQLSTATE "55000";
+SIGNAL error SET MESSAGE_TEXT = "Something bad happened";
+end $$
+call test_signal() $$
+ERROR 55000: Something bad happened
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE something CONDITION FOR SQLSTATE "01000";
+SIGNAL something SET MESSAGE_TEXT = _utf8 "This is a UTF8 text";
+end $$
+call test_signal() $$
+Warnings:
+Warning 1642 This is a UTF8 text
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE something CONDITION FOR SQLSTATE "01000";
+SIGNAL something SET MESSAGE_TEXT = "";
+end $$
+call test_signal() $$
+Warnings:
+Warning 1642
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE warn CONDITION FOR SQLSTATE "01111";
+SIGNAL warn SET MESSAGE_TEXT = "á a";
+end $$
+call test_signal() $$
+Warnings:
+Warning 1642 á a
+show warnings $$
+Level Code Message
+Warning 1642 á a
+drop procedure test_signal $$
+#
+# Test SET complex expressions
+#
+create procedure test_signal()
+begin
+DECLARE error CONDITION FOR SQLSTATE '99999';
+SIGNAL error SET
+MYSQL_ERRNO = NULL;
+end $$
+call test_signal() $$
+ERROR 42000: Variable 'MYSQL_ERRNO' can't be set to the value of 'NULL'
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE error CONDITION FOR SQLSTATE '99999';
+SIGNAL error SET
+CLASS_ORIGIN = NULL;
+end $$
+call test_signal() $$
+ERROR 42000: Variable 'CLASS_ORIGIN' can't be set to the value of 'NULL'
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE error CONDITION FOR SQLSTATE '99999';
+SIGNAL error SET
+SUBCLASS_ORIGIN = NULL;
+end $$
+call test_signal() $$
+ERROR 42000: Variable 'SUBCLASS_ORIGIN' can't be set to the value of 'NULL'
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE error CONDITION FOR SQLSTATE '99999';
+SIGNAL error SET
+CONSTRAINT_CATALOG = NULL;
+end $$
+call test_signal() $$
+ERROR 42000: Variable 'CONSTRAINT_CATALOG' can't be set to the value of 'NULL'
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE error CONDITION FOR SQLSTATE '99999';
+SIGNAL error SET
+CONSTRAINT_SCHEMA = NULL;
+end $$
+call test_signal() $$
+ERROR 42000: Variable 'CONSTRAINT_SCHEMA' can't be set to the value of 'NULL'
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE error CONDITION FOR SQLSTATE '99999';
+SIGNAL error SET
+CONSTRAINT_NAME = NULL;
+end $$
+call test_signal() $$
+ERROR 42000: Variable 'CONSTRAINT_NAME' can't be set to the value of 'NULL'
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE error CONDITION FOR SQLSTATE '99999';
+SIGNAL error SET
+CATALOG_NAME = NULL;
+end $$
+call test_signal() $$
+ERROR 42000: Variable 'CATALOG_NAME' can't be set to the value of 'NULL'
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE error CONDITION FOR SQLSTATE '99999';
+SIGNAL error SET
+SCHEMA_NAME = NULL;
+end $$
+call test_signal() $$
+ERROR 42000: Variable 'SCHEMA_NAME' can't be set to the value of 'NULL'
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE error CONDITION FOR SQLSTATE '99999';
+SIGNAL error SET
+TABLE_NAME = NULL;
+end $$
+call test_signal() $$
+ERROR 42000: Variable 'TABLE_NAME' can't be set to the value of 'NULL'
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE error CONDITION FOR SQLSTATE '99999';
+SIGNAL error SET
+COLUMN_NAME = NULL;
+end $$
+call test_signal() $$
+ERROR 42000: Variable 'COLUMN_NAME' can't be set to the value of 'NULL'
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE error CONDITION FOR SQLSTATE '99999';
+SIGNAL error SET
+CURSOR_NAME = NULL;
+end $$
+call test_signal() $$
+ERROR 42000: Variable 'CURSOR_NAME' can't be set to the value of 'NULL'
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE error CONDITION FOR SQLSTATE '99999';
+SIGNAL error SET
+MESSAGE_TEXT = NULL;
+end $$
+call test_signal() $$
+ERROR 42000: Variable 'MESSAGE_TEXT' can't be set to the value of 'NULL'
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE something CONDITION FOR SQLSTATE '99999';
+DECLARE message_text VARCHAR(64) DEFAULT "Local string variable";
+DECLARE sqlcode INTEGER DEFAULT 1234;
+SIGNAL something SET
+MESSAGE_TEXT = message_text,
+MYSQL_ERRNO = sqlcode;
+end $$
+call test_signal() $$
+ERROR 99999: Local string variable
+drop procedure test_signal $$
+create procedure test_signal(message_text VARCHAR(64), sqlcode INTEGER)
+begin
+DECLARE something CONDITION FOR SQLSTATE "12345";
+SIGNAL something SET
+MESSAGE_TEXT = message_text,
+MYSQL_ERRNO = sqlcode;
+end $$
+call test_signal("Parameter string", NULL) $$
+ERROR 42000: Variable 'MYSQL_ERRNO' can't be set to the value of 'NULL'
+call test_signal(NULL, 1234) $$
+ERROR 42000: Variable 'MESSAGE_TEXT' can't be set to the value of 'NULL'
+call test_signal("Parameter string", 5678) $$
+ERROR 12345: Parameter string
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE something CONDITION FOR SQLSTATE "AABBB";
+SIGNAL something SET
+MESSAGE_TEXT = @message_text,
+MYSQL_ERRNO = @sqlcode;
+end $$
+call test_signal() $$
+ERROR 42000: Variable 'MESSAGE_TEXT' can't be set to the value of 'NULL'
+set @sqlcode= 12 $$
+call test_signal() $$
+ERROR 42000: Variable 'MESSAGE_TEXT' can't be set to the value of 'NULL'
+set @message_text= "User variable" $$
+call test_signal() $$
+ERROR AABBB: User variable
+drop procedure test_signal $$
+create procedure test_invalid()
+begin
+DECLARE something CONDITION FOR SQLSTATE "AABBB";
+SIGNAL something SET
+MESSAGE_TEXT = @message_text := 'illegal',
+MYSQL_ERRNO = @sqlcode := 1234;
+end $$
+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 '
+MYSQL_ERRNO = @sqlcode := 1234;
+end' at line 5
+create procedure test_signal()
+begin
+DECLARE aaa VARCHAR(64);
+DECLARE bbb VARCHAR(64);
+DECLARE ccc VARCHAR(64);
+DECLARE ddd VARCHAR(64);
+DECLARE eee VARCHAR(64);
+DECLARE fff VARCHAR(64);
+DECLARE ggg VARCHAR(64);
+DECLARE hhh VARCHAR(64);
+DECLARE iii VARCHAR(64);
+DECLARE jjj VARCHAR(64);
+DECLARE kkk VARCHAR(64);
+DECLARE warn CONDITION FOR SQLSTATE "01234";
+set aaa= repeat("A", 64);
+set bbb= repeat("B", 64);
+set ccc= repeat("C", 64);
+set ddd= repeat("D", 64);
+set eee= repeat("E", 64);
+set fff= repeat("F", 64);
+set ggg= repeat("G", 64);
+set hhh= repeat("H", 64);
+set iii= repeat("I", 64);
+set jjj= repeat("J", 64);
+set kkk= repeat("K", 64);
+SIGNAL warn SET
+CLASS_ORIGIN = aaa,
+SUBCLASS_ORIGIN = bbb,
+CONSTRAINT_CATALOG = ccc,
+CONSTRAINT_SCHEMA = ddd,
+CONSTRAINT_NAME = eee,
+CATALOG_NAME = fff,
+SCHEMA_NAME = ggg,
+TABLE_NAME = hhh,
+COLUMN_NAME = iii,
+CURSOR_NAME = jjj,
+MESSAGE_TEXT = kkk,
+MYSQL_ERRNO = 65535;
+end $$
+call test_signal() $$
+Warnings:
+Warning 65535 KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE warn CONDITION FOR SQLSTATE "01234";
+SIGNAL warn SET
+MYSQL_ERRNO = 999999999999999999999999999999999999999999999999999;
+end $$
+call test_signal() $$
+ERROR 42000: Variable 'MYSQL_ERRNO' can't be set to the value of '999999999999999999999999999999999999999999999999999'
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE aaax VARCHAR(65);
+DECLARE bbbx VARCHAR(65);
+DECLARE cccx VARCHAR(65);
+DECLARE dddx VARCHAR(65);
+DECLARE eeex VARCHAR(65);
+DECLARE fffx VARCHAR(65);
+DECLARE gggx VARCHAR(65);
+DECLARE hhhx VARCHAR(65);
+DECLARE iiix VARCHAR(65);
+DECLARE jjjx VARCHAR(65);
+DECLARE kkkx VARCHAR(65);
+DECLARE lllx VARCHAR(129);
+DECLARE warn CONDITION FOR SQLSTATE "01234";
+set aaax= concat(repeat("A", 64), "X");
+set bbbx= concat(repeat("B", 64), "X");
+set cccx= concat(repeat("C", 64), "X");
+set dddx= concat(repeat("D", 64), "X");
+set eeex= concat(repeat("E", 64), "X");
+set fffx= concat(repeat("F", 64), "X");
+set gggx= concat(repeat("G", 64), "X");
+set hhhx= concat(repeat("H", 64), "X");
+set iiix= concat(repeat("I", 64), "X");
+set jjjx= concat(repeat("J", 64), "X");
+set kkkx= concat(repeat("K", 64), "X");
+set lllx= concat(repeat("1", 100),
+repeat("2", 20),
+repeat("8", 8),
+"X");
+SIGNAL warn SET
+CLASS_ORIGIN = aaax,
+SUBCLASS_ORIGIN = bbbx,
+CONSTRAINT_CATALOG = cccx,
+CONSTRAINT_SCHEMA = dddx,
+CONSTRAINT_NAME = eeex,
+CATALOG_NAME = fffx,
+SCHEMA_NAME = gggx,
+TABLE_NAME = hhhx,
+COLUMN_NAME = iiix,
+CURSOR_NAME = jjjx,
+MESSAGE_TEXT = lllx,
+MYSQL_ERRNO = 10000;
+end $$
+call test_signal() $$
+Warnings:
+Warning 1647 Data truncated for condition item 'CLASS_ORIGIN'
+Warning 1647 Data truncated for condition item 'SUBCLASS_ORIGIN'
+Warning 1647 Data truncated for condition item 'CONSTRAINT_CATALOG'
+Warning 1647 Data truncated for condition item 'CONSTRAINT_SCHEMA'
+Warning 1647 Data truncated for condition item 'CONSTRAINT_NAME'
+Warning 1647 Data truncated for condition item 'CATALOG_NAME'
+Warning 1647 Data truncated for condition item 'SCHEMA_NAME'
+Warning 1647 Data truncated for condition item 'TABLE_NAME'
+Warning 1647 Data truncated for condition item 'COLUMN_NAME'
+Warning 1647 Data truncated for condition item 'CURSOR_NAME'
+Warning 1647 Data truncated for condition item 'MESSAGE_TEXT'
+Warning 10000 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112222222222222222222288888888
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE warn CONDITION FOR SQLSTATE "01234";
+DECLARE CONTINUE HANDLER for SQLSTATE "01234"
+ begin
+select "Caught by SQLSTATE";
+end;
+SIGNAL warn SET
+MESSAGE_TEXT = "Raising a warning",
+MYSQL_ERRNO = 1012;
+end $$
+call test_signal() $$
+Caught by SQLSTATE
+Caught by SQLSTATE
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE warn CONDITION FOR SQLSTATE "01234";
+DECLARE CONTINUE HANDLER for 1012
+begin
+select "Caught by number";
+end;
+SIGNAL warn SET
+MESSAGE_TEXT = "Raising a warning",
+MYSQL_ERRNO = 1012;
+end $$
+call test_signal() $$
+Caught by number
+Caught by number
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE warn CONDITION FOR SQLSTATE "01234";
+DECLARE CONTINUE HANDLER for SQLWARNING
+begin
+select "Caught by SQLWARNING";
+end;
+SIGNAL warn SET
+MESSAGE_TEXT = "Raising a warning",
+MYSQL_ERRNO = 1012;
+end $$
+call test_signal() $$
+Caught by SQLWARNING
+Caught by SQLWARNING
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE not_found CONDITION FOR SQLSTATE "02ABC";
+DECLARE CONTINUE HANDLER for SQLSTATE "02ABC"
+ begin
+select "Caught by SQLSTATE";
+end;
+SIGNAL not_found SET
+MESSAGE_TEXT = "Raising a not found",
+MYSQL_ERRNO = 1012;
+end $$
+call test_signal() $$
+Caught by SQLSTATE
+Caught by SQLSTATE
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE not_found CONDITION FOR SQLSTATE "02ABC";
+DECLARE CONTINUE HANDLER for 1012
+begin
+select "Caught by number";
+end;
+SIGNAL not_found SET
+MESSAGE_TEXT = "Raising a not found",
+MYSQL_ERRNO = 1012;
+end $$
+call test_signal() $$
+Caught by number
+Caught by number
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE not_found CONDITION FOR SQLSTATE "02ABC";
+DECLARE CONTINUE HANDLER for NOT FOUND
+begin
+select "Caught by NOT FOUND";
+end;
+SIGNAL not_found SET
+MESSAGE_TEXT = "Raising a not found",
+MYSQL_ERRNO = 1012;
+end $$
+call test_signal() $$
+Caught by NOT FOUND
+Caught by NOT FOUND
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE error CONDITION FOR SQLSTATE "55555";
+DECLARE CONTINUE HANDLER for SQLSTATE "55555"
+ begin
+select "Caught by SQLSTATE";
+end;
+SIGNAL error SET
+MESSAGE_TEXT = "Raising an error",
+MYSQL_ERRNO = 1012;
+end $$
+call test_signal() $$
+Caught by SQLSTATE
+Caught by SQLSTATE
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE error CONDITION FOR SQLSTATE "55555";
+DECLARE CONTINUE HANDLER for 1012
+begin
+select "Caught by number";
+end;
+SIGNAL error SET
+MESSAGE_TEXT = "Raising an error",
+MYSQL_ERRNO = 1012;
+end $$
+call test_signal() $$
+Caught by number
+Caught by number
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE error CONDITION FOR SQLSTATE "55555";
+DECLARE CONTINUE HANDLER for SQLEXCEPTION
+begin
+select "Caught by SQLEXCEPTION";
+end;
+SIGNAL error SET
+MESSAGE_TEXT = "Raising an error",
+MYSQL_ERRNO = 1012;
+end $$
+call test_signal() $$
+Caught by SQLEXCEPTION
+Caught by SQLEXCEPTION
+drop procedure test_signal $$
+#
+# Test where SIGNAL can be used
+#
+create function test_signal_func() returns integer
+begin
+DECLARE warn CONDITION FOR SQLSTATE "01XXX";
+SIGNAL warn SET
+MESSAGE_TEXT = "This function SIGNAL a warning",
+MYSQL_ERRNO = 1012;
+return 5;
+end $$
+select test_signal_func() $$
+test_signal_func()
+5
+Warnings:
+Warning 1012 This function SIGNAL a warning
+drop function test_signal_func $$
+create function test_signal_func() returns integer
+begin
+DECLARE not_found CONDITION FOR SQLSTATE "02XXX";
+SIGNAL not_found SET
+MESSAGE_TEXT = "This function SIGNAL not found",
+MYSQL_ERRNO = 1012;
+return 5;
+end $$
+select test_signal_func() $$
+ERROR 02XXX: This function SIGNAL not found
+drop function test_signal_func $$
+create function test_signal_func() returns integer
+begin
+DECLARE error CONDITION FOR SQLSTATE "50000";
+SIGNAL error SET
+MESSAGE_TEXT = "This function SIGNAL an error",
+MYSQL_ERRNO = 1012;
+return 5;
+end $$
+select test_signal_func() $$
+ERROR 50000: This function SIGNAL an error
+drop function test_signal_func $$
+drop table if exists t1 $$
+create table t1 (a integer) $$
+create trigger t1_ai after insert on t1 for each row
+begin
+DECLARE msg VARCHAR(128);
+DECLARE warn CONDITION FOR SQLSTATE "01XXX";
+set msg= concat("This trigger SIGNAL a warning, a=", NEW.a);
+SIGNAL warn SET
+MESSAGE_TEXT = msg,
+MYSQL_ERRNO = 1012;
+end $$
+insert into t1 values (1), (2) $$
+Warnings:
+Warning 1012 This trigger SIGNAL a warning, a=1
+Warning 1012 This trigger SIGNAL a warning, a=2
+drop trigger t1_ai $$
+create trigger t1_ai after insert on t1 for each row
+begin
+DECLARE msg VARCHAR(128);
+DECLARE not_found CONDITION FOR SQLSTATE "02XXX";
+set msg= concat("This trigger SIGNAL a not found, a=", NEW.a);
+SIGNAL not_found SET
+MESSAGE_TEXT = msg,
+MYSQL_ERRNO = 1012;
+end $$
+insert into t1 values (3), (4) $$
+ERROR 02XXX: This trigger SIGNAL a not found, a=3
+drop trigger t1_ai $$
+create trigger t1_ai after insert on t1 for each row
+begin
+DECLARE msg VARCHAR(128);
+DECLARE error CONDITION FOR SQLSTATE "03XXX";
+set msg= concat("This trigger SIGNAL an error, a=", NEW.a);
+SIGNAL error SET
+MESSAGE_TEXT = msg,
+MYSQL_ERRNO = 1012;
+end $$
+insert into t1 values (5), (6) $$
+ERROR 03XXX: This trigger SIGNAL an error, a=5
+drop table t1 $$
+create table t1 (errno integer, msg varchar(128)) $$
+create trigger t1_ai after insert on t1 for each row
+begin
+DECLARE warn CONDITION FOR SQLSTATE "01XXX";
+SIGNAL warn SET
+MESSAGE_TEXT = NEW.msg,
+MYSQL_ERRNO = NEW.errno;
+end $$
+insert into t1 set errno=1012, msg='Warning message 1 in trigger' $$
+Warnings:
+Warning 1012 Warning message 1 in trigger
+insert into t1 set errno=1013, msg='Warning message 2 in trigger' $$
+Warnings:
+Warning 1013 Warning message 2 in trigger
+drop table t1 $$
+drop table if exists t1 $$
+drop procedure if exists p1 $$
+drop function if exists f1 $$
+create table t1 (s1 int) $$
+insert into t1 values (1) $$
+create procedure p1()
+begin
+declare a int;
+declare c cursor for select f1() from t1;
+declare continue handler for sqlstate '03000'
+ select "caught 03000";
+declare continue handler for 1326
+select "caught cursor is not open";
+select "Before open";
+open c;
+select "Before fetch";
+fetch c into a;
+select "Before close";
+close c;
+end $$
+create function f1() returns int
+begin
+signal sqlstate '03000';
+return 5;
+end $$
+drop table t1 $$
+drop procedure p1 $$
+drop function f1 $$
+#
+# Test the RESIGNAL runtime
+#
+create procedure test_resignal()
+begin
+DECLARE warn CONDITION FOR SQLSTATE "01234";
+DECLARE CONTINUE HANDLER for 1012
+begin
+select "before RESIGNAL";
+RESIGNAL;
+select "after RESIGNAL";
+end;
+SIGNAL warn SET
+MESSAGE_TEXT = "Raising a warning",
+MYSQL_ERRNO = 1012;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+after RESIGNAL
+after RESIGNAL
+Warnings:
+Warning 1012 Raising a warning
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE not_found CONDITION FOR SQLSTATE "02222";
+DECLARE CONTINUE HANDLER for 1012
+begin
+select "before RESIGNAL";
+RESIGNAL;
+select "after RESIGNAL";
+end;
+SIGNAL not_found SET
+MESSAGE_TEXT = "Raising a not found",
+MYSQL_ERRNO = 1012;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 02222: Raising a not found
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE error CONDITION FOR SQLSTATE "55555";
+DECLARE CONTINUE HANDLER for 1012
+begin
+select "before RESIGNAL";
+RESIGNAL;
+select "after RESIGNAL";
+end;
+SIGNAL error SET
+MESSAGE_TEXT = "Raising an error",
+MYSQL_ERRNO = 1012;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 55555: Raising an error
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE CONTINUE HANDLER for sqlwarning
+begin
+select "before RESIGNAL";
+RESIGNAL;
+select "after RESIGNAL";
+end;
+insert into t_warn set a= 9999999999999999;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+after RESIGNAL
+after RESIGNAL
+Warnings:
+Warning 1264 Out of range value for column 'a' at row 1
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE x integer;
+DECLARE c cursor for select * from t_cursor;
+DECLARE CONTINUE HANDLER for not found
+begin
+select "before RESIGNAL";
+RESIGNAL;
+select "after RESIGNAL";
+end;
+open c;
+fetch c into x;
+close c;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 02000: No data - zero rows fetched, selected, or processed
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE CONTINUE HANDLER for sqlexception
+begin
+select "before RESIGNAL";
+RESIGNAL;
+select "after RESIGNAL";
+end;
+drop table no_such_table;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 42S02: Unknown table 'no_such_table'
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE warn CONDITION FOR SQLSTATE "01234";
+DECLARE CONTINUE HANDLER for 1012
+begin
+select "before RESIGNAL";
+RESIGNAL SET
+MESSAGE_TEXT = "RESIGNAL of a warning",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+SIGNAL warn SET
+MESSAGE_TEXT = "Raising a warning",
+MYSQL_ERRNO = 1012;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+after RESIGNAL
+after RESIGNAL
+Warnings:
+Warning 5555 RESIGNAL of a warning
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE not_found CONDITION FOR SQLSTATE "02111";
+DECLARE CONTINUE HANDLER for 1012
+begin
+select "before RESIGNAL";
+RESIGNAL SET
+MESSAGE_TEXT = "RESIGNAL of a not found",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+SIGNAL not_found SET
+MESSAGE_TEXT = "Raising a not found",
+MYSQL_ERRNO = 1012;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 02111: RESIGNAL of a not found
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE error CONDITION FOR SQLSTATE "33333";
+DECLARE CONTINUE HANDLER for 1012
+begin
+select "before RESIGNAL";
+RESIGNAL SET
+MESSAGE_TEXT = "RESIGNAL of an error",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+SIGNAL error SET
+MESSAGE_TEXT = "Raising an error",
+MYSQL_ERRNO = 1012;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 33333: RESIGNAL of an error
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE CONTINUE HANDLER for sqlwarning
+begin
+select "before RESIGNAL";
+RESIGNAL SET
+MESSAGE_TEXT = "RESIGNAL of a warning",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+insert into t_warn set a= 9999999999999999;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+after RESIGNAL
+after RESIGNAL
+Warnings:
+Warning 5555 RESIGNAL of a warning
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE x integer;
+DECLARE c cursor for select * from t_cursor;
+DECLARE CONTINUE HANDLER for not found
+begin
+select "before RESIGNAL";
+RESIGNAL SET
+MESSAGE_TEXT = "RESIGNAL of not found",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+open c;
+fetch c into x;
+close c;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 02000: RESIGNAL of not found
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE CONTINUE HANDLER for sqlexception
+begin
+select "before RESIGNAL";
+RESIGNAL SET
+MESSAGE_TEXT = "RESIGNAL of an error",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+drop table no_such_table;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 42S02: RESIGNAL of an error
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE warn CONDITION FOR SQLSTATE "01111";
+DECLARE CONTINUE HANDLER for 1012
+begin
+select "before RESIGNAL";
+RESIGNAL SQLSTATE "01222" SET
+MESSAGE_TEXT = "RESIGNAL to warning",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+SIGNAL warn SET
+MESSAGE_TEXT = "Raising a warning",
+MYSQL_ERRNO = 1012;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+after RESIGNAL
+after RESIGNAL
+Warnings:
+Warning 1012 Raising a warning
+Warning 5555 RESIGNAL to warning
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE warn CONDITION FOR SQLSTATE "01111";
+DECLARE CONTINUE HANDLER for 1012
+begin
+select "before RESIGNAL";
+RESIGNAL SQLSTATE "02222" SET
+MESSAGE_TEXT = "RESIGNAL to not found",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+SIGNAL warn SET
+MESSAGE_TEXT = "Raising a warning",
+MYSQL_ERRNO = 1012;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 02222: RESIGNAL to not found
+show warnings $$
+Level Code Message
+Warning 1012 Raising a warning
+Error 5555 RESIGNAL to not found
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE warn CONDITION FOR SQLSTATE "01111";
+DECLARE CONTINUE HANDLER for 1012
+begin
+select "before RESIGNAL";
+RESIGNAL SQLSTATE "33333" SET
+MESSAGE_TEXT = "RESIGNAL to error",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+SIGNAL warn SET
+MESSAGE_TEXT = "Raising a warning",
+MYSQL_ERRNO = 1012;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 33333: RESIGNAL to error
+show warnings $$
+Level Code Message
+Warning 1012 Raising a warning
+Error 5555 RESIGNAL to error
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE not_found CONDITION FOR SQLSTATE "02ABC";
+DECLARE CONTINUE HANDLER for 1012
+begin
+select "before RESIGNAL";
+RESIGNAL SQLSTATE "01222" SET
+MESSAGE_TEXT = "RESIGNAL to warning",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+SIGNAL not_found SET
+MESSAGE_TEXT = "Raising a not found",
+MYSQL_ERRNO = 1012;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+after RESIGNAL
+after RESIGNAL
+Warnings:
+Error 1012 Raising a not found
+Warning 5555 RESIGNAL to warning
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE not_found CONDITION FOR SQLSTATE "02ABC";
+DECLARE CONTINUE HANDLER for 1012
+begin
+select "before RESIGNAL";
+RESIGNAL SQLSTATE "02222" SET
+MESSAGE_TEXT = "RESIGNAL to not found",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+SIGNAL not_found SET
+MESSAGE_TEXT = "Raising a not found",
+MYSQL_ERRNO = 1012;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 02222: RESIGNAL to not found
+show warnings $$
+Level Code Message
+Error 1012 Raising a not found
+Error 5555 RESIGNAL to not found
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE not_found CONDITION FOR SQLSTATE "02ABC";
+DECLARE CONTINUE HANDLER for 1012
+begin
+select "before RESIGNAL";
+RESIGNAL SQLSTATE "33333" SET
+MESSAGE_TEXT = "RESIGNAL to error",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+SIGNAL not_found SET
+MESSAGE_TEXT = "Raising a not found",
+MYSQL_ERRNO = 1012;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 33333: RESIGNAL to error
+show warnings $$
+Level Code Message
+Error 1012 Raising a not found
+Error 5555 RESIGNAL to error
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE error CONDITION FOR SQLSTATE "AAAAA";
+DECLARE CONTINUE HANDLER for 1012
+begin
+select "before RESIGNAL";
+RESIGNAL SQLSTATE "01222" SET
+MESSAGE_TEXT = "RESIGNAL to warning",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+SIGNAL error SET
+MESSAGE_TEXT = "Raising an error",
+MYSQL_ERRNO = 1012;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+after RESIGNAL
+after RESIGNAL
+Warnings:
+Error 1012 Raising an error
+Warning 5555 RESIGNAL to warning
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE error CONDITION FOR SQLSTATE "AAAAA";
+DECLARE CONTINUE HANDLER for 1012
+begin
+select "before RESIGNAL";
+RESIGNAL SQLSTATE "02222" SET
+MESSAGE_TEXT = "RESIGNAL to not found",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+SIGNAL error SET
+MESSAGE_TEXT = "Raising an error",
+MYSQL_ERRNO = 1012;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 02222: RESIGNAL to not found
+show warnings $$
+Level Code Message
+Error 1012 Raising an error
+Error 5555 RESIGNAL to not found
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE error CONDITION FOR SQLSTATE "AAAAA";
+DECLARE CONTINUE HANDLER for 1012
+begin
+select "before RESIGNAL";
+RESIGNAL SQLSTATE "33333" SET
+MESSAGE_TEXT = "RESIGNAL to error",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+SIGNAL error SET
+MESSAGE_TEXT = "Raising an error",
+MYSQL_ERRNO = 1012;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 33333: RESIGNAL to error
+show warnings $$
+Level Code Message
+Error 1012 Raising an error
+Error 5555 RESIGNAL to error
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE CONTINUE HANDLER for sqlwarning
+begin
+select "before RESIGNAL";
+RESIGNAL SQLSTATE "01111" SET
+MESSAGE_TEXT = "RESIGNAL to a warning",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+insert into t_warn set a= 9999999999999999;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+after RESIGNAL
+after RESIGNAL
+Warnings:
+Warning 1264 Out of range value for column 'a' at row 1
+Warning 5555 RESIGNAL to a warning
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE CONTINUE HANDLER for sqlwarning
+begin
+select "before RESIGNAL";
+RESIGNAL SQLSTATE "02444" SET
+MESSAGE_TEXT = "RESIGNAL to a not found",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+insert into t_warn set a= 9999999999999999;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 02444: RESIGNAL to a not found
+show warnings $$
+Level Code Message
+Warning 1264 Out of range value for column 'a' at row 1
+Error 5555 RESIGNAL to a not found
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE CONTINUE HANDLER for sqlwarning
+begin
+select "before RESIGNAL";
+RESIGNAL SQLSTATE "44444" SET
+MESSAGE_TEXT = "RESIGNAL to an error",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+insert into t_warn set a= 9999999999999999;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 44444: RESIGNAL to an error
+show warnings $$
+Level Code Message
+Warning 1264 Out of range value for column 'a' at row 1
+Error 5555 RESIGNAL to an error
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE x integer;
+DECLARE c cursor for select * from t_cursor;
+DECLARE CONTINUE HANDLER for not found
+begin
+select "before RESIGNAL";
+RESIGNAL SQLSTATE "01111" SET
+MESSAGE_TEXT = "RESIGNAL to a warning",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+open c;
+fetch c into x;
+close c;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+after RESIGNAL
+after RESIGNAL
+Warnings:
+Error 1329 No data - zero rows fetched, selected, or processed
+Warning 5555 RESIGNAL to a warning
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE x integer;
+DECLARE c cursor for select * from t_cursor;
+DECLARE CONTINUE HANDLER for not found
+begin
+select "before RESIGNAL";
+RESIGNAL SQLSTATE "02444" SET
+MESSAGE_TEXT = "RESIGNAL to a not found",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+open c;
+fetch c into x;
+close c;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 02444: RESIGNAL to a not found
+show warnings $$
+Level Code Message
+Error 1329 No data - zero rows fetched, selected, or processed
+Error 5555 RESIGNAL to a not found
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE x integer;
+DECLARE c cursor for select * from t_cursor;
+DECLARE CONTINUE HANDLER for not found
+begin
+select "before RESIGNAL";
+RESIGNAL SQLSTATE "44444" SET
+MESSAGE_TEXT = "RESIGNAL to an error",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+open c;
+fetch c into x;
+close c;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 44444: RESIGNAL to an error
+show warnings $$
+Level Code Message
+Error 1329 No data - zero rows fetched, selected, or processed
+Error 5555 RESIGNAL to an error
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE CONTINUE HANDLER for sqlexception
+begin
+select "before RESIGNAL";
+RESIGNAL SQLSTATE "01111" SET
+MESSAGE_TEXT = "RESIGNAL to a warning",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+drop table no_such_table;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+after RESIGNAL
+after RESIGNAL
+Warnings:
+Error 1051 Unknown table 'no_such_table'
+Warning 5555 RESIGNAL to a warning
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE CONTINUE HANDLER for sqlexception
+begin
+select "before RESIGNAL";
+RESIGNAL SQLSTATE "02444" SET
+MESSAGE_TEXT = "RESIGNAL to a not found",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+drop table no_such_table;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 02444: RESIGNAL to a not found
+show warnings $$
+Level Code Message
+Error 1051 Unknown table 'no_such_table'
+Error 5555 RESIGNAL to a not found
+drop procedure test_resignal $$
+create procedure test_resignal()
+begin
+DECLARE CONTINUE HANDLER for sqlexception
+begin
+select "before RESIGNAL";
+RESIGNAL SQLSTATE "44444" SET
+MESSAGE_TEXT = "RESIGNAL to an error",
+MYSQL_ERRNO = 5555 ;
+select "after RESIGNAL";
+end;
+drop table no_such_table;
+end $$
+call test_resignal() $$
+before RESIGNAL
+before RESIGNAL
+ERROR 44444: RESIGNAL to an error
+show warnings $$
+Level Code Message
+Error 1051 Unknown table 'no_such_table'
+Error 5555 RESIGNAL to an error
+drop procedure test_resignal $$
+#
+# More complex cases
+#
+drop procedure if exists peter_p1 $$
+drop procedure if exists peter_p2 $$
+CREATE PROCEDURE peter_p1 ()
+BEGIN
+DECLARE x CONDITION FOR 1231;
+DECLARE EXIT HANDLER FOR x
+BEGIN
+SELECT '2';
+RESIGNAL SET MYSQL_ERRNO = 9999;
+END;
+BEGIN
+DECLARE EXIT HANDLER FOR x
+BEGIN
+SELECT '1';
+RESIGNAL SET SCHEMA_NAME = 'test';
+END;
+SET @@sql_mode=NULL;
+END;
+END
+$$
+CREATE PROCEDURE peter_p2 ()
+BEGIN
+DECLARE x CONDITION for 9999;
+DECLARE EXIT HANDLER FOR x
+BEGIN
+SELECT '3';
+RESIGNAL SET MESSAGE_TEXT = 'Hi, I am a useless error message';
+END;
+CALL peter_p1();
+END
+$$
+CALL peter_p2() $$
+1
+1
+2
+2
+3
+3
+ERROR 42000: Hi, I am a useless error message
+show warnings $$
+Level Code Message
+Error 9999 Hi, I am a useless error message
+drop procedure peter_p1 $$
+drop procedure peter_p2 $$
+CREATE PROCEDURE peter_p1 ()
+BEGIN
+DECLARE x CONDITION FOR SQLSTATE '42000';
+DECLARE EXIT HANDLER FOR x
+BEGIN
+SELECT '2';
+RESIGNAL x SET MYSQL_ERRNO = 9999;
+END;
+BEGIN
+DECLARE EXIT HANDLER FOR x
+BEGIN
+SELECT '1';
+RESIGNAL x SET
+SCHEMA_NAME = 'test',
+MYSQL_ERRNO= 1231;
+END;
+/* Raises ER_WRONG_VALUE_FOR_VAR : 1231, SQLSTATE 42000 */
+SET @@sql_mode=NULL;
+END;
+END
+$$
+CREATE PROCEDURE peter_p2 ()
+BEGIN
+DECLARE x CONDITION for SQLSTATE '42000';
+DECLARE EXIT HANDLER FOR x
+BEGIN
+SELECT '3';
+RESIGNAL x SET
+MESSAGE_TEXT = 'Hi, I am a useless error message',
+MYSQL_ERRNO = 9999;
+END;
+CALL peter_p1();
+END
+$$
+CALL peter_p2() $$
+1
+1
+2
+2
+3
+3
+ERROR 42000: Hi, I am a useless error message
+show warnings $$
+Level Code Message
+Error 1231 Variable 'sql_mode' can't be set to the value of 'NULL'
+Error 1231 Variable 'sql_mode' can't be set to the value of 'NULL'
+Error 9999 Variable 'sql_mode' can't be set to the value of 'NULL'
+Error 9999 Hi, I am a useless error message
+drop procedure peter_p1 $$
+drop procedure peter_p2 $$
+drop procedure if exists peter_p3 $$
+Warnings:
+Note 1305 PROCEDURE peter_p3 does not exist
+create procedure peter_p3()
+begin
+declare continue handler for sqlexception
+resignal sqlstate '99002' set mysql_errno = 2;
+signal sqlstate '99001' set mysql_errno = 1, message_text = "Original";
+end $$
+call peter_p3() $$
+ERROR 99002: Original
+show warnings $$
+Level Code Message
+Error 1 Original
+Error 2 Original
+drop procedure peter_p3 $$
+drop table t_warn;
+drop table t_cursor;
+#
+# Miscelaneous test cases
+#
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET MYSQL_ERRNO = 0x12; /* 18 */
+end $$
+call test_signal $$
+ERROR 12345: Unhandled user-defined exception condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET MYSQL_ERRNO = 0b00010010; /* 18 */
+end $$
+call test_signal $$
+ERROR 12345: Unhandled user-defined exception condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET MYSQL_ERRNO = '65'; /* 65 */
+end $$
+call test_signal $$
+ERROR 12345: Unhandled user-defined exception condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET MYSQL_ERRNO = 'A'; /* illegal */
+end $$
+call test_signal $$
+ERROR 42000: Variable 'MYSQL_ERRNO' can't be set to the value of 'A'
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET MYSQL_ERRNO = "65"; /* 65 */
+end $$
+call test_signal $$
+ERROR 12345: Unhandled user-defined exception condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET MYSQL_ERRNO = "A"; /* illegal */
+end $$
+call test_signal $$
+ERROR 42000: Variable 'MYSQL_ERRNO' can't be set to the value of 'A'
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET MYSQL_ERRNO = `65`; /* illegal */
+end $$
+call test_signal $$
+ERROR 42S22: Unknown column '65' in 'field list'
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET MYSQL_ERRNO = `A`; /* illegal */
+end $$
+call test_signal $$
+ERROR 42S22: Unknown column 'A' in 'field list'
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET MYSQL_ERRNO = 3.141592; /* 3 */
+end $$
+call test_signal $$
+ERROR 12345: Unhandled user-defined exception condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET MYSQL_ERRNO = 1000,
+MESSAGE_TEXT= 0x41; /* A */
+end $$
+call test_signal $$
+ERROR 12345: A
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET MYSQL_ERRNO = 1000,
+MESSAGE_TEXT= 0b01000001; /* A */
+end $$
+call test_signal $$
+ERROR 12345: A
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET MYSQL_ERRNO = 1000,
+MESSAGE_TEXT = "Hello";
+end $$
+call test_signal $$
+ERROR 12345: Hello
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET MYSQL_ERRNO = 1000,
+MESSAGE_TEXT = 'Hello';
+end $$
+call test_signal $$
+ERROR 12345: Hello
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET MYSQL_ERRNO = 1000,
+MESSAGE_TEXT = `Hello`;
+end $$
+call test_signal $$
+ERROR 42S22: Unknown column 'Hello' in 'field list'
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo SET MYSQL_ERRNO = 1000,
+MESSAGE_TEXT = 65.4321;
+end $$
+call test_signal $$
+ERROR 12345: 65.4321
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+DECLARE céèçà foo CONDITION FOR SQLSTATE '12345';
+SIGNAL céèçà SET MYSQL_ERRNO = 1000;
+end $$
+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 '©Ã¨Ã§Ã  foo CONDITION FOR SQLSTATE '12345';
+SIGNAL céèçà SET ' at line 3
+create procedure test_signal()
+begin
+DECLARE "céèçà" CONDITION FOR SQLSTATE '12345';
+SIGNAL "céèçà" SET MYSQL_ERRNO = 1000;
+end $$
+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 '"céèçà" CONDITION FOR SQLSTATE '12345';
+SIGNAL "céèçà" S' at line 3
+create procedure test_signal()
+begin
+DECLARE 'céèçà' CONDITION FOR SQLSTATE '12345';
+SIGNAL 'céèçà' SET MYSQL_ERRNO = 1000;
+end $$
+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 ''céèçà' CONDITION FOR SQLSTATE '12345';
+SIGNAL 'céèçà' S' at line 3
+create procedure test_signal()
+begin
+DECLARE `céèçà` CONDITION FOR SQLSTATE '12345';
+SIGNAL `céèçà` SET MYSQL_ERRNO = 1000;
+end $$
+call test_signal $$
+ERROR 12345: Unhandled user-defined exception condition
+drop procedure test_signal $$
+create procedure test_signal()
+begin
+SIGNAL SQLSTATE '77777' SET MYSQL_ERRNO = 1000, MESSAGE_TEXT='ÃÂÃÅÄ';
+end $$
+drop procedure test_signal $$
diff --git a/mysql-test/r/signal_code.result b/mysql-test/r/signal_code.result
new file mode 100644
index 00000000000..2ecba4701fa
--- /dev/null
+++ b/mysql-test/r/signal_code.result
@@ -0,0 +1,35 @@
+use test;
+drop procedure if exists signal_proc;
+drop function if exists signal_func;
+create procedure signal_proc()
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo;
+SIGNAL foo SET MESSAGE_TEXT = "This is an error message";
+RESIGNAL foo;
+RESIGNAL foo SET MESSAGE_TEXT = "This is an error message";
+end $$
+create function signal_func() returns int
+begin
+DECLARE foo CONDITION FOR SQLSTATE '12345';
+SIGNAL foo;
+SIGNAL foo SET MESSAGE_TEXT = "This is an error message";
+RESIGNAL foo;
+RESIGNAL foo SET MESSAGE_TEXT = "This is an error message";
+return 0;
+end $$
+show procedure code signal_proc;
+Pos Instruction
+0 stmt 131 "SIGNAL foo"
+1 stmt 131 "SIGNAL foo SET MESSAGE_TEXT = "This i..."
+2 stmt 132 "RESIGNAL foo"
+3 stmt 132 "RESIGNAL foo SET MESSAGE_TEXT = "This..."
+drop procedure signal_proc;
+show function code signal_func;
+Pos Instruction
+0 stmt 131 "SIGNAL foo"
+1 stmt 131 "SIGNAL foo SET MESSAGE_TEXT = "This i..."
+2 stmt 132 "RESIGNAL foo"
+3 stmt 132 "RESIGNAL foo SET MESSAGE_TEXT = "This..."
+4 freturn 3 0
+drop function signal_func;
diff --git a/mysql-test/r/signal_demo1.result b/mysql-test/r/signal_demo1.result
new file mode 100644
index 00000000000..752f23a48d6
--- /dev/null
+++ b/mysql-test/r/signal_demo1.result
@@ -0,0 +1,270 @@
+drop database if exists demo;
+create database demo;
+use demo;
+create table ab_physical_person (
+person_id integer,
+first_name VARCHAR(50),
+middle_initial CHAR,
+last_name VARCHAR(50),
+primary key (person_id));
+create table ab_moral_person (
+company_id integer,
+name VARCHAR(100),
+primary key (company_id));
+create table in_inventory (
+item_id integer,
+descr VARCHAR(50),
+stock integer,
+primary key (item_id));
+create table po_order (
+po_id integer auto_increment,
+cust_type char, /* arc relationship, see cust_id */
+cust_id integer, /* FK to ab_physical_person *OR* ab_moral_person */
+primary key (po_id));
+create table po_order_line (
+po_id integer, /* FK to po_order.po_id */
+line_no integer,
+item_id integer, /* FK to in_inventory.item_id */
+qty integer);
+#
+# Schema integrity enforcement
+#
+create procedure check_pk_person(in person_type char, in id integer)
+begin
+declare x integer;
+declare msg varchar(128);
+/*
+Test integrity constraints for an 'arc' relationship.
+Based on 'person_type', 'id' points to either a
+physical person, or a moral person.
+*/
+case person_type
+when 'P' then
+begin
+select count(person_id) from ab_physical_person
+where ab_physical_person.person_id = id
+into x;
+if (x != 1)
+then
+set msg= concat('No such physical person, PK:', id);
+SIGNAL SQLSTATE '45000' SET
+MESSAGE_TEXT = msg,
+MYSQL_ERRNO = 10000;
+end if;
+end;
+when 'M' then
+begin
+select count(company_id) from ab_moral_person
+where ab_moral_person.company_id = id
+into x;
+if (x != 1)
+then
+set msg= concat('No such moral person, PK:', id);
+SIGNAL SQLSTATE '45000' SET
+MESSAGE_TEXT = msg,
+MYSQL_ERRNO = 10000;
+end if;
+end;
+else
+begin
+set msg= concat('No such person type:', person_type);
+SIGNAL SQLSTATE '45000' SET
+MESSAGE_TEXT = msg,
+MYSQL_ERRNO = 20000;
+end;
+end case;
+end
+$$
+create procedure check_pk_inventory(in id integer)
+begin
+declare x integer;
+declare msg varchar(128);
+select count(item_id) from in_inventory
+where in_inventory.item_id = id
+into x;
+if (x != 1)
+then
+set msg= concat('Failed integrity constraint, table in_inventory, PK:',
+id);
+SIGNAL SQLSTATE '45000' SET
+MESSAGE_TEXT = msg,
+MYSQL_ERRNO = 10000;
+end if;
+end
+$$
+create procedure check_pk_order(in id integer)
+begin
+declare x integer;
+declare msg varchar(128);
+select count(po_id) from po_order
+where po_order.po_id = id
+into x;
+if (x != 1)
+then
+set msg= concat('Failed integrity constraint, table po_order, PK:', id);
+SIGNAL SQLSTATE '45000' SET
+MESSAGE_TEXT = msg,
+MYSQL_ERRNO = 10000;
+end if;
+end
+$$
+create trigger po_order_bi before insert on po_order
+for each row
+begin
+call check_pk_person(NEW.cust_type, NEW.cust_id);
+end
+$$
+create trigger po_order_bu before update on po_order
+for each row
+begin
+call check_pk_person(NEW.cust_type, NEW.cust_id);
+end
+$$
+create trigger po_order_line_bi before insert on po_order_line
+for each row
+begin
+call check_pk_order(NEW.po_id);
+call check_pk_inventory(NEW.item_id);
+end
+$$
+create trigger po_order_line_bu before update on po_order_line
+for each row
+begin
+call check_pk_order(NEW.po_id);
+call check_pk_inventory(NEW.item_id);
+end
+$$
+#
+# Application helpers
+#
+create procedure po_create_order(
+in p_cust_type char,
+in p_cust_id integer,
+out id integer)
+begin
+insert into po_order set cust_type = p_cust_type, cust_id = p_cust_id;
+set id = last_insert_id();
+end
+$$
+create procedure po_add_order_line(
+in po integer,
+in line integer,
+in item integer,
+in q integer)
+begin
+insert into po_order_line set
+po_id = po, line_no = line, item_id = item, qty = q;
+end
+$$
+#
+# Create sample data
+#
+insert into ab_physical_person values
+( 1, "John", "A", "Doe"),
+( 2, "Marry", "B", "Smith")
+;
+insert into ab_moral_person values
+( 3, "ACME real estate, INC"),
+( 4, "Local school")
+;
+insert into in_inventory values
+( 100, "Table, dinner", 5),
+( 101, "Chair", 20),
+( 200, "Table, coffee", 3),
+( 300, "School table", 25),
+( 301, "School chairs", 50)
+;
+select * from ab_physical_person order by person_id;
+person_id first_name middle_initial last_name
+1 John A Doe
+2 Marry B Smith
+select * from ab_moral_person order by company_id;
+company_id name
+3 ACME real estate, INC
+4 Local school
+select * from in_inventory order by item_id;
+item_id descr stock
+100 Table, dinner 5
+101 Chair 20
+200 Table, coffee 3
+300 School table 25
+301 School chairs 50
+#
+# Entering an order
+#
+set @my_po = 0;
+/* John Doe wants 1 table and 4 chairs */
+call po_create_order("P", 1, @my_po);
+call po_add_order_line (@my_po, 1, 100, 1);
+call po_add_order_line (@my_po, 2, 101, 4);
+/* Marry Smith wants a coffee table */
+call po_create_order("P", 2, @my_po);
+call po_add_order_line (@my_po, 1, 200, 1);
+#
+# Entering bad data in an order
+#
+call po_add_order_line (@my_po, 1, 999, 1);
+ERROR 45000: Failed integrity constraint, table in_inventory, PK:999
+#
+# Entering bad data in an unknown order
+#
+call po_add_order_line (99, 1, 100, 1);
+ERROR 45000: Failed integrity constraint, table po_order, PK:99
+#
+# Entering an order for an unknown company
+#
+call po_create_order("M", 7, @my_po);
+ERROR 45000: No such moral person, PK:7
+#
+# Entering an order for an unknown person type
+#
+call po_create_order("X", 1, @my_po);
+ERROR 45000: No such person type:X
+/* The local school wants 10 class tables and 20 chairs */
+call po_create_order("M", 4, @my_po);
+call po_add_order_line (@my_po, 1, 300, 10);
+call po_add_order_line (@my_po, 2, 301, 20);
+select * from po_order;
+po_id cust_type cust_id
+1 P 1
+2 P 2
+3 M 4
+select * from po_order_line;
+po_id line_no item_id qty
+1 1 100 1
+1 2 101 4
+2 1 200 1
+3 1 300 10
+3 2 301 20
+select po_id as "PO#",
+( case cust_type
+when "P" then concat (pp.first_name,
+" ",
+pp.middle_initial,
+" ",
+pp.last_name)
+when "M" then mp.name
+end ) as "Sold to"
+ from po_order po
+left join ab_physical_person pp on po.cust_id = pp.person_id
+left join ab_moral_person mp on po.cust_id = company_id
+;
+PO# Sold to
+1 John A Doe
+2 Marry B Smith
+3 Local school
+select po_id as "PO#",
+ol.line_no as "Line",
+ol.item_id as "Item",
+inv.descr as "Description",
+ol.qty as "Quantity"
+ from po_order_line ol, in_inventory inv
+where inv.item_id = ol.item_id
+order by ol.item_id, ol.line_no;
+PO# Line Item Description Quantity
+1 1 100 Table, dinner 1
+1 2 101 Chair 4
+2 1 200 Table, coffee 1
+3 1 300 School table 10
+3 2 301 School chairs 20
+drop database demo;
diff --git a/mysql-test/r/signal_demo2.result b/mysql-test/r/signal_demo2.result
new file mode 100644
index 00000000000..223030b0624
--- /dev/null
+++ b/mysql-test/r/signal_demo2.result
@@ -0,0 +1,197 @@
+drop database if exists demo;
+create database demo;
+use demo;
+create procedure proc_top_a(p1 integer)
+begin
+## DECLARE CONTINUE HANDLER for SQLEXCEPTION, NOT FOUND
+begin
+end;
+select "Starting ...";
+call proc_middle_a(p1);
+select "The end";
+end
+$$
+create procedure proc_middle_a(p1 integer)
+begin
+DECLARE l integer;
+# without RESIGNAL:
+# Should be: DECLARE EXIT HANDLER for SQLEXCEPTION, NOT FOUND
+DECLARE EXIT HANDLER for 1 /* not sure how to handle exceptions */
+begin
+select "Oops ... now what ?";
+end;
+select "In prod_middle()";
+create temporary table t1(a integer, b integer);
+select GET_LOCK("user_mutex", 10) into l;
+insert into t1 set a = p1, b = p1;
+call proc_bottom_a(p1);
+select RELEASE_LOCK("user_mutex") into l;
+drop temporary table t1;
+end
+$$
+create procedure proc_bottom_a(p1 integer)
+begin
+select "In proc_bottom()";
+if (p1 = 1) then
+begin
+select "Doing something that works ...";
+select * from t1;
+end;
+end if;
+if (p1 = 2) then
+begin
+select "Doing something that fail (simulate an error) ...";
+drop table no_such_table;
+end;
+end if;
+if (p1 = 3) then
+begin
+select "Doing something that *SHOULD* works ...";
+select * from t1;
+end;
+end if;
+end
+$$
+call proc_top_a(1);
+Starting ...
+Starting ...
+In prod_middle()
+In prod_middle()
+In proc_bottom()
+In proc_bottom()
+Doing something that works ...
+Doing something that works ...
+a b
+1 1
+The end
+The end
+call proc_top_a(2);
+Starting ...
+Starting ...
+In prod_middle()
+In prod_middle()
+In proc_bottom()
+In proc_bottom()
+Doing something that fail (simulate an error) ...
+Doing something that fail (simulate an error) ...
+ERROR 42S02: Unknown table 'no_such_table'
+call proc_top_a(3);
+Starting ...
+Starting ...
+In prod_middle()
+In prod_middle()
+ERROR 42S01: Table 't1' already exists
+call proc_top_a(1);
+Starting ...
+Starting ...
+In prod_middle()
+In prod_middle()
+ERROR 42S01: Table 't1' already exists
+drop temporary table if exists t1;
+create procedure proc_top_b(p1 integer)
+begin
+select "Starting ...";
+call proc_middle_b(p1);
+select "The end";
+end
+$$
+create procedure proc_middle_b(p1 integer)
+begin
+DECLARE l integer;
+DECLARE EXIT HANDLER for SQLEXCEPTION, NOT FOUND
+begin
+begin
+DECLARE CONTINUE HANDLER for SQLEXCEPTION, NOT FOUND
+begin
+/* Ignore errors from the cleanup code */
+end;
+select "Doing cleanup !";
+select RELEASE_LOCK("user_mutex") into l;
+drop temporary table t1;
+end;
+RESIGNAL;
+end;
+select "In prod_middle()";
+create temporary table t1(a integer, b integer);
+select GET_LOCK("user_mutex", 10) into l;
+insert into t1 set a = p1, b = p1;
+call proc_bottom_b(p1);
+select RELEASE_LOCK("user_mutex") into l;
+drop temporary table t1;
+end
+$$
+create procedure proc_bottom_b(p1 integer)
+begin
+select "In proc_bottom()";
+if (p1 = 1) then
+begin
+select "Doing something that works ...";
+select * from t1;
+end;
+end if;
+if (p1 = 2) then
+begin
+select "Doing something that fail (simulate an error) ...";
+drop table no_such_table;
+end;
+end if;
+if (p1 = 3) then
+begin
+select "Doing something that *SHOULD* works ...";
+select * from t1;
+end;
+end if;
+end
+$$
+call proc_top_b(1);
+Starting ...
+Starting ...
+In prod_middle()
+In prod_middle()
+In proc_bottom()
+In proc_bottom()
+Doing something that works ...
+Doing something that works ...
+a b
+1 1
+The end
+The end
+call proc_top_b(2);
+Starting ...
+Starting ...
+In prod_middle()
+In prod_middle()
+In proc_bottom()
+In proc_bottom()
+Doing something that fail (simulate an error) ...
+Doing something that fail (simulate an error) ...
+Doing cleanup !
+Doing cleanup !
+ERROR 42S02: Unknown table 'no_such_table'
+call proc_top_b(3);
+Starting ...
+Starting ...
+In prod_middle()
+In prod_middle()
+In proc_bottom()
+In proc_bottom()
+Doing something that *SHOULD* works ...
+Doing something that *SHOULD* works ...
+a b
+3 3
+The end
+The end
+call proc_top_b(1);
+Starting ...
+Starting ...
+In prod_middle()
+In prod_middle()
+In proc_bottom()
+In proc_bottom()
+Doing something that works ...
+Doing something that works ...
+a b
+1 1
+The end
+The end
+drop database demo;
diff --git a/mysql-test/r/signal_demo3.result b/mysql-test/r/signal_demo3.result
new file mode 100644
index 00000000000..aa769659e51
--- /dev/null
+++ b/mysql-test/r/signal_demo3.result
@@ -0,0 +1,143 @@
+SET @start_global_value = @@global.max_error_count;
+SELECT @start_global_value;
+@start_global_value
+64
+SET @start_session_value = @@session.max_error_count;
+SELECT @start_session_value;
+@start_session_value
+64
+drop database if exists demo;
+create database demo;
+use demo;
+create procedure proc_1()
+begin
+declare exit handler for sqlexception
+resignal sqlstate '45000' set message_text='Oops in proc_1';
+call proc_2();
+end
+$$
+create procedure proc_2()
+begin
+declare exit handler for sqlexception
+resignal sqlstate '45000' set message_text='Oops in proc_2';
+call proc_3();
+end
+$$
+create procedure proc_3()
+begin
+declare exit handler for sqlexception
+resignal sqlstate '45000' set message_text='Oops in proc_3';
+call proc_4();
+end
+$$
+create procedure proc_4()
+begin
+declare exit handler for sqlexception
+resignal sqlstate '45000' set message_text='Oops in proc_4';
+call proc_5();
+end
+$$
+create procedure proc_5()
+begin
+declare exit handler for sqlexception
+resignal sqlstate '45000' set message_text='Oops in proc_5';
+call proc_6();
+end
+$$
+create procedure proc_6()
+begin
+declare exit handler for sqlexception
+resignal sqlstate '45000' set message_text='Oops in proc_6';
+call proc_7();
+end
+$$
+create procedure proc_7()
+begin
+declare exit handler for sqlexception
+resignal sqlstate '45000' set message_text='Oops in proc_7';
+call proc_8();
+end
+$$
+create procedure proc_8()
+begin
+declare exit handler for sqlexception
+resignal sqlstate '45000' set message_text='Oops in proc_8';
+call proc_9();
+end
+$$
+create procedure proc_9()
+begin
+declare exit handler for sqlexception
+resignal sqlstate '45000' set message_text='Oops in proc_9';
+## Do something that fails, to see how errors are reported
+drop table oops_it_is_not_here;
+end
+$$
+call proc_1();
+ERROR 45000: Oops in proc_1
+show warnings;
+Level Code Message
+Error 1051 Unknown table 'oops_it_is_not_here'
+Error 1644 Oops in proc_9
+Error 1644 Oops in proc_8
+Error 1644 Oops in proc_7
+Error 1644 Oops in proc_6
+Error 1644 Oops in proc_5
+Error 1644 Oops in proc_4
+Error 1644 Oops in proc_3
+Error 1644 Oops in proc_2
+Error 1644 Oops in proc_1
+SET @@session.max_error_count = 5;
+SELECT @@session.max_error_count;
+@@session.max_error_count
+5
+call proc_1();
+ERROR 45000: Oops in proc_1
+show warnings;
+Level Code Message
+Error 1644 Oops in proc_5
+Error 1644 Oops in proc_4
+Error 1644 Oops in proc_3
+Error 1644 Oops in proc_2
+Error 1644 Oops in proc_1
+SET @@session.max_error_count = 7;
+SELECT @@session.max_error_count;
+@@session.max_error_count
+7
+call proc_1();
+ERROR 45000: Oops in proc_1
+show warnings;
+Level Code Message
+Error 1644 Oops in proc_7
+Error 1644 Oops in proc_6
+Error 1644 Oops in proc_5
+Error 1644 Oops in proc_4
+Error 1644 Oops in proc_3
+Error 1644 Oops in proc_2
+Error 1644 Oops in proc_1
+SET @@session.max_error_count = 9;
+SELECT @@session.max_error_count;
+@@session.max_error_count
+9
+call proc_1();
+ERROR 45000: Oops in proc_1
+show warnings;
+Level Code Message
+Error 1644 Oops in proc_9
+Error 1644 Oops in proc_8
+Error 1644 Oops in proc_7
+Error 1644 Oops in proc_6
+Error 1644 Oops in proc_5
+Error 1644 Oops in proc_4
+Error 1644 Oops in proc_3
+Error 1644 Oops in proc_2
+Error 1644 Oops in proc_1
+drop database demo;
+SET @@global.max_error_count = @start_global_value;
+SELECT @@global.max_error_count;
+@@global.max_error_count
+64
+SET @@session.max_error_count = @start_session_value;
+SELECT @@session.max_error_count;
+@@session.max_error_count
+64
diff --git a/mysql-test/r/signal_sqlmode.result b/mysql-test/r/signal_sqlmode.result
new file mode 100644
index 00000000000..8fed85eb4a9
--- /dev/null
+++ b/mysql-test/r/signal_sqlmode.result
@@ -0,0 +1,86 @@
+SET @save_sql_mode=@@sql_mode;
+SET sql_mode='';
+drop procedure if exists p;
+drop procedure if exists p2;
+drop procedure if exists p3;
+create procedure p()
+begin
+declare utf8_var VARCHAR(128) CHARACTER SET UTF8;
+set utf8_var = concat(repeat('A', 128), 'X');
+select length(utf8_var), utf8_var;
+end
+$$
+create procedure p2()
+begin
+declare msg VARCHAR(129) CHARACTER SET UTF8;
+set msg = concat(repeat('A', 128), 'X');
+select length(msg), msg;
+signal sqlstate '55555' set message_text = msg;
+end
+$$
+create procedure p3()
+begin
+declare name VARCHAR(65) CHARACTER SET UTF8;
+set name = concat(repeat('A', 64), 'X');
+select length(name), name;
+signal sqlstate '55555' set
+message_text = 'Message',
+table_name = name;
+end
+$$
+call p;
+length(utf8_var) utf8_var
+128 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+Warnings:
+Warning 1265 Data truncated for column 'utf8_var' at row 1
+call p2;
+length(msg) msg
+129 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX
+ERROR 55555: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+call p3;
+length(name) name
+65 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX
+ERROR 55555: Message
+drop procedure p;
+drop procedure p2;
+drop procedure p3;
+SET sql_mode='STRICT_ALL_TABLES';
+create procedure p()
+begin
+declare utf8_var VARCHAR(128) CHARACTER SET UTF8;
+set utf8_var = concat(repeat('A', 128), 'X');
+select length(utf8_var), utf8_var;
+end
+$$
+create procedure p2()
+begin
+declare msg VARCHAR(129) CHARACTER SET UTF8;
+set msg = concat(repeat('A', 128), 'X');
+select length(msg), msg;
+signal sqlstate '55555' set message_text = msg;
+end
+$$
+create procedure p3()
+begin
+declare name VARCHAR(65) CHARACTER SET UTF8;
+set name = concat(repeat('A', 64), 'X');
+select length(name), name;
+signal sqlstate '55555' set
+message_text = 'Message',
+table_name = name;
+end
+$$
+call p;
+ERROR 22001: Data too long for column 'utf8_var' at row 1
+call p2;
+length(msg) msg
+129 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX
+ERROR HY000: Data too long for condition item 'MESSAGE_TEXT'
+call p3;
+length(name) name
+65 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX
+ERROR HY000: Data too long for condition item 'TABLE_NAME'
+drop procedure p;
+drop procedure p2;
+drop procedure p3;
+SET @@sql_mode=@save_sql_mode;
diff --git a/mysql-test/r/sp-code.result b/mysql-test/r/sp-code.result
index 39770dc4f2a..0a0f620b80a 100644
--- a/mysql-test/r/sp-code.result
+++ b/mysql-test/r/sp-code.result
@@ -155,11 +155,11 @@ Pos Instruction
0 stmt 9 "drop temporary table if exists sudoku..."
1 stmt 1 "create temporary table sudoku_work ( ..."
2 stmt 1 "create temporary table sudoku_schedul..."
-3 stmt 94 "call sudoku_init()"
+3 stmt 89 "call sudoku_init()"
4 jump_if_not 7(8) p_naive@0
5 stmt 4 "update sudoku_work set cnt = 0 where ..."
6 jump 8
-7 stmt 94 "call sudoku_count()"
+7 stmt 89 "call sudoku_count()"
8 stmt 6 "insert into sudoku_schedule (row,col)..."
9 set v_scounter@2 0
10 set v_i@3 1
diff --git a/mysql-test/r/sp-dynamic.result b/mysql-test/r/sp-dynamic.result
index 34b76a9424f..cdfeb8ab020 100644
--- a/mysql-test/r/sp-dynamic.result
+++ b/mysql-test/r/sp-dynamic.result
@@ -97,8 +97,6 @@ end|
call p1()|
a
1
-Warnings:
-Note 1051 Unknown table 't1'
call p1()|
a
1
@@ -371,9 +369,6 @@ call p1(@a)|
create table t1 (a int)
@rsql
create table t2 (a int)
-Warnings:
-Note 1051 Unknown table 't1'
-Note 1051 Unknown table 't2'
select @a|
@a
0
@@ -382,9 +377,6 @@ call p1(@a)|
create table t1 (a int)
@rsql
create table t2 (a int)
-Warnings:
-Note 1051 Unknown table 't1'
-Note 1051 Unknown table 't2'
select @a|
@a
0
diff --git a/mysql-test/r/sp-error.result b/mysql-test/r/sp-error.result
index b3968ea7eb6..00ae7dd4eca 100644
--- a/mysql-test/r/sp-error.result
+++ b/mysql-test/r/sp-error.result
@@ -921,10 +921,6 @@ CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN DROP TRIGGER test1; EN
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
CREATE FUNCTION bug_13627_f() returns int BEGIN DROP TRIGGER test1; return 1; END |
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
-CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN load table t1 from master; END |
-ERROR 0A000: LOAD TABLE is not allowed in stored procedures
-CREATE FUNCTION bug_13627_f() returns int BEGIN load table t1 from master; return 1; END |
-ERROR 0A000: LOAD TABLE is not allowed in stored procedures
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create table t2 (a int); END |
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
CREATE FUNCTION bug_13627_f() returns int BEGIN create table t2 (a int); return 1; END |
@@ -1115,18 +1111,6 @@ REPAIR TABLE t1;
RETURN 1;
END|
ERROR 0A000: Not allowed to return a result set from a function
-CREATE FUNCTION bug13012() RETURNS INT
-BEGIN
-BACKUP TABLE t1 TO '/tmp';
-RETURN 1;
-END|
-ERROR 0A000: Not allowed to return a result set from a function
-CREATE FUNCTION bug13012() RETURNS INT
-BEGIN
-RESTORE TABLE t1 FROM '/tmp';
-RETURN 1;
-END|
-ERROR 0A000: Not allowed to return a result set from a function
create table t1 (a int)|
CREATE PROCEDURE bug13012_1() REPAIR TABLE t1|
CREATE FUNCTION bug13012_2() RETURNS INT
@@ -1639,11 +1623,9 @@ DROP TABLE t1|
drop procedure if exists p1;
create procedure p1()
begin
-create table t1 (a int) type=MyISAM;
+create table t1 (a int) engine=MyISAM;
drop table t1;
end|
-Warnings:
-Warning 1287 The syntax 'TYPE=storage_engine' is deprecated and will be removed in MySQL 6.0. Please use 'ENGINE=storage_engine' instead
call p1();
call p1();
drop procedure p1;
@@ -1659,6 +1641,41 @@ begin
declare continue handler for sqlstate '00000' set @x=0;
end$$
ERROR 42000: Bad SQLSTATE: '00000'
+drop procedure if exists proc_36510;
+create procedure proc_36510()
+begin
+declare should_be_illegal condition for sqlstate '00123';
+declare continue handler for should_be_illegal set @x=0;
+end$$
+ERROR 42000: Bad SQLSTATE: '00123'
+create procedure proc_36510()
+begin
+declare continue handler for sqlstate '00123' set @x=0;
+end$$
+ERROR 42000: Bad SQLSTATE: '00123'
+create procedure proc_36510()
+begin
+declare should_be_illegal condition for 0;
+declare continue handler for should_be_illegal set @x=0;
+end$$
+ERROR HY000: Incorrect CONDITION value: '0'
+create procedure proc_36510()
+begin
+declare continue handler for 0 set @x=0;
+end$$
+ERROR HY000: Incorrect CONDITION value: '0'
+drop procedure if exists p1;
+set @old_recursion_depth = @@max_sp_recursion_depth;
+set @@max_sp_recursion_depth = 255;
+create procedure p1(a int)
+begin
+declare continue handler for 1436 -- ER_STACK_OVERRUN_NEED_MORE
+select 'exception';
+call p1(a+1);
+end|
+call p1(1);
+set @@max_sp_recursion_depth = @old_recursion_depth;
+drop procedure p1;
LOAD DATA INFILE '../../tmp/proc.txt' INTO TABLE mysql.proc;
CREATE TABLE t1 (a INT, b INT);
INSERT INTO t1 VALUES (1,1), (2,2);
diff --git a/mysql-test/r/sp-no-code.result b/mysql-test/r/sp-no-code.result
new file mode 100644
index 00000000000..77d2c93eaf6
--- /dev/null
+++ b/mysql-test/r/sp-no-code.result
@@ -0,0 +1,4 @@
+show procedure code foo;
+ERROR HY000: The 'SHOW PROCEDURE|FUNCTION CODE' feature is disabled; you need MySQL built with '--with-debug' to have it working
+show function code foo;
+ERROR HY000: The 'SHOW PROCEDURE|FUNCTION CODE' feature is disabled; you need MySQL built with '--with-debug' to have it working
diff --git a/mysql-test/r/sp-security.result b/mysql-test/r/sp-security.result
index c45ada2047a..4ea26d1021a 100644
--- a/mysql-test/r/sp-security.result
+++ b/mysql-test/r/sp-security.result
@@ -349,9 +349,9 @@ CREATE FUNCTION wl2897_f1() RETURNS INT RETURN 1;
---> connection: mysqltest_1_con
USE mysqltest;
CREATE DEFINER=root@localhost PROCEDURE wl2897_p2() SELECT 2;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
CREATE DEFINER=root@localhost FUNCTION wl2897_f2() RETURNS INT RETURN 2;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
---> connection: mysqltest_2_con
use mysqltest;
diff --git a/mysql-test/r/sp-ucs2.result b/mysql-test/r/sp-ucs2.result
index 1c266e38d97..aa87e8865ed 100644
--- a/mysql-test/r/sp-ucs2.result
+++ b/mysql-test/r/sp-ucs2.result
@@ -12,6 +12,114 @@ a
foo string
drop function bug17615|
drop table t3|
+CREATE FUNCTION f(f1 VARCHAR(64) CHARACTER SET ucs2 COLLATE ucs2_unicode_ci)
+RETURNS VARCHAR(64) CHARACTER SET ucs2 COLLATE ucs2_danish_ci
+BEGIN
+DECLARE f2 VARCHAR(64) CHARACTER SET ucs2 COLLATE ucs2_swedish_ci;
+DECLARE f3 VARCHAR(64) CHARACTER SET ucs2 COLLATE ucs2_bin;
+SET f1= concat(collation(f1), ' ', collation(f2), ' ', collation(f3));
+RETURN f1;
+END|
+SELECT f('a')|
+f('a')
+ucs2_unicode_ci ucs2_swedish_ci ucs2_bin
+SELECT collation(f('a'))|
+collation(f('a'))
+ucs2_danish_ci
+DROP FUNCTION f|
+CREATE FUNCTION f()
+RETURNS VARCHAR(64) UNICODE BINARY
+BEGIN
+RETURN '';
+END|
+SHOW CREATE FUNCTION f;
+DROP FUNCTION f;
+CREATE FUNCTION f()
+RETURNS VARCHAR(64) BINARY UNICODE
+BEGIN
+RETURN '';
+END|
+Function sql_mode Create Function character_set_client collation_connection Database Collation
+f CREATE DEFINER=`root`@`localhost` FUNCTION `f`() RETURNS varchar(64) CHARSET ucs2 COLLATE ucs2_bin
+BEGIN
+RETURN '';
+END latin1 latin1_swedish_ci latin1_swedish_ci
+SHOW CREATE FUNCTION f;
+DROP FUNCTION f;
+#
+# Testing keywords ASCII + BINARY
+#
+CREATE FUNCTION f()
+RETURNS VARCHAR(64) ASCII BINARY
+BEGIN
+RETURN '';
+END|
+Function sql_mode Create Function character_set_client collation_connection Database Collation
+f CREATE DEFINER=`root`@`localhost` FUNCTION `f`() RETURNS varchar(64) CHARSET ucs2 COLLATE ucs2_bin
+BEGIN
+RETURN '';
+END latin1 latin1_swedish_ci latin1_swedish_ci
+SHOW CREATE FUNCTION f;
+DROP FUNCTION f;
+CREATE FUNCTION f()
+RETURNS VARCHAR(64) BINARY ASCII
+BEGIN
+RETURN '';
+END|
+Function sql_mode Create Function character_set_client collation_connection Database Collation
+f CREATE DEFINER=`root`@`localhost` FUNCTION `f`() RETURNS varchar(64) CHARSET latin1 COLLATE latin1_bin
+BEGIN
+RETURN '';
+END latin1 latin1_swedish_ci latin1_swedish_ci
+SHOW CREATE FUNCTION f;
+DROP FUNCTION f;
+#
+# Testing COLLATE in OUT parameter
+#
+CREATE PROCEDURE p1(IN f1 VARCHAR(64) CHARACTER SET ucs2 COLLATE ucs2_czech_ci,
+OUT f2 VARCHAR(64) CHARACTER SET ucs2 COLLATE ucs2_polish_ci)
+BEGIN
+SET f2= f1;
+SET f2= concat(collation(f1), ' ', collation(f2));
+END|
+Function sql_mode Create Function character_set_client collation_connection Database Collation
+f CREATE DEFINER=`root`@`localhost` FUNCTION `f`() RETURNS varchar(64) CHARSET latin1 COLLATE latin1_bin
+BEGIN
+RETURN '';
+END latin1 latin1_swedish_ci latin1_swedish_ci
+CREATE FUNCTION f1()
+RETURNS VARCHAR(64) CHARACTER SET ucs2
+BEGIN
+DECLARE f1 VARCHAR(64) CHARACTER SET ucs2;
+DECLARE f2 VARCHAR(64) CHARACTER SET ucs2;
+SET f1='str';
+CALL p1(f1, f2);
+RETURN f2;
+END|
+SELECT f1()|
+f1()
+ucs2_czech_ci ucs2_polish_ci
+DROP PROCEDURE p1|
+DROP FUNCTION f1|
+CREATE FUNCTION f(f1 VARCHAR(64) COLLATE ucs2_unicode_ci)
+RETURNS VARCHAR(64) CHARACTER SET ucs2
+BEGIN
+RETURN 'str';
+END|
+ERROR 42000: This version of MySQL doesn't yet support 'COLLATE with no CHARACTER SET in SP parameters, RETURNS, DECLARE'
+CREATE FUNCTION f(f1 VARCHAR(64) CHARACTER SET ucs2)
+RETURNS VARCHAR(64) COLLATE ucs2_unicode_ci
+BEGIN
+RETURN 'str';
+END|
+ERROR 42000: This version of MySQL doesn't yet support 'COLLATE with no CHARACTER SET in SP parameters, RETURNS, DECLARE'
+CREATE FUNCTION f(f1 VARCHAR(64) CHARACTER SET ucs2)
+RETURNS VARCHAR(64) CHARACTER SET ucs2
+BEGIN
+DECLARE f2 VARCHAR(64) COLLATE ucs2_unicode_ci;
+RETURN 'str';
+END|
+ERROR 42000: This version of MySQL doesn't yet support 'COLLATE with no CHARACTER SET in SP parameters, RETURNS, DECLARE'
SET NAMES utf8;
DROP FUNCTION IF EXISTS bug48766;
CREATE FUNCTION bug48766 ()
@@ -24,7 +132,7 @@ RETURN 0 utf8 utf8_general_ci latin1_swedish_ci
SELECT DTD_IDENTIFIER FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_NAME='bug48766';
DTD_IDENTIFIER
-enum('w') CHARSET ucs2
+enum('w')
DROP FUNCTION bug48766;
CREATE FUNCTION bug48766 ()
RETURNS ENUM('а','б','в','г') CHARACTER SET ucs2
@@ -36,5 +144,5 @@ RETURN 0 utf8 utf8_general_ci latin1_swedish_ci
SELECT DTD_IDENTIFIER FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_NAME='bug48766';
DTD_IDENTIFIER
-enum('а','б','в','г') CHARSET ucs2
+enum('а','б','в','г')
DROP FUNCTION bug48766;
diff --git a/mysql-test/r/sp-vars.result b/mysql-test/r/sp-vars.result
index f5420a62f63..f167986e82c 100644
--- a/mysql-test/r/sp-vars.result
+++ b/mysql-test/r/sp-vars.result
@@ -110,24 +110,6 @@ v7 v8 v9 v10 v11 v12 v13 v14 v15 v16
v17 v18 v19 v20
12.00 12.12 12.00 12.12
Warnings:
-Warning 1264 Out of range value for column 'v1' at row 1
-Warning 1264 Out of range value for column 'v1u' at row 1
-Warning 1264 Out of range value for column 'v2' at row 1
-Warning 1264 Out of range value for column 'v2u' at row 1
-Warning 1264 Out of range value for column 'v3' at row 1
-Warning 1264 Out of range value for column 'v3u' at row 1
-Warning 1264 Out of range value for column 'v4' at row 1
-Warning 1264 Out of range value for column 'v4u' at row 1
-Warning 1264 Out of range value for column 'v5' at row 1
-Warning 1264 Out of range value for column 'v5u' at row 1
-Warning 1264 Out of range value for column 'v6' at row 1
-Warning 1264 Out of range value for column 'v6u' at row 1
-Warning 1366 Incorrect integer value: 'String 10 ' for column 'v10' at row 1
-Warning 1366 Incorrect integer value: 'String10' for column 'v11' at row 1
-Warning 1265 Data truncated for column 'v12' at row 1
-Warning 1265 Data truncated for column 'v13' at row 1
-Warning 1366 Incorrect integer value: 'Hello, world' for column 'v16' at row 1
-Note 1265 Data truncated for column 'v18' at row 1
Note 1265 Data truncated for column 'v20' at row 1
CALL sp_vars_check_assignment();
i1 i2 i3 i4
@@ -143,21 +125,6 @@ d1 d2 d3
d1 d2 d3
1234.00 1234.12 1234.12
Warnings:
-Warning 1264 Out of range value for column 'i1' at row 1
-Warning 1264 Out of range value for column 'i2' at row 1
-Warning 1264 Out of range value for column 'i3' at row 1
-Warning 1264 Out of range value for column 'i4' at row 1
-Warning 1264 Out of range value for column 'i1' at row 1
-Warning 1264 Out of range value for column 'i2' at row 1
-Warning 1264 Out of range value for column 'i3' at row 1
-Warning 1264 Out of range value for column 'i4' at row 1
-Warning 1264 Out of range value for column 'u1' at row 1
-Warning 1264 Out of range value for column 'u2' at row 1
-Warning 1264 Out of range value for column 'u3' at row 1
-Warning 1264 Out of range value for column 'u4' at row 1
-Warning 1264 Out of range value for column 'u1' at row 1
-Warning 1264 Out of range value for column 'u2' at row 1
-Note 1265 Data truncated for column 'd3' at row 1
Note 1265 Data truncated for column 'd3' at row 1
SELECT sp_vars_check_ret1();
sp_vars_check_ret1()
@@ -198,24 +165,6 @@ v7 v8 v9 v10 v11 v12 v13 v14 v15 v16
v17 v18 v19 v20
12.00 12.12 12.00 12.12
Warnings:
-Warning 1264 Out of range value for column 'v1' at row 1
-Warning 1264 Out of range value for column 'v1u' at row 1
-Warning 1264 Out of range value for column 'v2' at row 1
-Warning 1264 Out of range value for column 'v2u' at row 1
-Warning 1264 Out of range value for column 'v3' at row 1
-Warning 1264 Out of range value for column 'v3u' at row 1
-Warning 1264 Out of range value for column 'v4' at row 1
-Warning 1264 Out of range value for column 'v4u' at row 1
-Warning 1264 Out of range value for column 'v5' at row 1
-Warning 1264 Out of range value for column 'v5u' at row 1
-Warning 1264 Out of range value for column 'v6' at row 1
-Warning 1264 Out of range value for column 'v6u' at row 1
-Warning 1366 Incorrect integer value: 'String 10 ' for column 'v10' at row 1
-Warning 1366 Incorrect integer value: 'String10' for column 'v11' at row 1
-Warning 1265 Data truncated for column 'v12' at row 1
-Warning 1265 Data truncated for column 'v13' at row 1
-Warning 1366 Incorrect integer value: 'Hello, world' for column 'v16' at row 1
-Note 1265 Data truncated for column 'v18' at row 1
Note 1265 Data truncated for column 'v20' at row 1
CALL sp_vars_check_assignment();
i1 i2 i3 i4
@@ -231,21 +180,6 @@ d1 d2 d3
d1 d2 d3
1234.00 1234.12 1234.12
Warnings:
-Warning 1264 Out of range value for column 'i1' at row 1
-Warning 1264 Out of range value for column 'i2' at row 1
-Warning 1264 Out of range value for column 'i3' at row 1
-Warning 1264 Out of range value for column 'i4' at row 1
-Warning 1264 Out of range value for column 'i1' at row 1
-Warning 1264 Out of range value for column 'i2' at row 1
-Warning 1264 Out of range value for column 'i3' at row 1
-Warning 1264 Out of range value for column 'i4' at row 1
-Warning 1264 Out of range value for column 'u1' at row 1
-Warning 1264 Out of range value for column 'u2' at row 1
-Warning 1264 Out of range value for column 'u3' at row 1
-Warning 1264 Out of range value for column 'u4' at row 1
-Warning 1264 Out of range value for column 'u1' at row 1
-Warning 1264 Out of range value for column 'u2' at row 1
-Note 1265 Data truncated for column 'd3' at row 1
Note 1265 Data truncated for column 'd3' at row 1
SELECT sp_vars_check_ret1();
sp_vars_check_ret1()
@@ -451,10 +385,6 @@ FF
HEX(v10)
FF
Warnings:
-Warning 1264 Out of range value for column 'v8' at row 1
-Warning 1264 Out of range value for column 'v9' at row 1
-Warning 1264 Out of range value for column 'v10' at row 1
-Warning 1264 Out of range value for column 'v1' at row 1
Warning 1264 Out of range value for column 'v5' at row 1
DROP PROCEDURE p1;
@@ -1228,3 +1158,30 @@ f1() @b
0 abc
drop function f1;
drop table t1;
+
+---------------------------------------------------------------
+BUG#28299
+---------------------------------------------------------------
+
+CREATE PROCEDURE ctest()
+BEGIN
+DECLARE i CHAR(16);
+DECLARE j INT;
+SET i= 'string';
+SET j= 1 + i;
+END|
+CALL ctest();
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'string '
+DROP PROCEDURE ctest;
+CREATE PROCEDURE vctest()
+BEGIN
+DECLARE i VARCHAR(16);
+DECLARE j INT;
+SET i= 'string';
+SET j= 1 + i;
+END|
+CALL vctest();
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'string'
+DROP PROCEDURE vctest;
diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result
index 1e6227e7380..29af7a51283 100644
--- a/mysql-test/r/sp.result
+++ b/mysql-test/r/sp.result
@@ -526,8 +526,6 @@ end|
delete from t1|
create table t3 ( s char(16), d int)|
call into_test4()|
-Warnings:
-Warning 1329 No data - zero rows fetched, selected, or processed
select * from t3|
s d
into4 NULL
@@ -581,7 +579,7 @@ return 2.7182818284590452354|
set @e = e()|
select e(), @e|
e() @e
-2.71828182845905 2.71828182845905
+2.718281828459045 2.718281828459045
drop function if exists inc|
create function inc(i int) returns int
return i+1|
@@ -618,23 +616,23 @@ create function fun(d double, i int, u int unsigned) returns double
return mul(inc(i), fac(u)) / e()|
select fun(2.3, 3, 5)|
fun(2.3, 3, 5)
-176.582131762292
+176.58213176229233
insert into t2 values (append("xxx", "yyy"), mul(4,3), e())|
insert into t2 values (append("a", "b"), mul(2,mul(3,4)), fun(1.7, 4, 6))|
select * from t2 where s = append("a", "b")|
s i d
-ab 24 1324.36598821719
+ab 24 1324.3659882171924
select * from t2 where i = mul(4,3) or i = mul(mul(3,4),2) order by i|
s i d
-xxxyyy 12 2.71828182845905
-ab 24 1324.36598821719
+xxxyyy 12 2.718281828459045
+ab 24 1324.3659882171924
select * from t2 where d = e()|
s i d
-xxxyyy 12 2.71828182845905
+xxxyyy 12 2.718281828459045
select * from t2 order by i|
s i d
-xxxyyy 12 2.71828182845905
-ab 24 1324.36598821719
+xxxyyy 12 2.718281828459045
+ab 24 1324.3659882171924
delete from t2|
drop function e|
drop function inc|
@@ -1120,8 +1118,6 @@ end|
select f9()|
f9()
6
-Warnings:
-Note 1051 Unknown table 't3'
select f9() from t1 limit 1|
f9()
6
@@ -1162,8 +1158,6 @@ drop temporary table t3|
select f12_1()|
f12_1()
3
-Warnings:
-Note 1051 Unknown table 't3'
select f12_1() from t1 limit 1|
f12_1()
3
@@ -2069,12 +2063,7 @@ end if;
insert into t4 values (2, rc, t3);
end|
call bug1863(10)|
-Warnings:
-Note 1051 Unknown table 'temp_t1'
-Warning 1329 No data - zero rows fetched, selected, or processed
call bug1863(10)|
-Warnings:
-Warning 1329 No data - zero rows fetched, selected, or processed
select * from t4|
f1 rc t3
2 0 NULL
@@ -2339,11 +2328,7 @@ begin
end|
call bug4579_1()|
call bug4579_1()|
-Warnings:
-Warning 1329 No data - zero rows fetched, selected, or processed
call bug4579_1()|
-Warnings:
-Warning 1329 No data - zero rows fetched, selected, or processed
drop procedure bug4579_1|
drop procedure bug4579_2|
drop table t3|
@@ -2392,7 +2377,6 @@ create procedure bug4902()
begin
show charset like 'foo';
show collation like 'foo';
-show column types;
show create table t1;
show create database test;
show databases like 'foo';
@@ -2410,9 +2394,6 @@ end|
call bug4902()|
Charset Description Default collation Maxlen
Collation Charset Id Default Compiled Sortlen
-Type Size Min_Value Max_Value Prec Scale Nullable Auto_Increment Unsigned Zerofill Searchable Case_Sensitive Default Comment
-tinyint 1 -128 127 0 0 YES YES NO YES YES NO NULL,0 A very small integer
-tinyint unsigned 1 0 255 0 0 YES YES YES YES YES NO NULL,0 A very small integer
Table Create Table
t1 CREATE TABLE `t1` (
`id` char(16) NOT NULL DEFAULT '',
@@ -2434,9 +2415,6 @@ Level Code Message
call bug4902()|
Charset Description Default collation Maxlen
Collation Charset Id Default Compiled Sortlen
-Type Size Min_Value Max_Value Prec Scale Nullable Auto_Increment Unsigned Zerofill Searchable Case_Sensitive Default Comment
-tinyint 1 -128 127 0 0 YES YES NO YES YES NO NULL,0 A very small integer
-tinyint unsigned 1 0 255 0 0 YES YES YES YES YES NO NULL,0 A very small integer
Table Create Table
t1 CREATE TABLE `t1` (
`id` char(16) NOT NULL DEFAULT '',
@@ -3052,7 +3030,7 @@ set @x = @x + 1;
return @x;
end|
set @qcs1 = @@query_cache_size|
-set global query_cache_size = 100000|
+set global query_cache_size = 102400|
set @x = 1|
insert into t1 values ("qc", 42)|
select bug9902() from t1|
@@ -3343,9 +3321,43 @@ call bug11529()|
call bug11529()|
delete from t1|
drop procedure bug11529|
+set character set utf8|
drop procedure if exists bug6063|
drop procedure if exists bug7088_1|
drop procedure if exists bug7088_2|
+create procedure bug6063()
+begin
+lâbel: begin end;
+label: begin end;
+label1: begin end;
+end|
+create procedure bug7088_1()
+label1: begin end label1|
+create procedure bug7088_2()
+läbel1: begin end|
+call bug6063()|
+call bug7088_1()|
+call bug7088_2()|
+set character set default|
+show create procedure bug6063|
+Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
+bug6063 CREATE DEFINER=`root`@`localhost` PROCEDURE `bug6063`()
+begin
+lâbel: begin end;
+label: begin end;
+label1: begin end;
+end utf8 latin1_swedish_ci latin1_swedish_ci
+show create procedure bug7088_1|
+Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
+bug7088_1 CREATE DEFINER=`root`@`localhost` PROCEDURE `bug7088_1`()
+label1: begin end label1 utf8 latin1_swedish_ci latin1_swedish_ci
+show create procedure bug7088_2|
+Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
+bug7088_2 CREATE DEFINER=`root`@`localhost` PROCEDURE `bug7088_2`()
+läbel1: begin end utf8 latin1_swedish_ci latin1_swedish_ci
+drop procedure bug6063|
+drop procedure bug7088_1|
+drop procedure bug7088_2|
drop procedure if exists bug9565_sub|
drop procedure if exists bug9565|
create procedure bug9565_sub()
@@ -3736,9 +3748,6 @@ Table Create Table
tm1 CREATE TEMPORARY TABLE `tm1` (
`spv1` decimal(3,3) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
-Warnings:
-Warning 1264 Out of range value for column 'spv1' at row 1
-Warning 1366 Incorrect decimal value: 'test' for column 'spv1' at row 1
call bug12589_2()|
Table Create Table
tm1 CREATE TEMPORARY TABLE `tm1` (
@@ -4296,19 +4305,10 @@ drop procedure if exists bug13012|
create procedure bug13012()
BEGIN
REPAIR TABLE t1;
-BACKUP TABLE t1 to '<MYSQLTEST_VARDIR>/tmp/';
-DROP TABLE t1;
-RESTORE TABLE t1 FROM '<MYSQLTEST_VARDIR>/tmp/';
END|
call bug13012()|
Table Op Msg_type Msg_text
test.t1 repair status OK
-Table Op Msg_type Msg_text
-test.t1 backup Warning The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 6.0. Please use MySQL Administrator (mysqldump, mysql) instead
-test.t1 backup status OK
-Table Op Msg_type Msg_text
-test.t1 restore Warning The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 6.0. Please use MySQL Administrator (mysqldump, mysql) instead
-test.t1 restore status OK
drop procedure bug13012|
create view v1 as select * from t1|
create procedure bug13012()
@@ -4990,22 +4990,22 @@ SELECT dtd_identifier
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f1"|
dtd_identifier
-char(10) CHARSET utf8
+char(10)
SELECT dtd_identifier
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f2"|
dtd_identifier
-char(10) CHARSET koi8r
+char(10)
SELECT dtd_identifier
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f3"|
dtd_identifier
-char(10) CHARSET utf8
+char(10)
SELECT dtd_identifier
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f4"|
dtd_identifier
-char(10) CHARSET koi8r
+char(10)
SELECT CHARSET(bug16211_f1())|
CHARSET(bug16211_f1())
utf8
@@ -5040,22 +5040,22 @@ SELECT dtd_identifier
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f1"|
dtd_identifier
-char(10) CHARSET utf8
+char(10)
SELECT dtd_identifier
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f2"|
dtd_identifier
-char(10) CHARSET koi8r
+char(10)
SELECT dtd_identifier
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f3"|
dtd_identifier
-char(10) CHARSET utf8
+char(10)
SELECT dtd_identifier
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f4"|
dtd_identifier
-char(10) CHARSET koi8r
+char(10)
SELECT CHARSET(bug16211_f1())|
CHARSET(bug16211_f1())
utf8
@@ -5972,9 +5972,9 @@ CREATE TABLE t3 (f1 INT, f2 FLOAT)|
INSERT INTO t3 VALUES (1, 3.4), (1, 2), (1, 0.9), (2, 8), (2, 7)|
SELECT SUM(f2), bug25373(f1) FROM t3 GROUP BY bug25373(f1) WITH ROLLUP|
SUM(f2) bug25373(f1)
-6.30000007152557 1
+6.300000071525574 1
15 2
-21.3000000715256 NULL
+21.300000071525574 NULL
DROP FUNCTION bug25373|
DROP TABLE t3|
DROP DATABASE IF EXISTS mysqltest1|
@@ -6106,35 +6106,6 @@ bug5274_f2()
x
Warnings:
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
-Warning 1265 Data truncated for column 'bug5274_f1' at row 1
DROP FUNCTION bug5274_f1|
DROP FUNCTION bug5274_f2|
drop procedure if exists proc_21513|
@@ -6229,20 +6200,17 @@ f1(2)
0
Warnings:
Warning 1329 No data - zero rows fetched, selected, or processed
-Warning 1329 No data - zero rows fetched, selected, or processed
PREPARE s1 FROM 'SELECT f1(2)';
EXECUTE s1;
f1(2)
0
Warnings:
Warning 1329 No data - zero rows fetched, selected, or processed
-Warning 1329 No data - zero rows fetched, selected, or processed
EXECUTE s1;
f1(2)
0
Warnings:
Warning 1329 No data - zero rows fetched, selected, or processed
-Warning 1329 No data - zero rows fetched, selected, or processed
DROP PROCEDURE p1;
DROP PROCEDURE p2;
DROP FUNCTION f1;
@@ -6254,6 +6222,7 @@ create procedure mysqltest_db1.sp_bug28551() begin end;
call mysqltest_db1.sp_bug28551();
show warnings;
Level Code Message
+Note 1008 Can't drop database 'mysqltest_db1'; database doesn't exist
drop database mysqltest_db1;
drop database if exists mysqltest_db1;
drop table if exists test.t1;
@@ -6934,15 +6903,12 @@ DROP FUNCTION f1;
drop procedure if exists p;
set @old_mode= @@sql_mode;
-set @@sql_mode= pow(2,32)-1;
+set @@sql_mode= cast(pow(2,32)-1 as unsigned integer);
select @@sql_mode into @full_mode;
create procedure p() begin end;
call p();
-select @@sql_mode;
-@@sql_mode
-REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,?,ONLY_FULL_GROUP_BY,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH
set @@sql_mode= @old_mode;
-select replace(@full_mode, '?', 'NOT_USED') into @full_mode;
+select replace(@full_mode, ',,,', ',NOT_USED,') into @full_mode;
select replace(@full_mode, 'ALLOW_INVALID_DATES', 'INVALID_DATES') into @full_mode;
select name from mysql.proc where name = 'p' and sql_mode = @full_mode;
name
@@ -7056,3 +7022,130 @@ DROP PROCEDURE p5;
# ------------------------------------------------------------------
# -- End of 5.1 tests
# ------------------------------------------------------------------
+DROP FUNCTION IF EXISTS f1;
+DROP TABLE IF EXISTS t_non_existing;
+DROP TABLE IF EXISTS t1;
+CREATE FUNCTION f1() RETURNS INT
+BEGIN
+DECLARE v INT;
+SELECT a INTO v FROM t_non_existing;
+RETURN 1;
+END|
+CREATE TABLE t1 (a INT) ENGINE = myisam;
+INSERT INTO t1 VALUES (1);
+SELECT * FROM t1 WHERE a = f1();
+ERROR 42S02: Table 'test.t_non_existing' doesn't exist
+DROP FUNCTION f1;
+DROP TABLE t1;
+DROP PROCEDURE IF EXISTS p1;
+CREATE PROCEDURE p1(a INT, b CHAR)
+BEGIN
+IF a > 0 THEN
+CALL p1(a-1, 'ab');
+ELSE
+SELECT 1;
+END IF;
+END|
+SET @save_max_sp_recursion= @@max_sp_recursion_depth;
+SET @@max_sp_recursion_depth= 5;
+CALL p1(4, 'a');
+1
+1
+Warnings:
+Warning 1265 Data truncated for column 'b' at row 1
+Warning 1265 Data truncated for column 'b' at row 1
+Warning 1265 Data truncated for column 'b' at row 1
+Warning 1265 Data truncated for column 'b' at row 1
+SET @@max_sp_recursion_depth= @save_max_sp_recursion;
+DROP PROCEDURE p1;
+DROP PROCEDURE IF EXISTS p1;
+CREATE PROCEDURE p1(a CHAR)
+BEGIN
+SELECT 1;
+SELECT CAST('10 ' as UNSIGNED INTEGER);
+SELECT 1;
+END|
+CALL p1('data truncated parameter');
+1
+1
+CAST('10 ' as UNSIGNED INTEGER)
+10
+1
+1
+Warnings:
+Warning 1265 Data truncated for column 'a' at row 1
+Warning 1292 Truncated incorrect INTEGER value: '10 '
+DROP PROCEDURE p1;
+DROP PROCEDURE IF EXISTS p1;
+DROP PROCEDURE IF EXISTS p2;
+DROP PROCEDURE IF EXISTS p3;
+DROP PROCEDURE IF EXISTS p4;
+CREATE PROCEDURE p1()
+CALL p2()|
+CREATE PROCEDURE p2()
+CALL p3()|
+CREATE PROCEDURE p3()
+CALL p4()|
+CREATE PROCEDURE p4()
+BEGIN
+SELECT 1;
+SELECT CAST('10 ' as UNSIGNED INTEGER);
+SELECT 2;
+END|
+CALL p1();
+1
+1
+CAST('10 ' as UNSIGNED INTEGER)
+10
+2
+2
+Warnings:
+Warning 1292 Truncated incorrect INTEGER value: '10 '
+DROP PROCEDURE p1;
+DROP PROCEDURE p2;
+DROP PROCEDURE p3;
+DROP PROCEDURE p4;
+DROP FUNCTION IF EXISTS f1;
+DROP FUNCTION IF EXISTS f2;
+DROP FUNCTION IF EXISTS f3;
+DROP FUNCTION IF EXISTS f4;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (a CHAR(2));
+INSERT INTO t1 VALUES ('aa');
+CREATE FUNCTION f1() RETURNS CHAR
+RETURN (SELECT f2())|
+CREATE FUNCTION f2() RETURNS CHAR
+RETURN (SELECT f3())|
+CREATE FUNCTION f3() RETURNS CHAR
+RETURN (SELECT f4())|
+CREATE FUNCTION f4() RETURNS CHAR
+BEGIN
+RETURN (SELECT a FROM t1);
+END|
+SELECT f1();
+f1()
+a
+Warnings:
+Warning 1265 Data truncated for column 'f4()' at row 1
+DROP FUNCTION f1;
+DROP FUNCTION f2;
+DROP FUNCTION f3;
+DROP FUNCTION f4;
+DROP TABLE t1;
+#
+# Bug#34197: CREATE PROCEDURE fails when COMMENT truncated in non
+# strict SQL mode
+#
+DROP PROCEDURE IF EXISTS p1;
+CREATE PROCEDURE p1 ()
+COMMENT
+'12345678901234567890123456789012345678901234567890123456789012345678901234567890'
+BEGIN
+END;
+SELECT comment FROM mysql.proc WHERE name = "p1";
+comment
+12345678901234567890123456789012345678901234567890123456789012345678901234567890
+SELECT routine_comment FROM information_schema.routines WHERE routine_name = "p1";
+routine_comment
+12345678901234567890123456789012345678901234567890123456789012345678901234567890
+DROP PROCEDURE p1;
diff --git a/mysql-test/r/sp_notembedded.result b/mysql-test/r/sp_notembedded.result
index 831616f491b..228fe008447 100644
--- a/mysql-test/r/sp_notembedded.result
+++ b/mysql-test/r/sp_notembedded.result
@@ -21,9 +21,11 @@ end|
call bug4902_2()|
show warnings|
Level Code Message
+Note 1305 PROCEDURE bug4902_2 does not exist
call bug4902_2()|
show warnings|
Level Code Message
+Note 1305 PROCEDURE bug4902_2 does not exist
drop procedure bug4902_2|
drop table if exists t1|
create table t1 (
diff --git a/mysql-test/r/sp_trans.result b/mysql-test/r/sp_trans.result
index 3cc251bc0a6..f55e535a293 100644
--- a/mysql-test/r/sp_trans.result
+++ b/mysql-test/r/sp_trans.result
@@ -533,9 +533,7 @@ set @@session.max_heap_table_size=default|
CREATE DATABASE db_bug7787|
use db_bug7787|
CREATE PROCEDURE p1()
-SHOW INNODB STATUS; |
-Warnings:
-Warning 1287 The syntax 'SHOW INNODB STATUS' is deprecated and will be removed in MySQL 6.0. Please use 'SHOW ENGINE INNODB STATUS' instead
+SHOW ENGINE INNODB STATUS; |
GRANT EXECUTE ON PROCEDURE p1 TO user_bug7787@localhost|
DROP DATABASE db_bug7787|
drop user user_bug7787@localhost|
@@ -556,3 +554,30 @@ f1 bug13575(f1)
3 ccc
drop function bug13575|
drop table t3|
+#
+# End of 5.1 tests
+#
+#
+# Bug #35877 Update .. WHERE with function, constraint violation, crash
+#
+DROP TABLE IF EXISTS t1_aux|
+DROP TABLE IF EXISTS t1_not_null|
+DROP FUNCTION IF EXISTS f1_two_inserts|
+# MyISAM test
+CREATE TABLE t1_not_null (f1 BIGINT, f2 BIGINT NOT NULL)|
+CREATE TABLE t1_aux (f1 BIGINT, f2 BIGINT)|
+INSERT INTO t1_aux VALUES (1,1)|
+CREATE FUNCTION f1_two_inserts() returns INTEGER
+BEGIN
+INSERT INTO t1_not_null SET f1 = 10, f2 = NULL;
+RETURN 1;
+END|
+UPDATE t1_aux SET f2 = 2 WHERE f1 = f1_two_inserts()|
+ERROR 23000: Column 'f2' cannot be null
+# InnoDB test
+ALTER TABLE t1_not_null ENGINE = InnoDB|
+ALTER TABLE t1_aux ENGINE = InnoDB|
+UPDATE t1_aux SET f2 = 2 WHERE f1 = f1_two_inserts()|
+ERROR 23000: Column 'f2' cannot be null
+DROP TABLE t1_aux, t1_not_null|
+DROP FUNCTION f1_two_inserts|
diff --git a/mysql-test/r/sp_trans_log.result b/mysql-test/r/sp_trans_log.result
index 7a6173b89e2..117f6de754a 100644
--- a/mysql-test/r/sp_trans_log.result
+++ b/mysql-test/r/sp_trans_log.result
@@ -14,15 +14,5 @@ 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 */|
-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 # #
-select count(*),@a from t1 /* must be 1,1 */|
-count(*) @a
-1 1
drop table t1,t2;
drop function if exists bug23333;
diff --git a/mysql-test/r/sql_mode.result b/mysql-test/r/sql_mode.result
index 0b0d5a38d0b..e83879274a1 100644
--- a/mysql-test/r/sql_mode.result
+++ b/mysql-test/r/sql_mode.result
@@ -506,6 +506,12 @@ mysqltest_32753@localhost
set session sql_mode=@OLD_SQL_MODE;
flush privileges;
drop user mysqltest_32753@localhost;
+SET @org_mode=@@sql_mode;
+SET @@sql_mode='traditional';
+SELECT @@sql_mode LIKE '%NO_ENGINE_SUBSTITUTION%';
+@@sql_mode LIKE '%NO_ENGINE_SUBSTITUTION%'
+1
+SET sql_mode=@org_mode;
DROP TABLE IF EXISTS t1,t2;
CREATE USER 'user_PCTFL'@'localhost' identified by 'PWD';
CREATE USER 'user_no_PCTFL'@'localhost' identified by 'PWD';
diff --git a/mysql-test/r/status.result b/mysql-test/r/status.result
index ce3acba9b8a..c0cd0f7bc1a 100644
--- a/mysql-test/r/status.result
+++ b/mysql-test/r/status.result
@@ -238,5 +238,11 @@ SELECT 9;
9
DROP PROCEDURE p1;
DROP FUNCTION f1;
+DROP VIEW IF EXISTS v1;
+CREATE VIEW v1 AS SELECT VARIABLE_NAME AS NAME, CONVERT(VARIABLE_VALUE, UNSIGNED) AS VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS;
+SELECT VALUE INTO @tc FROM v1 WHERE NAME = 'Threads_connected';
+SELECT NAME FROM v1 WHERE NAME = 'Threads_created' AND VALUE < @tc;
+NAME
+DROP VIEW v1;
set @@global.concurrent_insert= @old_concurrent_insert;
SET GLOBAL log_output = @old_log_output;
diff --git a/mysql-test/r/strict.result b/mysql-test/r/strict.result
index 241f4198bf7..bdb7576f95e 100644
--- a/mysql-test/r/strict.result
+++ b/mysql-test/r/strict.result
@@ -2,7 +2,7 @@ set @org_mode=@@sql_mode;
set @@sql_mode='ansi,traditional';
select @@sql_mode;
@@sql_mode
-REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
DROP TABLE IF EXISTS t1, t2;
CREATE TABLE t1 (col1 date);
INSERT INTO t1 VALUES('2004-01-01'),('2004-02-29');
@@ -315,8 +315,8 @@ MOD(col1,0)
NULL
NULL
Warnings:
-Error 1365 Division by 0
-Error 1365 Division by 0
+Warning 1365 Division by 0
+Warning 1365 Division by 0
INSERT INTO t1 (col1) VALUES(-129);
ERROR 22003: Out of range value for column 'col1' at row 1
INSERT INTO t1 (col1) VALUES(128);
@@ -343,7 +343,7 @@ SELECT MOD(col1,0) FROM t1 WHERE col1 > 0 LIMIT 1;
MOD(col1,0)
NULL
Warnings:
-Error 1365 Division by 0
+Warning 1365 Division by 0
UPDATE t1 SET col1 = col1 - 50 WHERE col1 < 0;
ERROR 22003: Out of range value for column 'col1' at row 1
UPDATE t1 SET col2=col2 + 50 WHERE col2 > 0;
@@ -353,16 +353,16 @@ ERROR 22012: Division by 0
set @@sql_mode='ERROR_FOR_DIVISION_BY_ZERO';
INSERT INTO t1 values (1/0,1/0);
Warnings:
-Error 1365 Division by 0
-Error 1365 Division by 0
+Warning 1365 Division by 0
+Warning 1365 Division by 0
set @@sql_mode='ansi,traditional';
SELECT MOD(col1,0) FROM t1 WHERE col1 > 0 LIMIT 2;
MOD(col1,0)
NULL
NULL
Warnings:
-Error 1365 Division by 0
-Error 1365 Division by 0
+Warning 1365 Division by 0
+Warning 1365 Division by 0
INSERT INTO t1 (col1) VALUES ('');
ERROR HY000: Incorrect integer value: '' for column 'col1' at row 1
INSERT INTO t1 (col1) VALUES ('a59b');
@@ -374,8 +374,8 @@ Warnings:
Warning 1265 Data truncated for column 'col1' at row 1
INSERT IGNORE INTO t1 values (1/0,1/0);
Warnings:
-Error 1365 Division by 0
-Error 1365 Division by 0
+Warning 1365 Division by 0
+Warning 1365 Division by 0
set @@sql_mode='ansi';
INSERT INTO t1 values (1/0,1/0);
set @@sql_mode='ansi,traditional';
@@ -457,8 +457,8 @@ Warnings:
Warning 1265 Data truncated for column 'col1' at row 1
INSERT IGNORE INTO t1 values (1/0,1/0);
Warnings:
-Error 1365 Division by 0
-Error 1365 Division by 0
+Warning 1365 Division by 0
+Warning 1365 Division by 0
INSERT IGNORE INTO t1 VALUES(-32769,-1),(32768,65536);
Warnings:
Warning 1264 Out of range value for column 'col1' at row 1
@@ -541,8 +541,8 @@ Warnings:
Warning 1265 Data truncated for column 'col1' at row 1
INSERT IGNORE INTO t1 values (1/0,1/0);
Warnings:
-Error 1365 Division by 0
-Error 1365 Division by 0
+Warning 1365 Division by 0
+Warning 1365 Division by 0
INSERT IGNORE INTO t1 VALUES(-8388609,-1),(8388608,16777216);
Warnings:
Warning 1264 Out of range value for column 'col1' at row 1
@@ -625,8 +625,8 @@ Warnings:
Warning 1265 Data truncated for column 'col1' at row 1
INSERT IGNORE INTO t1 values (1/0,1/0);
Warnings:
-Error 1365 Division by 0
-Error 1365 Division by 0
+Warning 1365 Division by 0
+Warning 1365 Division by 0
INSERT IGNORE INTO t1 values (-2147483649, -1),(2147643648,4294967296);
Warnings:
Warning 1264 Out of range value for column 'col1' at row 1
@@ -707,8 +707,8 @@ Warnings:
Warning 1265 Data truncated for column 'col1' at row 1
INSERT IGNORE INTO t1 values (1/0,1/0);
Warnings:
-Error 1365 Division by 0
-Error 1365 Division by 0
+Warning 1365 Division by 0
+Warning 1365 Division by 0
INSERT IGNORE INTO t1 VALUES(-9223372036854775809,-1),(9223372036854775808,18446744073709551616);
Warnings:
Warning 1264 Out of range value for column 'col1' at row 1
@@ -794,7 +794,7 @@ Warnings:
Note 1265 Data truncated for column 'col1' at row 1
INSERT IGNORE INTO t1 values (1/0);
Warnings:
-Error 1365 Division by 0
+Warning 1365 Division by 0
INSERT IGNORE INTO t1 VALUES(1000),(-1000);
Warnings:
Warning 1264 Out of range value for column 'col1' at row 1
@@ -861,7 +861,7 @@ Warnings:
Warning 1265 Data truncated for column 'col1' at row 1
INSERT IGNORE INTO t1 (col1) VALUES (1/0);
Warnings:
-Error 1365 Division by 0
+Warning 1365 Division by 0
INSERT IGNORE INTO t1 VALUES (+3.4E+39,-3.4E+39);
Warnings:
Warning 1264 Out of range value for column 'col1' at row 1
@@ -873,14 +873,14 @@ Warning 1264 Out of range value for column 'col2' at row 1
SELECT * FROM t1;
col1 col2
-1.1e-37 0
-3.4e+38 3.4e+38
+3.4e38 3.4e38
-1.1e-37 0
-3.4e+38 3.4e+38
+3.4e38 3.4e38
0 NULL
2 NULL
NULL NULL
-3.40282e+38 0
-3.40282e+38 0
+3.40282e38 0
+3.40282e38 0
DROP TABLE t1;
CREATE TABLE t1 (col1 DOUBLE PRECISION, col2 DOUBLE PRECISION UNSIGNED);
INSERT INTO t1 VALUES (-2.2E-307,0),(2E-307,0),(+1.7E+308,+1.7E+308);
@@ -910,7 +910,7 @@ Warnings:
Warning 1265 Data truncated for column 'col1' at row 1
INSERT IGNORE INTO t1 (col1) values (1/0);
Warnings:
-Error 1365 Division by 0
+Warning 1365 Division by 0
INSERT IGNORE INTO t1 VALUES (+1.9E+309,-1.9E+309);
ERROR 22007: Illegal double '1.9E+309' value found during parsing
INSERT IGNORE INTO t1 VALUES ('+2.0E+309','-2.0E+309');
@@ -922,14 +922,14 @@ SELECT * FROM t1;
col1 col2
-2.2e-307 0
1e-303 0
-NULL 1.7e+308
+NULL 1.7e308
-2.2e-307 0
-2e-307 0
-NULL 1.7e+308
+NULL 1.7e308
0 NULL
2 NULL
NULL NULL
-1.79769313486232e+308 0
+1.7976931348623157e308 0
DROP TABLE t1;
CREATE TABLE t1 (col1 CHAR(5), col2 VARCHAR(6));
INSERT INTO t1 VALUES ('hello', 'hello'),('he', 'he'),('hello ', 'hello ');
@@ -1080,13 +1080,13 @@ Warnings:
Warning 1292 Truncated incorrect datetime value: '31.10.2004 15.30 abc'
insert into t1 values(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
Warnings:
-Error 1411 Incorrect datetime value: '32.10.2004 15.30' for function str_to_date
+Warning 1411 Incorrect datetime value: '32.10.2004 15.30' for function str_to_date
insert into t1 values(STR_TO_DATE('2004.12.12 22:22:33 AM','%Y.%m.%d %r'));
Warnings:
-Error 1411 Incorrect time value: '22:22:33 AM' for function str_to_date
+Warning 1411 Incorrect time value: '22:22:33 AM' for function str_to_date
insert into t1 values(STR_TO_DATE('2004.12.12 abc','%Y.%m.%d %T'));
Warnings:
-Error 1411 Incorrect time value: 'abc' for function str_to_date
+Warning 1411 Incorrect time value: 'abc' for function str_to_date
insert into t1 values(STR_TO_DATE('31.10.2004 15.30','%d.%m.%Y %H.%i'));
insert into t1 values(STR_TO_DATE('2004.12.12 11:22:33 AM','%Y.%m.%d %r'));
insert into t1 values(STR_TO_DATE('2004.12.12 10:22:59','%Y.%m.%d %T'));
@@ -1104,9 +1104,9 @@ select count(*) from t1 where STR_TO_DATE('2004.12.12 10:22:61','%Y.%m.%d %T') I
count(*)
7
Warnings:
-Error 1411 Incorrect datetime value: '2004.12.12 10:22:61' for function str_to_date
-Error 1411 Incorrect datetime value: '2004.12.12 10:22:61' for function str_to_date
-Error 1411 Incorrect datetime value: '2004.12.12 10:22:61' for function str_to_date
+Warning 1411 Incorrect datetime value: '2004.12.12 10:22:61' for function str_to_date
+Warning 1411 Incorrect datetime value: '2004.12.12 10:22:61' for function str_to_date
+Warning 1411 Incorrect datetime value: '2004.12.12 10:22:61' for function str_to_date
drop table t1;
create table t1 (col1 char(3), col2 integer);
insert into t1 (col1) values (cast(1000 as char(3)));
diff --git a/mysql-test/r/subselect.result b/mysql-test/r/subselect.result
index dc3cff68731..cd7af9651b9 100644
--- a/mysql-test/r/subselect.result
+++ b/mysql-test/r/subselect.result
@@ -50,7 +50,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
Warnings:
Note 1276 Field or reference 'b.a' of SELECT #3 was resolved in SELECT #1
Note 1276 Field or reference 'b.a' of SELECT #3 was resolved in SELECT #1
-Note 1003 select 1 AS `1` from (select 1 AS `a`) `b` having ((select '1' AS `a`) = 1)
+Note 1003 select 1 AS `1` from dual having ((select '1' AS `a`) = 1)
SELECT 1 FROM (SELECT 1 as a) as b HAVING (SELECT a)=1;
1
1
@@ -203,7 +203,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
3 DERIVED t2 ALL NULL NULL NULL NULL 2 100.00 Using where
2 SUBQUERY t3 ALL NULL NULL NULL NULL 3 100.00 Using where; Using filesort
Warnings:
-Note 1003 select (select `test`.`t3`.`a` AS `a` from `test`.`t3` where (`test`.`t3`.`a` < 8) order by 1 desc limit 1) AS `(select t3.a from t3 where a<8 order by 1 desc limit 1)`,'2' AS `a` from (select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`a` > 1)) `tt`
+Note 1003 select (select `test`.`t3`.`a` AS `a` from `test`.`t3` where (`test`.`t3`.`a` < 8) order by 1 desc limit 1) AS `(select t3.a from t3 where a<8 order by 1 desc limit 1)`,'2' AS `a` from dual
select * from t1 where t1.a=(select t2.a from t2 where t2.b=(select max(a) from t3) order by 1 desc limit 1);
a
2
@@ -314,7 +314,7 @@ NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
Warnings:
Note 1276 Field or reference 'test.t2.a' of SELECT #2 was resolved in SELECT #1
Note 1276 Field or reference 'test.t2.a' of SELECT #3 was resolved in SELECT #1
-Note 1003 select (select '2' AS `a` from `test`.`t1` where ('2' = `test`.`t2`.`a`) union select `test`.`t5`.`a` AS `a` from `test`.`t5` where (`test`.`t5`.`a` = `test`.`t2`.`a`)) AS `(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a)`,`test`.`t2`.`a` AS `a` from `test`.`t2`
+Note 1003 select (select '2' AS `a` from dual where ('2' = `test`.`t2`.`a`) union select `test`.`t5`.`a` AS `a` from `test`.`t5` where (`test`.`t5`.`a` = `test`.`t2`.`a`)) AS `(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a)`,`test`.`t2`.`a` AS `a` from `test`.`t2`
select (select a from t1 where t1.a=t2.a union all select a from t5 where t5.a=t2.a), a from t2;
ERROR 21000: Subquery returns more than 1 row
create table t6 (patient_uq int, clinic_uq int, index i1 (clinic_uq));
@@ -735,7 +735,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
Warnings:
Note 1249 Select 3 was reduced during optimization
Note 1249 Select 2 was reduced during optimization
-Note 1003 select `test`.`t2`.`id` AS `id` from `test`.`t2` where (`test`.`t2`.`id` = (1 + 1))
+Note 1003 select `test`.`t2`.`id` AS `id` from `test`.`t2` where (`test`.`t2`.`id` = <cache>((1 + 1)))
EXPLAIN EXTENDED SELECT * FROM t2 WHERE id IN (SELECT 1 UNION SELECT 3);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t2 index NULL id 5 NULL 2 100.00 Using where; Using index
@@ -1429,7 +1429,7 @@ explain extended (select * from t1);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
Warnings:
-Note 1003 (select 'tttt' AS `s1` from `test`.`t1`)
+Note 1003 (select 'tttt' AS `s1` from dual)
(select * from t1);
s1
tttt
@@ -1617,7 +1617,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
3 UNION t1 system NULL NULL NULL NULL 1 100.00
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
Warnings:
-Note 1003 select 'e' AS `s1` from `test`.`t1` where 1
+Note 1003 select 'e' AS `s1` from dual where 1
drop table t1;
CREATE TABLE t1 (number char(11) NOT NULL default '') ENGINE=MyISAM CHARSET=latin1;
INSERT INTO t1 VALUES ('69294728265'),('18621828126'),('89356874041'),('95895001874');
@@ -3562,9 +3562,7 @@ SELECT sql_no_cache * FROM t1 WHERE NOT EXISTS
(SELECT i FROM t1) UNION
(SELECT i 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 'UNION
-(SELECT i FROM t1)
-)' at line 3
+i
SELECT * FROM t1
WHERE NOT EXISTS (((SELECT i FROM t1) UNION (SELECT i 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 'UNION (SELECT i FROM t1)))' at line 2
@@ -3574,7 +3572,11 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp
from t1' at line 1
explain select * from t1 where not exists
((select t11.i from t1 t11) union (select t12.i from t1 t12));
-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 'union (select t12.i from t1 t12))' at line 2
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
+2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL no matching row in const table
+3 UNION NULL NULL NULL NULL NULL NULL NULL no matching row in const table
+NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(250), b INT auto_increment, PRIMARY KEY (b));
insert into t1 (a) values (FLOOR(rand() * 100));
@@ -3667,8 +3669,6 @@ CREATE TABLE t1 (a int, b int auto_increment, PRIMARY KEY (b));
CREATE TABLE t2 (x int auto_increment, y int, z int,
PRIMARY KEY (x), FOREIGN KEY (y) REFERENCES t1 (b));
SET SESSION sort_buffer_size = 32 * 1024;
-Warnings:
-Warning 1292 Truncated incorrect sort_buffer_size value: '32768'
SELECT SQL_NO_CACHE COUNT(*)
FROM (SELECT a, b, (SELECT x FROM t2 WHERE y=b ORDER BY z DESC LIMIT 1) c
FROM t1) t;
@@ -4279,8 +4279,15 @@ Note 1003 select 2 AS `2` from `test`.`t1` where exists(select 1 AS `1` from `te
EXPLAIN EXTENDED
SELECT 2 FROM t1 WHERE EXISTS ((SELECT 1 FROM t2 WHERE t1.a=t2.a) UNION
(SELECT 1 FROM t2 WHERE t1.a = t2.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 'UNION
-(SELECT 1 FROM t2 WHERE t1.a = t2.a))' at line 2
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00 Using where
+2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 100.00 Using where
+3 DEPENDENT UNION t2 ALL NULL NULL NULL NULL 2 100.00 Using where
+NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
+Warnings:
+Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
+Note 1276 Field or reference 'test.t1.a' of SELECT #3 was resolved in SELECT #1
+Note 1003 select 2 AS `2` from `test`.`t1` where exists((select 1 AS `1` from `test`.`t2` where (`test`.`t1`.`a` = `test`.`t2`.`a`)) union (select 1 AS `1` from `test`.`t2` where (`test`.`t1`.`a` = `test`.`t2`.`a`)))
DROP TABLE t1,t2;
create table t1(f11 int, f12 int);
create table t2(f21 int unsigned not null, f22 int, f23 varchar(10));
@@ -4588,6 +4595,270 @@ id g v s
51 50 NULL l
61 60 NULL l
drop table t1, t2;
+#
+# Bug#33204: INTO is allowed in subselect, causing inconsistent results
+#
+CREATE TABLE t1( a INT );
+INSERT INTO t1 VALUES (1),(2);
+CREATE TABLE t2( a INT, b INT );
+SELECT *
+FROM (SELECT a INTO @var FROM t1 WHERE a = 2) t1a;
+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 'INTO @var FROM t1 WHERE a = 2) t1a' at line 2
+SELECT *
+FROM (SELECT a INTO OUTFILE 'file' FROM t1 WHERE a = 2) t1a;
+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 'INTO OUTFILE 'file' FROM t1 WHERE a = 2) t1a' at line 2
+SELECT *
+FROM (SELECT a INTO DUMPFILE 'file' FROM t1 WHERE a = 2) t1a;
+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 'INTO DUMPFILE 'file' FROM t1 WHERE a = 2) t1a' at line 2
+SELECT * FROM (
+SELECT 1 a
+UNION
+SELECT a INTO @var FROM t1 WHERE a = 2
+) t1a;
+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 'INTO @var FROM t1 WHERE a = 2
+) t1a' at line 4
+SELECT * FROM (
+SELECT 1 a
+UNION
+SELECT a INTO OUTFILE 'file' FROM t1 WHERE a = 2
+) t1a;
+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 'INTO OUTFILE 'file' FROM t1 WHERE a = 2
+) t1a' at line 4
+SELECT * FROM (
+SELECT 1 a
+UNION
+SELECT a INTO DUMPFILE 'file' FROM t1 WHERE a = 2
+) t1a;
+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 'INTO DUMPFILE 'file' FROM t1 WHERE a = 2
+) t1a' at line 4
+SELECT * FROM (SELECT a FROM t1 WHERE a = 2) t1a;
+a
+2
+SELECT * FROM (
+SELECT a FROM t1 WHERE a = 2
+UNION
+SELECT a FROM t1 WHERE a = 2
+) t1a;
+a
+2
+SELECT * FROM (
+SELECT 1 a
+UNION
+SELECT a FROM t1 WHERE a = 2
+UNION
+SELECT a FROM t1 WHERE a = 2
+) t1a;
+a
+1
+2
+SELECT * FROM ((SELECT 1 a) UNION SELECT 1 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 ')' at line 1
+SELECT * FROM (SELECT 1 a UNION (SELECT 1 a)) alias;
+a
+1
+SELECT * FROM (SELECT 1 UNION SELECT 1) t1a;
+1
+1
+SELECT * FROM ((SELECT 1 a INTO @a)) t1a;
+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 'INTO @a)) t1a' at line 1
+SELECT * FROM ((SELECT 1 a INTO OUTFILE 'file' )) t1a;
+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 'INTO OUTFILE 'file' )) t1a' at line 1
+SELECT * FROM ((SELECT 1 a INTO DUMPFILE 'file' )) t1a;
+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 'INTO DUMPFILE 'file' )) t1a' at line 1
+SELECT * FROM (SELECT 1 a UNION (SELECT 1 a INTO @a)) t1a;
+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 'INTO @a)) t1a' at line 1
+SELECT * FROM (SELECT 1 a UNION (SELECT 1 a INTO DUMPFILE 'file' )) t1a;
+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 'INTO DUMPFILE 'file' )) t1a' at line 1
+SELECT * FROM (SELECT 1 a UNION (SELECT 1 a INTO OUTFILE 'file' )) t1a;
+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 'INTO OUTFILE 'file' )) t1a' at line 1
+SELECT * FROM (SELECT 1 a UNION ((SELECT 1 a INTO @a))) t1a;
+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 'INTO @a))) t1a' at line 1
+SELECT * FROM (SELECT 1 a UNION ((SELECT 1 a INTO DUMPFILE 'file' ))) t1a;
+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 'INTO DUMPFILE 'file' ))) t1a' at line 1
+SELECT * FROM (SELECT 1 a UNION ((SELECT 1 a INTO OUTFILE 'file' ))) t1a;
+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 'INTO OUTFILE 'file' ))) t1a' at line 1
+SELECT * FROM (SELECT 1 a ORDER BY a) t1a;
+a
+1
+SELECT * FROM (SELECT 1 a UNION SELECT 1 a ORDER BY a) t1a;
+a
+1
+SELECT * FROM (SELECT 1 a UNION SELECT 1 a LIMIT 1) t1a;
+a
+1
+SELECT * FROM (SELECT 1 a UNION SELECT 1 a ORDER BY a LIMIT 1) t1a;
+a
+1
+SELECT * FROM t1 JOIN (SELECT 1 UNION SELECT 1) alias ON 1;
+a 1
+1 1
+2 1
+SELECT * FROM t1 JOIN ((SELECT 1 UNION SELECT 1)) ON 1;
+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 ')) ON 1' at line 1
+SELECT * FROM t1 JOIN (t1 t1a UNION SELECT 1) ON 1;
+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 'ON 1' at line 1
+SELECT * FROM t1 JOIN ((t1 t1a UNION SELECT 1)) ON 1;
+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 ') ON 1' at line 1
+SELECT * FROM t1 JOIN (t1 t1a) t1a ON 1;
+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 't1a ON 1' at line 1
+SELECT * FROM t1 JOIN ((t1 t1a)) t1a ON 1;
+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 't1a ON 1' at line 1
+SELECT * FROM t1 JOIN (t1 t1a) ON 1;
+a a
+1 1
+2 1
+1 2
+2 2
+SELECT * FROM t1 JOIN ((t1 t1a)) ON 1;
+a a
+1 1
+2 1
+1 2
+2 2
+SELECT * FROM (t1 t1a);
+a
+1
+2
+SELECT * FROM ((t1 t1a));
+a
+1
+2
+SELECT * FROM t1 JOIN (SELECT 1 t1a) alias ON 1;
+a t1a
+1 1
+2 1
+SELECT * FROM t1 JOIN ((SELECT 1 t1a)) alias ON 1;
+a t1a
+1 1
+2 1
+SELECT * FROM t1 JOIN (SELECT 1 a) a ON 1;
+a a
+1 1
+2 1
+SELECT * FROM t1 JOIN ((SELECT 1 a)) a ON 1;
+a a
+1 1
+2 1
+SELECT * FROM (t1 JOIN (SELECT 1) t1a1 ON 1) t1a2;
+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 't1a2' at line 1
+SELECT * FROM t1 WHERE a = ALL ( SELECT 1 );
+a
+1
+SELECT * FROM t1 WHERE a = ALL ( SELECT 1 UNION SELECT 1 );
+a
+1
+SELECT * FROM t1 WHERE a = ANY ( SELECT 3 UNION SELECT 1 );
+a
+1
+SELECT * FROM t1 WHERE a = ANY ( SELECT 1 UNION SELECT 1 INTO @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 'INTO @a)' at line 1
+SELECT * FROM t1 WHERE a = ANY ( SELECT 1 UNION SELECT 1 INTO OUTFILE 'file' );
+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 'INTO OUTFILE 'file' )' at line 1
+SELECT * FROM t1 WHERE a = ANY ( SELECT 1 UNION SELECT 1 INTO DUMPFILE 'file' );
+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 'INTO DUMPFILE 'file' )' at line 1
+SELECT * FROM t1 WHERE a = ( SELECT 1 );
+a
+1
+SELECT * FROM t1 WHERE a = ( SELECT 1 UNION SELECT 1 );
+a
+1
+SELECT * FROM t1 WHERE a = ( SELECT 1 INTO @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 'INTO @a)' at line 1
+SELECT * FROM t1 WHERE a = ( SELECT 1 INTO OUTFILE 'file' );
+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 'INTO OUTFILE 'file' )' at line 1
+SELECT * FROM t1 WHERE a = ( SELECT 1 INTO DUMPFILE 'file' );
+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 'INTO DUMPFILE 'file' )' at line 1
+SELECT * FROM t1 WHERE a = ( SELECT 1 UNION SELECT 1 INTO @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 'INTO @a)' at line 1
+SELECT * FROM t1 WHERE a = ( SELECT 1 UNION SELECT 1 INTO OUTFILE 'file' );
+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 'INTO OUTFILE 'file' )' at line 1
+SELECT * FROM t1 WHERE a = ( SELECT 1 UNION SELECT 1 INTO DUMPFILE 'file' );
+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 'INTO DUMPFILE 'file' )' at line 1
+SELECT ( SELECT 1 INTO @v );
+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 'INTO @v )' at line 1
+SELECT ( SELECT 1 INTO OUTFILE 'file' );
+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 'INTO OUTFILE 'file' )' at line 1
+SELECT ( SELECT 1 INTO DUMPFILE 'file' );
+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 'INTO DUMPFILE 'file' )' at line 1
+SELECT ( SELECT 1 UNION SELECT 1 INTO @v );
+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 'INTO @v )' at line 1
+SELECT ( SELECT 1 UNION SELECT 1 INTO OUTFILE 'file' );
+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 'INTO OUTFILE 'file' )' at line 1
+SELECT ( SELECT 1 UNION SELECT 1 INTO DUMPFILE 'file' );
+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 'INTO DUMPFILE 'file' )' at line 1
+SELECT ( SELECT a FROM t1 WHERE a = 1 ), a FROM t1;
+( SELECT a FROM t1 WHERE a = 1 ) a
+1 1
+1 2
+SELECT ( SELECT a FROM t1 WHERE a = 1 UNION SELECT 1 ), a FROM t1;
+( SELECT a FROM t1 WHERE a = 1 UNION SELECT 1 ) a
+1 1
+1 2
+SELECT * FROM t2 WHERE (a, b) IN (SELECT a, b FROM t2);
+a b
+SELECT 1 UNION ( SELECT 1 UNION SELECT 1 );
+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 'UNION SELECT 1 )' at line 1
+( SELECT 1 UNION SELECT 1 ) UNION SELECT 1;
+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 'UNION SELECT 1 ) UNION SELECT 1' at line 1
+SELECT ( SELECT 1 UNION ( SELECT 1 UNION SELECT 1 ) );
+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 'UNION SELECT 1 ) )' at line 1
+SELECT ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1;
+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 'UNION SELECT 1' at line 1
+SELECT ( SELECT 1 UNION SELECT 1 UNION SELECT 1 );
+( SELECT 1 UNION SELECT 1 UNION SELECT 1 )
+1
+SELECT ((SELECT 1 UNION SELECT 1 UNION SELECT 1));
+((SELECT 1 UNION SELECT 1 UNION SELECT 1))
+1
+SELECT * FROM ( SELECT 1 UNION ( SELECT 1 UNION SELECT 1 ) );
+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 'UNION SELECT 1 ) )' at line 1
+SELECT * FROM ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 );
+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 ') UNION SELECT 1 )' at line 1
+SELECT * FROM ( SELECT 1 UNION SELECT 1 UNION SELECT 1 ) a;
+1
+1
+SELECT * FROM t1 WHERE a = ( SELECT 1 UNION ( SELECT 1 UNION SELECT 1 ) );
+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 'UNION SELECT 1 ) )' at line 1
+SELECT * FROM t1 WHERE a = ALL ( SELECT 1 UNION ( SELECT 1 UNION SELECT 1 ) );
+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 'UNION SELECT 1 ) )' at line 1
+SELECT * FROM t1 WHERE a = ANY ( SELECT 1 UNION ( SELECT 1 UNION SELECT 1 ) );
+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 'UNION SELECT 1 ) )' at line 1
+SELECT * FROM t1 WHERE a IN ( SELECT 1 UNION ( SELECT 1 UNION SELECT 1 ) );
+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 'UNION SELECT 1 ) )' at line 1
+SELECT * FROM t1 WHERE a = ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 );
+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 'UNION SELECT 1 )' at line 1
+SELECT * FROM t1 WHERE a = ALL ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 );
+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 'UNION SELECT 1 ) UNION SELECT 1 )' at line 1
+SELECT * FROM t1 WHERE a = ANY ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 );
+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 'UNION SELECT 1 ) UNION SELECT 1 )' at line 1
+SELECT * FROM t1 WHERE a IN ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 );
+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 'UNION SELECT 1 )' at line 1
+SELECT * FROM t1 WHERE a = ( SELECT 1 UNION SELECT 1 UNION SELECT 1 );
+a
+1
+SELECT * FROM t1 WHERE a = ALL ( SELECT 1 UNION SELECT 1 UNION SELECT 1 );
+a
+1
+SELECT * FROM t1 WHERE a = ANY ( SELECT 1 UNION SELECT 1 UNION SELECT 1 );
+a
+1
+SELECT * FROM t1 WHERE a IN ( SELECT 1 UNION SELECT 1 UNION SELECT 1 );
+a
+1
+SELECT * FROM t1 WHERE EXISTS ( SELECT 1 UNION SELECT 1 INTO @v );
+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 'INTO @v )' at line 1
+SELECT EXISTS(SELECT 1+1);
+EXISTS(SELECT 1+1)
+1
+SELECT EXISTS(SELECT 1+1 INTO @test);
+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 'INTO @test)' at line 1
+SELECT * FROM t1 WHERE a IN ( SELECT 1 UNION SELECT 1 INTO @v );
+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 'INTO @v )' at line 1
+SELECT * FROM t1 WHERE EXISTS ( SELECT 1 INTO @v );
+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 'INTO @v )' at line 1
+SELECT * FROM t1 WHERE a IN ( SELECT 1 INTO @v );
+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 'INTO @v )' at line 1
+DROP TABLE t1, t2;
CREATE TABLE t1 (a ENUM('rainbow'));
INSERT INTO t1 VALUES (),(),(),(),();
SELECT 1 FROM t1 GROUP BY (SELECT 1 FROM t1 ORDER BY AVG(LAST_INSERT_ID()));
diff --git a/mysql-test/r/subselect3.result b/mysql-test/r/subselect3.result
index d5fb1a7bbde..a51cef6833d 100644
--- a/mysql-test/r/subselect3.result
+++ b/mysql-test/r/subselect3.result
@@ -864,7 +864,7 @@ Level Code Message
Note 1276 Field or reference 'test.t1.a' of SELECT #3 was resolved in SELECT #2
Note 1276 Field or reference 'test.t1.c' of SELECT #3 was resolved in SELECT #2
Error 1054 Unknown column 'c' in 'field list'
-Note 1003 select `c` AS `c` from (select (select count(`test`.`t1`.`a`) AS `COUNT(a)` from (select count(`test`.`t1`.`b`) AS `COUNT(b)` from `test`.`t1`) `x` group by `c`) AS `(SELECT COUNT(a) FROM
+Note 1003 select `c` AS `c` from (select (select count(`test`.`t1`.`a`) AS `COUNT(a)` from dual group by `c`) AS `(SELECT COUNT(a) FROM
(SELECT COUNT(b) FROM t1) AS x GROUP BY c
)` from `test`.`t1` group by `test`.`t1`.`b`) `y`
DROP TABLE t1;
@@ -964,3 +964,53 @@ Variable_name Value
Handler_read_rnd_next 18
DROP TABLE t1,t2;
End of 5.1 tests
+#
+# BUG#48920: COUNT DISTINCT returns 1 for NULL values when in a subquery
+# in the select list
+#
+
+CREATE TABLE t1 (
+i int(11) DEFAULT NULL,
+v varchar(1) DEFAULT NULL
+);
+
+INSERT INTO t1 VALUES (8,'v');
+INSERT INTO t1 VALUES (9,'r');
+INSERT INTO t1 VALUES (NULL,'y');
+
+CREATE TABLE t2 (
+i int(11) DEFAULT NULL,
+v varchar(1) DEFAULT NULL,
+KEY i_key (i)
+);
+
+INSERT INTO t2 VALUES (NULL,'r');
+INSERT INTO t2 VALUES (0,'c');
+INSERT INTO t2 VALUES (0,'o');
+INSERT INTO t2 VALUES (2,'v');
+INSERT INTO t2 VALUES (7,'c');
+
+SELECT i, v, (SELECT COUNT(DISTINCT i)
+FROM t1
+WHERE v = t2.v) as subsel
+FROM t2;
+i v subsel
+NULL r 1
+0 c 0
+0 o 0
+2 v 1
+7 c 0
+
+EXPLAIN EXTENDED
+SELECT i, v, (SELECT COUNT(DISTINCT i)
+FROM t1
+WHERE v = t2.v) as subsel
+FROM t2;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 5 100.00
+2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
+Warnings:
+Note 1276 Field or reference 'test.t2.v' of SELECT #2 was resolved in SELECT #1
+Note 1003 select `test`.`t2`.`i` AS `i`,`test`.`t2`.`v` AS `v`,(select count(distinct `test`.`t1`.`i`) AS `COUNT(DISTINCT i)` from `test`.`t1` where (`test`.`t1`.`v` = `test`.`t2`.`v`)) AS `subsel` from `test`.`t2`
+DROP TABLE t1,t2;
+End of 5.6 tests
diff --git a/mysql-test/r/system_mysql_db.result b/mysql-test/r/system_mysql_db.result
index 17fd95ab1c8..679e50fcad9 100644
--- a/mysql-test/r/system_mysql_db.result
+++ b/mysql-test/r/system_mysql_db.result
@@ -110,6 +110,7 @@ user CREATE TABLE `user` (
`Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
+ `Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
`ssl_cipher` blob NOT NULL,
`x509_issuer` blob NOT NULL,
@@ -201,7 +202,7 @@ proc CREATE TABLE `proc` (
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '',
- `comment` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
+ `comment` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`db_collation` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
diff --git a/mysql-test/r/trigger-compat.result b/mysql-test/r/trigger-compat.result
index 2bcd919e0db..d1f1ec87efd 100644
--- a/mysql-test/r/trigger-compat.result
+++ b/mysql-test/r/trigger-compat.result
@@ -26,13 +26,11 @@ SELECT trigger_name, definer FROM INFORMATION_SCHEMA.TRIGGERS ORDER BY trigger_n
trigger_name definer
wl2818_trg1
wl2818_trg2 mysqltest_dfn@localhost
-Warnings:
-Warning 1454 No definer attribute for trigger 'mysqltest_db1'.'wl2818_trg1'. The trigger will be activated under the authorization of the invoker, which may have insufficient privileges. Please recreate the trigger.
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS ORDER BY trigger_name;
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest_db1 wl2818_trg1 INSERT NULL mysqltest_db1 t1 0 NULL INSERT INTO t2 VALUES(CURRENT_USER()) ROW BEFORE NULL NULL OLD NEW NULL latin1 latin1_swedish_ci latin1_swedish_ci
-NULL mysqltest_db1 wl2818_trg2 INSERT NULL mysqltest_db1 t1 0 NULL INSERT INTO t2 VALUES(CURRENT_USER()) ROW AFTER NULL NULL OLD NEW NULL mysqltest_dfn@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+def mysqltest_db1 wl2818_trg1 INSERT def mysqltest_db1 t1 0 NULL INSERT INTO t2 VALUES(CURRENT_USER()) ROW BEFORE NULL NULL OLD NEW NULL latin1 latin1_swedish_ci latin1_swedish_ci
+def mysqltest_db1 wl2818_trg2 INSERT def mysqltest_db1 t1 0 NULL INSERT INTO t2 VALUES(CURRENT_USER()) ROW AFTER NULL NULL OLD NEW NULL mysqltest_dfn@localhost latin1 latin1_swedish_ci latin1_swedish_ci
DROP TRIGGER wl2818_trg1;
Warnings:
Warning 1454 No definer attribute for trigger 'mysqltest_db1'.'wl2818_trg1'. The trigger will be activated under the authorization of the invoker, which may have insufficient privileges. Please recreate the trigger.
diff --git a/mysql-test/r/trigger.result b/mysql-test/r/trigger.result
index 4476735735c..47b50b233b3 100644
--- a/mysql-test/r/trigger.result
+++ b/mysql-test/r/trigger.result
@@ -1073,7 +1073,7 @@ NULL
SET @x=2;
UPDATE t1 SET i1 = @x;
Warnings:
-Error 1365 Division by 0
+Warning 1365 Division by 0
SELECT @x;
@x
NULL
@@ -1086,8 +1086,8 @@ NULL
SET @x=4;
UPDATE t1 SET i1 = @x;
Warnings:
-Error 1365 Division by 0
-Error 1365 Division by 0
+Warning 1365 Division by 0
+Warning 1365 Division by 0
SELECT @x;
@x
NULL
@@ -1190,16 +1190,16 @@ create trigger t4_bu before update on t4 for each row set @t4_bu_called:=1|
insert into t1 values(10, 10)|
set @a:=1/0|
Warnings:
-Error 1365 Division by 0
+Warning 1365 Division by 0
select 1/0 from t1|
1/0
NULL
Warnings:
-Error 1365 Division by 0
+Warning 1365 Division by 0
create trigger t1_bi before insert on t1 for each row set @a:=1/0|
insert into t1 values(20, 20)|
Warnings:
-Error 1365 Division by 0
+Warning 1365 Division by 0
drop trigger t1_bi|
create trigger t1_bi before insert on t1 for each row
begin
@@ -1219,7 +1219,7 @@ end|
set @check=0, @t4_bi_called=0, @t4_bu_called=0|
insert into t1 values(30, 30)|
Warnings:
-Error 1365 Division by 0
+Warning 1365 Division by 0
select @check, @t4_bi_called, @t4_bu_called|
@check @t4_bi_called @t4_bu_called
2 1 1
@@ -2088,3 +2088,77 @@ SELECT * FROM t2;
a b
DROP TABLE t1, t2;
End of 5.1 tests.
+#
+# Bug#34453 Can't change size of file (Errcode: 1224)
+#
+DROP TRIGGER IF EXISTS t1_bi;
+DROP TRIGGER IF EXISTS t1_bd;
+DROP TABLE IF EXISTS t1;
+DROP TEMPORARY TABLE IF EXISTS t2;
+CREATE TABLE t1 (s1 INT);
+CREATE TEMPORARY TABLE t2 (s1 INT);
+CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (0);
+CREATE TRIGGER t1_bd BEFORE DELETE ON t1 FOR EACH ROW DELETE FROM t2;
+INSERT INTO t1 VALUES (0);
+INSERT INTO t1 VALUES (0);
+SELECT * FROM t1;
+s1
+0
+0
+SELECT * FROM t2;
+s1
+0
+0
+# Reported to give ERROR 14 (HY000):
+# Can't change size of file (Errcode: 1224)
+# on Windows
+DELETE FROM t1;
+DROP TABLE t1;
+DROP TEMPORARY TABLE t2;
+DROP TRIGGER IF EXISTS trg1;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (a INT);
+CREATE TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+DECLARE a CHAR;
+SELECT 'ab' INTO a;
+SELECT 'ab' INTO a;
+SELECT 'a' INTO a;
+END|
+INSERT INTO t1 VALUES (1);
+Warnings:
+Warning 1265 Data truncated for column 'a' at row 1
+DROP TRIGGER trg1;
+DROP TABLE t1;
+DROP TRIGGER IF EXISTS trg1;
+DROP TRIGGER IF EXISTS trg2;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (a INT);
+CREATE TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+DECLARE trg1 CHAR;
+SELECT 'ab' INTO trg1;
+END|
+CREATE TRIGGER trg2 AFTER INSERT ON t1 FOR EACH ROW
+BEGIN
+DECLARE trg2 CHAR;
+SELECT 'ab' INTO trg2;
+END|
+INSERT INTO t1 VALUES (0);
+Warnings:
+Warning 1265 Data truncated for column 'trg1' at row 1
+Warning 1265 Data truncated for column 'trg2' at row 1
+SELECT * FROM t1;
+a
+0
+SHOW WARNINGS;
+Level Code Message
+INSERT INTO t1 VALUES (1),(2);
+Warnings:
+Warning 1265 Data truncated for column 'trg1' at row 1
+Warning 1265 Data truncated for column 'trg2' at row 1
+Warning 1265 Data truncated for column 'trg1' at row 1
+Warning 1265 Data truncated for column 'trg2' at row 1
+DROP TRIGGER trg1;
+DROP TRIGGER trg2;
+DROP TABLE t1;
diff --git a/mysql-test/r/trigger_notembedded.result b/mysql-test/r/trigger_notembedded.result
index d66308a9bd7..982966f6689 100644
--- a/mysql-test/r/trigger_notembedded.result
+++ b/mysql-test/r/trigger_notembedded.result
@@ -117,7 +117,7 @@ CREATE DEFINER='mysqltest_inv'@'localhost'
TRIGGER trg1 BEFORE INSERT ON t1
FOR EACH ROW
SET @new_sum = 0;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
---> connection: default
use mysqltest_db1;
@@ -165,16 +165,14 @@ trg2 @
trg3 @abc@def@@
trg4 @hostname
trg5 @abcdef@@@hostname
-Warnings:
-Warning 1454 No definer attribute for trigger 'mysqltest_db1'.'trg1'. The trigger will be activated under the authorization of the invoker, which may have insufficient privileges. Please recreate the trigger.
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS ORDER BY trigger_name;
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL mysqltest_db1 trg1 INSERT NULL mysqltest_db1 t1 0 NULL SET @a = 1 ROW BEFORE NULL NULL OLD NEW NULL latin1 latin1_swedish_ci latin1_swedish_ci
-NULL mysqltest_db1 trg2 INSERT NULL mysqltest_db1 t1 0 NULL SET @a = 2 ROW AFTER NULL NULL OLD NEW NULL @ latin1 latin1_swedish_ci latin1_swedish_ci
-NULL mysqltest_db1 trg3 UPDATE NULL mysqltest_db1 t1 0 NULL SET @a = 3 ROW BEFORE NULL NULL OLD NEW NULL @abc@def@@ latin1 latin1_swedish_ci latin1_swedish_ci
-NULL mysqltest_db1 trg4 UPDATE NULL mysqltest_db1 t1 0 NULL SET @a = 4 ROW AFTER NULL NULL OLD NEW NULL @hostname latin1 latin1_swedish_ci latin1_swedish_ci
-NULL mysqltest_db1 trg5 DELETE NULL mysqltest_db1 t1 0 NULL SET @a = 5 ROW BEFORE NULL NULL OLD NEW NULL @abcdef@@@hostname latin1 latin1_swedish_ci latin1_swedish_ci
+def mysqltest_db1 trg1 INSERT def mysqltest_db1 t1 0 NULL SET @a = 1 ROW BEFORE NULL NULL OLD NEW NULL latin1 latin1_swedish_ci latin1_swedish_ci
+def mysqltest_db1 trg2 INSERT def mysqltest_db1 t1 0 NULL SET @a = 2 ROW AFTER NULL NULL OLD NEW NULL @ latin1 latin1_swedish_ci latin1_swedish_ci
+def mysqltest_db1 trg3 UPDATE def mysqltest_db1 t1 0 NULL SET @a = 3 ROW BEFORE NULL NULL OLD NEW NULL @abc@def@@ latin1 latin1_swedish_ci latin1_swedish_ci
+def mysqltest_db1 trg4 UPDATE def mysqltest_db1 t1 0 NULL SET @a = 4 ROW AFTER NULL NULL OLD NEW NULL @hostname latin1 latin1_swedish_ci latin1_swedish_ci
+def mysqltest_db1 trg5 DELETE def mysqltest_db1 t1 0 NULL SET @a = 5 ROW BEFORE NULL NULL OLD NEW NULL @abcdef@@@hostname latin1 latin1_swedish_ci latin1_swedish_ci
---> connection: default
DROP USER mysqltest_dfn@localhost;
@@ -471,7 +469,7 @@ SELECT trigger_name FROM INFORMATION_SCHEMA.TRIGGERS
WHERE trigger_schema = 'db1';
trigger_name
SHOW CREATE TRIGGER db1.trg;
-ERROR 42000: Access denied; you need the TRIGGER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the TRIGGER privilege(s) for this operation
DROP USER 'no_rights'@'localhost';
DROP DATABASE db1;
End of 5.1 tests.
diff --git a/mysql-test/r/type_binary.result b/mysql-test/r/type_binary.result
index 432c58272a2..01841bf27fc 100644
--- a/mysql-test/r/type_binary.result
+++ b/mysql-test/r/type_binary.result
@@ -47,7 +47,7 @@ create table t1 (s1 binary(2) primary key);
insert into t1 values (0x01);
insert into t1 values (0x0120);
insert into t1 values (0x0100);
-ERROR 23000: Duplicate entry '' for key 'PRIMARY'
+ERROR 23000: Duplicate entry '\x01\x00' for key 'PRIMARY'
select hex(s1) from t1 order by s1;
hex(s1)
0100
diff --git a/mysql-test/r/type_bit.result b/mysql-test/r/type_bit.result
index 51feab0a421..e8c8c6c65a4 100644
--- a/mysql-test/r/type_bit.result
+++ b/mysql-test/r/type_bit.result
@@ -71,7 +71,7 @@ hex(a)
1
1
alter table t1 add unique (a);
-ERROR 23000: Duplicate entry '' for key 'a'
+ERROR 23000: Duplicate entry '\x00' for key 'a'
drop table t1;
create table t1 (a bit(2));
insert into t1 values (b'00'), (b'01'), (b'10'), (b'100');
diff --git a/mysql-test/r/type_blob.result b/mysql-test/r/type_blob.result
index d11ab236c34..78f31286ea7 100644
--- a/mysql-test/r/type_blob.result
+++ b/mysql-test/r/type_blob.result
@@ -889,28 +889,12 @@ CREATE TABLE b15776 (a year(0));
DROP TABLE b15776;
CREATE TABLE b15776 (a year(-2));
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 '-2))' at line 1
-CREATE TABLE b15776 (a timestamp(4294967294));
-Warnings:
-Warning 1287 The syntax 'TIMESTAMP(4294967294)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
-DROP TABLE b15776;
-CREATE TABLE b15776 (a timestamp(4294967295));
-Warnings:
-Warning 1287 The syntax 'TIMESTAMP(4294967295)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
-DROP TABLE b15776;
-CREATE TABLE b15776 (a timestamp(4294967296));
-ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
-CREATE TABLE b15776 (a timestamp(-1));
-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 '-1))' at line 1
-CREATE TABLE b15776 (a timestamp(-2));
-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 '-2))' at line 1
CREATE TABLE b15776 (a int(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
CREATE TABLE b15776 (a char(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
CREATE TABLE b15776 (a year(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
-CREATE TABLE b15776 (a timestamp(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
-ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
CREATE TABLE b15776 select cast(null as char(4294967295));
show columns from b15776;
Field Type Null Key Default Extra
@@ -974,3 +958,21 @@ ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967
explain select convert(1, binary(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295)
End of 5.0 tests
+CREATE TABLE t1(id INT NOT NULL);
+CREATE TABLE t2(id INT NOT NULL, c TEXT NOT NULL);
+INSERT INTO t1 VALUES (1);
+INSERT INTO t2 VALUES (1, '');
+UPDATE t2 SET c = REPEAT('1', 70000);
+Warnings:
+Warning 1265 Data truncated for column 'c' at row 1
+SELECT LENGTH(c) FROM t2;
+LENGTH(c)
+65535
+UPDATE t1 LEFT JOIN t2 USING(id) SET t2.c = REPEAT('1', 70000) WHERE t1.id = 1;
+Warnings:
+Warning 1265 Data truncated for column 'c' at row 1
+SELECT LENGTH(c) FROM t2;
+LENGTH(c)
+65535
+DROP TABLE t1, t2;
+End of 5.1 tests
diff --git a/mysql-test/r/type_date.result b/mysql-test/r/type_date.result
index f96e07b0c5e..92be736ff9a 100644
--- a/mysql-test/r/type_date.result
+++ b/mysql-test/r/type_date.result
@@ -276,3 +276,25 @@ a
0000-00-01
drop table t1;
End of 5.1 tests
+#
+# Bug #33629: last_day function can return null, but has 'not null'
+# flag set for result
+#
+SELECT 1 FROM (SELECT LAST_DAY('0')) a;
+1
+1
+Warnings:
+Warning 1292 Incorrect datetime value: '0'
+SELECT 1 FROM (SELECT MAKEDATE(2011,0)) a;
+1
+1
+CREATE TABLE t1 AS
+SELECT LAST_DAY('1970-01-01') AS f1,
+MAKEDATE(1970, 1) AS f2;
+DESCRIBE t1;
+Field Type Null Key Default Extra
+f1 date YES NULL
+f2 date YES NULL
+DROP TABLE t1;
+#
+End of 6.0 tests
diff --git a/mysql-test/r/type_datetime.result b/mysql-test/r/type_datetime.result
index b6281443751..054fda90c02 100644
--- a/mysql-test/r/type_datetime.result
+++ b/mysql-test/r/type_datetime.result
@@ -517,7 +517,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
Warnings:
Note 1276 Field or reference 'test.t1.cur_date' of SELECT #2 was resolved in SELECT #1
-Note 1003 select '1' AS `id`,'2007-04-25 18:30:22' AS `cur_date` from `test`.`t1` where <in_optimizer>('1',<exists>(select 1 AS `Not_used` from `test`.`t1` `x1` where 0))
+Note 1003 select '1' AS `id`,'2007-04-25 18:30:22' AS `cur_date` from dual where <in_optimizer>('1',<exists>(select 1 AS `Not_used` from `test`.`t1` `x1` where 0))
select * from t1
where id in (select id from t1 as x1 where (t1.cur_date is null));
id cur_date
@@ -529,7 +529,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
Warnings:
Note 1276 Field or reference 'test.t2.cur_date' of SELECT #2 was resolved in SELECT #1
-Note 1003 select '1' AS `id`,'2007-04-25' AS `cur_date` from `test`.`t2` where <in_optimizer>('1',<exists>(select 1 AS `Not_used` from `test`.`t2` `x1` where 0))
+Note 1003 select '1' AS `id`,'2007-04-25' AS `cur_date` from dual where <in_optimizer>('1',<exists>(select 1 AS `Not_used` from `test`.`t2` `x1` where 0))
select * from t2
where id in (select id from t2 as x1 where (t2.cur_date is null));
id cur_date
diff --git a/mysql-test/r/type_decimal.result b/mysql-test/r/type_decimal.result
index 76c5ea8f756..d131fa2b4d5 100644
--- a/mysql-test/r/type_decimal.result
+++ b/mysql-test/r/type_decimal.result
@@ -3,13 +3,13 @@ SET SQL_WARNINGS=1;
CREATE TABLE t1 (
id int(11) NOT NULL auto_increment,
datatype_id int(11) DEFAULT '0' NOT NULL,
-minvalue decimal(20,10) DEFAULT '0.0000000000' NOT NULL,
-maxvalue decimal(20,10) DEFAULT '0.0000000000' NOT NULL,
+min_value decimal(20,10) DEFAULT '0.0000000000' NOT NULL,
+max_value decimal(20,10) DEFAULT '0.0000000000' NOT NULL,
valuename varchar(20),
forecolor int(11),
backcolor int(11),
PRIMARY KEY (id),
-UNIQUE datatype_id (datatype_id, minvalue, maxvalue)
+UNIQUE datatype_id (datatype_id, min_value, max_value)
);
INSERT INTO t1 VALUES ( '1', '4', '0.0000000000', '0.0000000000', 'Ei saja', '0', '16776960');
INSERT INTO t1 VALUES ( '2', '4', '1.0000000000', '1.0000000000', 'Sajab', '16777215', '255');
@@ -143,12 +143,12 @@ INSERT INTO t1 VALUES ( '139', '21', '326.0000000000', '326.0000000000', 'Lumine
INSERT INTO t1 VALUES ( '143', '16', '-4.9000000000', '-0.1000000000', '', NULL, '15774720');
INSERT INTO t1 VALUES ( '145', '15', '0.0000000000', '1.9000000000', '', '0', '16769024');
INSERT INTO t1 VALUES ( '146', '16', '0.0000000000', '1.9000000000', '', '0', '16769024');
-select * from t1 where minvalue<=1 and maxvalue>=-1 and datatype_id=16;
-id datatype_id minvalue maxvalue valuename forecolor backcolor
+select * from t1 where min_value<=1 and max_value>=-1 and datatype_id=16;
+id datatype_id min_value max_value valuename forecolor backcolor
143 16 -4.9000000000 -0.1000000000 NULL 15774720
146 16 0.0000000000 1.9000000000 0 16769024
-select * from t1 where minvalue<=-1 and maxvalue>=-1 and datatype_id=16;
-id datatype_id minvalue maxvalue valuename forecolor backcolor
+select * from t1 where min_value<=-1 and max_value>=-1 and datatype_id=16;
+id datatype_id min_value max_value valuename forecolor backcolor
143 16 -4.9000000000 -0.1000000000 NULL 15774720
drop table t1;
create table t1 (a decimal(10,2));
@@ -796,6 +796,18 @@ SELECT ROUND(qty,3), dps, ROUND(qty,dps) FROM t1;
ROUND(qty,3) dps ROUND(qty,dps)
1.133 3 1.133000
DROP TABLE t1;
+create table t1 (c1 decimal(10,6));
+insert into t1 (c1) values (9.99e-4);
+insert into t1 (c1) values (9.98e-4);
+insert into t1 (c1) values (0.000999);
+insert into t1 (c1) values (cast(9.99e-4 as decimal(10,6)));
+select * from t1;
+c1
+0.000999
+0.000998
+0.000999
+0.000999
+drop table t1;
SELECT 1 % .123456789123456789123456789123456789123456789123456789123456789123456789123456789 AS '%';
%
0.012345687012345687012345687012345687012345687012345687012345687012345687000000000
diff --git a/mysql-test/r/type_float.result b/mysql-test/r/type_float.result
index a3a13bb0435..546e281ee67 100644
--- a/mysql-test/r/type_float.result
+++ b/mysql-test/r/type_float.result
@@ -2,9 +2,9 @@ drop table if exists t1,t2;
SELECT 10,10.0,10.,.1e+2,100.0e-1;
10 10.0 10. .1e+2 100.0e-1
10 10.0 10 10 10
-SELECT 6e-05, -6e-05, --6e-05, -6e-05+1.000000;
-6e-05 -6e-05 --6e-05 -6e-05+1.000000
-6e-05 -6e-05 6e-05 0.99994
+SELECT 6e-16, -6e-16, --6e-16, -6e-16+1.000000;
+6e-16 -6e-16 --6e-16 -6e-16+1.000000
+6e-16 -6e-16 6e-16 0.9999999999999994
SELECT 1e1,1.e1,1.0e1,1e+1,1.e+1,1.0e+1,1e-1,1.e-1,1.0e-1;
1e1 1.e1 1.0e1 1e+1 1.e+1 1.0e+1 1e-1 1.e-1 1.0e-1
10 10 10 10 10 10 0.1 0.1 0.1
@@ -31,16 +31,16 @@ select * from t1;
f1 f2
10 10
100000 100000
-1.23457e+09 1234567890
-1e+10 10000000000
-1e+15 1e+15
-1e+20 1e+20
-3.40282e+38 1e+50
-3.40282e+38 1e+150
+1234570000 1234567890
+10000000000 10000000000
+1e15 1e15
+1e20 1e20
+3.40282e38 1e50
+3.40282e38 1e150
-10 -10
-1e-05 1e-05
-1e-10 1e-10
-1e-15 1e-15
+0.00001 0.00001
+0.0000000001 0.0000000001
+0.000000000000001 0.000000000000001
1e-20 1e-20
0 1e-50
0 1e-150
@@ -87,7 +87,7 @@ col
create table t2 select c1 + c1 * (c2 / 100) as col1, round(c1, 5) as col2, round(c1, 35) as col3, sqrt(c1*1e-15) col4 from t1;
select * from t2;
col1 col2 col3 col4
-140.36 121.00000 121 3.47850542618522e-07
+140.36 121.00000 121 0.00000034785054261852176
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
@@ -201,9 +201,9 @@ insert into t1 values (2e5),(2e6),(2e-4),(2e-5);
select * from t1;
c
200000
-2e+06
+2e6
0.0002
-2e-05
+2e-5
drop table t1;
CREATE TABLE t1 (
reckey int unsigned NOT NULL,
@@ -267,7 +267,7 @@ select 1e-308, 1.00000001e-300, 100000000e-300;
1e-308 1.00000001e-300 1e-292
select 10e307;
10e307
-1e+308
+1e308
create table t1(a int, b double(8, 2));
insert into t1 values
(1, 28.50), (1, 121.85), (1, 157.23), (1, 1351.00), (1, -1965.35), (1, 81.75),
@@ -369,12 +369,12 @@ Warning 1264 Out of range value for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 2
select f1 + 0e0 from t1;
f1 + 0e0
-1e+199
--1e+199
-1e+200
--1e+200
-1e+200
--1e+200
+1e199
+-1e199
+1e200
+-1e200
+1e200
+-1e200
drop table t1;
create table t1 (f1 float(30, 0));
insert into t1 values (1e29), (-1e29);
@@ -385,12 +385,36 @@ Warning 1264 Out of range value for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 2
select f1 + 0e0 from t1;
f1 + 0e0
-1.00000001504747e+29
--1.00000001504747e+29
-1.00000001504747e+30
--1.00000001504747e+30
-1.00000001504747e+30
--1.00000001504747e+30
+1.0000000150474662e29
+-1.0000000150474662e29
+1.0000000150474662e30
+-1.0000000150474662e30
+1.0000000150474662e30
+-1.0000000150474662e30
+drop table t1;
+create table t1 (c char(6));
+insert into t1 values (2e6),(2e-5);
+select * from t1;
+c
+2e6
+2e-5
+drop table t1;
+CREATE TABLE d1 (d DOUBLE);
+INSERT INTO d1 VALUES (1.7976931348623157E+308);
+SELECT * FROM d1;
+d
+1.7976931348623157e308
+INSERT INTO d1 VALUES (1.79769313486232e+308);
+ERROR 22007: Illegal double '1.79769313486232e+308' value found during parsing
+SELECT * FROM d1;
+d
+1.7976931348623157e308
+DROP TABLE d1;
+create table t1 (a char(20));
+insert into t1 values (1.225e-05);
+select a+0 from t1;
+a+0
+0.00001225
drop table t1;
create table t1(d double, u bigint unsigned);
insert into t1(d) values (9.22337203685479e18),
@@ -405,6 +429,6 @@ CREATE TABLE t1 (f1 DOUBLE);
INSERT INTO t1 VALUES(-1.79769313486231e+308);
SELECT f1 FROM t1;
f1
--1.79769313486231e+308
+-1.79769313486231e308
DROP TABLE t1;
End of 5.0 tests
diff --git a/mysql-test/r/type_newdecimal.result b/mysql-test/r/type_newdecimal.result
index 70ee3a56cf3..00526597a32 100644
--- a/mysql-test/r/type_newdecimal.result
+++ b/mysql-test/r/type_newdecimal.result
@@ -185,7 +185,7 @@ select 1e10/0e0;
1e10/0e0
NULL
Warnings:
-Error 1365 Division by 0
+Warning 1365 Division by 0
create table wl1612 (col1 int, col2 decimal(38,10), col3 numeric(38,10));
insert into wl1612 values(1,12345678901234567890.1234567890,12345678901234567890.1234567890);
select * from wl1612;
@@ -205,27 +205,27 @@ NULL
NULL
NULL
Warnings:
-Error 1365 Division by 0
-Error 1365 Division by 0
-Error 1365 Division by 0
+Warning 1365 Division by 0
+Warning 1365 Division by 0
+Warning 1365 Division by 0
select col2/0 from wl1612;
col2/0
NULL
NULL
NULL
Warnings:
-Error 1365 Division by 0
-Error 1365 Division by 0
-Error 1365 Division by 0
+Warning 1365 Division by 0
+Warning 1365 Division by 0
+Warning 1365 Division by 0
select col3/0 from wl1612;
col3/0
NULL
NULL
NULL
Warnings:
-Error 1365 Division by 0
-Error 1365 Division by 0
-Error 1365 Division by 0
+Warning 1365 Division by 0
+Warning 1365 Division by 0
+Warning 1365 Division by 0
insert into wl1612 values(5,5000.0005,5000.0005);
insert into wl1612 values(6,5000.0005,5000.0005);
select sum(col2),sum(col3) from wl1612;
@@ -788,12 +788,12 @@ select 1 / 1E-500;
1 / 1E-500
NULL
Warnings:
-Error 1365 Division by 0
+Warning 1365 Division by 0
select 1 / 0;
1 / 0
NULL
Warnings:
-Error 1365 Division by 0
+Warning 1365 Division by 0
set sql_mode='ansi,traditional';
CREATE TABLE Sow6_2f (col1 NUMERIC(4,2));
INSERT INTO Sow6_2f VALUES (10.55);
@@ -819,11 +819,11 @@ NULL
NULL
NULL
Warnings:
-Error 1365 Division by 0
-Error 1365 Division by 0
-Error 1365 Division by 0
-Error 1365 Division by 0
-Error 1365 Division by 0
+Warning 1365 Division by 0
+Warning 1365 Division by 0
+Warning 1365 Division by 0
+Warning 1365 Division by 0
+Warning 1365 Division by 0
INSERT INTO Sow6_2f VALUES ('a59b');
ERROR HY000: Incorrect decimal value: 'a59b' for column 'col1' at row 1
drop table Sow6_2f;
@@ -838,12 +838,12 @@ select 9999999999999999999999999999999999999999999999999999999999999999999999999
x
99999999999999999999999999999999999999999999999999999999999999999
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 + 1 as x;
x
100000000000000000000000000000000000000000000000000000000000000000
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
select 0.190287977636363637 + 0.040372670 * 0 - 0;
0.190287977636363637 + 0.040372670 * 0 - 0
0.190287977636363637
@@ -917,7 +917,7 @@ cast('1.00000001335143196001808973960578441619873046875E-10' as decimal(30,15))
0.000000000100000
select ln(14000) c1, convert(ln(14000),decimal(5,3)) c2, cast(ln(14000) as decimal(5,3)) c3;
c1 c2 c3
-9.5468126085974 9.547 9.547
+9.546812608597396 9.547 9.547
select convert(ln(14000),decimal(2,3)) c1;
ERROR 42000: For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column '').
select cast(ln(14000) as decimal(2,3)) c1;
@@ -1141,17 +1141,17 @@ my_float my_double my_varchar
1.17549e-18 1.175494345e-18 1.175494345e-18
1.17549e-17 1.175494345e-17 1.175494345e-17
1.17549e-16 1.175494345e-16 1.175494345e-16
-1.17549e-15 1.175494345e-15 1.175494345e-15
-1.17549e-14 1.175494345e-14 1.175494345e-14
-1.17549e-13 1.175494345e-13 1.175494345e-13
-1.17549e-12 1.175494345e-12 1.175494345e-12
-1.17549e-11 1.175494345e-11 1.175494345e-11
-1.17549e-10 1.175494345e-10 1.175494345e-10
-1.17549e-09 1.175494345e-09 1.175494345e-9
-1.17549e-08 1.175494345e-08 1.175494345e-8
-1.17549e-07 1.175494345e-07 1.175494345e-7
-1.17549e-06 1.175494345e-06 1.175494345e-6
-1.17549e-05 1.175494345e-05 1.175494345e-5
+0.00000000000000117549 0.000000000000001175494345 1.175494345e-15
+0.0000000000000117549 0.00000000000001175494345 1.175494345e-14
+0.000000000000117549 0.0000000000001175494345 1.175494345e-13
+0.00000000000117549 0.000000000001175494345 1.175494345e-12
+0.0000000000117549 0.00000000001175494345 1.175494345e-11
+0.000000000117549 0.0000000001175494345 1.175494345e-10
+0.00000000117549 0.000000001175494345 1.175494345e-9
+0.0000000117549 0.00000001175494345 1.175494345e-8
+0.000000117549 0.0000001175494345 1.175494345e-7
+0.00000117549 0.000001175494345 1.175494345e-6
+0.0000117549 0.00001175494345 1.175494345e-5
0.000117549 0.0001175494345 1.175494345e-4
0.00117549 0.001175494345 1.175494345e-3
0.0117549 0.01175494345 1.175494345e-2
@@ -1175,21 +1175,21 @@ CAST(my_float AS DECIMAL(65,30)) my_float
0.000000000000000001175494374380 1.17549e-18
0.000000000000000011754943743802 1.17549e-17
0.000000000000000117549432474939 1.17549e-16
-0.000000000000001175494324749389 1.17549e-15
-0.000000000000011754943671010360 1.17549e-14
-0.000000000000117549429933840000 1.17549e-13
-0.000000000001175494380653563000 1.17549e-12
-0.000000000011754943372854760000 1.17549e-11
-0.000000000117549428524377200000 1.17549e-10
-0.000000001175494368510499000000 1.17549e-09
-0.000000011754943685104990000000 1.17549e-08
-0.000000117549433298336200000000 1.17549e-07
-0.000001175494389826781000000000 1.17549e-06
-0.000011754943443520460000000000 1.17549e-05
+0.000000000000001175494324749389 0.00000000000000117549
+0.000000000000011754943671010362 0.0000000000000117549
+0.000000000000117549429933840040 0.000000000000117549
+0.000000000001175494380653563400 0.00000000000117549
+0.000000000011754943372854765000 0.0000000000117549
+0.000000000117549428524377220000 0.000000000117549
+0.000000001175494368510499000000 0.00000000117549
+0.000000011754943685104990000000 0.0000000117549
+0.000000117549433298336230000000 0.000000117549
+0.000001175494389826781100000000 0.00000117549
+0.000011754943443520460000000000 0.0000117549
0.000117549432616215200000000000 0.000117549
-0.001175494398921728000000000000 0.00117549
-0.011754943057894710000000000000 0.0117549
-0.117549434304237400000000000000 0.117549
+0.001175494398921728100000000000 0.00117549
+0.011754943057894707000000000000 0.0117549
+0.117549434304237370000000000000 0.117549
SELECT CAST(my_double AS DECIMAL(65,30)), my_double FROM t1;
CAST(my_double AS DECIMAL(65,30)) my_double
0.000000000000000000000000000000 1.175494345e-32
@@ -1209,17 +1209,17 @@ CAST(my_double AS DECIMAL(65,30)) my_double
0.000000000000000001175494345000 1.175494345e-18
0.000000000000000011754943450000 1.175494345e-17
0.000000000000000117549434500000 1.175494345e-16
-0.000000000000001175494345000000 1.175494345e-15
-0.000000000000011754943450000000 1.175494345e-14
-0.000000000000117549434500000000 1.175494345e-13
-0.000000000001175494345000000000 1.175494345e-12
-0.000000000011754943450000000000 1.175494345e-11
-0.000000000117549434500000000000 1.175494345e-10
-0.000000001175494345000000000000 1.175494345e-09
-0.000000011754943450000000000000 1.175494345e-08
-0.000000117549434500000000000000 1.175494345e-07
-0.000001175494345000000000000000 1.175494345e-06
-0.000011754943450000000000000000 1.175494345e-05
+0.000000000000001175494345000000 0.000000000000001175494345
+0.000000000000011754943450000000 0.00000000000001175494345
+0.000000000000117549434500000000 0.0000000000001175494345
+0.000000000001175494345000000000 0.000000000001175494345
+0.000000000011754943450000000000 0.00000000001175494345
+0.000000000117549434500000000000 0.0000000001175494345
+0.000000001175494345000000000000 0.000000001175494345
+0.000000011754943450000000000000 0.00000001175494345
+0.000000117549434500000000000000 0.0000001175494345
+0.000001175494345000000000000000 0.000001175494345
+0.000011754943450000000000000000 0.00001175494345
0.000117549434500000000000000000 0.0001175494345
0.001175494345000000000000000000 0.001175494345
0.011754943450000000000000000000 0.01175494345
@@ -1278,21 +1278,21 @@ my_decimal my_float
0.000000000000000001175494374380 1.17549e-18
0.000000000000000011754943743802 1.17549e-17
0.000000000000000117549432474939 1.17549e-16
-0.000000000000001175494324749389 1.17549e-15
-0.000000000000011754943671010360 1.17549e-14
-0.000000000000117549429933840000 1.17549e-13
-0.000000000001175494380653563000 1.17549e-12
-0.000000000011754943372854760000 1.17549e-11
-0.000000000117549428524377200000 1.17549e-10
-0.000000001175494368510499000000 1.17549e-09
-0.000000011754943685104990000000 1.17549e-08
-0.000000117549433298336200000000 1.17549e-07
-0.000001175494389826781000000000 1.17549e-06
-0.000011754943443520460000000000 1.17549e-05
+0.000000000000001175494324749389 0.00000000000000117549
+0.000000000000011754943671010362 0.0000000000000117549
+0.000000000000117549429933840040 0.000000000000117549
+0.000000000001175494380653563400 0.00000000000117549
+0.000000000011754943372854765000 0.0000000000117549
+0.000000000117549428524377220000 0.000000000117549
+0.000000001175494368510499000000 0.00000000117549
+0.000000011754943685104990000000 0.0000000117549
+0.000000117549433298336230000000 0.000000117549
+0.000001175494389826781100000000 0.00000117549
+0.000011754943443520460000000000 0.0000117549
0.000117549432616215200000000000 0.000117549
-0.001175494398921728000000000000 0.00117549
-0.011754943057894710000000000000 0.0117549
-0.117549434304237400000000000000 0.117549
+0.001175494398921728100000000000 0.00117549
+0.011754943057894707000000000000 0.0117549
+0.117549434304237370000000000000 0.117549
UPDATE t1 SET my_decimal = my_double;
SELECT my_decimal, my_double FROM t1;
my_decimal my_double
@@ -1313,17 +1313,17 @@ my_decimal my_double
0.000000000000000001175494345000 1.175494345e-18
0.000000000000000011754943450000 1.175494345e-17
0.000000000000000117549434500000 1.175494345e-16
-0.000000000000001175494345000000 1.175494345e-15
-0.000000000000011754943450000000 1.175494345e-14
-0.000000000000117549434500000000 1.175494345e-13
-0.000000000001175494345000000000 1.175494345e-12
-0.000000000011754943450000000000 1.175494345e-11
-0.000000000117549434500000000000 1.175494345e-10
-0.000000001175494345000000000000 1.175494345e-09
-0.000000011754943450000000000000 1.175494345e-08
-0.000000117549434500000000000000 1.175494345e-07
-0.000001175494345000000000000000 1.175494345e-06
-0.000011754943450000000000000000 1.175494345e-05
+0.000000000000001175494345000000 0.000000000000001175494345
+0.000000000000011754943450000000 0.00000000000001175494345
+0.000000000000117549434500000000 0.0000000000001175494345
+0.000000000001175494345000000000 0.000000000001175494345
+0.000000000011754943450000000000 0.00000000001175494345
+0.000000000117549434500000000000 0.0000000001175494345
+0.000000001175494345000000000000 0.000000001175494345
+0.000000011754943450000000000000 0.00000001175494345
+0.000000117549434500000000000000 0.0000001175494345
+0.000001175494345000000000000000 0.000001175494345
+0.000011754943450000000000000000 0.00001175494345
0.000117549434500000000000000000 0.0001175494345
0.001175494345000000000000000000 0.001175494345
0.011754943450000000000000000000 0.01175494345
@@ -1380,15 +1380,15 @@ create table t1 (c1 decimal(64));
insert into t1 values(
89000000000000000000000000000000000000000000000000000000000000000000000000000000000000000);
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1264 Out of range value for column 'c1' at row 1
insert into t1 values(
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 *
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999);
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1264 Out of range value for column 'c1' at row 1
insert into t1 values(1e100);
Warnings:
@@ -1432,7 +1432,7 @@ select cast(19999999999999999999 as unsigned);
cast(19999999999999999999 as unsigned)
18446744073709551615
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
create table t1(a decimal(18));
insert into t1 values(123456789012345678);
alter table t1 modify column a decimal(19);
@@ -1444,12 +1444,12 @@ select cast(11.1234 as DECIMAL(3,2));
cast(11.1234 as DECIMAL(3,2))
9.99
Warnings:
-Error 1264 Out of range value for column 'cast(11.1234 as DECIMAL(3,2))' at row 1
+Warning 1264 Out of range value for column 'cast(11.1234 as DECIMAL(3,2))' at row 1
select * from (select cast(11.1234 as DECIMAL(3,2))) t;
cast(11.1234 as DECIMAL(3,2))
9.99
Warnings:
-Error 1264 Out of range value for column 'cast(11.1234 as DECIMAL(3,2))' at row 1
+Warning 1264 Out of range value for column 'cast(11.1234 as DECIMAL(3,2))' at row 1
select cast(a as DECIMAL(3,2))
from (select 11.1233 as a
UNION select 11.1234
@@ -1460,9 +1460,9 @@ cast(a as DECIMAL(3,2))
9.99
9.99
Warnings:
-Error 1264 Out of range value for column 'cast(a as DECIMAL(3,2))' at row 1
-Error 1264 Out of range value for column 'cast(a as DECIMAL(3,2))' at row 1
-Error 1264 Out of range value for column 'cast(a as DECIMAL(3,2))' at row 1
+Warning 1264 Out of range value for column 'cast(a as DECIMAL(3,2))' at row 1
+Warning 1264 Out of range value for column 'cast(a as DECIMAL(3,2))' at row 1
+Warning 1264 Out of range value for column 'cast(a as DECIMAL(3,2))' at row 1
select cast(a as DECIMAL(3,2)), count(*)
from (select 11.1233 as a
UNION select 11.1234
@@ -1471,10 +1471,10 @@ UNION select 12.1234
cast(a as DECIMAL(3,2)) count(*)
9.99 3
Warnings:
-Error 1264 Out of range value for column 'cast(a as DECIMAL(3,2))' at row 1
-Error 1264 Out of range value for column 'cast(a as DECIMAL(3,2))' at row 1
-Error 1264 Out of range value for column 'cast(a as DECIMAL(3,2))' at row 1
-Error 1264 Out of range value for column 'cast(a as DECIMAL(3,2))' at row 1
+Warning 1264 Out of range value for column 'cast(a as DECIMAL(3,2))' at row 1
+Warning 1264 Out of range value for column 'cast(a as DECIMAL(3,2))' at row 1
+Warning 1264 Out of range value for column 'cast(a as DECIMAL(3,2))' at row 1
+Warning 1264 Out of range value for column 'cast(a as DECIMAL(3,2))' at row 1
create table t1 (s varchar(100));
insert into t1 values (0.00000000010000000000000000364321973154977415791655470655996396089904010295867919921875);
drop table t1;
@@ -1560,7 +1560,7 @@ select cast(143.481 as decimal(2,1));
cast(143.481 as decimal(2,1))
9.9
Warnings:
-Error 1264 Out of range value for column 'cast(143.481 as decimal(2,1))' at row 1
+Warning 1264 Out of range value for column 'cast(143.481 as decimal(2,1))' at row 1
select cast(-3.4 as decimal(2,1));
cast(-3.4 as decimal(2,1))
-3.4
@@ -1568,12 +1568,12 @@ select cast(99.6 as decimal(2,0));
cast(99.6 as decimal(2,0))
99
Warnings:
-Error 1264 Out of range value for column 'cast(99.6 as decimal(2,0))' at row 1
+Warning 1264 Out of range value for column 'cast(99.6 as decimal(2,0))' at row 1
select cast(-13.4 as decimal(2,1));
cast(-13.4 as decimal(2,1))
-9.9
Warnings:
-Error 1264 Out of range value for column 'cast(-13.4 as decimal(2,1))' at row 1
+Warning 1264 Out of range value for column 'cast(-13.4 as decimal(2,1))' at row 1
select cast(98.6 as decimal(2,0));
cast(98.6 as decimal(2,0))
99
@@ -1674,7 +1674,7 @@ CREATE TABLE t1 SELECT
/* 82 */ 1000000000000000000000000000000000000000000000000000000000000000000000000000000001
AS c1;
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
DESC t1;
Field Type Null Key Default Extra
c1 decimal(65,0) NO 0
@@ -1799,7 +1799,7 @@ CREATE TABLE t1 (a DECIMAL(30,30));
INSERT INTO t1 VALUES (0.1),(0.2),(0.3);
CREATE TABLE t2 SELECT MIN(a + 0.0000000000000000000000000000001) AS c1 FROM t1;
Warnings:
-Note 1265 Data truncated for column 'c1' at row 3
+Note 1265 Data truncated for column 'c1' at row 4
DESC t2;
Field Type Null Key Default Extra
c1 decimal(32,30) YES NULL
diff --git a/mysql-test/r/type_ranges.result b/mysql-test/r/type_ranges.result
index 6e08067d8a4..5e915fbfa2d 100644
--- a/mysql-test/r/type_ranges.result
+++ b/mysql-test/r/type_ranges.result
@@ -276,8 +276,8 @@ t1 int(1) NULL NO 0 #
t2 varchar(1) latin1_swedish_ci NO #
t3 varchar(256) latin1_swedish_ci NO #
t4 varbinary(256) NULL NO #
-t5 longtext latin1_swedish_ci NO NULL #
-t6 longblob NULL NO NULL #
+t5 text latin1_swedish_ci NO NULL #
+t6 blob NULL NO NULL #
t7 char(0) latin1_swedish_ci NO #
t8 binary(0) NULL NO #
select t1,t2,length(t3),length(t4),length(t5),length(t6),t7,t8 from t2;
diff --git a/mysql-test/r/type_time.result b/mysql-test/r/type_time.result
index e4b90196c2d..a5880f2b452 100644
--- a/mysql-test/r/type_time.result
+++ b/mysql-test/r/type_time.result
@@ -85,6 +85,7 @@ sec_to_time(time_to_sec(t))
13:00:00
09:00:00
drop table t1;
+End of 4.1 tests
select cast('100:55:50' as time) < cast('24:00:00' as time);
cast('100:55:50' as time) < cast('24:00:00' as time)
0
@@ -138,3 +139,27 @@ CAST(c AS TIME)
00:00:00
DROP TABLE t1;
End of 5.0 tests
+CREATE TABLE t1 (f1 TIME);
+INSERT INTO t1 VALUES ('24:00:00');
+SELECT '24:00:00' = (SELECT f1 FROM t1);
+'24:00:00' = (SELECT f1 FROM t1)
+1
+SELECT CAST('24:00:00' AS TIME) = (SELECT f1 FROM t1);
+CAST('24:00:00' AS TIME) = (SELECT f1 FROM t1)
+1
+SELECT CAST('-24:00:00' AS TIME) = (SELECT f1 FROM t1);
+CAST('-24:00:00' AS TIME) = (SELECT f1 FROM t1)
+0
+TRUNCATE t1;
+INSERT INTO t1 VALUES ('-24:00:00');
+SELECT CAST('24:00:00' AS TIME) = (SELECT f1 FROM t1);
+CAST('24:00:00' AS TIME) = (SELECT f1 FROM t1)
+0
+SELECT CAST('-24:00:00' AS TIME) = (SELECT f1 FROM t1);
+CAST('-24:00:00' AS TIME) = (SELECT f1 FROM t1)
+1
+SELECT '-24:00:00' = (SELECT f1 FROM t1);
+'-24:00:00' = (SELECT f1 FROM t1)
+1
+DROP TABLE t1;
+End of 6.0 tests
diff --git a/mysql-test/r/type_timestamp.result b/mysql-test/r/type_timestamp.result
index 24cb725de9f..fd13f53d02b 100644
--- a/mysql-test/r/type_timestamp.result
+++ b/mysql-test/r/type_timestamp.result
@@ -97,30 +97,6 @@ date date_time time_stamp
2005-01-01 2005-01-01 00:00:00 2005-01-01 00:00:00
2030-01-01 2030-01-01 00:00:00 2030-01-01 00:00:00
drop table t1;
-create table t1 (t2 timestamp(2), t4 timestamp(4), t6 timestamp(6),
-t8 timestamp(8), t10 timestamp(10), t12 timestamp(12),
-t14 timestamp(14));
-Warnings:
-Warning 1287 The syntax 'TIMESTAMP(2)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
-Warning 1287 The syntax 'TIMESTAMP(4)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
-Warning 1287 The syntax 'TIMESTAMP(6)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
-Warning 1287 The syntax 'TIMESTAMP(8)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
-Warning 1287 The syntax 'TIMESTAMP(10)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
-Warning 1287 The syntax 'TIMESTAMP(12)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
-Warning 1287 The syntax 'TIMESTAMP(14)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
-insert t1 values (0,0,0,0,0,0,0),
-("1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59",
-"1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59",
-"1997-12-31 23:47:59");
-select * from t1;
-t2 t4 t6 t8 t10 t12 t14
-0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00
-1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59
-select * from t1;
-t2 t4 t6 t8 t10 t12 t14
-0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00
-1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59
-drop table t1;
create table t1 (ix timestamp);
insert into t1 values (0),(20030101010160),(20030101016001),(20030101240101),(20030132010101),(20031301010101),(20031200000000),(20030000000000);
Warnings:
@@ -436,7 +412,7 @@ max(t)
2004-02-01 00:00:00
drop table t1;
set sql_mode='maxdb';
-create table t1 (a timestamp, b timestamp(19));
+create table t1 (a timestamp, b timestamp);
show create table t1;
Table Create Table
t1 CREATE TABLE "t1" (
diff --git a/mysql-test/r/type_varchar.result b/mysql-test/r/type_varchar.result
index 96042a91bae..98ac5973e6d 100644
--- a/mysql-test/r/type_varchar.result
+++ b/mysql-test/r/type_varchar.result
@@ -475,8 +475,9 @@ a (a DIV 2)
60 30
t 0
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '1a'
-Warning 1292 Truncated incorrect INTEGER value: 't '
+Warning 1292 Truncated incorrect DECIMAL value: '1a'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: 't '
SELECT a,CAST(a AS SIGNED) FROM t1 ORDER BY a;
a CAST(a AS SIGNED)
10 10
@@ -489,3 +490,23 @@ Warnings:
Warning 1292 Truncated incorrect INTEGER value: '1a'
Warning 1292 Truncated incorrect INTEGER value: 't'
DROP TABLE t1;
+CREATE TABLE t1 (a VARCHAR(16));
+INSERT INTO t1 VALUES ('5'), ('s'), ('');
+SELECT 5 = a FROM t1;
+5 = a
+1
+0
+0
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 's'
+DROP TABLE t1;
+CREATE TABLE t1 (a CHAR(16));
+INSERT INTO t1 VALUES ('5'), ('s'), ('');
+SELECT 5 = a FROM t1;
+5 = a
+1
+0
+0
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 's '
+DROP TABLE t1;
diff --git a/mysql-test/r/udf.result b/mysql-test/r/udf.result
index 601b364fbbe..fbf87b2e4cc 100644
--- a/mysql-test/r/udf.result
+++ b/mysql-test/r/udf.result
@@ -409,3 +409,18 @@ b
1
DROP TABLE t1;
End of 5.0 tests.
+#
+# Bug#33546: Slowdown on re-evaluation of constant expressions.
+#
+CREATE TABLE t1 (f1 INT);
+INSERT INTO t1 VALUES(1),(50);
+CREATE FUNCTION myfunc_double RETURNS INTEGER SONAME "UDF_EXAMPLE_LIB";
+EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE f1=1 + myfunc_double(1);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
+Warnings:
+Note 1003 select 1 AS `1` from `test`.`t1` where (`test`.`t1`.`f1` = <cache>((1 + myfunc_double(1 AS `1`))))
+DROP FUNCTION myfunc_double;
+DROP TABLE t1;
+#
+End of 5.1 tests.
diff --git a/mysql-test/r/union.result b/mysql-test/r/union.result
index 43d7cade227..71f7547386f 100644
--- a/mysql-test/r/union.result
+++ b/mysql-test/r/union.result
@@ -153,48 +153,6 @@ ERROR 42S22: Unknown column 'a' in 'field list'
1 3
1 3
2 1
-CREATE TABLE t1 (a INT);
-INSERT INTO t1 VALUES (1);
-SELECT a INTO @v FROM (
-SELECT a FROM t1
-UNION
-SELECT a FROM t1
-) alias;
-SELECT a INTO OUTFILE '<MYSQLTEST_VARDIR>/tmp/union.out.file' FROM (
-SELECT a FROM t1
-UNION
-SELECT a FROM t1 WHERE 0
-) alias;
-SELECT a INTO DUMPFILE '<MYSQLTEST_VARDIR>/tmp/union.out.file' FROM (
-SELECT a FROM t1
-UNION
-SELECT a FROM t1 WHERE 0
-) alias;
-SELECT a FROM (
-SELECT a FROM t1
-UNION
-SELECT a INTO @v FROM t1
-) alias;
-SELECT a FROM (
-SELECT a FROM t1
-UNION
-SELECT a INTO OUTFILE '<MYSQLTEST_VARDIR>/tmp/union.out.file' FROM t1
-) alias;
-SELECT a FROM (
-SELECT a FROM t1
-UNION
-SELECT a INTO DUMPFILE '<MYSQLTEST_VARDIR>/tmp/union.out.file' FROM t1
-) alias;
-SELECT a FROM t1 UNION SELECT a INTO @v FROM t1;
-SELECT a FROM t1 UNION SELECT a INTO OUTFILE '<MYSQLTEST_VARDIR>/tmp/union.out.file' FROM t1;
-SELECT a FROM t1 UNION SELECT a INTO DUMPFILE '<MYSQLTEST_VARDIR>/tmp/union.out.file' FROM t1;
-SELECT a INTO @v FROM t1 UNION SELECT a FROM t1;
-ERROR HY000: Incorrect usage of UNION and INTO
-SELECT a INTO OUTFILE '<MYSQLTEST_VARDIR>/tmp/union.out.file' FROM t1 UNION SELECT a FROM t1;
-ERROR HY000: Incorrect usage of UNION and INTO
-SELECT a INTO DUMPFILE '<MYSQLTEST_VARDIR>/tmp/union.out.file' FROM t1 UNION SELECT a FROM t1;
-ERROR HY000: Incorrect usage of UNION and INTO
-DROP TABLE t1;
CREATE TABLE t1 (
`pseudo` char(35) NOT NULL default '',
`pseudo1` char(35) NOT NULL default '',
@@ -1347,6 +1305,8 @@ SELECT @tmp_max:= @@global.max_allowed_packet;
@tmp_max:= @@global.max_allowed_packet
1048576
SET @@global.max_allowed_packet=25000000;
+Warnings:
+Warning 1292 Truncated incorrect max_allowed_packet value: '25000000'
CREATE TABLE t1 (a mediumtext);
CREATE TABLE t2 (b varchar(20));
INSERT INTO t1 VALUES ('a');
@@ -1588,6 +1548,42 @@ Warnings:
Note 1003 select '0' AS `a` from `test`.`t1` union select '0' AS `a` from `test`.`t1` order by `a`
DROP TABLE t1;
End of 5.0 tests
+#
+# Bug#32858: Error: "Incorrect usage of UNION and INTO" does not take
+# subselects into account
+#
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (1);
+# Tests fix in parser rule select_derived_union.
+SELECT a INTO @v FROM (
+SELECT a FROM t1
+UNION
+SELECT a FROM t1
+) alias;
+SELECT a INTO OUTFILE 'union.out.file' FROM (
+SELECT a FROM t1
+UNION
+SELECT a FROM t1 WHERE 0
+) alias;
+SELECT a INTO DUMPFILE 'union.out.file2' FROM (
+SELECT a FROM t1
+UNION
+SELECT a FROM t1 WHERE 0
+) alias;
+SELECT a FROM t1 UNION SELECT a INTO @v FROM t1;
+SELECT a FROM t1 UNION SELECT a INTO OUTFILE 'union.out.file5' FROM t1;
+SELECT a FROM t1 UNION SELECT a INTO OUTFILE 'union.out.file6' FROM t1;
+SELECT a INTO @v FROM t1 UNION SELECT a FROM t1;
+ERROR HY000: Incorrect usage of UNION and INTO
+SELECT a INTO OUTFILE 'union.out.file7' FROM t1 UNION SELECT a FROM t1;
+ERROR HY000: Incorrect usage of UNION and INTO
+SELECT a INTO DUMPFILE 'union.out.file8' FROM t1 UNION SELECT a FROM t1;
+ERROR HY000: Incorrect usage of UNION and INTO
+# Tests fix in parser rule query_expression_body.
+SELECT ( SELECT a UNION SELECT a ) INTO @v FROM t1;
+SELECT ( SELECT a UNION SELECT a ) INTO OUTFILE 'union.out.file3' FROM t1;
+SELECT ( SELECT a UNION SELECT a ) INTO DUMPFILE 'union.out.file4' FROM t1;
+DROP TABLE t1;
#
# Bug #49734: Crash on EXPLAIN EXTENDED UNION ... ORDER BY
# <any non-const-function>
diff --git a/mysql-test/r/user_limits.result b/mysql-test/r/user_limits.result
index a94eb4616d1..80ec5517b16 100644
--- a/mysql-test/r/user_limits.result
+++ b/mysql-test/r/user_limits.result
@@ -70,7 +70,7 @@ select @@session.max_user_connections, @@global.max_user_connections;
@@session.max_user_connections @@global.max_user_connections
0 0
set session max_user_connections= 2;
-ERROR HY000: Variable 'max_user_connections' is a GLOBAL variable and should be set with SET GLOBAL
+ERROR HY000: SESSION variable 'max_user_connections' is read-only. Use SET GLOBAL to assign the value
set global max_user_connections= 2;
select @@session.max_user_connections, @@global.max_user_connections;
@@session.max_user_connections @@global.max_user_connections
diff --git a/mysql-test/r/user_var-binlog.result b/mysql-test/r/user_var-binlog.result
index 05efea79fe7..251d0b39098 100644
--- a/mysql-test/r/user_var-binlog.result
+++ b/mysql-test/r/user_var-binlog.result
@@ -8,34 +8,50 @@ SET @var2=char(ascii('a'));
insert into t1 values (@var1),(@var2);
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 # User var # # @`a b`=_latin1 0x68656C6C6F COLLATE latin1_swedish_ci
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES(@`a b`)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # User var # # @`var1`=_latin1 0x273B616161 COLLATE latin1_swedish_ci
master-bin.000001 # User var # # @`var2`=_binary 0x61 COLLATE binary
master-bin.000001 # Query # # use `test`; insert into t1 values (@var1),(@var2)
+master-bin.000001 # Query # # COMMIT
flush logs;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
-SET @`a b`:=_latin1 0x68656C6C6F COLLATE `latin1_swedish_ci`/*!*/;
-use test/*!*/;
SET TIMESTAMP=10000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET @`a b`:=_latin1 0x68656C6C6F COLLATE `latin1_swedish_ci`/*!*/;
+use test/*!*/;
+SET TIMESTAMP=10000/*!*/;
INSERT INTO t1 VALUES(@`a b`)
/*!*/;
+SET TIMESTAMP=10000/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=10000/*!*/;
+BEGIN
+/*!*/;
SET @`var1`:=_latin1 0x273B616161 COLLATE `latin1_swedish_ci`/*!*/;
SET @`var2`:=_binary 0x61 COLLATE `binary`/*!*/;
SET TIMESTAMP=10000/*!*/;
insert into t1 values (@var1),(@var2)
/*!*/;
+SET TIMESTAMP=10000/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
diff --git a/mysql-test/r/user_var.result b/mysql-test/r/user_var.result
index be10bd9954b..c73d2e64540 100644
--- a/mysql-test/r/user_var.result
+++ b/mysql-test/r/user_var.result
@@ -192,8 +192,6 @@ coercibility(@v1) coercibility(@v2) coercibility(@v3) coercibility(@v4)
2 2 2 2
set session @honk=99;
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 '@honk=99' at line 1
-set one_shot @honk=99;
-ERROR HY000: The 'SET ONE_SHOT' syntax is reserved for purposes internal to the MySQL server
select @@local.max_allowed_packet;
@@local.max_allowed_packet
#
diff --git a/mysql-test/r/variables.result b/mysql-test/r/variables.result
index 7f45046fab5..a8437961117 100644
--- a/mysql-test/r/variables.result
+++ b/mysql-test/r/variables.result
@@ -24,7 +24,7 @@ set @my_query_cache_type =@@global.query_cache_type;
set @my_rpl_recovery_rank =@@global.rpl_recovery_rank;
set @my_server_id =@@global.server_id;
set @my_slow_launch_time =@@global.slow_launch_time;
-set @my_storage_engine =@@global.storage_engine;
+set @my_storage_engine =@@global.default_storage_engine;
set @my_thread_cache_size =@@global.thread_cache_size;
set @my_max_allowed_packet =@@global.max_allowed_packet;
set @my_join_buffer_size =@@global.join_buffer_size;
@@ -57,7 +57,7 @@ select @`select`,@not_used;
set @test_int=10,@test_double=1e-10,@test_string="abcdeghi",@test_string2="abcdefghij",@select=NULL;
select @test_int,@test_double,@test_string,@test_string2,@select;
@test_int @test_double @test_string @test_string2 @select
-10 1e-10 abcdeghi abcdefghij NULL
+10 0.0000000001 abcdeghi abcdefghij NULL
set @test_int="hello",@test_double="hello",@test_string="hello",@test_string2="hello";
select @test_int,@test_double,@test_string,@test_string2;
@test_int @test_double @test_string @test_string2
@@ -165,28 +165,28 @@ set big_tables=OFF, big_tables=ON, big_tables=0, big_tables=1, big_tables="OFF",
set global concurrent_insert=2;
show variables like 'concurrent_insert';
Variable_name Value
-concurrent_insert 2
+concurrent_insert ALWAYS
select * from information_schema.session_variables where variable_name like 'concurrent_insert';
VARIABLE_NAME VARIABLE_VALUE
-CONCURRENT_INSERT 2
+CONCURRENT_INSERT ALWAYS
set global concurrent_insert=1;
show variables like 'concurrent_insert';
Variable_name Value
-concurrent_insert 1
+concurrent_insert AUTO
select * from information_schema.session_variables where variable_name like 'concurrent_insert';
VARIABLE_NAME VARIABLE_VALUE
-CONCURRENT_INSERT 1
+CONCURRENT_INSERT AUTO
set global concurrent_insert=0;
show variables like 'concurrent_insert';
Variable_name Value
-concurrent_insert 0
+concurrent_insert NEVER
select * from information_schema.session_variables where variable_name like 'concurrent_insert';
VARIABLE_NAME VARIABLE_VALUE
-CONCURRENT_INSERT 0
+CONCURRENT_INSERT NEVER
set global concurrent_insert=DEFAULT;
select @@concurrent_insert;
@@concurrent_insert
-1
+AUTO
set global timed_mutexes=ON;
show variables like 'timed_mutexes';
Variable_name Value
@@ -201,21 +201,23 @@ timed_mutexes OFF
select * from information_schema.session_variables where variable_name like 'timed_mutexes';
VARIABLE_NAME VARIABLE_VALUE
TIMED_MUTEXES OFF
-set storage_engine=MYISAM, storage_engine="HEAP", global storage_engine="MERGE";
-show local variables like 'storage_engine';
+set default_storage_engine=MYISAM, default_storage_engine="HEAP", global default_storage_engine="MERGE";
+show local variables like 'default_storage_engine';
Variable_name Value
-storage_engine MEMORY
-select * from information_schema.session_variables where variable_name like 'storage_engine';
+default_storage_engine MEMORY
+select * from information_schema.session_variables where variable_name like 'default_storage_engine';
VARIABLE_NAME VARIABLE_VALUE
-STORAGE_ENGINE MEMORY
-show global variables like 'storage_engine';
+DEFAULT_STORAGE_ENGINE MEMORY
+show global variables like 'default_storage_engine';
Variable_name Value
-storage_engine MRG_MYISAM
-select * from information_schema.global_variables where variable_name like 'storage_engine';
+default_storage_engine MRG_MYISAM
+select * from information_schema.global_variables where variable_name like 'default_storage_engine';
VARIABLE_NAME VARIABLE_VALUE
-STORAGE_ENGINE MRG_MYISAM
-set GLOBAL query_cache_size=100000;
+DEFAULT_STORAGE_ENGINE MRG_MYISAM
+set GLOBAL query_cache_size=102400;
set GLOBAL myisam_max_sort_file_size=2000000;
+Warnings:
+Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '2000000'
show global variables like 'myisam_max_sort_file_size';
Variable_name Value
myisam_max_sort_file_size 1048576
@@ -256,6 +258,8 @@ NET_READ_TIMEOUT 30
NET_RETRY_COUNT 10
NET_WRITE_TIMEOUT 60
set global net_buffer_length=8000, global net_read_timeout=900, net_write_timeout=1000;
+Warnings:
+Warning 1292 Truncated incorrect net_buffer_length value: '8000'
show global variables like 'net_%';
Variable_name Value
net_buffer_length 7168
@@ -359,13 +363,20 @@ TRANSACTION_PREALLOC_SIZE 19456
==+ Manipulate variable values +==
Testing values that are not 1024 multiples
set @@range_alloc_block_size=1024*16+1023;
+Warnings:
+Warning 1292 Truncated incorrect range_alloc_block_size value: '17407'
set @@query_alloc_block_size=1024*17+2;
+Warnings:
+Warning 1292 Truncated incorrect query_alloc_block_size value: '17410'
set @@query_prealloc_size=1024*18-1023;
+Warnings:
+Warning 1292 Truncated incorrect query_prealloc_size value: '17409'
set @@transaction_alloc_block_size=1024*20-1;
+Warnings:
+Warning 1292 Truncated incorrect transaction_alloc_block_size value: '20479'
set @@transaction_prealloc_size=1024*21-1;
-select @@query_alloc_block_size;
-@@query_alloc_block_size
-17408
+Warnings:
+Warning 1292 Truncated incorrect transaction_prealloc_size value: '21503'
==+ Check manipulated values ==+
SHOW VARIABLES WHERE variable_name IN ('range_alloc_block_size',
'query_alloc_block_size', 'query_prealloc_size',
@@ -415,17 +426,15 @@ set unknown_variable=1;
ERROR HY000: Unknown system variable 'unknown_variable'
set max_join_size="hello";
ERROR 42000: Incorrect argument type to variable 'max_join_size'
-set storage_engine=UNKNOWN_TABLE_TYPE;
-ERROR 42000: Unknown table engine 'UNKNOWN_TABLE_TYPE'
-set storage_engine=MERGE, big_tables=2;
+set default_storage_engine=UNKNOWN_TABLE_TYPE;
+ERROR 42000: Unknown storage engine 'UNKNOWN_TABLE_TYPE'
+set default_storage_engine=MERGE, big_tables=2;
ERROR 42000: Variable 'big_tables' can't be set to the value of '2'
-show local variables like 'storage_engine';
+show local variables like 'default_storage_engine';
Variable_name Value
-storage_engine MEMORY
+default_storage_engine MEMORY
set SESSION query_cache_size=10000;
ERROR HY000: Variable 'query_cache_size' is a GLOBAL variable and should be set with SET GLOBAL
-set GLOBAL storage_engine=DEFAULT;
-ERROR 42000: Variable 'storage_engine' doesn't have a default value
set character_set_client=UNKNOWN_CHARACTER_SET;
ERROR 42000: Unknown character set: 'UNKNOWN_CHARACTER_SET'
set collation_connection=UNKNOWN_COLLATION;
@@ -434,18 +443,12 @@ set character_set_client=NULL;
ERROR 42000: Variable 'character_set_client' can't be set to the value of 'NULL'
set collation_connection=NULL;
ERROR 42000: Variable 'collation_connection' can't be set to the value of 'NULL'
-set global autocommit=1;
-ERROR HY000: Variable 'autocommit' is a SESSION variable and can't be used with SET GLOBAL
select @@global.timestamp;
ERROR HY000: Variable 'timestamp' is a SESSION variable
set @@version='';
ERROR HY000: Variable 'version' is a read only variable
set @@concurrent_insert=1;
ERROR HY000: Variable 'concurrent_insert' is a GLOBAL variable and should be set with SET GLOBAL
-set @@global.sql_auto_is_null=1;
-ERROR HY000: Variable 'sql_auto_is_null' is a SESSION variable and can't be used with SET GLOBAL
-select @@global.sql_auto_is_null;
-ERROR HY000: Variable 'sql_auto_is_null' is a SESSION variable
set myisam_max_sort_file_size=100;
ERROR HY000: Variable 'myisam_max_sort_file_size' is a GLOBAL variable and should be set with SET GLOBAL
set @@SQL_WARNINGS=NULL;
@@ -530,14 +533,16 @@ set net_read_timeout=100;
set net_write_timeout=100;
set global query_cache_limit=100;
set global query_cache_size=100;
+Warnings:
+Warning 1292 Truncated incorrect query_cache_size value: '100'
set global query_cache_type=demand;
set read_buffer_size=100;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '100'
set read_rnd_buffer_size=100;
-Warnings:
-Warning 1292 Truncated incorrect read_rnd_buffer_size value: '100'
set global rpl_recovery_rank=100;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
set global server_id=100;
set global slow_launch_time=100;
set sort_buffer_size=100;
@@ -568,17 +573,13 @@ set sql_log_update=1;
Warnings:
Note 1315 The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored. This option will be removed in MySQL 5.6.
set sql_low_priority_updates=1;
-set sql_max_join_size=200;
-select @@sql_max_join_size,@@max_join_size;
-@@sql_max_join_size @@max_join_size
-200 200
set sql_quote_show_create=1;
set sql_safe_updates=1;
set sql_select_limit=1;
set sql_select_limit=default;
set sql_warnings=1;
set global table_open_cache=100;
-set storage_engine=myisam;
+set default_storage_engine=myisam;
set global thread_cache_size=100;
set timestamp=1, timestamp=default;
set tmp_table_size=100;
@@ -615,6 +616,8 @@ create table t2 (a int not null auto_increment, primary key(a));
insert into t1 values(null),(null),(null);
insert into t2 values(null),(null),(null);
set global key_buffer_size=100000;
+Warnings:
+Warning 1292 Truncated incorrect key_buffer_size value: '100000'
select @@key_buffer_size;
@@key_buffer_size
98304
@@ -658,11 +661,11 @@ MYISAM_MAX_SORT_FILE_SIZE MAX_FILE_SIZE
set global myisam_max_sort_file_size=default;
select @@global.max_user_connections,@@local.max_join_size;
@@global.max_user_connections @@local.max_join_size
-100 200
+100 100
set @svc=@@global.max_user_connections, @svj=@@local.max_join_size;
select @@global.max_user_connections,@@local.max_join_size;
@@global.max_user_connections @@local.max_join_size
-100 200
+100 100
set @@global.max_user_connections=111,@@local.max_join_size=222;
select @@global.max_user_connections,@@local.max_join_size;
@@global.max_user_connections @@local.max_join_size
@@ -674,7 +677,7 @@ select @@global.max_user_connections,@@local.max_join_size;
set @@global.max_user_connections=@svc, @@local.max_join_size=@svj;
select @@global.max_user_connections,@@local.max_join_size;
@@global.max_user_connections @@local.max_join_size
-100 200
+100 100
set @a=1, @b=2;
set @a=@b, @b=@a;
select @a, @b;
@@ -812,16 +815,16 @@ select @@lc_time_names;
@@lc_time_names
en_US
LC_TIME_NAMES: testing locale with the last ID:
-set lc_time_names=108;
+set lc_time_names=109;
select @@lc_time_names;
@@lc_time_names
-zh_HK
+el_GR
LC_TIME_NAMES: testing a number beyond the valid ID range:
-set lc_time_names=109;
-ERROR HY000: Unknown locale: '109'
+set lc_time_names=110;
+ERROR HY000: Unknown locale: '110'
select @@lc_time_names;
@@lc_time_names
-zh_HK
+el_GR
LC_TIME_NAMES: testing that 0 is en_US:
set lc_time_names=0;
select @@lc_time_names;
@@ -864,7 +867,7 @@ select @@query_prealloc_size = @test;
@@query_prealloc_size = @test
1
set global sql_mode=repeat('a',80);
-ERROR 42000: Variable 'sql_mode' can't be set to the value of 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
+ERROR 42000: Variable 'sql_mode' can't be set to the value of 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
End of 4.1 tests
create table t1 (a int);
select a into @x from t1;
@@ -1055,9 +1058,11 @@ set global net_read_timeout =@my_net_read_timeout;
set global query_cache_limit =@my_query_cache_limit;
set global query_cache_type =@my_query_cache_type;
set global rpl_recovery_rank =@my_rpl_recovery_rank;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
set global server_id =@my_server_id;
set global slow_launch_time =@my_slow_launch_time;
-set global storage_engine =@my_storage_engine;
+set global default_storage_engine =@my_storage_engine;
set global thread_cache_size =@my_thread_cache_size;
set global max_allowed_packet =@my_max_allowed_packet;
set global join_buffer_size =@my_join_buffer_size;
@@ -1182,18 +1187,18 @@ ERROR HY000: Variable 'init_file' is a read only variable
SET @@global.init_file= 'x';
ERROR HY000: Variable 'init_file' is a read only variable
#
-SHOW VARIABLES like 'language';
+SHOW VARIABLES like 'lc_messages_dir';
Variable_name Value
-language #
-SELECT @@session.language;
-ERROR HY000: Variable 'language' is a GLOBAL variable
-SELECT @@global.language;
-@@global.language
+lc_messages_dir #
+SELECT @@session.lc_messages_dir;
+ERROR HY000: Variable 'lc_messages_dir' is a GLOBAL variable
+SELECT @@global.lc_messages_dir;
+@@global.lc_messages_dir
#
-SET @@session.language= 'x';
-ERROR HY000: Variable 'language' is a read only variable
-SET @@global.language= 'x';
-ERROR HY000: Variable 'language' is a read only variable
+SET @@session.lc_messages_dir= 'x';
+ERROR HY000: Variable 'lc_messages_dir' is a read only variable
+SET @@global.lc_messages_dir= 'x';
+ERROR HY000: Variable 'lc_messages_dir' is a read only variable
#
SHOW VARIABLES like 'large_page_size';
Variable_name Value
@@ -1440,10 +1445,10 @@ Warning 1292 Truncated incorrect auto_increment_offset value: '-1'
SET GLOBAL auto_increment_offset=0;
Warnings:
Warning 1292 Truncated incorrect auto_increment_offset value: '0'
-select @@storage_engine;
+select @@default_storage_engine;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def @@storage_engine 253 6 6 Y 0 31 8
-@@storage_engine
+def @@default_storage_engine 253 6 6 Y 0 31 8
+@@default_storage_engine
MyISAM
SET @old_server_id = @@GLOBAL.server_id;
SET GLOBAL server_id = (1 << 32) - 1;
@@ -1494,3 +1499,168 @@ SELECT @@GLOBAL.max_binlog_cache_size;
5368709120
SET GLOBAL max_binlog_cache_size = @old_max_binlog_cache_size;
End of 5.1 tests
+
+#
+# Bug#34828: OF is taken as OFF and a value of 0 is set for variable SQL_notes.
+#
+
+# Checking sql_notes...
+SET @sql_notes_saved = @@sql_notes;
+
+SET @@sql_notes = ON;
+SELECT @@sql_notes;
+@@sql_notes
+1
+
+SET @@sql_notes = OF;
+ERROR 42000: Variable 'sql_notes' can't be set to the value of 'OF'
+SELECT @@sql_notes;
+@@sql_notes
+1
+
+SET @@sql_notes = OFF;
+SELECT @@sql_notes;
+@@sql_notes
+0
+
+SET @@sql_notes = @sql_notes_saved;
+
+# Checking delay_key_write...
+SET @delay_key_write_saved = @@delay_key_write;
+
+SET GLOBAL delay_key_write = ON;
+SELECT @@delay_key_write;
+@@delay_key_write
+ON
+
+SET GLOBAL delay_key_write = OF;
+ERROR 42000: Variable 'delay_key_write' can't be set to the value of 'OF'
+SELECT @@delay_key_write;
+@@delay_key_write
+ON
+
+SET GLOBAL delay_key_write = AL;
+ERROR 42000: Variable 'delay_key_write' can't be set to the value of 'AL'
+SELECT @@delay_key_write;
+@@delay_key_write
+ON
+
+SET GLOBAL delay_key_write = OFF;
+SELECT @@delay_key_write;
+@@delay_key_write
+OFF
+
+SET GLOBAL delay_key_write = ALL;
+SELECT @@delay_key_write;
+@@delay_key_write
+ALL
+
+SET GLOBAL delay_key_write = @delay_key_write_saved;
+
+# Checking sql_safe_updates...
+SET @sql_safe_updates_saved = @@sql_safe_updates;
+
+SET @@sql_safe_updates = ON;
+SELECT @@sql_safe_updates;
+@@sql_safe_updates
+1
+
+SET @@sql_safe_updates = OF;
+ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of 'OF'
+SELECT @@sql_safe_updates;
+@@sql_safe_updates
+1
+
+SET @@sql_safe_updates = OFF;
+SELECT @@sql_safe_updates;
+@@sql_safe_updates
+0
+
+SET @@sql_safe_updates = @sql_safe_updates_saved;
+
+# Checking foreign_key_checks...
+SET @foreign_key_checks_saved = @@foreign_key_checks;
+
+SET @@foreign_key_checks = ON;
+SELECT @@foreign_key_checks;
+@@foreign_key_checks
+1
+
+SET @@foreign_key_checks = OF;
+ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of 'OF'
+SELECT @@foreign_key_checks;
+@@foreign_key_checks
+1
+
+SET @@foreign_key_checks = OFF;
+SELECT @@foreign_key_checks;
+@@foreign_key_checks
+0
+
+SET @@foreign_key_checks = @foreign_key_checks_saved;
+
+# Checking unique_checks...
+SET @unique_checks_saved = @@unique_checks;
+
+SET @@unique_checks = ON;
+SELECT @@unique_checks;
+@@unique_checks
+1
+
+SET @@unique_checks = OF;
+ERROR 42000: Variable 'unique_checks' can't be set to the value of 'OF'
+SELECT @@unique_checks;
+@@unique_checks
+1
+
+SET @@unique_checks = OFF;
+SELECT @@unique_checks;
+@@unique_checks
+0
+
+SET @@unique_checks = @unique_checks_saved;
+
+# Checking sql_buffer_result...
+SET @sql_buffer_result_saved = @@sql_buffer_result;
+
+SET @@sql_buffer_result = ON;
+SELECT @@sql_buffer_result;
+@@sql_buffer_result
+1
+
+SET @@sql_buffer_result = OF;
+ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of 'OF'
+SELECT @@sql_buffer_result;
+@@sql_buffer_result
+1
+
+SET @@sql_buffer_result = OFF;
+SELECT @@sql_buffer_result;
+@@sql_buffer_result
+0
+
+SET @@sql_buffer_result = @sql_buffer_result_saved;
+
+# Checking sql_quote_show_create...
+SET @sql_quote_show_create_saved = @@sql_quote_show_create;
+
+SET @@sql_quote_show_create = ON;
+SELECT @@sql_quote_show_create;
+@@sql_quote_show_create
+1
+
+SET @@sql_quote_show_create = OF;
+ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'OF'
+SELECT @@sql_quote_show_create;
+@@sql_quote_show_create
+1
+
+SET @@sql_quote_show_create = OFF;
+SELECT @@sql_quote_show_create;
+@@sql_quote_show_create
+0
+
+SET @@sql_quote_show_create = @sql_quote_show_create_saved;
+
+# End of Bug#34828.
+
diff --git a/mysql-test/r/view.result b/mysql-test/r/view.result
index 613939bfdf6..a54db7240a4 100644
--- a/mysql-test/r/view.result
+++ b/mysql-test/r/view.result
@@ -1104,6 +1104,9 @@ select * from t2;
ERROR HY000: Table 't2' was not locked with LOCK TABLES
drop view v1;
drop table t1, t2;
+ERROR HY000: Table 't1' was locked with a READ lock and can't be updated
+unlock tables;
+drop table t1, t2;
create table t1 (a int);
create view v1 as select * from t1 where a < 2 with check option;
insert into v1 values(1);
@@ -1111,8 +1114,8 @@ insert into v1 values(3);
ERROR HY000: CHECK OPTION failed 'test.v1'
insert ignore into v1 values (2),(3),(0);
Warnings:
-Error 1369 CHECK OPTION failed 'test.v1'
-Error 1369 CHECK OPTION failed 'test.v1'
+Warning 1369 CHECK OPTION failed 'test.v1'
+Warning 1369 CHECK OPTION failed 'test.v1'
select * from t1;
a
1
@@ -1125,8 +1128,8 @@ create table t2 (a int);
insert into t2 values (2),(3),(0);
insert ignore into v1 SELECT a from t2;
Warnings:
-Error 1369 CHECK OPTION failed 'test.v1'
-Error 1369 CHECK OPTION failed 'test.v1'
+Warning 1369 CHECK OPTION failed 'test.v1'
+Warning 1369 CHECK OPTION failed 'test.v1'
select * from t1 order by a desc;
a
1
@@ -1148,7 +1151,7 @@ a
update v1 set a=a+1;
update ignore v1,t2 set v1.a=v1.a+1 where v1.a=t2.a;
Warnings:
-Error 1369 CHECK OPTION failed 'test.v1'
+Warning 1369 CHECK OPTION failed 'test.v1'
select * from t1;
a
1
@@ -1182,7 +1185,7 @@ insert into v1 values (1) on duplicate key update a=2;
ERROR HY000: CHECK OPTION failed 'test.v1'
insert ignore into v1 values (1) on duplicate key update a=2;
Warnings:
-Error 1369 CHECK OPTION failed 'test.v1'
+Warning 1369 CHECK OPTION failed 'test.v1'
select * from t1;
a
1
@@ -1283,7 +1286,7 @@ insert ignore into v1 values (6);
ERROR HY000: CHECK OPTION failed 'test.v1'
insert ignore into v1 values (6),(3);
Warnings:
-Error 1369 CHECK OPTION failed 'test.v1'
+Warning 1369 CHECK OPTION failed 'test.v1'
select * from t1;
s1
3
@@ -1328,9 +1331,9 @@ delete from t1;
load data infile '../../std_data/loaddata3.dat' ignore into table v1 fields terminated by '' enclosed by '' ignore 1 lines;
Warnings:
Warning 1366 Incorrect integer value: 'error ' for column 'a' at row 3
-Error 1369 CHECK OPTION failed 'test.v1'
+Warning 1369 CHECK OPTION failed 'test.v1'
Warning 1366 Incorrect integer value: 'wrong end ' for column 'a' at row 4
-Error 1369 CHECK OPTION failed 'test.v1'
+Warning 1369 CHECK OPTION failed 'test.v1'
select * from t1 order by a,b;
a b
1 row 1
@@ -1354,7 +1357,7 @@ concat('|',a,'|') concat('|',b,'|')
delete from t1;
load data infile '../../std_data/loaddata2.dat' ignore into table v1 fields terminated by ',' enclosed by '''';
Warnings:
-Error 1369 CHECK OPTION failed 'test.v1'
+Warning 1369 CHECK OPTION failed 'test.v1'
Warning 1261 Row 2 doesn't contain data for all columns
select concat('|',a,'|'), concat('|',b,'|') from t1;
concat('|',a,'|') concat('|',b,'|')
@@ -2342,11 +2345,11 @@ CREATE VIEW v2 AS SELECT t3.* FROM t1,t3 WHERE t1.a=t3.a;
EXPLAIN SELECT t1.* FROM t1 JOIN t2 WHERE t1.a=t2.a AND t1.b=t2.b AND t1.a=1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref a a 5 const 1 Using where; Using index
-1 SIMPLE t2 ref a a 10 const,test.t1.b 2 Using where; Using index
+1 SIMPLE t2 ref a a 10 const,test.t1.b 1 Using where; Using index
EXPLAIN SELECT * FROM v1 WHERE a=1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref a a 5 const 1 Using where; Using index
-1 SIMPLE t2 ref a a 10 const,test.t1.b 2 Using where; Using index
+1 SIMPLE t2 ref a a 10 const,test.t1.b 1 Using where; Using index
EXPLAIN SELECT * FROM v2 WHERE a=1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref a a 5 const 1 Using where; Using index
@@ -2587,7 +2590,7 @@ CREATE VIEW v1 AS SELECT SQRT(a) my_sqrt FROM t1;
SELECT my_sqrt FROM v1 ORDER BY my_sqrt;
my_sqrt
1
-1.4142135623731
+1.4142135623730951
DROP VIEW v1;
DROP TABLE t1;
CREATE TABLE t1 (id int PRIMARY KEY);
@@ -3699,6 +3702,117 @@ SELECT * FROM v1 IGNORE INDEX (c2) WHERE c2=2;
ERROR 42000: Key 'c2' doesn't exist in table 'v1'
DROP VIEW v1;
DROP TABLE t1;
+#
+# Bug #45806 crash when replacing into a view with a join!
+#
+CREATE TABLE t1(a INT UNIQUE);
+CREATE VIEW v1 AS SELECT t1.a FROM t1, t1 AS a;
+INSERT INTO t1 VALUES (1), (2);
+REPLACE INTO v1(a) SELECT 1 FROM t1,t1 AS c;
+SELECT * FROM v1;
+a
+1
+2
+1
+2
+REPLACE INTO v1(a) SELECT 3 FROM t1,t1 AS c;
+SELECT * FROM v1;
+a
+1
+2
+3
+1
+2
+3
+1
+2
+3
+DELETE FROM t1 WHERE a=3;
+INSERT INTO v1(a) SELECT 1 FROM t1,t1 AS c
+ON DUPLICATE KEY UPDATE `v1`.`a`= 1;
+SELECT * FROM v1;
+a
+1
+2
+1
+2
+CREATE VIEW v2 AS SELECT t1.a FROM t1, v1 AS a;
+REPLACE INTO v2(a) SELECT 1 FROM t1,t1 AS c;
+SELECT * FROM v2;
+a
+1
+2
+1
+2
+1
+2
+1
+2
+REPLACE INTO v2(a) SELECT 3 FROM t1,t1 AS c;
+SELECT * FROM v2;
+a
+1
+2
+3
+1
+2
+3
+1
+2
+3
+1
+2
+3
+1
+2
+3
+1
+2
+3
+1
+2
+3
+1
+2
+3
+1
+2
+3
+INSERT INTO v2(a) SELECT 1 FROM t1,t1 AS c
+ON DUPLICATE KEY UPDATE `v2`.`a`= 1;
+SELECT * FROM v2;
+a
+1
+2
+3
+1
+2
+3
+1
+2
+3
+1
+2
+3
+1
+2
+3
+1
+2
+3
+1
+2
+3
+1
+2
+3
+1
+2
+3
+DROP VIEW v1;
+DROP VIEW v2;
+DROP TABLE t1;
+# -- End of test case for Bug#45806
# -----------------------------------------------------------------
# -- Bug#40825: Error 1356 while selecting from a view
# -- with a "HAVING" clause though query works
@@ -3847,3 +3961,16 @@ DROP TABLE t1;
# -----------------------------------------------------------------
# -- End of 5.1 tests.
# -----------------------------------------------------------------
+drop table if exists t_9801;
+drop view if exists v_9801;
+create table t_9801 (s1 int);
+create view v_9801 as
+select sum(s1) from t_9801 with check option;
+ERROR HY000: CHECK OPTION on non-updatable view 'test.v_9801'
+create view v_9801 as
+select sum(s1) from t_9801 group by s1 with check option;
+ERROR HY000: CHECK OPTION on non-updatable view 'test.v_9801'
+create view v_9801 as
+select sum(s1) from t_9801 group by s1 with rollup with check option;
+ERROR HY000: CHECK OPTION on non-updatable view 'test.v_9801'
+drop table t_9801;
diff --git a/mysql-test/r/view_grant.result b/mysql-test/r/view_grant.result
index 2d5c515d0b5..65fbf2d87b6 100644
--- a/mysql-test/r/view_grant.result
+++ b/mysql-test/r/view_grant.result
@@ -16,7 +16,7 @@ create table mysqltest.t2 (a int, b int);
grant select on mysqltest.t1 to mysqltest_1@localhost;
grant create view,select on test.* to mysqltest_1@localhost;
create definer=root@localhost view v1 as select * from mysqltest.t1;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
create view v1 as select * from mysqltest.t1;
alter view v1 as select * from mysqltest.t1;
ERROR 42000: DROP command denied to user 'mysqltest_1'@'localhost' for table 'v1'
@@ -779,11 +779,11 @@ GRANT CREATE VIEW ON db26813.v2 TO u26813@localhost;
GRANT DROP, CREATE VIEW ON db26813.v3 TO u26813@localhost;
GRANT SELECT ON db26813.t1 TO u26813@localhost;
ALTER VIEW v1 AS SELECT f2 FROM t1;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
ALTER VIEW v2 AS SELECT f2 FROM t1;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
ALTER VIEW v3 AS SELECT f2 FROM t1;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
SHOW CREATE VIEW v3;
View Create View character_set_client collation_connection
v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v3` AS select `t1`.`f1` AS `f1` from `t1` latin1 latin1_swedish_ci
@@ -799,17 +799,17 @@ CREATE USER u29908_1@localhost;
CREATE DEFINER = u29908_1@localhost VIEW v1 AS SELECT f1 FROM t1;
CREATE DEFINER = u29908_1@localhost SQL SECURITY INVOKER VIEW v2 AS
SELECT f1 FROM t1;
-GRANT DROP, CREATE VIEW, SHOW VIEW ON mysqltest_29908.v1 TO u29908_1@localhost;
-GRANT DROP, CREATE VIEW, SHOW VIEW ON mysqltest_29908.v2 TO u29908_1@localhost;
+GRANT SELECT, DROP, CREATE VIEW, SHOW VIEW ON mysqltest_29908.v1 TO u29908_1@localhost;
+GRANT SELECT, DROP, CREATE VIEW, SHOW VIEW ON mysqltest_29908.v2 TO u29908_1@localhost;
GRANT SELECT ON mysqltest_29908.t1 TO u29908_1@localhost;
CREATE USER u29908_2@localhost;
-GRANT DROP, CREATE VIEW ON mysqltest_29908.v1 TO u29908_2@localhost;
-GRANT DROP, CREATE VIEW, SHOW VIEW ON mysqltest_29908.v2 TO u29908_2@localhost;
+GRANT SELECT, DROP, CREATE VIEW ON mysqltest_29908.v1 TO u29908_2@localhost;
+GRANT SELECT, DROP, CREATE VIEW, SHOW VIEW ON mysqltest_29908.v2 TO u29908_2@localhost;
GRANT SELECT ON mysqltest_29908.t1 TO u29908_2@localhost;
ALTER VIEW v1 AS SELECT f2 FROM t1;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
ALTER VIEW v2 AS SELECT f2 FROM t1;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
SHOW CREATE VIEW v2;
View Create View character_set_client collation_connection
v2 CREATE ALGORITHM=UNDEFINED DEFINER=`u29908_1`@`localhost` SQL SECURITY INVOKER VIEW `v2` AS select `t1`.`f1` AS `f1` from `t1` latin1 latin1_swedish_ci
diff --git a/mysql-test/r/warnings.result b/mysql-test/r/warnings.result
index 8a87852d582..8e70ea8b53d 100644
--- a/mysql-test/r/warnings.result
+++ b/mysql-test/r/warnings.result
@@ -35,7 +35,7 @@ Warning 1366 Incorrect integer value: 'hej' for column 'a' at row 1
insert into t1 values ("hej"),("då");
Warnings:
Warning 1366 Incorrect integer value: 'hej' for column 'a' at row 1
-Warning 1366 Incorrect integer value: 'd?' for column 'a' at row 2
+Warning 1366 Incorrect integer value: 'då' for column 'a' at row 2
set SQL_WARNINGS=1;
insert into t1 values ("hej");
Warnings:
@@ -43,7 +43,7 @@ Warning 1366 Incorrect integer value: 'hej' for column 'a' at row 1
insert into t1 values ("hej"),("då");
Warnings:
Warning 1366 Incorrect integer value: 'hej' for column 'a' at row 1
-Warning 1366 Incorrect integer value: 'd?' for column 'a' at row 2
+Warning 1366 Incorrect integer value: 'då' for column 'a' at row 2
drop table t1;
set SQL_WARNINGS=0;
drop temporary table if exists not_exists;
@@ -166,9 +166,6 @@ show variables like 'max_error_count';
Variable_name Value
max_error_count 10
drop table t1;
-set table_type=MYISAM;
-Warnings:
-Warning 1287 The syntax '@@table_type' is deprecated and will be removed in MySQL 6.0. Please use '@@storage_engine' instead
create table t1 (a int);
insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
update t1 set a='abc';
diff --git a/mysql-test/r/warnings_engine_disabled.result b/mysql-test/r/warnings_engine_disabled.result
index e5d35fdaa5f..3b9d92d87f7 100644
--- a/mysql-test/r/warnings_engine_disabled.result
+++ b/mysql-test/r/warnings_engine_disabled.result
@@ -1,10 +1,10 @@
create table t1 (id int) engine=NDB;
Warnings:
-Warning 1286 Unknown table engine 'NDB'
+Warning 1286 Unknown storage engine 'NDB'
Warning 1266 Using storage engine MyISAM for table 't1'
alter table t1 engine=NDB;
Warnings:
-Warning 1286 Unknown table engine 'NDB'
+Warning 1286 Unknown storage engine 'NDB'
drop table t1;
SELECT ENGINE, SUPPORT FROM INFORMATION_SCHEMA.ENGINES WHERE ENGINE='ndbcluster';
ENGINE SUPPORT
diff --git a/mysql-test/std_data/Index.xml b/mysql-test/std_data/Index.xml
index b8f61d59203..e4964a33419 100644
--- a/mysql-test/std_data/Index.xml
+++ b/mysql-test/std_data/Index.xml
@@ -1,10 +1,20 @@
<charsets>
<charset name="utf8">
- <collation name="utf8_test_ci" id="240">
+ <collation name="utf8_phone_ci" id="352">
+ <rules>
+ <reset>\u0000</reset>
+ <i>\u0020</i> <!-- space -->
+ <i>\u0028</i> <!-- left parenthesis -->
+ <i>\u0029</i> <!-- right parenthesis -->
+ <i>\u002B</i> <!-- plus -->
+ <i>\u002D</i> <!-- hyphen -->
+ </rules>
+ </collation>
+ <collation name="utf8_test_ci" id="353">
<rules>
<reset>a</reset>
- <s>b</s>
+ <i>b</i>
</rules>
</collation>
@@ -15,16 +25,22 @@
</rules>
</collation>
+ <collation name="utf8_maxuserid_ci" id="2047">
+ <rules>
+ <reset>a</reset>
+ <s>b</s>
+ </rules>
+ </collation>
</charset>
<charset name="ucs2">
- <collation name="ucs2_test_ci" id="241">
+ <collation name="ucs2_test_ci" id="358">
<rules>
<reset>a</reset>
<s>b</s>
</rules>
</collation>
- <collation name="ucs2_vn_ci" id="242">
+ <collation name="ucs2_vn_ci" id="359">
<!-- Vietnamese experimental collation -->
<rules>
<reset>A</reset>
diff --git a/mysql-test/std_data/loadxml.dat b/mysql-test/std_data/loadxml.dat
new file mode 100644
index 00000000000..b72fac9da74
--- /dev/null
+++ b/mysql-test/std_data/loadxml.dat
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<database name="test">
+ <table_structure name="t1">
+ <field Field="a" Type="int(11)" Null="YES" Key="" Extra="" />
+ <field Field="b" Type="varchar(128)" Null="YES" Key="" Extra="" />
+ <options Name="t1" Engine="MyISAM" Version="10" Row_format="Dynamic" Rows="3" Avg_row_length="20" Data_length="60" Max_data_length="281474976710655" Index_length="1024" Data_free="0" Create_time="2007-02-09 09:08:36" Update_time="2007-02-09 09:08:54" Collation="latin1_swedish_ci" Create_options="" Comment="" />
+ </table_structure>
+ <table_data name="t1">
+ <row>
+ <field name="a">1</field>
+ <field name="b">b1</field>
+ </row>
+ <row>
+ <field name="a">2</field>
+ <field name="b">b2</field>
+ </row>
+ <row>
+ <field name="a">3</field>
+ <field name="b">b3</field>
+ </row>
+ <row>
+ <field name="a">11</field>
+ <field name="b">b11</field>
+ </row>
+
+ <!-- Check field values as tags -->
+ <row>
+ <a>111</a>
+ <b>b111</b>
+ </row>
+
+ <row>
+ <a>112</a>
+ <b>b112 &amp; &lt; &gt; &quot; &apos; &unknown; -- check entities</b>
+ </row>
+
+
+ <!-- Check field values in attributes -->
+ <row a=212 b="b212"></row>
+
+ <!-- Bug#29752 Linefeeds break LOAD XML INFILE -->
+ <!-- Check varios combinations of TAB and NL -->
+
+ <row
+ a=213 b="b213">
+ </row>
+
+ <row
+ a=214
+ b="b214">
+ </row>
+
+ <row a=215 b="b215"></row>
+
+ <row a=216 b="&bb
+b;"></row>
+
+ <!-- End of bug#29752 -->
+
+ </table_data>
+</database>
+</mysqldump>
+
diff --git a/mysql-test/std_data/loadxml2.dat b/mysql-test/std_data/loadxml2.dat
new file mode 100644
index 00000000000..f0d966cf9b6
--- /dev/null
+++ b/mysql-test/std_data/loadxml2.dat
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<database name="test_of_xml_import">
+ <table_structure name="t1">
+ <field Field="id" Type="int(11)" Null="NO" Key="PRI" Extra="" />
+ <field Field="text" Type="text" Null="YES" Key="" Extra="" />
+ <key Table="t1" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="id" Collation="A" Cardinality="1" Null="" Index_type="BTREE" Comment="" Index_Comment="" />
+ <options Name="t1" Engine="MyISAM" Version="10" Row_format="Dynamic" Rows="1" Avg_row_length="32" Data_length="32" Max_data_length="281474976710655" Index_length="2048" Data_free="0" Create_time="2009-06-18 10:02:37" Update_time="2009-06-18 10:02:43" Collation="latin1_swedish_ci" Create_options="" Comment="" />
+ </table_structure>
+ <table_data name="t1">
+ <row>
+ <field name="id">1</field>
+ <field name="text">line1
+line2
+line3</field>
+ </row>
+ </table_data>
+</database>
+</mysqldump>
diff --git a/mysql-test/std_data/ndb_backup51_data_be/BACKUP-1-0.1.Data b/mysql-test/std_data/ndb_backup51_data_be/BACKUP-1-0.1.Data
index 2df8080956a..267039d757e 100644
--- a/mysql-test/std_data/ndb_backup51_data_be/BACKUP-1-0.1.Data
+++ b/mysql-test/std_data/ndb_backup51_data_be/BACKUP-1-0.1.Data
Binary files differ
diff --git a/mysql-test/std_data/ndb_backup51_data_le/BACKUP-1-0.2.Data b/mysql-test/std_data/ndb_backup51_data_le/BACKUP-1-0.2.Data
index 2c6f93e93b6..067fc6b716d 100644
--- a/mysql-test/std_data/ndb_backup51_data_le/BACKUP-1-0.2.Data
+++ b/mysql-test/std_data/ndb_backup51_data_le/BACKUP-1-0.2.Data
Binary files differ
diff --git a/mysql-test/suite/binlog/r/binlog_database.result b/mysql-test/suite/binlog/r/binlog_database.result
index 1cc9281f3fc..bb12679f081 100644
--- a/mysql-test/suite/binlog/r/binlog_database.result
+++ b/mysql-test/suite/binlog/r/binlog_database.result
@@ -29,9 +29,13 @@ show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; create temporary table tt1 (a int)
master-bin.000001 # Query # # use `test`; create table t1 (a int)
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 values (1)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # drop database if exists mysqltest1
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 values (1)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; drop table tt1, t1
FLUSH STATUS;
set binlog_format=mixed;
@@ -65,9 +69,13 @@ show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; create temporary table tt1 (a int)
master-bin.000001 # Query # # use `test`; create table t1 (a int)
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 values (1)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # drop database if exists mysqltest1
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 values (1)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; drop table tt1, t1
FLUSH STATUS;
set binlog_format=row;
@@ -116,4 +124,5 @@ Database
information_schema
mtr
mysql
+performance_schema
test
diff --git a/mysql-test/suite/binlog/r/binlog_format_switch_inside_trans.result b/mysql-test/suite/binlog/r/binlog_format_switch_inside_trans.result
new file mode 100644
index 00000000000..c1e900053e4
--- /dev/null
+++ b/mysql-test/suite/binlog/r/binlog_format_switch_inside_trans.result
@@ -0,0 +1,90 @@
+set @save_binlog_format= @@global.binlog_format;
+create table t1 (a int) engine= myisam;
+create table t2 (a int) engine= innodb;
+SELECT @@session.binlog_format;
+@@session.binlog_format
+ROW
+SET AUTOCOMMIT=1;
+# Test that the session variable 'binlog_format'
+# is writable outside a transaction.
+set @@session.binlog_format= statement;
+SELECT @@session.binlog_format;
+@@session.binlog_format
+STATEMENT
+begin;
+# Test that the session variable 'binlog_format' is read-only
+# inside a transaction with no preceding updates.
+set @@session.binlog_format= mixed;
+ERROR HY000: Cannot modify @@session.binlog_format inside a transaction
+insert into t2 values (1);
+# Test that the session variable 'binlog_format' is read-only
+# inside a transaction with preceding transactional updates.
+set @@session.binlog_format= row;
+ERROR HY000: Cannot modify @@session.binlog_format inside a transaction
+commit;
+begin;
+insert into t1 values (2);
+# Test that the session variable 'binlog_format' is read-only
+# inside a transaction with preceding non-transactional updates.
+set @@session.binlog_format= statement;
+ERROR HY000: Cannot modify @@session.binlog_format inside a transaction
+commit;
+# Test that the session variable 'binlog_format' is writable
+# when AUTOCOMMIT=0, before a transaction has started.
+set AUTOCOMMIT=0;
+set @@session.binlog_format= row;
+SELECT @@session.binlog_format;
+@@session.binlog_format
+ROW
+insert into t1 values (4);
+# Test that the session variable 'binlog_format' is read-only inside an
+# AUTOCOMMIT=0 transaction with preceding non-transactional updates.
+set @@session.binlog_format= statement;
+ERROR HY000: Cannot modify @@session.binlog_format inside a transaction
+SELECT @@session.binlog_format;
+@@session.binlog_format
+ROW
+commit;
+insert into t2 values (5);
+# Test that the session variable 'binlog_format' is read-only inside an
+# AUTOCOMMIT=0 transaction with preceding transactional updates.
+set @@session.binlog_format= row;
+ERROR HY000: Cannot modify @@session.binlog_format inside a transaction
+SELECT @@session.binlog_format;
+@@session.binlog_format
+ROW
+commit;
+begin;
+insert into t2 values (6);
+# Test that the global variable 'binlog_format' is writable
+# inside a transaction.
+SELECT @@global.binlog_format;
+@@global.binlog_format
+ROW
+set @@global.binlog_format= statement;
+SELECT @@global.binlog_format;
+@@global.binlog_format
+STATEMENT
+commit;
+set @@global.binlog_format= @save_binlog_format;
+create table t3(a int, b int) engine= innodb;
+create table t4(a int) engine= innodb;
+create table t5(a int) engine= innodb;
+create trigger tr2 after insert on t3 for each row begin
+insert into t4(a) values(1);
+set @@session.binlog_format= statement;
+insert into t4(a) values(2);
+insert into t5(a) values(3);
+end |
+# Test that the session variable 'binlog_format' is read-only
+# in sub-statements.
+insert into t3(a,b) values(1,1);
+ERROR HY000: Cannot change the binary logging format inside a stored function or trigger
+SELECT @@session.binlog_format;
+@@session.binlog_format
+ROW
+drop table t1;
+drop table t2;
+drop table t3;
+drop table t4;
+drop table t5;
diff --git a/mysql-test/suite/binlog/r/binlog_grant.result b/mysql-test/suite/binlog/r/binlog_grant.result
index 21ebb891103..1c0e73f8842 100644
--- a/mysql-test/suite/binlog/r/binlog_grant.result
+++ b/mysql-test/suite/binlog/r/binlog_grant.result
@@ -6,23 +6,19 @@ Grants for mysqltest_1@localhost
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
**** Variable SQL_LOG_BIN ****
[root]
-set global sql_log_bin = 1;
-ERROR HY000: Variable 'sql_log_bin' is a SESSION variable and can't be used with SET GLOBAL
set session sql_log_bin = 1;
[plain]
-set global sql_log_bin = 1;
-ERROR HY000: Variable 'sql_log_bin' is a SESSION variable and can't be used with SET GLOBAL
set session sql_log_bin = 1;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
**** Variable BINLOG_FORMAT ****
[root]
set global binlog_format = row;
set session binlog_format = row;
[plain]
set global binlog_format = row;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
set session binlog_format = row;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
**** Clean up ****
set global binlog_format = @saved_binlog_format;
drop user mysqltest_1@localhost;
diff --git a/mysql-test/suite/binlog/r/binlog_implicit_commit.result b/mysql-test/suite/binlog/r/binlog_implicit_commit.result
new file mode 100644
index 00000000000..ea43b31bde9
--- /dev/null
+++ b/mysql-test/suite/binlog/r/binlog_implicit_commit.result
@@ -0,0 +1,345 @@
+CREATE TABLE t1 (id INT) ENGINE = InnoDB;
+SET BINLOG_FORMAT = STATEMENT;
+RESET MASTER;
+SET AUTOCOMMIT = 0;
+INSERT INTO t1 VALUES (1);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+SET AUTOCOMMIT = 1;
+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 t1 VALUES (1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+COMMIT;
+RESET MASTER;
+SET AUTOCOMMIT = 0;
+BEGIN;
+INSERT INTO t1 VALUES (2);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+SET AUTOCOMMIT = 1;
+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 t1 VALUES (2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+INSERT INTO t1 VALUES (3);
+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 t1 VALUES (2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (3)
+master-bin.000001 # Xid # # COMMIT /* XID */
+COMMIT;
+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 t1 VALUES (2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (3)
+master-bin.000001 # Xid # # COMMIT /* XID */
+COMMIT;
+RESET MASTER;
+SET AUTOCOMMIT = 1;
+INSERT INTO t1 VALUES (1);
+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 t1 VALUES (1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+SET AUTOCOMMIT = 1;
+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 t1 VALUES (1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+COMMIT;
+RESET MASTER;
+SET AUTOCOMMIT = 1;
+BEGIN;
+INSERT INTO t1 VALUES (2);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+SET AUTOCOMMIT = 1;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+INSERT INTO t1 VALUES (3);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+COMMIT;
+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 t1 VALUES (2)
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (3)
+master-bin.000001 # Xid # # COMMIT /* XID */
+COMMIT;
+RESET MASTER;
+SET AUTOCOMMIT = 0;
+INSERT INTO t1 VALUES (1);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+SET AUTOCOMMIT = 0;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+COMMIT;
+RESET MASTER;
+SET AUTOCOMMIT = 0;
+BEGIN;
+INSERT INTO t1 VALUES (2);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+SET AUTOCOMMIT = 0;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+INSERT INTO t1 VALUES (3);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+COMMIT;
+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 t1 VALUES (2)
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (3)
+master-bin.000001 # Xid # # COMMIT /* XID */
+COMMIT;
+RESET MASTER;
+SET AUTOCOMMIT = 1;
+INSERT INTO t1 VALUES (1);
+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 t1 VALUES (1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+SET AUTOCOMMIT = 0;
+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 t1 VALUES (1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+COMMIT;
+RESET MASTER;
+SET AUTOCOMMIT = 1;
+BEGIN;
+INSERT INTO t1 VALUES (2);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+SET AUTOCOMMIT = 0;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+INSERT INTO t1 VALUES (3);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+COMMIT;
+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 t1 VALUES (2)
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (3)
+master-bin.000001 # Xid # # COMMIT /* XID */
+COMMIT;
+SET BINLOG_FORMAT = ROW;
+RESET MASTER;
+SET AUTOCOMMIT = 0;
+INSERT INTO t1 VALUES (1);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+SET AUTOCOMMIT = 1;
+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 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+COMMIT;
+RESET MASTER;
+SET AUTOCOMMIT = 0;
+BEGIN;
+INSERT INTO t1 VALUES (2);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+SET AUTOCOMMIT = 1;
+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 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+INSERT INTO t1 VALUES (3);
+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 # 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 # # 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 */
+COMMIT;
+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 # 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 # # 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 */
+COMMIT;
+RESET MASTER;
+SET AUTOCOMMIT = 1;
+INSERT INTO t1 VALUES (1);
+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 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+SET AUTOCOMMIT = 1;
+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 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+COMMIT;
+RESET MASTER;
+SET AUTOCOMMIT = 1;
+BEGIN;
+INSERT INTO t1 VALUES (2);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+SET AUTOCOMMIT = 1;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+INSERT INTO t1 VALUES (3);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+COMMIT;
+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 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_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 */
+COMMIT;
+RESET MASTER;
+SET AUTOCOMMIT = 0;
+INSERT INTO t1 VALUES (1);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+SET AUTOCOMMIT = 0;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+COMMIT;
+RESET MASTER;
+SET AUTOCOMMIT = 0;
+BEGIN;
+INSERT INTO t1 VALUES (2);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+SET AUTOCOMMIT = 0;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+INSERT INTO t1 VALUES (3);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+COMMIT;
+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 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_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 */
+COMMIT;
+RESET MASTER;
+SET AUTOCOMMIT = 1;
+INSERT INTO t1 VALUES (1);
+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 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+SET AUTOCOMMIT = 0;
+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 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+COMMIT;
+RESET MASTER;
+SET AUTOCOMMIT = 1;
+BEGIN;
+INSERT INTO t1 VALUES (2);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+SET AUTOCOMMIT = 0;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+INSERT INTO t1 VALUES (3);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+COMMIT;
+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 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_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 */
+COMMIT;
+RESET MASTER;
+SET AUTOCOMMIT = 0;
+INSERT INTO t1 VALUES (1);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+LOCK TABLES t1 WRITE;
+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 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+INSERT INTO t1 VALUES (2);
+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 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+UNLOCK TABLES;
+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 # 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 # # 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 */
+COMMIT;
+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 # 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 # # 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 */
+DROP TABLE t1;
diff --git a/mysql-test/suite/binlog/r/binlog_innodb.result b/mysql-test/suite/binlog/r/binlog_innodb.result
index 1922897f631..578df67c3c9 100644
--- a/mysql-test/suite/binlog/r/binlog_innodb.result
+++ b/mysql-test/suite/binlog/r/binlog_innodb.result
@@ -14,12 +14,12 @@ SET BINLOG_FORMAT=STATEMENT;
BEGIN;
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
UPDATE t1 SET b = 1*a WHERE a > 1;
-ERROR HY000: Binary logging not possible. Message: Transaction level 'READ-UNCOMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
+ERROR HY000: Cannot execute statement: binlogging impossible since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
COMMIT;
BEGIN;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
UPDATE t1 SET b = 2*a WHERE a > 2;
-ERROR HY000: Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
+ERROR HY000: Cannot execute statement: binlogging impossible since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
COMMIT;
BEGIN;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
@@ -123,7 +123,7 @@ Binlog_cache_disk_use 0
create table t1 (a int) engine=innodb;
show status like "binlog_cache_use";
Variable_name Value
-Binlog_cache_use 1
+Binlog_cache_use 2
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
@@ -132,7 +132,7 @@ delete from t1;
commit;
show status like "binlog_cache_use";
Variable_name Value
-Binlog_cache_use 2
+Binlog_cache_use 4
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
@@ -156,9 +156,10 @@ select * from t2 /* must be (3,1), (4,4) */;
a b
1 1
4 4
-show master status /* there must no UPDATE in binlog */;
+there must no UPDATE in binlog
+show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 106
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
delete from t1;
delete from t2;
insert into t1 values (1,2),(3,4),(4,4);
@@ -166,8 +167,9 @@ 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 */;
+there must no UPDATE in binlog
+show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 106
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
drop table t1, t2;
End of tests
diff --git a/mysql-test/suite/binlog/r/binlog_killed.result b/mysql-test/suite/binlog/r/binlog_killed.result
index 72fda535b6f..905c94a2e9e 100644
--- a/mysql-test/suite/binlog/r/binlog_killed.result
+++ b/mysql-test/suite/binlog/r/binlog_killed.result
@@ -1,3 +1,4 @@
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
create table t1 (a int auto_increment, b int, PRIMARY KEY (a)) ENGINE=InnoDB;
create table t2 (a int auto_increment, b int, PRIMARY KEY (a)) ENGINE=MyISAM;
create table t3 (a int auto_increment, b int, PRIMARY KEY (a)) ENGINE=InnoDB;
@@ -87,8 +88,10 @@ select @b /* must be 1 at the end of a stmt calling bug27563() */;
must have the update query event more to FD
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 # User var # # @`b`=0
master-bin.000001 # Query # # use `test`; update t4 set b=b + bug27563(b)
+master-bin.000001 # Query # # COMMIT
select
(@a:=load_file("MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
is not null;
@@ -123,8 +126,10 @@ select @b /* must be 1 at the end of a stmt calling bug27563() */;
must have the delete query event more to FD
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 # User var # # @`b`=0
master-bin.000001 # Query # # use `test`; delete from t4 where b=bug27563(1) or b=bug27563(2)
+master-bin.000001 # Query # # COMMIT
select
(@a:=load_file("MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
is not null;
diff --git a/mysql-test/suite/binlog/r/binlog_killed_simulate.result b/mysql-test/suite/binlog/r/binlog_killed_simulate.result
index 0e1b5c92d57..52eb3c5a0a2 100644
--- a/mysql-test/suite/binlog/r/binlog_killed_simulate.result
+++ b/mysql-test/suite/binlog/r/binlog_killed_simulate.result
@@ -18,8 +18,10 @@ load data infile '../../std_data/rpl_loaddata.dat' into table t2 /* will be "kil
ERROR 70100: Query execution was interrupted
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 # Begin_load_query # # ;file_id=#;block_len=#
master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE `t2` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a`, `b`) ;file_id=#
+master-bin.000001 # Query # # COMMIT
select
(@a:=load_file("MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
is not null;
diff --git a/mysql-test/suite/binlog/r/binlog_max_extension.result b/mysql-test/suite/binlog/r/binlog_max_extension.result
new file mode 100644
index 00000000000..af341db4536
--- /dev/null
+++ b/mysql-test/suite/binlog/r/binlog_max_extension.result
@@ -0,0 +1,8 @@
+call mtr.add_suppression("Next log extension: 2147483647. Remaining log filename extensions: 0.");
+call mtr.add_suppression("Log filename extension number exhausted:");
+call mtr.add_suppression("Can't generate a unique log-filename");
+RESET MASTER;
+FLUSH LOGS;
+Warnings:
+Warning 1098 Can't generate a unique log-filename master-bin.(1-999)
+
diff --git a/mysql-test/suite/binlog/r/binlog_mix_innodb_stat.result b/mysql-test/suite/binlog/r/binlog_mix_innodb_stat.result
index ca5067c4e1f..637be940383 100644
--- a/mysql-test/suite/binlog/r/binlog_mix_innodb_stat.result
+++ b/mysql-test/suite/binlog/r/binlog_mix_innodb_stat.result
@@ -9,7 +9,7 @@ drop table if exists t1;
create table t1 (a int) engine=innodb;
show status like "binlog_cache_use";
Variable_name Value
-Binlog_cache_use 1
+Binlog_cache_use 2
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
@@ -18,7 +18,7 @@ delete from t1;
commit;
show status like "binlog_cache_use";
Variable_name Value
-Binlog_cache_use 2
+Binlog_cache_use 4
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
diff --git a/mysql-test/suite/binlog/r/binlog_mixed_failure_mixing_engines.result b/mysql-test/suite/binlog/r/binlog_mixed_failure_mixing_engines.result
deleted file mode 100644
index dfc08d76a6a..00000000000
--- a/mysql-test/suite/binlog/r/binlog_mixed_failure_mixing_engines.result
+++ /dev/null
@@ -1,406 +0,0 @@
-###################################################################################
-# CONFIGURATION
-###################################################################################
-CREATE TABLE nt_1 (a text, b int PRIMARY KEY) ENGINE = MyISAM;
-CREATE TABLE nt_2 (a text, b int PRIMARY KEY) ENGINE = MyISAM;
-CREATE TABLE tt_1 (a text, b int PRIMARY KEY) ENGINE = Innodb;
-CREATE TABLE tt_2 (a text, b int PRIMARY KEY) ENGINE = Innodb;
-CREATE TRIGGER tr_i_tt_1_to_nt_1 BEFORE INSERT ON tt_1 FOR EACH ROW
-BEGIN
-INSERT INTO nt_1 VALUES (NEW.a, NEW.b);
-END|
-CREATE TRIGGER tr_i_nt_2_to_tt_2 BEFORE INSERT ON nt_2 FOR EACH ROW
-BEGIN
-INSERT INTO tt_2 VALUES (NEW.a, NEW.b);
-END|
-###################################################################################
-# CHECK HISTORY IN BINLOG
-###################################################################################
-
-
-
-*** "B M* T C" with error in M* generates in the binlog the "B M* R B T C" entries
-
-INSERT INTO nt_1 VALUES ("new text 1", 1);
-BEGIN;
-INSERT INTO tt_1 VALUES (USER(), 2), (USER(), 1);
-ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES ("new text 3", 3);
-COMMIT;
-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 nt_1 VALUES ("new text 1", 1)
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.tt_1)
-master-bin.000001 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 3", 3)
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-INSERT INTO tt_2 VALUES ("new text 4", 4);
-BEGIN;
-INSERT INTO nt_2 VALUES (USER(), 5), (USER(), 4);
-ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES ("new text 6", 6);
-COMMIT;
-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 tt_2 VALUES ("new text 4", 4)
-master-bin.000001 # Xid # # COMMIT /* XID */
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.nt_2)
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 6", 6)
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-
-
-*** "B M M* T C" with error in M* generates in the binlog the "B M M* T C" entries
-
-INSERT INTO nt_1 VALUES ("new text 10", 10);
-BEGIN;
-INSERT INTO tt_1 VALUES ("new text 7", 7), ("new text 8", 8);
-INSERT INTO tt_1 VALUES (USER(), 9), (USER(), 10);
-ERROR 23000: Duplicate entry '10' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES ("new text 11", 11);
-COMMIT;
-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 nt_1 VALUES ("new text 10", 10)
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 7", 7), ("new text 8", 8)
-master-bin.000001 # Table_map # # table_id: # (test.tt_1)
-master-bin.000001 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 11", 11)
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-INSERT INTO tt_2 VALUES ("new text 15", 15);
-BEGIN;
-INSERT INTO nt_2 VALUES ("new text 12", 12), ("new text 13", 13);
-INSERT INTO nt_2 VALUES (USER(), 14), (USER(), 15);
-ERROR 23000: Duplicate entry '15' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES ("new text 16", 16);
-COMMIT;
-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 tt_2 VALUES ("new text 15", 15)
-master-bin.000001 # Xid # # COMMIT /* XID */
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text 12", 12), ("new text 13", 13)
-master-bin.000001 # Table_map # # table_id: # (test.nt_2)
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 16", 16)
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-
-
-*** "B M* M* T C" with error in M* generates in the binlog the "B M* R B M* R B T C" entries
-
-INSERT INTO nt_1 VALUES ("new text 18", 18);
-INSERT INTO nt_1 VALUES ("new text 20", 20);
-BEGIN;
-INSERT INTO tt_1 VALUES (USER(), 17), (USER(), 18);
-ERROR 23000: Duplicate entry '18' for key 'PRIMARY'
-INSERT INTO tt_1 VALUES (USER(), 19), (USER(), 20);
-ERROR 23000: Duplicate entry '20' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES ("new text 21", 21);
-COMMIT;
-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 nt_1 VALUES ("new text 18", 18)
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 20", 20)
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.tt_1)
-master-bin.000001 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.tt_1)
-master-bin.000001 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 21", 21)
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-INSERT INTO tt_2 VALUES ("new text 23", 23);
-INSERT INTO tt_2 VALUES ("new text 25", 25);
-BEGIN;
-INSERT INTO nt_2 VALUES (USER(), 22), (USER(), 23);
-ERROR 23000: Duplicate entry '23' for key 'PRIMARY'
-INSERT INTO nt_2 VALUES (USER(), 24), (USER(), 25);
-ERROR 23000: Duplicate entry '25' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES ("new text 26", 26);
-COMMIT;
-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 tt_2 VALUES ("new text 23", 23)
-master-bin.000001 # Xid # # COMMIT /* XID */
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 25", 25)
-master-bin.000001 # Xid # # COMMIT /* XID */
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.nt_2)
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.nt_2)
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 26", 26)
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-
-
-*** "B T INSERT M...SELECT* C" with an error in INSERT M...SELECT* generates
-*** in the binlog the following entries: "Nothing".
-*** There is a bug in that will be fixed after WL#2687. Please, check BUG#47175 for further details.
-
-TRUNCATE TABLE nt_2;
-TRUNCATE TABLE tt_2;
-INSERT INTO tt_2 VALUES ("new text 7", 7);
-BEGIN;
-INSERT INTO tt_2 VALUES ("new text 27", 27);
-INSERT INTO nt_2(a, b) SELECT USER(), b FROM nt_1;
-ERROR 23000: Duplicate entry '7' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES ("new text 28", 28);
-ROLLBACK;
-show binlog events from <binlog_start>;
-Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_2
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_2
-master-bin.000001 # Xid # # COMMIT /* XID */
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 7", 7)
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-
-
-*** "B INSERT M..SELECT* C" with an error in INSERT M...SELECT* generates
-*** in the binlog the following entries: "B INSERT M..SELECT* R".
-
-TRUNCATE TABLE nt_2;
-TRUNCATE TABLE tt_2;
-INSERT INTO tt_2 VALUES ("new text 7", 7);
-BEGIN;
-INSERT INTO nt_2(a, b) SELECT USER(), b FROM nt_1;
-ERROR 23000: Duplicate entry '7' for key 'PRIMARY'
-COMMIT;
-show binlog events from <binlog_start>;
-Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_2
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_2
-master-bin.000001 # Xid # # COMMIT /* XID */
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 7", 7)
-master-bin.000001 # Xid # # COMMIT /* XID */
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.nt_2)
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-
-
-
-*** "B N N T C" generates in the binlog the "B N C B N C B T C" entries
-
-TRUNCATE TABLE nt_1;
-TRUNCATE TABLE tt_2;
-BEGIN;
-INSERT INTO nt_1 VALUES (USER(), 1);
-INSERT INTO nt_1 VALUES (USER(), 2);
-INSERT INTO tt_2 VALUES (USER(), 3);
-COMMIT;
-show binlog events from <binlog_start>;
-Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_1
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_2
-master-bin.000001 # Xid # # COMMIT /* XID */
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.nt_1)
-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.nt_1)
-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.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-
-
-*** "B N N T R" generates in the binlog the "B N C B N C B T R" entries
-
-BEGIN;
-INSERT INTO nt_1 VALUES (USER(), 4);
-INSERT INTO nt_1 VALUES (USER(), 5);
-INSERT INTO tt_2 VALUES (USER(), 6);
-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 # Table_map # # table_id: # (test.nt_1)
-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.nt_1)
-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.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-
-
-
-*** "B N* N* T C" with error in N* generates in the binlog the "B N R B N R B T C" entries
-
-BEGIN;
-INSERT INTO nt_1 VALUES (USER(), 7), (USER(), 1);
-ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
-INSERT INTO nt_1 VALUES (USER(), 8), (USER(), 1);
-ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES (USER(), 9);
-COMMIT;
-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 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-
-
-*** "B N* N* T R" with error in N* generates in the binlog the "B N R B N R B T R" entries
-
-BEGIN;
-INSERT INTO nt_1 VALUES (USER(), 10), (USER(), 1);
-ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
-INSERT INTO nt_1 VALUES (USER(), 11), (USER(), 1);
-ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES (USER(), 12);
-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 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-
-
-
-*** "B N N T N T C" generates in the binlog the "B N C B N C B T N T C" entries
-
-BEGIN;
-INSERT INTO nt_1 VALUES (USER(), 13);
-INSERT INTO nt_1 VALUES (USER(), 14);
-INSERT INTO tt_2 VALUES (USER(), 15);
-INSERT INTO nt_1 VALUES (USER(), 16);
-INSERT INTO tt_2 VALUES (USER(), 17);
-COMMIT;
-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 # Table_map # # table_id: # (test.nt_1)
-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.nt_1)
-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.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-
-
-*** "B N N T N T R" generates in the binlog the "B N C B N C B T N T R" entries
-
-BEGIN;
-INSERT INTO nt_1 VALUES (USER(), 18);
-INSERT INTO nt_1 VALUES (USER(), 19);
-INSERT INTO tt_2 VALUES (USER(), 20);
-INSERT INTO nt_1 VALUES (USER(), 21);
-INSERT INTO tt_2 VALUES (USER(), 22);
-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 # Table_map # # table_id: # (test.nt_1)
-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.nt_1)
-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.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-###################################################################################
-# CLEAN
-###################################################################################
-DROP TABLE tt_1;
-DROP TABLE tt_2;
-DROP TABLE nt_1;
-DROP TABLE nt_2;
diff --git a/mysql-test/suite/binlog/r/binlog_multi_engine.result b/mysql-test/suite/binlog/r/binlog_multi_engine.result
index 9252229903b..eee83183575 100644
--- a/mysql-test/suite/binlog/r/binlog_multi_engine.result
+++ b/mysql-test/suite/binlog/r/binlog_multi_engine.result
@@ -1,3 +1,4 @@
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
CREATE TABLE t1m (m INT, n INT) ENGINE=MYISAM;
CREATE TABLE t1b (b INT, c INT) ENGINE=BLACKHOLE;
CREATE TABLE t1n (e INT, f INT) ENGINE=NDB;
@@ -6,10 +7,15 @@ SET SESSION BINLOG_FORMAT=STATEMENT;
INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2);
INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2);
UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+The last event before the COMMIT is use `test`; UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c
*** Please look in binlog_multi_engine.test if you have a diff here ****
START TRANSACTION;
INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2);
UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
UPDATE t1n, t1b SET e = 2, b = 3 WHERE f = c;
COMMIT;
TRUNCATE t1m;
@@ -20,8 +26,12 @@ Log_name Pos Event_type Server_id End_log_pos Info
mysqld-bin.000001 # Query # # BEGIN
mysqld-bin.000001 # Query # # use `test`; INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2)
mysqld-bin.000001 # Query # # COMMIT
+mysqld-bin.000001 # Query # # BEGIN
mysqld-bin.000001 # Query # # use `test`; INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2)
+mysqld-bin.000001 # Query # # COMMIT
+mysqld-bin.000001 # Query # # BEGIN
mysqld-bin.000001 # Query # # use `test`; UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c
+mysqld-bin.000001 # Query # # COMMIT
mysqld-bin.000001 # Query # # BEGIN
mysqld-bin.000001 # Query # # use `test`; INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2)
mysqld-bin.000001 # Query # # use `test`; UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f
@@ -39,10 +49,11 @@ RESET MASTER;
SET SESSION BINLOG_FORMAT=MIXED;
INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2);
INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2);
+The last event before the COMMIT is use `test`; INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2)
INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2);
UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c;
UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f;
-ERROR HY000: Binary logging not possible. Message: Statement cannot be written atomically since more than one engine involved and at least one engine is self-logging
+ERROR HY000: Cannot execute statement: binlogging impossible since more than one engine is involved and at least one engine is self-logging.
TRUNCATE t1m;
TRUNCATE t1b;
TRUNCATE t1n;
@@ -51,14 +62,15 @@ Log_name Pos Event_type Server_id End_log_pos Info
mysqld-bin.000001 # Query # # BEGIN
mysqld-bin.000001 # Query # # use `test`; INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2)
mysqld-bin.000001 # Query # # COMMIT
+mysqld-bin.000001 # Query # # BEGIN
mysqld-bin.000001 # Query # # use `test`; INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2)
+mysqld-bin.000001 # Query # # COMMIT
mysqld-bin.000001 # Query # # BEGIN
mysqld-bin.000001 # Table_map # # table_id: # (test.t1n)
mysqld-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
mysqld-bin.000001 # Write_rows # # table_id: #
mysqld-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
mysqld-bin.000001 # Query # # COMMIT
-mysqld-bin.000001 # Query # # use `test`; UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c
mysqld-bin.000001 # Query # # use `test`; TRUNCATE t1m
mysqld-bin.000001 # Query # # use `test`; TRUNCATE t1b
mysqld-bin.000001 # Query # # use `test`; TRUNCATE t1n
@@ -68,9 +80,9 @@ INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2);
INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2);
INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2);
UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f;
-ERROR HY000: Binary logging not possible. Message: Statement cannot be written atomically since more than one engine involved and at least one engine is self-logging
+ERROR HY000: Cannot execute statement: binlogging impossible since more than one engine is involved and at least one engine is self-logging.
UPDATE t1n, t1b SET e = 2, b = 3 WHERE f = c;
-ERROR HY000: Binary logging not possible. Message: Statement cannot be written atomically since more than one engine involved and at least one engine is self-logging
+ERROR HY000: Cannot execute statement: binlogging impossible since more than one engine is involved and at least one engine is self-logging.
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
mysqld-bin.000001 # Query # # BEGIN
diff --git a/mysql-test/suite/binlog/r/binlog_row_binlog.result b/mysql-test/suite/binlog/r/binlog_row_binlog.result
index 4d32a4f4739..7dc37d7c365 100644
--- a/mysql-test/suite/binlog/r/binlog_row_binlog.result
+++ b/mysql-test/suite/binlog/r/binlog_row_binlog.result
@@ -26,7 +26,7 @@ create table t1 (n int) engine=innodb;
begin;
commit;
drop table t1;
-show binlog events in 'master-bin.000001' from 106;
+show binlog events in 'master-bin.000001' from 107;
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
@@ -232,7 +232,7 @@ 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;
+show binlog events in 'master-bin.000002' from 107;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000002 # Query 1 # use `test`; drop table t1
set @ac = @@autocommit;
@@ -247,25 +247,8 @@ commit;
drop table t1;
show binlog events from 0;
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
-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;
-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 4 Format_desc 1 107 Server version, Binlog ver: 4
+master-bin.000001 107 Query 1 206 use `test`; create table t1(n 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
@@ -273,802 +256,819 @@ 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 499 Xid 1 526 COMMIT /* XID */
+master-bin.000001 526 Query 1 602 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;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 4 Format_desc 1 107 Server version, Binlog ver: 4
+master-bin.000001 107 Query 1 207 use `test`; create table t1 (a int) engine=innodb
+master-bin.000001 207 Query 1 275 BEGIN
+master-bin.000001 275 Table_map 1 316 table_id: # (test.t1)
+master-bin.000001 316 Write_rows 1 350 table_id: # flags: STMT_END_F
+master-bin.000001 350 Table_map 1 391 table_id: # (test.t1)
+master-bin.000001 391 Write_rows 1 425 table_id: # flags: STMT_END_F
+master-bin.000001 425 Table_map 1 466 table_id: # (test.t1)
+master-bin.000001 466 Write_rows 1 500 table_id: # flags: STMT_END_F
+master-bin.000001 500 Table_map 1 541 table_id: # (test.t1)
+master-bin.000001 541 Write_rows 1 575 table_id: # flags: STMT_END_F
+master-bin.000001 575 Table_map 1 616 table_id: # (test.t1)
+master-bin.000001 616 Write_rows 1 650 table_id: # flags: STMT_END_F
+master-bin.000001 650 Table_map 1 691 table_id: # (test.t1)
+master-bin.000001 691 Write_rows 1 725 table_id: # flags: STMT_END_F
+master-bin.000001 725 Table_map 1 766 table_id: # (test.t1)
+master-bin.000001 766 Write_rows 1 800 table_id: # flags: STMT_END_F
+master-bin.000001 800 Table_map 1 841 table_id: # (test.t1)
+master-bin.000001 841 Write_rows 1 875 table_id: # flags: STMT_END_F
+master-bin.000001 875 Table_map 1 916 table_id: # (test.t1)
+master-bin.000001 916 Write_rows 1 950 table_id: # flags: STMT_END_F
+master-bin.000001 950 Table_map 1 991 table_id: # (test.t1)
+master-bin.000001 991 Write_rows 1 1025 table_id: # flags: STMT_END_F
+master-bin.000001 1025 Table_map 1 1066 table_id: # (test.t1)
+master-bin.000001 1066 Write_rows 1 1100 table_id: # flags: STMT_END_F
+master-bin.000001 1100 Table_map 1 1141 table_id: # (test.t1)
+master-bin.000001 1141 Write_rows 1 1175 table_id: # flags: STMT_END_F
+master-bin.000001 1175 Table_map 1 1216 table_id: # (test.t1)
+master-bin.000001 1216 Write_rows 1 1250 table_id: # flags: STMT_END_F
+master-bin.000001 1250 Table_map 1 1291 table_id: # (test.t1)
+master-bin.000001 1291 Write_rows 1 1325 table_id: # flags: STMT_END_F
+master-bin.000001 1325 Table_map 1 1366 table_id: # (test.t1)
+master-bin.000001 1366 Write_rows 1 1400 table_id: # flags: STMT_END_F
+master-bin.000001 1400 Table_map 1 1441 table_id: # (test.t1)
+master-bin.000001 1441 Write_rows 1 1475 table_id: # flags: STMT_END_F
+master-bin.000001 1475 Table_map 1 1516 table_id: # (test.t1)
+master-bin.000001 1516 Write_rows 1 1550 table_id: # flags: STMT_END_F
+master-bin.000001 1550 Table_map 1 1591 table_id: # (test.t1)
+master-bin.000001 1591 Write_rows 1 1625 table_id: # flags: STMT_END_F
+master-bin.000001 1625 Table_map 1 1666 table_id: # (test.t1)
+master-bin.000001 1666 Write_rows 1 1700 table_id: # flags: STMT_END_F
+master-bin.000001 1700 Table_map 1 1741 table_id: # (test.t1)
+master-bin.000001 1741 Write_rows 1 1775 table_id: # flags: STMT_END_F
+master-bin.000001 1775 Table_map 1 1816 table_id: # (test.t1)
+master-bin.000001 1816 Write_rows 1 1850 table_id: # flags: STMT_END_F
+master-bin.000001 1850 Table_map 1 1891 table_id: # (test.t1)
+master-bin.000001 1891 Write_rows 1 1925 table_id: # flags: STMT_END_F
+master-bin.000001 1925 Table_map 1 1966 table_id: # (test.t1)
+master-bin.000001 1966 Write_rows 1 2000 table_id: # flags: STMT_END_F
+master-bin.000001 2000 Table_map 1 2041 table_id: # (test.t1)
+master-bin.000001 2041 Write_rows 1 2075 table_id: # flags: STMT_END_F
+master-bin.000001 2075 Table_map 1 2116 table_id: # (test.t1)
+master-bin.000001 2116 Write_rows 1 2150 table_id: # flags: STMT_END_F
+master-bin.000001 2150 Table_map 1 2191 table_id: # (test.t1)
+master-bin.000001 2191 Write_rows 1 2225 table_id: # flags: STMT_END_F
+master-bin.000001 2225 Table_map 1 2266 table_id: # (test.t1)
+master-bin.000001 2266 Write_rows 1 2300 table_id: # flags: STMT_END_F
+master-bin.000001 2300 Table_map 1 2341 table_id: # (test.t1)
+master-bin.000001 2341 Write_rows 1 2375 table_id: # flags: STMT_END_F
+master-bin.000001 2375 Table_map 1 2416 table_id: # (test.t1)
+master-bin.000001 2416 Write_rows 1 2450 table_id: # flags: STMT_END_F
+master-bin.000001 2450 Table_map 1 2491 table_id: # (test.t1)
+master-bin.000001 2491 Write_rows 1 2525 table_id: # flags: STMT_END_F
+master-bin.000001 2525 Table_map 1 2566 table_id: # (test.t1)
+master-bin.000001 2566 Write_rows 1 2600 table_id: # flags: STMT_END_F
+master-bin.000001 2600 Table_map 1 2641 table_id: # (test.t1)
+master-bin.000001 2641 Write_rows 1 2675 table_id: # flags: STMT_END_F
+master-bin.000001 2675 Table_map 1 2716 table_id: # (test.t1)
+master-bin.000001 2716 Write_rows 1 2750 table_id: # flags: STMT_END_F
+master-bin.000001 2750 Table_map 1 2791 table_id: # (test.t1)
+master-bin.000001 2791 Write_rows 1 2825 table_id: # flags: STMT_END_F
+master-bin.000001 2825 Table_map 1 2866 table_id: # (test.t1)
+master-bin.000001 2866 Write_rows 1 2900 table_id: # flags: STMT_END_F
+master-bin.000001 2900 Table_map 1 2941 table_id: # (test.t1)
+master-bin.000001 2941 Write_rows 1 2975 table_id: # flags: STMT_END_F
+master-bin.000001 2975 Table_map 1 3016 table_id: # (test.t1)
+master-bin.000001 3016 Write_rows 1 3050 table_id: # flags: STMT_END_F
+master-bin.000001 3050 Table_map 1 3091 table_id: # (test.t1)
+master-bin.000001 3091 Write_rows 1 3125 table_id: # flags: STMT_END_F
+master-bin.000001 3125 Table_map 1 3166 table_id: # (test.t1)
+master-bin.000001 3166 Write_rows 1 3200 table_id: # flags: STMT_END_F
+master-bin.000001 3200 Table_map 1 3241 table_id: # (test.t1)
+master-bin.000001 3241 Write_rows 1 3275 table_id: # flags: STMT_END_F
+master-bin.000001 3275 Table_map 1 3316 table_id: # (test.t1)
+master-bin.000001 3316 Write_rows 1 3350 table_id: # flags: STMT_END_F
+master-bin.000001 3350 Table_map 1 3391 table_id: # (test.t1)
+master-bin.000001 3391 Write_rows 1 3425 table_id: # flags: STMT_END_F
+master-bin.000001 3425 Table_map 1 3466 table_id: # (test.t1)
+master-bin.000001 3466 Write_rows 1 3500 table_id: # flags: STMT_END_F
+master-bin.000001 3500 Table_map 1 3541 table_id: # (test.t1)
+master-bin.000001 3541 Write_rows 1 3575 table_id: # flags: STMT_END_F
+master-bin.000001 3575 Table_map 1 3616 table_id: # (test.t1)
+master-bin.000001 3616 Write_rows 1 3650 table_id: # flags: STMT_END_F
+master-bin.000001 3650 Table_map 1 3691 table_id: # (test.t1)
+master-bin.000001 3691 Write_rows 1 3725 table_id: # flags: STMT_END_F
+master-bin.000001 3725 Table_map 1 3766 table_id: # (test.t1)
+master-bin.000001 3766 Write_rows 1 3800 table_id: # flags: STMT_END_F
+master-bin.000001 3800 Table_map 1 3841 table_id: # (test.t1)
+master-bin.000001 3841 Write_rows 1 3875 table_id: # flags: STMT_END_F
+master-bin.000001 3875 Table_map 1 3916 table_id: # (test.t1)
+master-bin.000001 3916 Write_rows 1 3950 table_id: # flags: STMT_END_F
+master-bin.000001 3950 Table_map 1 3991 table_id: # (test.t1)
+master-bin.000001 3991 Write_rows 1 4025 table_id: # flags: STMT_END_F
+master-bin.000001 4025 Table_map 1 4066 table_id: # (test.t1)
+master-bin.000001 4066 Write_rows 1 4100 table_id: # flags: STMT_END_F
+master-bin.000001 4100 Table_map 1 4141 table_id: # (test.t1)
+master-bin.000001 4141 Write_rows 1 4175 table_id: # flags: STMT_END_F
+master-bin.000001 4175 Table_map 1 4216 table_id: # (test.t1)
+master-bin.000001 4216 Write_rows 1 4250 table_id: # flags: STMT_END_F
+master-bin.000001 4250 Table_map 1 4291 table_id: # (test.t1)
+master-bin.000001 4291 Write_rows 1 4325 table_id: # flags: STMT_END_F
+master-bin.000001 4325 Table_map 1 4366 table_id: # (test.t1)
+master-bin.000001 4366 Write_rows 1 4400 table_id: # flags: STMT_END_F
+master-bin.000001 4400 Table_map 1 4441 table_id: # (test.t1)
+master-bin.000001 4441 Write_rows 1 4475 table_id: # flags: STMT_END_F
+master-bin.000001 4475 Table_map 1 4516 table_id: # (test.t1)
+master-bin.000001 4516 Write_rows 1 4550 table_id: # flags: STMT_END_F
+master-bin.000001 4550 Table_map 1 4591 table_id: # (test.t1)
+master-bin.000001 4591 Write_rows 1 4625 table_id: # flags: STMT_END_F
+master-bin.000001 4625 Table_map 1 4666 table_id: # (test.t1)
+master-bin.000001 4666 Write_rows 1 4700 table_id: # flags: STMT_END_F
+master-bin.000001 4700 Table_map 1 4741 table_id: # (test.t1)
+master-bin.000001 4741 Write_rows 1 4775 table_id: # flags: STMT_END_F
+master-bin.000001 4775 Table_map 1 4816 table_id: # (test.t1)
+master-bin.000001 4816 Write_rows 1 4850 table_id: # flags: STMT_END_F
+master-bin.000001 4850 Table_map 1 4891 table_id: # (test.t1)
+master-bin.000001 4891 Write_rows 1 4925 table_id: # flags: STMT_END_F
+master-bin.000001 4925 Table_map 1 4966 table_id: # (test.t1)
+master-bin.000001 4966 Write_rows 1 5000 table_id: # flags: STMT_END_F
+master-bin.000001 5000 Table_map 1 5041 table_id: # (test.t1)
+master-bin.000001 5041 Write_rows 1 5075 table_id: # flags: STMT_END_F
+master-bin.000001 5075 Table_map 1 5116 table_id: # (test.t1)
+master-bin.000001 5116 Write_rows 1 5150 table_id: # flags: STMT_END_F
+master-bin.000001 5150 Table_map 1 5191 table_id: # (test.t1)
+master-bin.000001 5191 Write_rows 1 5225 table_id: # flags: STMT_END_F
+master-bin.000001 5225 Table_map 1 5266 table_id: # (test.t1)
+master-bin.000001 5266 Write_rows 1 5300 table_id: # flags: STMT_END_F
+master-bin.000001 5300 Table_map 1 5341 table_id: # (test.t1)
+master-bin.000001 5341 Write_rows 1 5375 table_id: # flags: STMT_END_F
+master-bin.000001 5375 Table_map 1 5416 table_id: # (test.t1)
+master-bin.000001 5416 Write_rows 1 5450 table_id: # flags: STMT_END_F
+master-bin.000001 5450 Table_map 1 5491 table_id: # (test.t1)
+master-bin.000001 5491 Write_rows 1 5525 table_id: # flags: STMT_END_F
+master-bin.000001 5525 Table_map 1 5566 table_id: # (test.t1)
+master-bin.000001 5566 Write_rows 1 5600 table_id: # flags: STMT_END_F
+master-bin.000001 5600 Table_map 1 5641 table_id: # (test.t1)
+master-bin.000001 5641 Write_rows 1 5675 table_id: # flags: STMT_END_F
+master-bin.000001 5675 Table_map 1 5716 table_id: # (test.t1)
+master-bin.000001 5716 Write_rows 1 5750 table_id: # flags: STMT_END_F
+master-bin.000001 5750 Table_map 1 5791 table_id: # (test.t1)
+master-bin.000001 5791 Write_rows 1 5825 table_id: # flags: STMT_END_F
+master-bin.000001 5825 Table_map 1 5866 table_id: # (test.t1)
+master-bin.000001 5866 Write_rows 1 5900 table_id: # flags: STMT_END_F
+master-bin.000001 5900 Table_map 1 5941 table_id: # (test.t1)
+master-bin.000001 5941 Write_rows 1 5975 table_id: # flags: STMT_END_F
+master-bin.000001 5975 Table_map 1 6016 table_id: # (test.t1)
+master-bin.000001 6016 Write_rows 1 6050 table_id: # flags: STMT_END_F
+master-bin.000001 6050 Table_map 1 6091 table_id: # (test.t1)
+master-bin.000001 6091 Write_rows 1 6125 table_id: # flags: STMT_END_F
+master-bin.000001 6125 Table_map 1 6166 table_id: # (test.t1)
+master-bin.000001 6166 Write_rows 1 6200 table_id: # flags: STMT_END_F
+master-bin.000001 6200 Table_map 1 6241 table_id: # (test.t1)
+master-bin.000001 6241 Write_rows 1 6275 table_id: # flags: STMT_END_F
+master-bin.000001 6275 Table_map 1 6316 table_id: # (test.t1)
+master-bin.000001 6316 Write_rows 1 6350 table_id: # flags: STMT_END_F
+master-bin.000001 6350 Table_map 1 6391 table_id: # (test.t1)
+master-bin.000001 6391 Write_rows 1 6425 table_id: # flags: STMT_END_F
+master-bin.000001 6425 Table_map 1 6466 table_id: # (test.t1)
+master-bin.000001 6466 Write_rows 1 6500 table_id: # flags: STMT_END_F
+master-bin.000001 6500 Table_map 1 6541 table_id: # (test.t1)
+master-bin.000001 6541 Write_rows 1 6575 table_id: # flags: STMT_END_F
+master-bin.000001 6575 Table_map 1 6616 table_id: # (test.t1)
+master-bin.000001 6616 Write_rows 1 6650 table_id: # flags: STMT_END_F
+master-bin.000001 6650 Table_map 1 6691 table_id: # (test.t1)
+master-bin.000001 6691 Write_rows 1 6725 table_id: # flags: STMT_END_F
+master-bin.000001 6725 Table_map 1 6766 table_id: # (test.t1)
+master-bin.000001 6766 Write_rows 1 6800 table_id: # flags: STMT_END_F
+master-bin.000001 6800 Table_map 1 6841 table_id: # (test.t1)
+master-bin.000001 6841 Write_rows 1 6875 table_id: # flags: STMT_END_F
+master-bin.000001 6875 Table_map 1 6916 table_id: # (test.t1)
+master-bin.000001 6916 Write_rows 1 6950 table_id: # flags: STMT_END_F
+master-bin.000001 6950 Table_map 1 6991 table_id: # (test.t1)
+master-bin.000001 6991 Write_rows 1 7025 table_id: # flags: STMT_END_F
+master-bin.000001 7025 Table_map 1 7066 table_id: # (test.t1)
+master-bin.000001 7066 Write_rows 1 7100 table_id: # flags: STMT_END_F
+master-bin.000001 7100 Table_map 1 7141 table_id: # (test.t1)
+master-bin.000001 7141 Write_rows 1 7175 table_id: # flags: STMT_END_F
+master-bin.000001 7175 Table_map 1 7216 table_id: # (test.t1)
+master-bin.000001 7216 Write_rows 1 7250 table_id: # flags: STMT_END_F
+master-bin.000001 7250 Table_map 1 7291 table_id: # (test.t1)
+master-bin.000001 7291 Write_rows 1 7325 table_id: # flags: STMT_END_F
+master-bin.000001 7325 Table_map 1 7366 table_id: # (test.t1)
+master-bin.000001 7366 Write_rows 1 7400 table_id: # flags: STMT_END_F
+master-bin.000001 7400 Table_map 1 7441 table_id: # (test.t1)
+master-bin.000001 7441 Write_rows 1 7475 table_id: # flags: STMT_END_F
+master-bin.000001 7475 Table_map 1 7516 table_id: # (test.t1)
+master-bin.000001 7516 Write_rows 1 7550 table_id: # flags: STMT_END_F
+master-bin.000001 7550 Table_map 1 7591 table_id: # (test.t1)
+master-bin.000001 7591 Write_rows 1 7625 table_id: # flags: STMT_END_F
+master-bin.000001 7625 Table_map 1 7666 table_id: # (test.t1)
+master-bin.000001 7666 Write_rows 1 7700 table_id: # flags: STMT_END_F
+master-bin.000001 7700 Table_map 1 7741 table_id: # (test.t1)
+master-bin.000001 7741 Write_rows 1 7775 table_id: # flags: STMT_END_F
+master-bin.000001 7775 Table_map 1 7816 table_id: # (test.t1)
+master-bin.000001 7816 Write_rows 1 7850 table_id: # flags: STMT_END_F
+master-bin.000001 7850 Table_map 1 7891 table_id: # (test.t1)
+master-bin.000001 7891 Write_rows 1 7925 table_id: # flags: STMT_END_F
+master-bin.000001 7925 Table_map 1 7966 table_id: # (test.t1)
+master-bin.000001 7966 Write_rows 1 8000 table_id: # flags: STMT_END_F
+master-bin.000001 8000 Table_map 1 8041 table_id: # (test.t1)
+master-bin.000001 8041 Write_rows 1 8075 table_id: # flags: STMT_END_F
+master-bin.000001 8075 Table_map 1 8116 table_id: # (test.t1)
+master-bin.000001 8116 Write_rows 1 8150 table_id: # flags: STMT_END_F
+master-bin.000001 8150 Table_map 1 8191 table_id: # (test.t1)
+master-bin.000001 8191 Write_rows 1 8225 table_id: # flags: STMT_END_F
+master-bin.000001 8225 Table_map 1 8266 table_id: # (test.t1)
+master-bin.000001 8266 Write_rows 1 8300 table_id: # flags: STMT_END_F
+master-bin.000001 8300 Table_map 1 8341 table_id: # (test.t1)
+master-bin.000001 8341 Write_rows 1 8375 table_id: # flags: STMT_END_F
+master-bin.000001 8375 Table_map 1 8416 table_id: # (test.t1)
+master-bin.000001 8416 Write_rows 1 8450 table_id: # flags: STMT_END_F
+master-bin.000001 8450 Table_map 1 8491 table_id: # (test.t1)
+master-bin.000001 8491 Write_rows 1 8525 table_id: # flags: STMT_END_F
+master-bin.000001 8525 Table_map 1 8566 table_id: # (test.t1)
+master-bin.000001 8566 Write_rows 1 8600 table_id: # flags: STMT_END_F
+master-bin.000001 8600 Table_map 1 8641 table_id: # (test.t1)
+master-bin.000001 8641 Write_rows 1 8675 table_id: # flags: STMT_END_F
+master-bin.000001 8675 Table_map 1 8716 table_id: # (test.t1)
+master-bin.000001 8716 Write_rows 1 8750 table_id: # flags: STMT_END_F
+master-bin.000001 8750 Table_map 1 8791 table_id: # (test.t1)
+master-bin.000001 8791 Write_rows 1 8825 table_id: # flags: STMT_END_F
+master-bin.000001 8825 Table_map 1 8866 table_id: # (test.t1)
+master-bin.000001 8866 Write_rows 1 8900 table_id: # flags: STMT_END_F
+master-bin.000001 8900 Table_map 1 8941 table_id: # (test.t1)
+master-bin.000001 8941 Write_rows 1 8975 table_id: # flags: STMT_END_F
+master-bin.000001 8975 Table_map 1 9016 table_id: # (test.t1)
+master-bin.000001 9016 Write_rows 1 9050 table_id: # flags: STMT_END_F
+master-bin.000001 9050 Table_map 1 9091 table_id: # (test.t1)
+master-bin.000001 9091 Write_rows 1 9125 table_id: # flags: STMT_END_F
+master-bin.000001 9125 Table_map 1 9166 table_id: # (test.t1)
+master-bin.000001 9166 Write_rows 1 9200 table_id: # flags: STMT_END_F
+master-bin.000001 9200 Table_map 1 9241 table_id: # (test.t1)
+master-bin.000001 9241 Write_rows 1 9275 table_id: # flags: STMT_END_F
+master-bin.000001 9275 Table_map 1 9316 table_id: # (test.t1)
+master-bin.000001 9316 Write_rows 1 9350 table_id: # flags: STMT_END_F
+master-bin.000001 9350 Table_map 1 9391 table_id: # (test.t1)
+master-bin.000001 9391 Write_rows 1 9425 table_id: # flags: STMT_END_F
+master-bin.000001 9425 Table_map 1 9466 table_id: # (test.t1)
+master-bin.000001 9466 Write_rows 1 9500 table_id: # flags: STMT_END_F
+master-bin.000001 9500 Table_map 1 9541 table_id: # (test.t1)
+master-bin.000001 9541 Write_rows 1 9575 table_id: # flags: STMT_END_F
+master-bin.000001 9575 Table_map 1 9616 table_id: # (test.t1)
+master-bin.000001 9616 Write_rows 1 9650 table_id: # flags: STMT_END_F
+master-bin.000001 9650 Table_map 1 9691 table_id: # (test.t1)
+master-bin.000001 9691 Write_rows 1 9725 table_id: # flags: STMT_END_F
+master-bin.000001 9725 Table_map 1 9766 table_id: # (test.t1)
+master-bin.000001 9766 Write_rows 1 9800 table_id: # flags: STMT_END_F
+master-bin.000001 9800 Table_map 1 9841 table_id: # (test.t1)
+master-bin.000001 9841 Write_rows 1 9875 table_id: # flags: STMT_END_F
+master-bin.000001 9875 Table_map 1 9916 table_id: # (test.t1)
+master-bin.000001 9916 Write_rows 1 9950 table_id: # flags: STMT_END_F
+master-bin.000001 9950 Table_map 1 9991 table_id: # (test.t1)
+master-bin.000001 9991 Write_rows 1 10025 table_id: # flags: STMT_END_F
+master-bin.000001 10025 Table_map 1 10066 table_id: # (test.t1)
+master-bin.000001 10066 Write_rows 1 10100 table_id: # flags: STMT_END_F
+master-bin.000001 10100 Table_map 1 10141 table_id: # (test.t1)
+master-bin.000001 10141 Write_rows 1 10175 table_id: # flags: STMT_END_F
+master-bin.000001 10175 Table_map 1 10216 table_id: # (test.t1)
+master-bin.000001 10216 Write_rows 1 10250 table_id: # flags: STMT_END_F
+master-bin.000001 10250 Table_map 1 10291 table_id: # (test.t1)
+master-bin.000001 10291 Write_rows 1 10325 table_id: # flags: STMT_END_F
+master-bin.000001 10325 Table_map 1 10366 table_id: # (test.t1)
+master-bin.000001 10366 Write_rows 1 10400 table_id: # flags: STMT_END_F
+master-bin.000001 10400 Table_map 1 10441 table_id: # (test.t1)
+master-bin.000001 10441 Write_rows 1 10475 table_id: # flags: STMT_END_F
+master-bin.000001 10475 Table_map 1 10516 table_id: # (test.t1)
+master-bin.000001 10516 Write_rows 1 10550 table_id: # flags: STMT_END_F
+master-bin.000001 10550 Table_map 1 10591 table_id: # (test.t1)
+master-bin.000001 10591 Write_rows 1 10625 table_id: # flags: STMT_END_F
+master-bin.000001 10625 Table_map 1 10666 table_id: # (test.t1)
+master-bin.000001 10666 Write_rows 1 10700 table_id: # flags: STMT_END_F
+master-bin.000001 10700 Table_map 1 10741 table_id: # (test.t1)
+master-bin.000001 10741 Write_rows 1 10775 table_id: # flags: STMT_END_F
+master-bin.000001 10775 Table_map 1 10816 table_id: # (test.t1)
+master-bin.000001 10816 Write_rows 1 10850 table_id: # flags: STMT_END_F
+master-bin.000001 10850 Table_map 1 10891 table_id: # (test.t1)
+master-bin.000001 10891 Write_rows 1 10925 table_id: # flags: STMT_END_F
+master-bin.000001 10925 Table_map 1 10966 table_id: # (test.t1)
+master-bin.000001 10966 Write_rows 1 11000 table_id: # flags: STMT_END_F
+master-bin.000001 11000 Table_map 1 11041 table_id: # (test.t1)
+master-bin.000001 11041 Write_rows 1 11075 table_id: # flags: STMT_END_F
+master-bin.000001 11075 Table_map 1 11116 table_id: # (test.t1)
+master-bin.000001 11116 Write_rows 1 11150 table_id: # flags: STMT_END_F
+master-bin.000001 11150 Table_map 1 11191 table_id: # (test.t1)
+master-bin.000001 11191 Write_rows 1 11225 table_id: # flags: STMT_END_F
+master-bin.000001 11225 Table_map 1 11266 table_id: # (test.t1)
+master-bin.000001 11266 Write_rows 1 11300 table_id: # flags: STMT_END_F
+master-bin.000001 11300 Table_map 1 11341 table_id: # (test.t1)
+master-bin.000001 11341 Write_rows 1 11375 table_id: # flags: STMT_END_F
+master-bin.000001 11375 Table_map 1 11416 table_id: # (test.t1)
+master-bin.000001 11416 Write_rows 1 11450 table_id: # flags: STMT_END_F
+master-bin.000001 11450 Table_map 1 11491 table_id: # (test.t1)
+master-bin.000001 11491 Write_rows 1 11525 table_id: # flags: STMT_END_F
+master-bin.000001 11525 Table_map 1 11566 table_id: # (test.t1)
+master-bin.000001 11566 Write_rows 1 11600 table_id: # flags: STMT_END_F
+master-bin.000001 11600 Table_map 1 11641 table_id: # (test.t1)
+master-bin.000001 11641 Write_rows 1 11675 table_id: # flags: STMT_END_F
+master-bin.000001 11675 Table_map 1 11716 table_id: # (test.t1)
+master-bin.000001 11716 Write_rows 1 11750 table_id: # flags: STMT_END_F
+master-bin.000001 11750 Table_map 1 11791 table_id: # (test.t1)
+master-bin.000001 11791 Write_rows 1 11825 table_id: # flags: STMT_END_F
+master-bin.000001 11825 Table_map 1 11866 table_id: # (test.t1)
+master-bin.000001 11866 Write_rows 1 11900 table_id: # flags: STMT_END_F
+master-bin.000001 11900 Table_map 1 11941 table_id: # (test.t1)
+master-bin.000001 11941 Write_rows 1 11975 table_id: # flags: STMT_END_F
+master-bin.000001 11975 Table_map 1 12016 table_id: # (test.t1)
+master-bin.000001 12016 Write_rows 1 12050 table_id: # flags: STMT_END_F
+master-bin.000001 12050 Table_map 1 12091 table_id: # (test.t1)
+master-bin.000001 12091 Write_rows 1 12125 table_id: # flags: STMT_END_F
+master-bin.000001 12125 Table_map 1 12166 table_id: # (test.t1)
+master-bin.000001 12166 Write_rows 1 12200 table_id: # flags: STMT_END_F
+master-bin.000001 12200 Table_map 1 12241 table_id: # (test.t1)
+master-bin.000001 12241 Write_rows 1 12275 table_id: # flags: STMT_END_F
+master-bin.000001 12275 Table_map 1 12316 table_id: # (test.t1)
+master-bin.000001 12316 Write_rows 1 12350 table_id: # flags: STMT_END_F
+master-bin.000001 12350 Table_map 1 12391 table_id: # (test.t1)
+master-bin.000001 12391 Write_rows 1 12425 table_id: # flags: STMT_END_F
+master-bin.000001 12425 Table_map 1 12466 table_id: # (test.t1)
+master-bin.000001 12466 Write_rows 1 12500 table_id: # flags: STMT_END_F
+master-bin.000001 12500 Table_map 1 12541 table_id: # (test.t1)
+master-bin.000001 12541 Write_rows 1 12575 table_id: # flags: STMT_END_F
+master-bin.000001 12575 Table_map 1 12616 table_id: # (test.t1)
+master-bin.000001 12616 Write_rows 1 12650 table_id: # flags: STMT_END_F
+master-bin.000001 12650 Table_map 1 12691 table_id: # (test.t1)
+master-bin.000001 12691 Write_rows 1 12725 table_id: # flags: STMT_END_F
+master-bin.000001 12725 Table_map 1 12766 table_id: # (test.t1)
+master-bin.000001 12766 Write_rows 1 12800 table_id: # flags: STMT_END_F
+master-bin.000001 12800 Table_map 1 12841 table_id: # (test.t1)
+master-bin.000001 12841 Write_rows 1 12875 table_id: # flags: STMT_END_F
+master-bin.000001 12875 Table_map 1 12916 table_id: # (test.t1)
+master-bin.000001 12916 Write_rows 1 12950 table_id: # flags: STMT_END_F
+master-bin.000001 12950 Table_map 1 12991 table_id: # (test.t1)
+master-bin.000001 12991 Write_rows 1 13025 table_id: # flags: STMT_END_F
+master-bin.000001 13025 Table_map 1 13066 table_id: # (test.t1)
+master-bin.000001 13066 Write_rows 1 13100 table_id: # flags: STMT_END_F
+master-bin.000001 13100 Table_map 1 13141 table_id: # (test.t1)
+master-bin.000001 13141 Write_rows 1 13175 table_id: # flags: STMT_END_F
+master-bin.000001 13175 Table_map 1 13216 table_id: # (test.t1)
+master-bin.000001 13216 Write_rows 1 13250 table_id: # flags: STMT_END_F
+master-bin.000001 13250 Table_map 1 13291 table_id: # (test.t1)
+master-bin.000001 13291 Write_rows 1 13325 table_id: # flags: STMT_END_F
+master-bin.000001 13325 Table_map 1 13366 table_id: # (test.t1)
+master-bin.000001 13366 Write_rows 1 13400 table_id: # flags: STMT_END_F
+master-bin.000001 13400 Table_map 1 13441 table_id: # (test.t1)
+master-bin.000001 13441 Write_rows 1 13475 table_id: # flags: STMT_END_F
+master-bin.000001 13475 Table_map 1 13516 table_id: # (test.t1)
+master-bin.000001 13516 Write_rows 1 13550 table_id: # flags: STMT_END_F
+master-bin.000001 13550 Table_map 1 13591 table_id: # (test.t1)
+master-bin.000001 13591 Write_rows 1 13625 table_id: # flags: STMT_END_F
+master-bin.000001 13625 Table_map 1 13666 table_id: # (test.t1)
+master-bin.000001 13666 Write_rows 1 13700 table_id: # flags: STMT_END_F
+master-bin.000001 13700 Table_map 1 13741 table_id: # (test.t1)
+master-bin.000001 13741 Write_rows 1 13775 table_id: # flags: STMT_END_F
+master-bin.000001 13775 Table_map 1 13816 table_id: # (test.t1)
+master-bin.000001 13816 Write_rows 1 13850 table_id: # flags: STMT_END_F
+master-bin.000001 13850 Table_map 1 13891 table_id: # (test.t1)
+master-bin.000001 13891 Write_rows 1 13925 table_id: # flags: STMT_END_F
+master-bin.000001 13925 Table_map 1 13966 table_id: # (test.t1)
+master-bin.000001 13966 Write_rows 1 14000 table_id: # flags: STMT_END_F
+master-bin.000001 14000 Table_map 1 14041 table_id: # (test.t1)
+master-bin.000001 14041 Write_rows 1 14075 table_id: # flags: STMT_END_F
+master-bin.000001 14075 Table_map 1 14116 table_id: # (test.t1)
+master-bin.000001 14116 Write_rows 1 14150 table_id: # flags: STMT_END_F
+master-bin.000001 14150 Table_map 1 14191 table_id: # (test.t1)
+master-bin.000001 14191 Write_rows 1 14225 table_id: # flags: STMT_END_F
+master-bin.000001 14225 Table_map 1 14266 table_id: # (test.t1)
+master-bin.000001 14266 Write_rows 1 14300 table_id: # flags: STMT_END_F
+master-bin.000001 14300 Table_map 1 14341 table_id: # (test.t1)
+master-bin.000001 14341 Write_rows 1 14375 table_id: # flags: STMT_END_F
+master-bin.000001 14375 Table_map 1 14416 table_id: # (test.t1)
+master-bin.000001 14416 Write_rows 1 14450 table_id: # flags: STMT_END_F
+master-bin.000001 14450 Table_map 1 14491 table_id: # (test.t1)
+master-bin.000001 14491 Write_rows 1 14525 table_id: # flags: STMT_END_F
+master-bin.000001 14525 Table_map 1 14566 table_id: # (test.t1)
+master-bin.000001 14566 Write_rows 1 14600 table_id: # flags: STMT_END_F
+master-bin.000001 14600 Table_map 1 14641 table_id: # (test.t1)
+master-bin.000001 14641 Write_rows 1 14675 table_id: # flags: STMT_END_F
+master-bin.000001 14675 Table_map 1 14716 table_id: # (test.t1)
+master-bin.000001 14716 Write_rows 1 14750 table_id: # flags: STMT_END_F
+master-bin.000001 14750 Table_map 1 14791 table_id: # (test.t1)
+master-bin.000001 14791 Write_rows 1 14825 table_id: # flags: STMT_END_F
+master-bin.000001 14825 Table_map 1 14866 table_id: # (test.t1)
+master-bin.000001 14866 Write_rows 1 14900 table_id: # flags: STMT_END_F
+master-bin.000001 14900 Table_map 1 14941 table_id: # (test.t1)
+master-bin.000001 14941 Write_rows 1 14975 table_id: # flags: STMT_END_F
+master-bin.000001 14975 Table_map 1 15016 table_id: # (test.t1)
+master-bin.000001 15016 Write_rows 1 15050 table_id: # flags: STMT_END_F
+master-bin.000001 15050 Table_map 1 15091 table_id: # (test.t1)
+master-bin.000001 15091 Write_rows 1 15125 table_id: # flags: STMT_END_F
+master-bin.000001 15125 Table_map 1 15166 table_id: # (test.t1)
+master-bin.000001 15166 Write_rows 1 15200 table_id: # flags: STMT_END_F
+master-bin.000001 15200 Table_map 1 15241 table_id: # (test.t1)
+master-bin.000001 15241 Write_rows 1 15275 table_id: # flags: STMT_END_F
+master-bin.000001 15275 Table_map 1 15316 table_id: # (test.t1)
+master-bin.000001 15316 Write_rows 1 15350 table_id: # flags: STMT_END_F
+master-bin.000001 15350 Table_map 1 15391 table_id: # (test.t1)
+master-bin.000001 15391 Write_rows 1 15425 table_id: # flags: STMT_END_F
+master-bin.000001 15425 Table_map 1 15466 table_id: # (test.t1)
+master-bin.000001 15466 Write_rows 1 15500 table_id: # flags: STMT_END_F
+master-bin.000001 15500 Table_map 1 15541 table_id: # (test.t1)
+master-bin.000001 15541 Write_rows 1 15575 table_id: # flags: STMT_END_F
+master-bin.000001 15575 Table_map 1 15616 table_id: # (test.t1)
+master-bin.000001 15616 Write_rows 1 15650 table_id: # flags: STMT_END_F
+master-bin.000001 15650 Table_map 1 15691 table_id: # (test.t1)
+master-bin.000001 15691 Write_rows 1 15725 table_id: # flags: STMT_END_F
+master-bin.000001 15725 Table_map 1 15766 table_id: # (test.t1)
+master-bin.000001 15766 Write_rows 1 15800 table_id: # flags: STMT_END_F
+master-bin.000001 15800 Table_map 1 15841 table_id: # (test.t1)
+master-bin.000001 15841 Write_rows 1 15875 table_id: # flags: STMT_END_F
+master-bin.000001 15875 Table_map 1 15916 table_id: # (test.t1)
+master-bin.000001 15916 Write_rows 1 15950 table_id: # flags: STMT_END_F
+master-bin.000001 15950 Table_map 1 15991 table_id: # (test.t1)
+master-bin.000001 15991 Write_rows 1 16025 table_id: # flags: STMT_END_F
+master-bin.000001 16025 Table_map 1 16066 table_id: # (test.t1)
+master-bin.000001 16066 Write_rows 1 16100 table_id: # flags: STMT_END_F
+master-bin.000001 16100 Table_map 1 16141 table_id: # (test.t1)
+master-bin.000001 16141 Write_rows 1 16175 table_id: # flags: STMT_END_F
+master-bin.000001 16175 Table_map 1 16216 table_id: # (test.t1)
+master-bin.000001 16216 Write_rows 1 16250 table_id: # flags: STMT_END_F
+master-bin.000001 16250 Table_map 1 16291 table_id: # (test.t1)
+master-bin.000001 16291 Write_rows 1 16325 table_id: # flags: STMT_END_F
+master-bin.000001 16325 Table_map 1 16366 table_id: # (test.t1)
+master-bin.000001 16366 Write_rows 1 16400 table_id: # flags: STMT_END_F
+master-bin.000001 16400 Table_map 1 16441 table_id: # (test.t1)
+master-bin.000001 16441 Write_rows 1 16475 table_id: # flags: STMT_END_F
+master-bin.000001 16475 Table_map 1 16516 table_id: # (test.t1)
+master-bin.000001 16516 Write_rows 1 16550 table_id: # flags: STMT_END_F
+master-bin.000001 16550 Table_map 1 16591 table_id: # (test.t1)
+master-bin.000001 16591 Write_rows 1 16625 table_id: # flags: STMT_END_F
+master-bin.000001 16625 Table_map 1 16666 table_id: # (test.t1)
+master-bin.000001 16666 Write_rows 1 16700 table_id: # flags: STMT_END_F
+master-bin.000001 16700 Table_map 1 16741 table_id: # (test.t1)
+master-bin.000001 16741 Write_rows 1 16775 table_id: # flags: STMT_END_F
+master-bin.000001 16775 Table_map 1 16816 table_id: # (test.t1)
+master-bin.000001 16816 Write_rows 1 16850 table_id: # flags: STMT_END_F
+master-bin.000001 16850 Table_map 1 16891 table_id: # (test.t1)
+master-bin.000001 16891 Write_rows 1 16925 table_id: # flags: STMT_END_F
+master-bin.000001 16925 Table_map 1 16966 table_id: # (test.t1)
+master-bin.000001 16966 Write_rows 1 17000 table_id: # flags: STMT_END_F
+master-bin.000001 17000 Table_map 1 17041 table_id: # (test.t1)
+master-bin.000001 17041 Write_rows 1 17075 table_id: # flags: STMT_END_F
+master-bin.000001 17075 Table_map 1 17116 table_id: # (test.t1)
+master-bin.000001 17116 Write_rows 1 17150 table_id: # flags: STMT_END_F
+master-bin.000001 17150 Table_map 1 17191 table_id: # (test.t1)
+master-bin.000001 17191 Write_rows 1 17225 table_id: # flags: STMT_END_F
+master-bin.000001 17225 Table_map 1 17266 table_id: # (test.t1)
+master-bin.000001 17266 Write_rows 1 17300 table_id: # flags: STMT_END_F
+master-bin.000001 17300 Table_map 1 17341 table_id: # (test.t1)
+master-bin.000001 17341 Write_rows 1 17375 table_id: # flags: STMT_END_F
+master-bin.000001 17375 Table_map 1 17416 table_id: # (test.t1)
+master-bin.000001 17416 Write_rows 1 17450 table_id: # flags: STMT_END_F
+master-bin.000001 17450 Table_map 1 17491 table_id: # (test.t1)
+master-bin.000001 17491 Write_rows 1 17525 table_id: # flags: STMT_END_F
+master-bin.000001 17525 Table_map 1 17566 table_id: # (test.t1)
+master-bin.000001 17566 Write_rows 1 17600 table_id: # flags: STMT_END_F
+master-bin.000001 17600 Table_map 1 17641 table_id: # (test.t1)
+master-bin.000001 17641 Write_rows 1 17675 table_id: # flags: STMT_END_F
+master-bin.000001 17675 Table_map 1 17716 table_id: # (test.t1)
+master-bin.000001 17716 Write_rows 1 17750 table_id: # flags: STMT_END_F
+master-bin.000001 17750 Table_map 1 17791 table_id: # (test.t1)
+master-bin.000001 17791 Write_rows 1 17825 table_id: # flags: STMT_END_F
+master-bin.000001 17825 Table_map 1 17866 table_id: # (test.t1)
+master-bin.000001 17866 Write_rows 1 17900 table_id: # flags: STMT_END_F
+master-bin.000001 17900 Table_map 1 17941 table_id: # (test.t1)
+master-bin.000001 17941 Write_rows 1 17975 table_id: # flags: STMT_END_F
+master-bin.000001 17975 Table_map 1 18016 table_id: # (test.t1)
+master-bin.000001 18016 Write_rows 1 18050 table_id: # flags: STMT_END_F
+master-bin.000001 18050 Table_map 1 18091 table_id: # (test.t1)
+master-bin.000001 18091 Write_rows 1 18125 table_id: # flags: STMT_END_F
+master-bin.000001 18125 Table_map 1 18166 table_id: # (test.t1)
+master-bin.000001 18166 Write_rows 1 18200 table_id: # flags: STMT_END_F
+master-bin.000001 18200 Table_map 1 18241 table_id: # (test.t1)
+master-bin.000001 18241 Write_rows 1 18275 table_id: # flags: STMT_END_F
+master-bin.000001 18275 Table_map 1 18316 table_id: # (test.t1)
+master-bin.000001 18316 Write_rows 1 18350 table_id: # flags: STMT_END_F
+master-bin.000001 18350 Table_map 1 18391 table_id: # (test.t1)
+master-bin.000001 18391 Write_rows 1 18425 table_id: # flags: STMT_END_F
+master-bin.000001 18425 Table_map 1 18466 table_id: # (test.t1)
+master-bin.000001 18466 Write_rows 1 18500 table_id: # flags: STMT_END_F
+master-bin.000001 18500 Table_map 1 18541 table_id: # (test.t1)
+master-bin.000001 18541 Write_rows 1 18575 table_id: # flags: STMT_END_F
+master-bin.000001 18575 Table_map 1 18616 table_id: # (test.t1)
+master-bin.000001 18616 Write_rows 1 18650 table_id: # flags: STMT_END_F
+master-bin.000001 18650 Table_map 1 18691 table_id: # (test.t1)
+master-bin.000001 18691 Write_rows 1 18725 table_id: # flags: STMT_END_F
+master-bin.000001 18725 Table_map 1 18766 table_id: # (test.t1)
+master-bin.000001 18766 Write_rows 1 18800 table_id: # flags: STMT_END_F
+master-bin.000001 18800 Table_map 1 18841 table_id: # (test.t1)
+master-bin.000001 18841 Write_rows 1 18875 table_id: # flags: STMT_END_F
+master-bin.000001 18875 Table_map 1 18916 table_id: # (test.t1)
+master-bin.000001 18916 Write_rows 1 18950 table_id: # flags: STMT_END_F
+master-bin.000001 18950 Table_map 1 18991 table_id: # (test.t1)
+master-bin.000001 18991 Write_rows 1 19025 table_id: # flags: STMT_END_F
+master-bin.000001 19025 Table_map 1 19066 table_id: # (test.t1)
+master-bin.000001 19066 Write_rows 1 19100 table_id: # flags: STMT_END_F
+master-bin.000001 19100 Table_map 1 19141 table_id: # (test.t1)
+master-bin.000001 19141 Write_rows 1 19175 table_id: # flags: STMT_END_F
+master-bin.000001 19175 Table_map 1 19216 table_id: # (test.t1)
+master-bin.000001 19216 Write_rows 1 19250 table_id: # flags: STMT_END_F
+master-bin.000001 19250 Table_map 1 19291 table_id: # (test.t1)
+master-bin.000001 19291 Write_rows 1 19325 table_id: # flags: STMT_END_F
+master-bin.000001 19325 Table_map 1 19366 table_id: # (test.t1)
+master-bin.000001 19366 Write_rows 1 19400 table_id: # flags: STMT_END_F
+master-bin.000001 19400 Table_map 1 19441 table_id: # (test.t1)
+master-bin.000001 19441 Write_rows 1 19475 table_id: # flags: STMT_END_F
+master-bin.000001 19475 Table_map 1 19516 table_id: # (test.t1)
+master-bin.000001 19516 Write_rows 1 19550 table_id: # flags: STMT_END_F
+master-bin.000001 19550 Table_map 1 19591 table_id: # (test.t1)
+master-bin.000001 19591 Write_rows 1 19625 table_id: # flags: STMT_END_F
+master-bin.000001 19625 Table_map 1 19666 table_id: # (test.t1)
+master-bin.000001 19666 Write_rows 1 19700 table_id: # flags: STMT_END_F
+master-bin.000001 19700 Table_map 1 19741 table_id: # (test.t1)
+master-bin.000001 19741 Write_rows 1 19775 table_id: # flags: STMT_END_F
+master-bin.000001 19775 Table_map 1 19816 table_id: # (test.t1)
+master-bin.000001 19816 Write_rows 1 19850 table_id: # flags: STMT_END_F
+master-bin.000001 19850 Table_map 1 19891 table_id: # (test.t1)
+master-bin.000001 19891 Write_rows 1 19925 table_id: # flags: STMT_END_F
+master-bin.000001 19925 Table_map 1 19966 table_id: # (test.t1)
+master-bin.000001 19966 Write_rows 1 20000 table_id: # flags: STMT_END_F
+master-bin.000001 20000 Table_map 1 20041 table_id: # (test.t1)
+master-bin.000001 20041 Write_rows 1 20075 table_id: # flags: STMT_END_F
+master-bin.000001 20075 Table_map 1 20116 table_id: # (test.t1)
+master-bin.000001 20116 Write_rows 1 20150 table_id: # flags: STMT_END_F
+master-bin.000001 20150 Table_map 1 20191 table_id: # (test.t1)
+master-bin.000001 20191 Write_rows 1 20225 table_id: # flags: STMT_END_F
+master-bin.000001 20225 Table_map 1 20266 table_id: # (test.t1)
+master-bin.000001 20266 Write_rows 1 20300 table_id: # flags: STMT_END_F
+master-bin.000001 20300 Table_map 1 20341 table_id: # (test.t1)
+master-bin.000001 20341 Write_rows 1 20375 table_id: # flags: STMT_END_F
+master-bin.000001 20375 Table_map 1 20416 table_id: # (test.t1)
+master-bin.000001 20416 Write_rows 1 20450 table_id: # flags: STMT_END_F
+master-bin.000001 20450 Table_map 1 20491 table_id: # (test.t1)
+master-bin.000001 20491 Write_rows 1 20525 table_id: # flags: STMT_END_F
+master-bin.000001 20525 Table_map 1 20566 table_id: # (test.t1)
+master-bin.000001 20566 Write_rows 1 20600 table_id: # flags: STMT_END_F
+master-bin.000001 20600 Table_map 1 20641 table_id: # (test.t1)
+master-bin.000001 20641 Write_rows 1 20675 table_id: # flags: STMT_END_F
+master-bin.000001 20675 Table_map 1 20716 table_id: # (test.t1)
+master-bin.000001 20716 Write_rows 1 20750 table_id: # flags: STMT_END_F
+master-bin.000001 20750 Table_map 1 20791 table_id: # (test.t1)
+master-bin.000001 20791 Write_rows 1 20825 table_id: # flags: STMT_END_F
+master-bin.000001 20825 Table_map 1 20866 table_id: # (test.t1)
+master-bin.000001 20866 Write_rows 1 20900 table_id: # flags: STMT_END_F
+master-bin.000001 20900 Table_map 1 20941 table_id: # (test.t1)
+master-bin.000001 20941 Write_rows 1 20975 table_id: # flags: STMT_END_F
+master-bin.000001 20975 Table_map 1 21016 table_id: # (test.t1)
+master-bin.000001 21016 Write_rows 1 21050 table_id: # flags: STMT_END_F
+master-bin.000001 21050 Table_map 1 21091 table_id: # (test.t1)
+master-bin.000001 21091 Write_rows 1 21125 table_id: # flags: STMT_END_F
+master-bin.000001 21125 Table_map 1 21166 table_id: # (test.t1)
+master-bin.000001 21166 Write_rows 1 21200 table_id: # flags: STMT_END_F
+master-bin.000001 21200 Table_map 1 21241 table_id: # (test.t1)
+master-bin.000001 21241 Write_rows 1 21275 table_id: # flags: STMT_END_F
+master-bin.000001 21275 Table_map 1 21316 table_id: # (test.t1)
+master-bin.000001 21316 Write_rows 1 21350 table_id: # flags: STMT_END_F
+master-bin.000001 21350 Table_map 1 21391 table_id: # (test.t1)
+master-bin.000001 21391 Write_rows 1 21425 table_id: # flags: STMT_END_F
+master-bin.000001 21425 Table_map 1 21466 table_id: # (test.t1)
+master-bin.000001 21466 Write_rows 1 21500 table_id: # flags: STMT_END_F
+master-bin.000001 21500 Table_map 1 21541 table_id: # (test.t1)
+master-bin.000001 21541 Write_rows 1 21575 table_id: # flags: STMT_END_F
+master-bin.000001 21575 Table_map 1 21616 table_id: # (test.t1)
+master-bin.000001 21616 Write_rows 1 21650 table_id: # flags: STMT_END_F
+master-bin.000001 21650 Table_map 1 21691 table_id: # (test.t1)
+master-bin.000001 21691 Write_rows 1 21725 table_id: # flags: STMT_END_F
+master-bin.000001 21725 Table_map 1 21766 table_id: # (test.t1)
+master-bin.000001 21766 Write_rows 1 21800 table_id: # flags: STMT_END_F
+master-bin.000001 21800 Table_map 1 21841 table_id: # (test.t1)
+master-bin.000001 21841 Write_rows 1 21875 table_id: # flags: STMT_END_F
+master-bin.000001 21875 Table_map 1 21916 table_id: # (test.t1)
+master-bin.000001 21916 Write_rows 1 21950 table_id: # flags: STMT_END_F
+master-bin.000001 21950 Table_map 1 21991 table_id: # (test.t1)
+master-bin.000001 21991 Write_rows 1 22025 table_id: # flags: STMT_END_F
+master-bin.000001 22025 Table_map 1 22066 table_id: # (test.t1)
+master-bin.000001 22066 Write_rows 1 22100 table_id: # flags: STMT_END_F
+master-bin.000001 22100 Table_map 1 22141 table_id: # (test.t1)
+master-bin.000001 22141 Write_rows 1 22175 table_id: # flags: STMT_END_F
+master-bin.000001 22175 Table_map 1 22216 table_id: # (test.t1)
+master-bin.000001 22216 Write_rows 1 22250 table_id: # flags: STMT_END_F
+master-bin.000001 22250 Table_map 1 22291 table_id: # (test.t1)
+master-bin.000001 22291 Write_rows 1 22325 table_id: # flags: STMT_END_F
+master-bin.000001 22325 Table_map 1 22366 table_id: # (test.t1)
+master-bin.000001 22366 Write_rows 1 22400 table_id: # flags: STMT_END_F
+master-bin.000001 22400 Table_map 1 22441 table_id: # (test.t1)
+master-bin.000001 22441 Write_rows 1 22475 table_id: # flags: STMT_END_F
+master-bin.000001 22475 Table_map 1 22516 table_id: # (test.t1)
+master-bin.000001 22516 Write_rows 1 22550 table_id: # flags: STMT_END_F
+master-bin.000001 22550 Table_map 1 22591 table_id: # (test.t1)
+master-bin.000001 22591 Write_rows 1 22625 table_id: # flags: STMT_END_F
+master-bin.000001 22625 Table_map 1 22666 table_id: # (test.t1)
+master-bin.000001 22666 Write_rows 1 22700 table_id: # flags: STMT_END_F
+master-bin.000001 22700 Table_map 1 22741 table_id: # (test.t1)
+master-bin.000001 22741 Write_rows 1 22775 table_id: # flags: STMT_END_F
+master-bin.000001 22775 Table_map 1 22816 table_id: # (test.t1)
+master-bin.000001 22816 Write_rows 1 22850 table_id: # flags: STMT_END_F
+master-bin.000001 22850 Table_map 1 22891 table_id: # (test.t1)
+master-bin.000001 22891 Write_rows 1 22925 table_id: # flags: STMT_END_F
+master-bin.000001 22925 Table_map 1 22966 table_id: # (test.t1)
+master-bin.000001 22966 Write_rows 1 23000 table_id: # flags: STMT_END_F
+master-bin.000001 23000 Table_map 1 23041 table_id: # (test.t1)
+master-bin.000001 23041 Write_rows 1 23075 table_id: # flags: STMT_END_F
+master-bin.000001 23075 Table_map 1 23116 table_id: # (test.t1)
+master-bin.000001 23116 Write_rows 1 23150 table_id: # flags: STMT_END_F
+master-bin.000001 23150 Table_map 1 23191 table_id: # (test.t1)
+master-bin.000001 23191 Write_rows 1 23225 table_id: # flags: STMT_END_F
+master-bin.000001 23225 Table_map 1 23266 table_id: # (test.t1)
+master-bin.000001 23266 Write_rows 1 23300 table_id: # flags: STMT_END_F
+master-bin.000001 23300 Table_map 1 23341 table_id: # (test.t1)
+master-bin.000001 23341 Write_rows 1 23375 table_id: # flags: STMT_END_F
+master-bin.000001 23375 Table_map 1 23416 table_id: # (test.t1)
+master-bin.000001 23416 Write_rows 1 23450 table_id: # flags: STMT_END_F
+master-bin.000001 23450 Table_map 1 23491 table_id: # (test.t1)
+master-bin.000001 23491 Write_rows 1 23525 table_id: # flags: STMT_END_F
+master-bin.000001 23525 Table_map 1 23566 table_id: # (test.t1)
+master-bin.000001 23566 Write_rows 1 23600 table_id: # flags: STMT_END_F
+master-bin.000001 23600 Table_map 1 23641 table_id: # (test.t1)
+master-bin.000001 23641 Write_rows 1 23675 table_id: # flags: STMT_END_F
+master-bin.000001 23675 Table_map 1 23716 table_id: # (test.t1)
+master-bin.000001 23716 Write_rows 1 23750 table_id: # flags: STMT_END_F
+master-bin.000001 23750 Table_map 1 23791 table_id: # (test.t1)
+master-bin.000001 23791 Write_rows 1 23825 table_id: # flags: STMT_END_F
+master-bin.000001 23825 Table_map 1 23866 table_id: # (test.t1)
+master-bin.000001 23866 Write_rows 1 23900 table_id: # flags: STMT_END_F
+master-bin.000001 23900 Table_map 1 23941 table_id: # (test.t1)
+master-bin.000001 23941 Write_rows 1 23975 table_id: # flags: STMT_END_F
+master-bin.000001 23975 Table_map 1 24016 table_id: # (test.t1)
+master-bin.000001 24016 Write_rows 1 24050 table_id: # flags: STMT_END_F
+master-bin.000001 24050 Table_map 1 24091 table_id: # (test.t1)
+master-bin.000001 24091 Write_rows 1 24125 table_id: # flags: STMT_END_F
+master-bin.000001 24125 Table_map 1 24166 table_id: # (test.t1)
+master-bin.000001 24166 Write_rows 1 24200 table_id: # flags: STMT_END_F
+master-bin.000001 24200 Table_map 1 24241 table_id: # (test.t1)
+master-bin.000001 24241 Write_rows 1 24275 table_id: # flags: STMT_END_F
+master-bin.000001 24275 Table_map 1 24316 table_id: # (test.t1)
+master-bin.000001 24316 Write_rows 1 24350 table_id: # flags: STMT_END_F
+master-bin.000001 24350 Table_map 1 24391 table_id: # (test.t1)
+master-bin.000001 24391 Write_rows 1 24425 table_id: # flags: STMT_END_F
+master-bin.000001 24425 Table_map 1 24466 table_id: # (test.t1)
+master-bin.000001 24466 Write_rows 1 24500 table_id: # flags: STMT_END_F
+master-bin.000001 24500 Table_map 1 24541 table_id: # (test.t1)
+master-bin.000001 24541 Write_rows 1 24575 table_id: # flags: STMT_END_F
+master-bin.000001 24575 Table_map 1 24616 table_id: # (test.t1)
+master-bin.000001 24616 Write_rows 1 24650 table_id: # flags: STMT_END_F
+master-bin.000001 24650 Table_map 1 24691 table_id: # (test.t1)
+master-bin.000001 24691 Write_rows 1 24725 table_id: # flags: STMT_END_F
+master-bin.000001 24725 Table_map 1 24766 table_id: # (test.t1)
+master-bin.000001 24766 Write_rows 1 24800 table_id: # flags: STMT_END_F
+master-bin.000001 24800 Table_map 1 24841 table_id: # (test.t1)
+master-bin.000001 24841 Write_rows 1 24875 table_id: # flags: STMT_END_F
+master-bin.000001 24875 Table_map 1 24916 table_id: # (test.t1)
+master-bin.000001 24916 Write_rows 1 24950 table_id: # flags: STMT_END_F
+master-bin.000001 24950 Table_map 1 24991 table_id: # (test.t1)
+master-bin.000001 24991 Write_rows 1 25025 table_id: # flags: STMT_END_F
+master-bin.000001 25025 Table_map 1 25066 table_id: # (test.t1)
+master-bin.000001 25066 Write_rows 1 25100 table_id: # flags: STMT_END_F
+master-bin.000001 25100 Table_map 1 25141 table_id: # (test.t1)
+master-bin.000001 25141 Write_rows 1 25175 table_id: # flags: STMT_END_F
+master-bin.000001 25175 Table_map 1 25216 table_id: # (test.t1)
+master-bin.000001 25216 Write_rows 1 25250 table_id: # flags: STMT_END_F
+master-bin.000001 25250 Table_map 1 25291 table_id: # (test.t1)
+master-bin.000001 25291 Write_rows 1 25325 table_id: # flags: STMT_END_F
+master-bin.000001 25325 Table_map 1 25366 table_id: # (test.t1)
+master-bin.000001 25366 Write_rows 1 25400 table_id: # flags: STMT_END_F
+master-bin.000001 25400 Table_map 1 25441 table_id: # (test.t1)
+master-bin.000001 25441 Write_rows 1 25475 table_id: # flags: STMT_END_F
+master-bin.000001 25475 Table_map 1 25516 table_id: # (test.t1)
+master-bin.000001 25516 Write_rows 1 25550 table_id: # flags: STMT_END_F
+master-bin.000001 25550 Table_map 1 25591 table_id: # (test.t1)
+master-bin.000001 25591 Write_rows 1 25625 table_id: # flags: STMT_END_F
+master-bin.000001 25625 Table_map 1 25666 table_id: # (test.t1)
+master-bin.000001 25666 Write_rows 1 25700 table_id: # flags: STMT_END_F
+master-bin.000001 25700 Table_map 1 25741 table_id: # (test.t1)
+master-bin.000001 25741 Write_rows 1 25775 table_id: # flags: STMT_END_F
+master-bin.000001 25775 Table_map 1 25816 table_id: # (test.t1)
+master-bin.000001 25816 Write_rows 1 25850 table_id: # flags: STMT_END_F
+master-bin.000001 25850 Table_map 1 25891 table_id: # (test.t1)
+master-bin.000001 25891 Write_rows 1 25925 table_id: # flags: STMT_END_F
+master-bin.000001 25925 Table_map 1 25966 table_id: # (test.t1)
+master-bin.000001 25966 Write_rows 1 26000 table_id: # flags: STMT_END_F
+master-bin.000001 26000 Table_map 1 26041 table_id: # (test.t1)
+master-bin.000001 26041 Write_rows 1 26075 table_id: # flags: STMT_END_F
+master-bin.000001 26075 Table_map 1 26116 table_id: # (test.t1)
+master-bin.000001 26116 Write_rows 1 26150 table_id: # flags: STMT_END_F
+master-bin.000001 26150 Table_map 1 26191 table_id: # (test.t1)
+master-bin.000001 26191 Write_rows 1 26225 table_id: # flags: STMT_END_F
+master-bin.000001 26225 Table_map 1 26266 table_id: # (test.t1)
+master-bin.000001 26266 Write_rows 1 26300 table_id: # flags: STMT_END_F
+master-bin.000001 26300 Table_map 1 26341 table_id: # (test.t1)
+master-bin.000001 26341 Write_rows 1 26375 table_id: # flags: STMT_END_F
+master-bin.000001 26375 Table_map 1 26416 table_id: # (test.t1)
+master-bin.000001 26416 Write_rows 1 26450 table_id: # flags: STMT_END_F
+master-bin.000001 26450 Table_map 1 26491 table_id: # (test.t1)
+master-bin.000001 26491 Write_rows 1 26525 table_id: # flags: STMT_END_F
+master-bin.000001 26525 Table_map 1 26566 table_id: # (test.t1)
+master-bin.000001 26566 Write_rows 1 26600 table_id: # flags: STMT_END_F
+master-bin.000001 26600 Table_map 1 26641 table_id: # (test.t1)
+master-bin.000001 26641 Write_rows 1 26675 table_id: # flags: STMT_END_F
+master-bin.000001 26675 Table_map 1 26716 table_id: # (test.t1)
+master-bin.000001 26716 Write_rows 1 26750 table_id: # flags: STMT_END_F
+master-bin.000001 26750 Table_map 1 26791 table_id: # (test.t1)
+master-bin.000001 26791 Write_rows 1 26825 table_id: # flags: STMT_END_F
+master-bin.000001 26825 Table_map 1 26866 table_id: # (test.t1)
+master-bin.000001 26866 Write_rows 1 26900 table_id: # flags: STMT_END_F
+master-bin.000001 26900 Table_map 1 26941 table_id: # (test.t1)
+master-bin.000001 26941 Write_rows 1 26975 table_id: # flags: STMT_END_F
+master-bin.000001 26975 Table_map 1 27016 table_id: # (test.t1)
+master-bin.000001 27016 Write_rows 1 27050 table_id: # flags: STMT_END_F
+master-bin.000001 27050 Table_map 1 27091 table_id: # (test.t1)
+master-bin.000001 27091 Write_rows 1 27125 table_id: # flags: STMT_END_F
+master-bin.000001 27125 Table_map 1 27166 table_id: # (test.t1)
+master-bin.000001 27166 Write_rows 1 27200 table_id: # flags: STMT_END_F
+master-bin.000001 27200 Table_map 1 27241 table_id: # (test.t1)
+master-bin.000001 27241 Write_rows 1 27275 table_id: # flags: STMT_END_F
+master-bin.000001 27275 Table_map 1 27316 table_id: # (test.t1)
+master-bin.000001 27316 Write_rows 1 27350 table_id: # flags: STMT_END_F
+master-bin.000001 27350 Table_map 1 27391 table_id: # (test.t1)
+master-bin.000001 27391 Write_rows 1 27425 table_id: # flags: STMT_END_F
+master-bin.000001 27425 Table_map 1 27466 table_id: # (test.t1)
+master-bin.000001 27466 Write_rows 1 27500 table_id: # flags: STMT_END_F
+master-bin.000001 27500 Table_map 1 27541 table_id: # (test.t1)
+master-bin.000001 27541 Write_rows 1 27575 table_id: # flags: STMT_END_F
+master-bin.000001 27575 Table_map 1 27616 table_id: # (test.t1)
+master-bin.000001 27616 Write_rows 1 27650 table_id: # flags: STMT_END_F
+master-bin.000001 27650 Table_map 1 27691 table_id: # (test.t1)
+master-bin.000001 27691 Write_rows 1 27725 table_id: # flags: STMT_END_F
+master-bin.000001 27725 Table_map 1 27766 table_id: # (test.t1)
+master-bin.000001 27766 Write_rows 1 27800 table_id: # flags: STMT_END_F
+master-bin.000001 27800 Table_map 1 27841 table_id: # (test.t1)
+master-bin.000001 27841 Write_rows 1 27875 table_id: # flags: STMT_END_F
+master-bin.000001 27875 Table_map 1 27916 table_id: # (test.t1)
+master-bin.000001 27916 Write_rows 1 27950 table_id: # flags: STMT_END_F
+master-bin.000001 27950 Table_map 1 27991 table_id: # (test.t1)
+master-bin.000001 27991 Write_rows 1 28025 table_id: # flags: STMT_END_F
+master-bin.000001 28025 Table_map 1 28066 table_id: # (test.t1)
+master-bin.000001 28066 Write_rows 1 28100 table_id: # flags: STMT_END_F
+master-bin.000001 28100 Table_map 1 28141 table_id: # (test.t1)
+master-bin.000001 28141 Write_rows 1 28175 table_id: # flags: STMT_END_F
+master-bin.000001 28175 Table_map 1 28216 table_id: # (test.t1)
+master-bin.000001 28216 Write_rows 1 28250 table_id: # flags: STMT_END_F
+master-bin.000001 28250 Table_map 1 28291 table_id: # (test.t1)
+master-bin.000001 28291 Write_rows 1 28325 table_id: # flags: STMT_END_F
+master-bin.000001 28325 Table_map 1 28366 table_id: # (test.t1)
+master-bin.000001 28366 Write_rows 1 28400 table_id: # flags: STMT_END_F
+master-bin.000001 28400 Table_map 1 28441 table_id: # (test.t1)
+master-bin.000001 28441 Write_rows 1 28475 table_id: # flags: STMT_END_F
+master-bin.000001 28475 Table_map 1 28516 table_id: # (test.t1)
+master-bin.000001 28516 Write_rows 1 28550 table_id: # flags: STMT_END_F
+master-bin.000001 28550 Table_map 1 28591 table_id: # (test.t1)
+master-bin.000001 28591 Write_rows 1 28625 table_id: # flags: STMT_END_F
+master-bin.000001 28625 Table_map 1 28666 table_id: # (test.t1)
+master-bin.000001 28666 Write_rows 1 28700 table_id: # flags: STMT_END_F
+master-bin.000001 28700 Table_map 1 28741 table_id: # (test.t1)
+master-bin.000001 28741 Write_rows 1 28775 table_id: # flags: STMT_END_F
+master-bin.000001 28775 Table_map 1 28816 table_id: # (test.t1)
+master-bin.000001 28816 Write_rows 1 28850 table_id: # flags: STMT_END_F
+master-bin.000001 28850 Table_map 1 28891 table_id: # (test.t1)
+master-bin.000001 28891 Write_rows 1 28925 table_id: # flags: STMT_END_F
+master-bin.000001 28925 Table_map 1 28966 table_id: # (test.t1)
+master-bin.000001 28966 Write_rows 1 29000 table_id: # flags: STMT_END_F
+master-bin.000001 29000 Table_map 1 29041 table_id: # (test.t1)
+master-bin.000001 29041 Write_rows 1 29075 table_id: # flags: STMT_END_F
+master-bin.000001 29075 Table_map 1 29116 table_id: # (test.t1)
+master-bin.000001 29116 Write_rows 1 29150 table_id: # flags: STMT_END_F
+master-bin.000001 29150 Table_map 1 29191 table_id: # (test.t1)
+master-bin.000001 29191 Write_rows 1 29225 table_id: # flags: STMT_END_F
+master-bin.000001 29225 Table_map 1 29266 table_id: # (test.t1)
+master-bin.000001 29266 Write_rows 1 29300 table_id: # flags: STMT_END_F
+master-bin.000001 29300 Table_map 1 29341 table_id: # (test.t1)
+master-bin.000001 29341 Write_rows 1 29375 table_id: # flags: STMT_END_F
+master-bin.000001 29375 Table_map 1 29416 table_id: # (test.t1)
+master-bin.000001 29416 Write_rows 1 29450 table_id: # flags: STMT_END_F
+master-bin.000001 29450 Table_map 1 29491 table_id: # (test.t1)
+master-bin.000001 29491 Write_rows 1 29525 table_id: # flags: STMT_END_F
+master-bin.000001 29525 Table_map 1 29566 table_id: # (test.t1)
+master-bin.000001 29566 Write_rows 1 29600 table_id: # flags: STMT_END_F
+master-bin.000001 29600 Table_map 1 29641 table_id: # (test.t1)
+master-bin.000001 29641 Write_rows 1 29675 table_id: # flags: STMT_END_F
+master-bin.000001 29675 Table_map 1 29716 table_id: # (test.t1)
+master-bin.000001 29716 Write_rows 1 29750 table_id: # flags: STMT_END_F
+master-bin.000001 29750 Table_map 1 29791 table_id: # (test.t1)
+master-bin.000001 29791 Write_rows 1 29825 table_id: # flags: STMT_END_F
+master-bin.000001 29825 Table_map 1 29866 table_id: # (test.t1)
+master-bin.000001 29866 Write_rows 1 29900 table_id: # flags: STMT_END_F
+master-bin.000001 29900 Table_map 1 29941 table_id: # (test.t1)
+master-bin.000001 29941 Write_rows 1 29975 table_id: # flags: STMT_END_F
+master-bin.000001 29975 Table_map 1 30016 table_id: # (test.t1)
+master-bin.000001 30016 Write_rows 1 30050 table_id: # flags: STMT_END_F
+master-bin.000001 30050 Table_map 1 30091 table_id: # (test.t1)
+master-bin.000001 30091 Write_rows 1 30125 table_id: # flags: STMT_END_F
+master-bin.000001 30125 Table_map 1 30166 table_id: # (test.t1)
+master-bin.000001 30166 Write_rows 1 30200 table_id: # flags: STMT_END_F
+master-bin.000001 30200 Table_map 1 30241 table_id: # (test.t1)
+master-bin.000001 30241 Write_rows 1 30275 table_id: # flags: STMT_END_F
+master-bin.000001 30275 Xid 1 30302 COMMIT /* XID */
+master-bin.000001 30302 Rotate 1 30346 master-bin.000002;pos=4
drop table t1;
set global binlog_cache_size=@bcs;
set session autocommit = @ac;
@@ -1083,13 +1083,13 @@ deallocate prepare stmt;
drop table t1;
show binlog events from 0;
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 4 Format_desc 1 107 Server version, Binlog ver: 4
+master-bin.000001 107 Query 1 228 use `test`; create table t1 (a bigint unsigned, b bigint(20) unsigned)
+master-bin.000001 228 Query 1 296 BEGIN
+master-bin.000001 296 Table_map 1 338 table_id: # (test.t1)
+master-bin.000001 338 Write_rows 1 384 table_id: # flags: STMT_END_F
+master-bin.000001 384 Query 1 453 COMMIT
+master-bin.000001 453 Query 1 529 use `test`; drop table t1
reset master;
CREATE DATABASE bug39182 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
USE bug39182;
@@ -1289,14 +1289,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 347
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 */;
File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000002 106
+master-bin.000002 107
drop table t3;
#
# Bug #45998: database crashes when running "create as select"
diff --git a/mysql-test/suite/binlog/r/binlog_row_ctype_ucs.result b/mysql-test/suite/binlog/r/binlog_row_ctype_ucs.result
index 8daed8d5c25..f0519a9d724 100644
--- a/mysql-test/suite/binlog/r/binlog_row_ctype_ucs.result
+++ b/mysql-test/suite/binlog/r/binlog_row_ctype_ucs.result
@@ -16,7 +16,7 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
SET TIMESTAMP=10000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/suite/binlog/r/binlog_row_failure_mixing_engines.result b/mysql-test/suite/binlog/r/binlog_row_failure_mixing_engines.result
deleted file mode 100644
index 45c8640d3e3..00000000000
--- a/mysql-test/suite/binlog/r/binlog_row_failure_mixing_engines.result
+++ /dev/null
@@ -1,440 +0,0 @@
-###################################################################################
-# CONFIGURATION
-###################################################################################
-CREATE TABLE nt_1 (a text, b int PRIMARY KEY) ENGINE = MyISAM;
-CREATE TABLE nt_2 (a text, b int PRIMARY KEY) ENGINE = MyISAM;
-CREATE TABLE tt_1 (a text, b int PRIMARY KEY) ENGINE = Innodb;
-CREATE TABLE tt_2 (a text, b int PRIMARY KEY) ENGINE = Innodb;
-CREATE TRIGGER tr_i_tt_1_to_nt_1 BEFORE INSERT ON tt_1 FOR EACH ROW
-BEGIN
-INSERT INTO nt_1 VALUES (NEW.a, NEW.b);
-END|
-CREATE TRIGGER tr_i_nt_2_to_tt_2 BEFORE INSERT ON nt_2 FOR EACH ROW
-BEGIN
-INSERT INTO tt_2 VALUES (NEW.a, NEW.b);
-END|
-###################################################################################
-# CHECK HISTORY IN BINLOG
-###################################################################################
-
-
-
-*** "B M* T C" with error in M* generates in the binlog the "B M* R B T C" entries
-
-INSERT INTO nt_1 VALUES ("new text 1", 1);
-BEGIN;
-INSERT INTO tt_1 VALUES (USER(), 2), (USER(), 1);
-ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES ("new text 3", 3);
-COMMIT;
-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 # Table_map # # table_id: # (test.nt_1)
-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.tt_1)
-master-bin.000001 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-INSERT INTO tt_2 VALUES ("new text 4", 4);
-BEGIN;
-INSERT INTO nt_2 VALUES (USER(), 5), (USER(), 4);
-ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES ("new text 6", 6);
-COMMIT;
-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 # Table_map # # table_id: # (test.tt_2)
-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.nt_2)
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-
-
-*** "B M M* T C" with error in M* generates in the binlog the "B M M* T C" entries
-
-INSERT INTO nt_1 VALUES ("new text 10", 10);
-BEGIN;
-INSERT INTO tt_1 VALUES ("new text 7", 7), ("new text 8", 8);
-INSERT INTO tt_1 VALUES (USER(), 9), (USER(), 10);
-ERROR 23000: Duplicate entry '10' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES ("new text 11", 11);
-COMMIT;
-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 # Table_map # # table_id: # (test.nt_1)
-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.tt_1)
-master-bin.000001 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map # # table_id: # (test.tt_1)
-master-bin.000001 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-INSERT INTO tt_2 VALUES ("new text 15", 15);
-BEGIN;
-INSERT INTO nt_2 VALUES ("new text 12", 12), ("new text 13", 13);
-INSERT INTO nt_2 VALUES (USER(), 14), (USER(), 15);
-ERROR 23000: Duplicate entry '15' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES ("new text 16", 16);
-COMMIT;
-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 # Table_map # # table_id: # (test.tt_2)
-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.nt_2)
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map # # table_id: # (test.nt_2)
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-
-
-*** "B M* M* T C" with error in M* generates in the binlog the "B M* R B M* R B T C" entries
-
-INSERT INTO nt_1 VALUES ("new text 18", 18);
-INSERT INTO nt_1 VALUES ("new text 20", 20);
-BEGIN;
-INSERT INTO tt_1 VALUES (USER(), 17), (USER(), 18);
-ERROR 23000: Duplicate entry '18' for key 'PRIMARY'
-INSERT INTO tt_1 VALUES (USER(), 19), (USER(), 20);
-ERROR 23000: Duplicate entry '20' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES ("new text 21", 21);
-COMMIT;
-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 # Table_map # # table_id: # (test.nt_1)
-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.nt_1)
-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.tt_1)
-master-bin.000001 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.tt_1)
-master-bin.000001 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-INSERT INTO tt_2 VALUES ("new text 23", 23);
-INSERT INTO tt_2 VALUES ("new text 25", 25);
-BEGIN;
-INSERT INTO nt_2 VALUES (USER(), 22), (USER(), 23);
-ERROR 23000: Duplicate entry '23' for key 'PRIMARY'
-INSERT INTO nt_2 VALUES (USER(), 24), (USER(), 25);
-ERROR 23000: Duplicate entry '25' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES ("new text 26", 26);
-COMMIT;
-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 # Table_map # # table_id: # (test.tt_2)
-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.tt_2)
-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.nt_2)
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.nt_2)
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-
-
-*** "B T INSERT M...SELECT* C" with an error in INSERT M...SELECT* generates
-*** in the binlog the following entries: "Nothing".
-*** There is a bug in that will be fixed after WL#2687. Please, check BUG#47175 for further details.
-
-TRUNCATE TABLE nt_2;
-TRUNCATE TABLE tt_2;
-INSERT INTO tt_2 VALUES ("new text 7", 7);
-BEGIN;
-INSERT INTO tt_2 VALUES ("new text 27", 27);
-INSERT INTO nt_2(a, b) SELECT USER(), b FROM nt_1;
-ERROR 23000: Duplicate entry '7' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES ("new text 28", 28);
-ROLLBACK;
-show binlog events from <binlog_start>;
-Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_2
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_2
-master-bin.000001 # Xid # # COMMIT /* XID */
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-
-
-*** "B INSERT M..SELECT* C" with an error in INSERT M...SELECT* generates
-*** in the binlog the following entries: "B INSERT M..SELECT* R".
-
-TRUNCATE TABLE nt_2;
-TRUNCATE TABLE tt_2;
-INSERT INTO tt_2 VALUES ("new text 7", 7);
-BEGIN;
-INSERT INTO nt_2(a, b) SELECT USER(), b FROM nt_1;
-ERROR 23000: Duplicate entry '7' for key 'PRIMARY'
-COMMIT;
-show binlog events from <binlog_start>;
-Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_2
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_2
-master-bin.000001 # Xid # # COMMIT /* XID */
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-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.nt_2)
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-
-
-
-*** "B N N T C" generates in the binlog the "B N C B N C B T C" entries
-
-TRUNCATE TABLE nt_1;
-TRUNCATE TABLE tt_2;
-BEGIN;
-INSERT INTO nt_1 VALUES (USER(), 1);
-INSERT INTO nt_1 VALUES (USER(), 2);
-INSERT INTO tt_2 VALUES (USER(), 3);
-COMMIT;
-show binlog events from <binlog_start>;
-Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_1
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_2
-master-bin.000001 # Xid # # COMMIT /* XID */
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.nt_1)
-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.nt_1)
-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.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-
-
-*** "B N N T R" generates in the binlog the "B N C B N C B T R" entries
-
-BEGIN;
-INSERT INTO nt_1 VALUES (USER(), 4);
-INSERT INTO nt_1 VALUES (USER(), 5);
-INSERT INTO tt_2 VALUES (USER(), 6);
-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 # Table_map # # table_id: # (test.nt_1)
-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.nt_1)
-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.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-
-
-
-*** "B N* N* T C" with error in N* generates in the binlog the "B N R B N R B T C" entries
-
-BEGIN;
-INSERT INTO nt_1 VALUES (USER(), 7), (USER(), 1);
-ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
-INSERT INTO nt_1 VALUES (USER(), 8), (USER(), 1);
-ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES (USER(), 9);
-COMMIT;
-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 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-
-
-*** "B N* N* T R" with error in N* generates in the binlog the "B N R B N R B T R" entries
-
-BEGIN;
-INSERT INTO nt_1 VALUES (USER(), 10), (USER(), 1);
-ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
-INSERT INTO nt_1 VALUES (USER(), 11), (USER(), 1);
-ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES (USER(), 12);
-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 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-
-
-
-*** "B N N T N T C" generates in the binlog the "B N C B N C B T N T C" entries
-
-BEGIN;
-INSERT INTO nt_1 VALUES (USER(), 13);
-INSERT INTO nt_1 VALUES (USER(), 14);
-INSERT INTO tt_2 VALUES (USER(), 15);
-INSERT INTO nt_1 VALUES (USER(), 16);
-INSERT INTO tt_2 VALUES (USER(), 17);
-COMMIT;
-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 # Table_map # # table_id: # (test.nt_1)
-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.nt_1)
-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.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid # # COMMIT /* XID */
-
-
-
-*** "B N N T N T R" generates in the binlog the "B N C B N C B T N T R" entries
-
-BEGIN;
-INSERT INTO nt_1 VALUES (USER(), 18);
-INSERT INTO nt_1 VALUES (USER(), 19);
-INSERT INTO tt_2 VALUES (USER(), 20);
-INSERT INTO nt_1 VALUES (USER(), 21);
-INSERT INTO tt_2 VALUES (USER(), 22);
-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 # Table_map # # table_id: # (test.nt_1)
-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.nt_1)
-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.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map # # table_id: # (test.nt_1)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map # # table_id: # (test.tt_2)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
-###################################################################################
-# CLEAN
-###################################################################################
-DROP TABLE tt_1;
-DROP TABLE tt_2;
-DROP TABLE nt_1;
-DROP TABLE nt_2;
diff --git a/mysql-test/suite/binlog/r/binlog_row_innodb_stat.result b/mysql-test/suite/binlog/r/binlog_row_innodb_stat.result
index ca5067c4e1f..637be940383 100644
--- a/mysql-test/suite/binlog/r/binlog_row_innodb_stat.result
+++ b/mysql-test/suite/binlog/r/binlog_row_innodb_stat.result
@@ -9,7 +9,7 @@ drop table if exists t1;
create table t1 (a int) engine=innodb;
show status like "binlog_cache_use";
Variable_name Value
-Binlog_cache_use 1
+Binlog_cache_use 2
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
@@ -18,7 +18,7 @@ delete from t1;
commit;
show status like "binlog_cache_use";
Variable_name Value
-Binlog_cache_use 2
+Binlog_cache_use 4
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
diff --git a/mysql-test/suite/binlog/r/binlog_row_insert_select.result b/mysql-test/suite/binlog/r/binlog_row_insert_select.result
index c7386b092e4..214a77dd36b 100644
--- a/mysql-test/suite/binlog/r/binlog_row_insert_select.result
+++ b/mysql-test/suite/binlog/r/binlog_row_insert_select.result
@@ -11,7 +11,7 @@ Log_name Pos Event_type Server_id End_log_pos Info
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 # # ROLLBACK
+master-bin.000001 # Query # # COMMIT
select * from t1;
a
1
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 87e9b7f8685..e0cb1b695be 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
@@ -1,3 +1,4 @@
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
drop table if exists t1, t2;
create table t1 (a int) engine=innodb;
create table t2 (a int) engine=myisam;
@@ -9,10 +10,12 @@ commit;
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 # Table_map # # table_id: # (test.t1)
-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 # # COMMIT
+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 */
delete from t1;
delete from t2;
@@ -26,11 +29,9 @@ 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 # Table_map # # table_id: # (test.t1)
-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
+master-bin.000001 # Query # # COMMIT
delete from t1;
delete from t2;
reset master;
@@ -46,13 +47,15 @@ commit;
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 # Table_map # # table_id: # (test.t2)
+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 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # use `test`; savepoint my_savepoint
master-bin.000001 # Table_map # # table_id: # (test.t1)
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 # # use `test`; rollback to savepoint my_savepoint
master-bin.000001 # Xid # # COMMIT /* XID */
delete from t1;
@@ -75,13 +78,15 @@ a
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 # Table_map # # table_id: # (test.t2)
+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 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # use `test`; savepoint my_savepoint
master-bin.000001 # Table_map # # table_id: # (test.t1)
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 # # use `test`; rollback to savepoint my_savepoint
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
@@ -101,11 +106,9 @@ get_lock("a",10)
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 # Table_map # # table_id: # (test.t1)
-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
+master-bin.000001 # Query # # COMMIT
delete from t1;
delete from t2;
reset master;
@@ -389,9 +392,7 @@ 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`; TRUNCATE table t2
-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
@@ -432,19 +433,8 @@ select get_lock("a",10);
get_lock("a",10)
1
flush logs;
-select
-(@a:=load_file("MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output"))
-is not null;
-(@a:=load_file("MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output"))
-is not null
-1
-select
-@a like "%#%error_code=0%ROLLBACK\n/*!*/;%ROLLBACK /* added by mysqlbinlog */;%" OR
-@a like "%#%error_code=0%ROLLBACK\r\n/*!*/;%ROLLBACK /* added by mysqlbinlog */;%",
-@a not like "%#%error_code=%error_code=%";
-@a like "%#%error_code=0%ROLLBACK\n/*!*/;%ROLLBACK /* added by mysqlbinlog */;%" OR
-@a like "%#%error_code=0%ROLLBACK\r\n/*!*/;%ROLLBACK /* added by mysqlbinlog */;%" @a not like "%#%error_code=%error_code=%"
-1 1
+This does not matter in ROW mode as the rolled back changes do not contain transactional changes as these
+were previously flushed upon committing/rolling back each statement.
drop table t1, t2;
create temporary table tt (a int unique);
create table ti (a int) engine=innodb;
@@ -461,12 +451,6 @@ count(*)
2
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 # Table_map # # table_id: # (test.ti)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map # # table_id: # (test.ti)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
select count(*) from ti /* zero */;
count(*)
0
@@ -484,6 +468,8 @@ insert into ti values (2) /* to make the dup error in the following */;
insert into tt select * from ti /* one affected and error */;
ERROR 23000: Duplicate entry '2' for key 'a'
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
select count(*) from ti /* zero */;
@@ -517,7 +503,7 @@ 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
+master-bin.000001 # Query # # COMMIT
/* only (!) with fixes for #23333 will show there is the query */;
select count(*) from t1 /* must be 3 */;
count(*)
@@ -559,10 +545,9 @@ ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
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 # 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
+master-bin.000001 # Query # # COMMIT
/* the output must denote there is the query */;
select count(*) from t1 /* must be 1 */;
count(*)
@@ -576,11 +561,9 @@ ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
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 # Table_map # # table_id: # (test.t2)
master-bin.000001 # Table_map # # table_id: # (test.t1)
-master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # COMMIT
/* the output must denote there is the query */;
select count(*) from t1 /* must be 2 */;
count(*)
@@ -598,7 +581,7 @@ master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Update_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # COMMIT
/* the output must denote there is the query */;
select count(*) from t1 /* must be 2 */;
count(*)
@@ -613,10 +596,9 @@ ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
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 # Table_map # # table_id: # (test.t4)
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
+master-bin.000001 # Query # # COMMIT
/* the output must denote there is the query */;
select count(*) from t1 /* must be 4 */;
count(*)
@@ -646,11 +628,10 @@ ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
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 # Table_map # # table_id: # (test.t2)
master-bin.000001 # Table_map # # table_id: # (test.t3)
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
+master-bin.000001 # Query # # COMMIT
/* the output must denote there is the query */;
select count(*) from t1 /* must be 1 */;
count(*)
@@ -669,12 +650,9 @@ ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
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 # Table_map # # table_id: # (test.t2)
master-bin.000001 # Table_map # # table_id: # (test.t1)
-master-bin.000001 # Delete_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
/* the output must denote there is the query */;
select count(*) from t1 /* must be 1 */;
count(*)
@@ -694,12 +672,9 @@ count(*)
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 # Table_map # # table_id: # (test.t4)
master-bin.000001 # Table_map # # table_id: # (test.t1)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # COMMIT
/* the output must denote there is the query */;
drop trigger trg_del_t2;
drop table t1,t2,t3,t4,t5;
@@ -720,12 +695,6 @@ count(*)
2
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 # Table_map # # table_id: # (test.ti)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map # # table_id: # (test.ti)
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
select count(*) from ti /* zero */;
count(*)
0
@@ -743,6 +712,8 @@ insert into ti values (2) /* to make the dup error in the following */;
insert into tt select * from ti /* one affected and error */;
ERROR 23000: Duplicate entry '2' for key 'a'
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
select count(*) from ti /* zero */;
@@ -773,10 +744,9 @@ ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
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 # 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
+master-bin.000001 # Intvar # # INSERT_ID=3
+master-bin.000001 # Query # # use `test`; insert into t2 values (bug27417(2))
+master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 3 */;
count(*)
3
@@ -791,9 +761,8 @@ count(*)
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 # 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 # Intvar # # INSERT_ID=4
+master-bin.000001 # Query # # use `test`; delete from t2 where a=bug27417(3)
master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 5 */;
count(*)
@@ -815,11 +784,6 @@ insert into t2 values (bug27417(1));
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
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 # 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(*) from t1 /* must be 1 */;
count(*)
1
@@ -831,12 +795,6 @@ insert into t2 select bug27417(1) union select bug27417(2);
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
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 # Table_map # # table_id: # (test.t2)
-master-bin.000001 # Table_map # # table_id: # (test.t1)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
select count(*) from t1 /* must be 2 */;
count(*)
2
@@ -848,12 +806,9 @@ ERROR 23000: Duplicate entry '4' for key 'b'
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 # Table_map # # table_id: # (test.t3)
-master-bin.000001 # Table_map # # table_id: # (test.t1)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Update_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Intvar # # INSERT_ID=4
+master-bin.000001 # Query # # use `test`; update t3 set b=b+bug27417(1)
+master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 2 */;
count(*)
2
@@ -866,11 +821,6 @@ UPDATE t4,t3 SET t4.a=t3.a + bug27417(1) /* top level non-ta table */;
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
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 # Table_map # # table_id: # (test.t4)
-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(*) from t1 /* must be 4 */;
count(*)
4
@@ -884,7 +834,7 @@ UPDATE t3,t4 SET t3.a=t4.a + bug27417(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;
@@ -898,12 +848,6 @@ delete from t2;
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
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 # Table_map # # table_id: # (test.t2)
-master-bin.000001 # Table_map # # table_id: # (test.t3)
-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(*) from t1 /* must be 1 */;
count(*)
1
@@ -920,13 +864,6 @@ delete t2.* from t2,t5 where t2.a=t5.a + 1;
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
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 # Table_map # # table_id: # (test.t2)
-master-bin.000001 # Table_map # # table_id: # (test.t1)
-master-bin.000001 # Delete_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
select count(*) from t1 /* must be 1 */;
count(*)
1
@@ -944,13 +881,6 @@ count(*)
2
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 # Table_map # # table_id: # (test.t4)
-master-bin.000001 # Table_map # # table_id: # (test.t1)
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: #
-master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
-master-bin.000001 # Query # # ROLLBACK
drop trigger trg_del_t2;
drop table t1,t2,t3,t4,t5;
drop function bug27417;
diff --git a/mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result b/mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result
index 800bb58e9cc..2d2619983d6 100644
--- a/mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result
+++ b/mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result
@@ -5,14 +5,27 @@ insert delayed into t1 values (300);
FLUSH TABLES;
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 `mtr`; INSERT INTO test_suppressions (pattern) VALUES ( NAME_CONST('pattern',_latin1'Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT' COLLATE 'latin1_swedish_ci'))
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; create table t1 (a int not null auto_increment, primary key (a)) engine=myisam
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert delayed into t1 values (207)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=208
master-bin.000001 # Query # # use `test`; insert delayed into t1 values (null)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert delayed into t1 values (300)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; FLUSH TABLES
insert delayed into t1 values (null),(null),(null),(null);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
insert delayed into t1 values (null),(null),(400),(null);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
select * from t1;
a
207
diff --git a/mysql-test/suite/binlog/r/binlog_stm_binlog.result b/mysql-test/suite/binlog/r/binlog_stm_binlog.result
index eebcfceaa25..baecff8bb85 100644
--- a/mysql-test/suite/binlog/r/binlog_stm_binlog.result
+++ b/mysql-test/suite/binlog/r/binlog_stm_binlog.result
@@ -4,11 +4,11 @@ insert into t1 values (1,2);
commit;
show binlog events;
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 213 use `test`; create table t1 (a int, b int) engine=innodb
-master-bin.000001 213 Query 1 281 BEGIN
-master-bin.000001 281 Query 1 371 use `test`; insert into t1 values (1,2)
-master-bin.000001 371 Xid 1 398 COMMIT /* XID */
+master-bin.000001 4 Format_desc 1 107 Server ver: #, Binlog ver: #
+master-bin.000001 107 Query 1 214 use `test`; create table t1 (a int, b int) engine=innodb
+master-bin.000001 214 Query 1 282 BEGIN
+master-bin.000001 282 Query 1 372 use `test`; insert into t1 values (1,2)
+master-bin.000001 372 Xid 1 399 COMMIT /* XID */
drop table t1;
drop table if exists t1, t2;
reset master;
@@ -36,7 +36,7 @@ create table t1 (n int) engine=innodb;
begin;
commit;
drop table t1;
-show binlog events in 'master-bin.000001' from 106;
+show binlog events in 'master-bin.000001' from 107;
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
@@ -142,7 +142,7 @@ 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;
+show binlog events in 'master-bin.000002' from 107;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000002 # Query 1 # use `test`; drop table t1
set @ac = @@autocommit;
@@ -157,425 +157,425 @@ commit;
drop table t1;
show binlog events from 0;
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 4 Format_desc 1 107 Server version, Binlog ver: 4
+master-bin.000001 107 Query 1 206 use `test`; create table t1(n int) engine=innodb
+master-bin.000001 206 Query 1 274 BEGIN
+master-bin.000001 274 Query 1 362 use `test`; insert into t1 values (1)
+master-bin.000001 362 Query 1 450 use `test`; insert into t1 values (2)
+master-bin.000001 450 Query 1 538 use `test`; insert into t1 values (3)
+master-bin.000001 538 Xid 1 565 COMMIT /* XID */
+master-bin.000001 565 Query 1 641 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;
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 4 Format_desc 1 107 Server version, Binlog ver: 4
+master-bin.000001 107 Query 1 207 use `test`; create table t1 (a int) engine=innodb
+master-bin.000001 207 Query 1 275 BEGIN
+master-bin.000001 275 Query 1 366 use `test`; insert into t1 values( 400 )
+master-bin.000001 366 Query 1 457 use `test`; insert into t1 values( 399 )
+master-bin.000001 457 Query 1 548 use `test`; insert into t1 values( 398 )
+master-bin.000001 548 Query 1 639 use `test`; insert into t1 values( 397 )
+master-bin.000001 639 Query 1 730 use `test`; insert into t1 values( 396 )
+master-bin.000001 730 Query 1 821 use `test`; insert into t1 values( 395 )
+master-bin.000001 821 Query 1 912 use `test`; insert into t1 values( 394 )
+master-bin.000001 912 Query 1 1003 use `test`; insert into t1 values( 393 )
+master-bin.000001 1003 Query 1 1094 use `test`; insert into t1 values( 392 )
+master-bin.000001 1094 Query 1 1185 use `test`; insert into t1 values( 391 )
+master-bin.000001 1185 Query 1 1276 use `test`; insert into t1 values( 390 )
+master-bin.000001 1276 Query 1 1367 use `test`; insert into t1 values( 389 )
+master-bin.000001 1367 Query 1 1458 use `test`; insert into t1 values( 388 )
+master-bin.000001 1458 Query 1 1549 use `test`; insert into t1 values( 387 )
+master-bin.000001 1549 Query 1 1640 use `test`; insert into t1 values( 386 )
+master-bin.000001 1640 Query 1 1731 use `test`; insert into t1 values( 385 )
+master-bin.000001 1731 Query 1 1822 use `test`; insert into t1 values( 384 )
+master-bin.000001 1822 Query 1 1913 use `test`; insert into t1 values( 383 )
+master-bin.000001 1913 Query 1 2004 use `test`; insert into t1 values( 382 )
+master-bin.000001 2004 Query 1 2095 use `test`; insert into t1 values( 381 )
+master-bin.000001 2095 Query 1 2186 use `test`; insert into t1 values( 380 )
+master-bin.000001 2186 Query 1 2277 use `test`; insert into t1 values( 379 )
+master-bin.000001 2277 Query 1 2368 use `test`; insert into t1 values( 378 )
+master-bin.000001 2368 Query 1 2459 use `test`; insert into t1 values( 377 )
+master-bin.000001 2459 Query 1 2550 use `test`; insert into t1 values( 376 )
+master-bin.000001 2550 Query 1 2641 use `test`; insert into t1 values( 375 )
+master-bin.000001 2641 Query 1 2732 use `test`; insert into t1 values( 374 )
+master-bin.000001 2732 Query 1 2823 use `test`; insert into t1 values( 373 )
+master-bin.000001 2823 Query 1 2914 use `test`; insert into t1 values( 372 )
+master-bin.000001 2914 Query 1 3005 use `test`; insert into t1 values( 371 )
+master-bin.000001 3005 Query 1 3096 use `test`; insert into t1 values( 370 )
+master-bin.000001 3096 Query 1 3187 use `test`; insert into t1 values( 369 )
+master-bin.000001 3187 Query 1 3278 use `test`; insert into t1 values( 368 )
+master-bin.000001 3278 Query 1 3369 use `test`; insert into t1 values( 367 )
+master-bin.000001 3369 Query 1 3460 use `test`; insert into t1 values( 366 )
+master-bin.000001 3460 Query 1 3551 use `test`; insert into t1 values( 365 )
+master-bin.000001 3551 Query 1 3642 use `test`; insert into t1 values( 364 )
+master-bin.000001 3642 Query 1 3733 use `test`; insert into t1 values( 363 )
+master-bin.000001 3733 Query 1 3824 use `test`; insert into t1 values( 362 )
+master-bin.000001 3824 Query 1 3915 use `test`; insert into t1 values( 361 )
+master-bin.000001 3915 Query 1 4006 use `test`; insert into t1 values( 360 )
+master-bin.000001 4006 Query 1 4097 use `test`; insert into t1 values( 359 )
+master-bin.000001 4097 Query 1 4188 use `test`; insert into t1 values( 358 )
+master-bin.000001 4188 Query 1 4279 use `test`; insert into t1 values( 357 )
+master-bin.000001 4279 Query 1 4370 use `test`; insert into t1 values( 356 )
+master-bin.000001 4370 Query 1 4461 use `test`; insert into t1 values( 355 )
+master-bin.000001 4461 Query 1 4552 use `test`; insert into t1 values( 354 )
+master-bin.000001 4552 Query 1 4643 use `test`; insert into t1 values( 353 )
+master-bin.000001 4643 Query 1 4734 use `test`; insert into t1 values( 352 )
+master-bin.000001 4734 Query 1 4825 use `test`; insert into t1 values( 351 )
+master-bin.000001 4825 Query 1 4916 use `test`; insert into t1 values( 350 )
+master-bin.000001 4916 Query 1 5007 use `test`; insert into t1 values( 349 )
+master-bin.000001 5007 Query 1 5098 use `test`; insert into t1 values( 348 )
+master-bin.000001 5098 Query 1 5189 use `test`; insert into t1 values( 347 )
+master-bin.000001 5189 Query 1 5280 use `test`; insert into t1 values( 346 )
+master-bin.000001 5280 Query 1 5371 use `test`; insert into t1 values( 345 )
+master-bin.000001 5371 Query 1 5462 use `test`; insert into t1 values( 344 )
+master-bin.000001 5462 Query 1 5553 use `test`; insert into t1 values( 343 )
+master-bin.000001 5553 Query 1 5644 use `test`; insert into t1 values( 342 )
+master-bin.000001 5644 Query 1 5735 use `test`; insert into t1 values( 341 )
+master-bin.000001 5735 Query 1 5826 use `test`; insert into t1 values( 340 )
+master-bin.000001 5826 Query 1 5917 use `test`; insert into t1 values( 339 )
+master-bin.000001 5917 Query 1 6008 use `test`; insert into t1 values( 338 )
+master-bin.000001 6008 Query 1 6099 use `test`; insert into t1 values( 337 )
+master-bin.000001 6099 Query 1 6190 use `test`; insert into t1 values( 336 )
+master-bin.000001 6190 Query 1 6281 use `test`; insert into t1 values( 335 )
+master-bin.000001 6281 Query 1 6372 use `test`; insert into t1 values( 334 )
+master-bin.000001 6372 Query 1 6463 use `test`; insert into t1 values( 333 )
+master-bin.000001 6463 Query 1 6554 use `test`; insert into t1 values( 332 )
+master-bin.000001 6554 Query 1 6645 use `test`; insert into t1 values( 331 )
+master-bin.000001 6645 Query 1 6736 use `test`; insert into t1 values( 330 )
+master-bin.000001 6736 Query 1 6827 use `test`; insert into t1 values( 329 )
+master-bin.000001 6827 Query 1 6918 use `test`; insert into t1 values( 328 )
+master-bin.000001 6918 Query 1 7009 use `test`; insert into t1 values( 327 )
+master-bin.000001 7009 Query 1 7100 use `test`; insert into t1 values( 326 )
+master-bin.000001 7100 Query 1 7191 use `test`; insert into t1 values( 325 )
+master-bin.000001 7191 Query 1 7282 use `test`; insert into t1 values( 324 )
+master-bin.000001 7282 Query 1 7373 use `test`; insert into t1 values( 323 )
+master-bin.000001 7373 Query 1 7464 use `test`; insert into t1 values( 322 )
+master-bin.000001 7464 Query 1 7555 use `test`; insert into t1 values( 321 )
+master-bin.000001 7555 Query 1 7646 use `test`; insert into t1 values( 320 )
+master-bin.000001 7646 Query 1 7737 use `test`; insert into t1 values( 319 )
+master-bin.000001 7737 Query 1 7828 use `test`; insert into t1 values( 318 )
+master-bin.000001 7828 Query 1 7919 use `test`; insert into t1 values( 317 )
+master-bin.000001 7919 Query 1 8010 use `test`; insert into t1 values( 316 )
+master-bin.000001 8010 Query 1 8101 use `test`; insert into t1 values( 315 )
+master-bin.000001 8101 Query 1 8192 use `test`; insert into t1 values( 314 )
+master-bin.000001 8192 Query 1 8283 use `test`; insert into t1 values( 313 )
+master-bin.000001 8283 Query 1 8374 use `test`; insert into t1 values( 312 )
+master-bin.000001 8374 Query 1 8465 use `test`; insert into t1 values( 311 )
+master-bin.000001 8465 Query 1 8556 use `test`; insert into t1 values( 310 )
+master-bin.000001 8556 Query 1 8647 use `test`; insert into t1 values( 309 )
+master-bin.000001 8647 Query 1 8738 use `test`; insert into t1 values( 308 )
+master-bin.000001 8738 Query 1 8829 use `test`; insert into t1 values( 307 )
+master-bin.000001 8829 Query 1 8920 use `test`; insert into t1 values( 306 )
+master-bin.000001 8920 Query 1 9011 use `test`; insert into t1 values( 305 )
+master-bin.000001 9011 Query 1 9102 use `test`; insert into t1 values( 304 )
+master-bin.000001 9102 Query 1 9193 use `test`; insert into t1 values( 303 )
+master-bin.000001 9193 Query 1 9284 use `test`; insert into t1 values( 302 )
+master-bin.000001 9284 Query 1 9375 use `test`; insert into t1 values( 301 )
+master-bin.000001 9375 Query 1 9466 use `test`; insert into t1 values( 300 )
+master-bin.000001 9466 Query 1 9557 use `test`; insert into t1 values( 299 )
+master-bin.000001 9557 Query 1 9648 use `test`; insert into t1 values( 298 )
+master-bin.000001 9648 Query 1 9739 use `test`; insert into t1 values( 297 )
+master-bin.000001 9739 Query 1 9830 use `test`; insert into t1 values( 296 )
+master-bin.000001 9830 Query 1 9921 use `test`; insert into t1 values( 295 )
+master-bin.000001 9921 Query 1 10012 use `test`; insert into t1 values( 294 )
+master-bin.000001 10012 Query 1 10103 use `test`; insert into t1 values( 293 )
+master-bin.000001 10103 Query 1 10194 use `test`; insert into t1 values( 292 )
+master-bin.000001 10194 Query 1 10285 use `test`; insert into t1 values( 291 )
+master-bin.000001 10285 Query 1 10376 use `test`; insert into t1 values( 290 )
+master-bin.000001 10376 Query 1 10467 use `test`; insert into t1 values( 289 )
+master-bin.000001 10467 Query 1 10558 use `test`; insert into t1 values( 288 )
+master-bin.000001 10558 Query 1 10649 use `test`; insert into t1 values( 287 )
+master-bin.000001 10649 Query 1 10740 use `test`; insert into t1 values( 286 )
+master-bin.000001 10740 Query 1 10831 use `test`; insert into t1 values( 285 )
+master-bin.000001 10831 Query 1 10922 use `test`; insert into t1 values( 284 )
+master-bin.000001 10922 Query 1 11013 use `test`; insert into t1 values( 283 )
+master-bin.000001 11013 Query 1 11104 use `test`; insert into t1 values( 282 )
+master-bin.000001 11104 Query 1 11195 use `test`; insert into t1 values( 281 )
+master-bin.000001 11195 Query 1 11286 use `test`; insert into t1 values( 280 )
+master-bin.000001 11286 Query 1 11377 use `test`; insert into t1 values( 279 )
+master-bin.000001 11377 Query 1 11468 use `test`; insert into t1 values( 278 )
+master-bin.000001 11468 Query 1 11559 use `test`; insert into t1 values( 277 )
+master-bin.000001 11559 Query 1 11650 use `test`; insert into t1 values( 276 )
+master-bin.000001 11650 Query 1 11741 use `test`; insert into t1 values( 275 )
+master-bin.000001 11741 Query 1 11832 use `test`; insert into t1 values( 274 )
+master-bin.000001 11832 Query 1 11923 use `test`; insert into t1 values( 273 )
+master-bin.000001 11923 Query 1 12014 use `test`; insert into t1 values( 272 )
+master-bin.000001 12014 Query 1 12105 use `test`; insert into t1 values( 271 )
+master-bin.000001 12105 Query 1 12196 use `test`; insert into t1 values( 270 )
+master-bin.000001 12196 Query 1 12287 use `test`; insert into t1 values( 269 )
+master-bin.000001 12287 Query 1 12378 use `test`; insert into t1 values( 268 )
+master-bin.000001 12378 Query 1 12469 use `test`; insert into t1 values( 267 )
+master-bin.000001 12469 Query 1 12560 use `test`; insert into t1 values( 266 )
+master-bin.000001 12560 Query 1 12651 use `test`; insert into t1 values( 265 )
+master-bin.000001 12651 Query 1 12742 use `test`; insert into t1 values( 264 )
+master-bin.000001 12742 Query 1 12833 use `test`; insert into t1 values( 263 )
+master-bin.000001 12833 Query 1 12924 use `test`; insert into t1 values( 262 )
+master-bin.000001 12924 Query 1 13015 use `test`; insert into t1 values( 261 )
+master-bin.000001 13015 Query 1 13106 use `test`; insert into t1 values( 260 )
+master-bin.000001 13106 Query 1 13197 use `test`; insert into t1 values( 259 )
+master-bin.000001 13197 Query 1 13288 use `test`; insert into t1 values( 258 )
+master-bin.000001 13288 Query 1 13379 use `test`; insert into t1 values( 257 )
+master-bin.000001 13379 Query 1 13470 use `test`; insert into t1 values( 256 )
+master-bin.000001 13470 Query 1 13561 use `test`; insert into t1 values( 255 )
+master-bin.000001 13561 Query 1 13652 use `test`; insert into t1 values( 254 )
+master-bin.000001 13652 Query 1 13743 use `test`; insert into t1 values( 253 )
+master-bin.000001 13743 Query 1 13834 use `test`; insert into t1 values( 252 )
+master-bin.000001 13834 Query 1 13925 use `test`; insert into t1 values( 251 )
+master-bin.000001 13925 Query 1 14016 use `test`; insert into t1 values( 250 )
+master-bin.000001 14016 Query 1 14107 use `test`; insert into t1 values( 249 )
+master-bin.000001 14107 Query 1 14198 use `test`; insert into t1 values( 248 )
+master-bin.000001 14198 Query 1 14289 use `test`; insert into t1 values( 247 )
+master-bin.000001 14289 Query 1 14380 use `test`; insert into t1 values( 246 )
+master-bin.000001 14380 Query 1 14471 use `test`; insert into t1 values( 245 )
+master-bin.000001 14471 Query 1 14562 use `test`; insert into t1 values( 244 )
+master-bin.000001 14562 Query 1 14653 use `test`; insert into t1 values( 243 )
+master-bin.000001 14653 Query 1 14744 use `test`; insert into t1 values( 242 )
+master-bin.000001 14744 Query 1 14835 use `test`; insert into t1 values( 241 )
+master-bin.000001 14835 Query 1 14926 use `test`; insert into t1 values( 240 )
+master-bin.000001 14926 Query 1 15017 use `test`; insert into t1 values( 239 )
+master-bin.000001 15017 Query 1 15108 use `test`; insert into t1 values( 238 )
+master-bin.000001 15108 Query 1 15199 use `test`; insert into t1 values( 237 )
+master-bin.000001 15199 Query 1 15290 use `test`; insert into t1 values( 236 )
+master-bin.000001 15290 Query 1 15381 use `test`; insert into t1 values( 235 )
+master-bin.000001 15381 Query 1 15472 use `test`; insert into t1 values( 234 )
+master-bin.000001 15472 Query 1 15563 use `test`; insert into t1 values( 233 )
+master-bin.000001 15563 Query 1 15654 use `test`; insert into t1 values( 232 )
+master-bin.000001 15654 Query 1 15745 use `test`; insert into t1 values( 231 )
+master-bin.000001 15745 Query 1 15836 use `test`; insert into t1 values( 230 )
+master-bin.000001 15836 Query 1 15927 use `test`; insert into t1 values( 229 )
+master-bin.000001 15927 Query 1 16018 use `test`; insert into t1 values( 228 )
+master-bin.000001 16018 Query 1 16109 use `test`; insert into t1 values( 227 )
+master-bin.000001 16109 Query 1 16200 use `test`; insert into t1 values( 226 )
+master-bin.000001 16200 Query 1 16291 use `test`; insert into t1 values( 225 )
+master-bin.000001 16291 Query 1 16382 use `test`; insert into t1 values( 224 )
+master-bin.000001 16382 Query 1 16473 use `test`; insert into t1 values( 223 )
+master-bin.000001 16473 Query 1 16564 use `test`; insert into t1 values( 222 )
+master-bin.000001 16564 Query 1 16655 use `test`; insert into t1 values( 221 )
+master-bin.000001 16655 Query 1 16746 use `test`; insert into t1 values( 220 )
+master-bin.000001 16746 Query 1 16837 use `test`; insert into t1 values( 219 )
+master-bin.000001 16837 Query 1 16928 use `test`; insert into t1 values( 218 )
+master-bin.000001 16928 Query 1 17019 use `test`; insert into t1 values( 217 )
+master-bin.000001 17019 Query 1 17110 use `test`; insert into t1 values( 216 )
+master-bin.000001 17110 Query 1 17201 use `test`; insert into t1 values( 215 )
+master-bin.000001 17201 Query 1 17292 use `test`; insert into t1 values( 214 )
+master-bin.000001 17292 Query 1 17383 use `test`; insert into t1 values( 213 )
+master-bin.000001 17383 Query 1 17474 use `test`; insert into t1 values( 212 )
+master-bin.000001 17474 Query 1 17565 use `test`; insert into t1 values( 211 )
+master-bin.000001 17565 Query 1 17656 use `test`; insert into t1 values( 210 )
+master-bin.000001 17656 Query 1 17747 use `test`; insert into t1 values( 209 )
+master-bin.000001 17747 Query 1 17838 use `test`; insert into t1 values( 208 )
+master-bin.000001 17838 Query 1 17929 use `test`; insert into t1 values( 207 )
+master-bin.000001 17929 Query 1 18020 use `test`; insert into t1 values( 206 )
+master-bin.000001 18020 Query 1 18111 use `test`; insert into t1 values( 205 )
+master-bin.000001 18111 Query 1 18202 use `test`; insert into t1 values( 204 )
+master-bin.000001 18202 Query 1 18293 use `test`; insert into t1 values( 203 )
+master-bin.000001 18293 Query 1 18384 use `test`; insert into t1 values( 202 )
+master-bin.000001 18384 Query 1 18475 use `test`; insert into t1 values( 201 )
+master-bin.000001 18475 Query 1 18566 use `test`; insert into t1 values( 200 )
+master-bin.000001 18566 Query 1 18657 use `test`; insert into t1 values( 199 )
+master-bin.000001 18657 Query 1 18748 use `test`; insert into t1 values( 198 )
+master-bin.000001 18748 Query 1 18839 use `test`; insert into t1 values( 197 )
+master-bin.000001 18839 Query 1 18930 use `test`; insert into t1 values( 196 )
+master-bin.000001 18930 Query 1 19021 use `test`; insert into t1 values( 195 )
+master-bin.000001 19021 Query 1 19112 use `test`; insert into t1 values( 194 )
+master-bin.000001 19112 Query 1 19203 use `test`; insert into t1 values( 193 )
+master-bin.000001 19203 Query 1 19294 use `test`; insert into t1 values( 192 )
+master-bin.000001 19294 Query 1 19385 use `test`; insert into t1 values( 191 )
+master-bin.000001 19385 Query 1 19476 use `test`; insert into t1 values( 190 )
+master-bin.000001 19476 Query 1 19567 use `test`; insert into t1 values( 189 )
+master-bin.000001 19567 Query 1 19658 use `test`; insert into t1 values( 188 )
+master-bin.000001 19658 Query 1 19749 use `test`; insert into t1 values( 187 )
+master-bin.000001 19749 Query 1 19840 use `test`; insert into t1 values( 186 )
+master-bin.000001 19840 Query 1 19931 use `test`; insert into t1 values( 185 )
+master-bin.000001 19931 Query 1 20022 use `test`; insert into t1 values( 184 )
+master-bin.000001 20022 Query 1 20113 use `test`; insert into t1 values( 183 )
+master-bin.000001 20113 Query 1 20204 use `test`; insert into t1 values( 182 )
+master-bin.000001 20204 Query 1 20295 use `test`; insert into t1 values( 181 )
+master-bin.000001 20295 Query 1 20386 use `test`; insert into t1 values( 180 )
+master-bin.000001 20386 Query 1 20477 use `test`; insert into t1 values( 179 )
+master-bin.000001 20477 Query 1 20568 use `test`; insert into t1 values( 178 )
+master-bin.000001 20568 Query 1 20659 use `test`; insert into t1 values( 177 )
+master-bin.000001 20659 Query 1 20750 use `test`; insert into t1 values( 176 )
+master-bin.000001 20750 Query 1 20841 use `test`; insert into t1 values( 175 )
+master-bin.000001 20841 Query 1 20932 use `test`; insert into t1 values( 174 )
+master-bin.000001 20932 Query 1 21023 use `test`; insert into t1 values( 173 )
+master-bin.000001 21023 Query 1 21114 use `test`; insert into t1 values( 172 )
+master-bin.000001 21114 Query 1 21205 use `test`; insert into t1 values( 171 )
+master-bin.000001 21205 Query 1 21296 use `test`; insert into t1 values( 170 )
+master-bin.000001 21296 Query 1 21387 use `test`; insert into t1 values( 169 )
+master-bin.000001 21387 Query 1 21478 use `test`; insert into t1 values( 168 )
+master-bin.000001 21478 Query 1 21569 use `test`; insert into t1 values( 167 )
+master-bin.000001 21569 Query 1 21660 use `test`; insert into t1 values( 166 )
+master-bin.000001 21660 Query 1 21751 use `test`; insert into t1 values( 165 )
+master-bin.000001 21751 Query 1 21842 use `test`; insert into t1 values( 164 )
+master-bin.000001 21842 Query 1 21933 use `test`; insert into t1 values( 163 )
+master-bin.000001 21933 Query 1 22024 use `test`; insert into t1 values( 162 )
+master-bin.000001 22024 Query 1 22115 use `test`; insert into t1 values( 161 )
+master-bin.000001 22115 Query 1 22206 use `test`; insert into t1 values( 160 )
+master-bin.000001 22206 Query 1 22297 use `test`; insert into t1 values( 159 )
+master-bin.000001 22297 Query 1 22388 use `test`; insert into t1 values( 158 )
+master-bin.000001 22388 Query 1 22479 use `test`; insert into t1 values( 157 )
+master-bin.000001 22479 Query 1 22570 use `test`; insert into t1 values( 156 )
+master-bin.000001 22570 Query 1 22661 use `test`; insert into t1 values( 155 )
+master-bin.000001 22661 Query 1 22752 use `test`; insert into t1 values( 154 )
+master-bin.000001 22752 Query 1 22843 use `test`; insert into t1 values( 153 )
+master-bin.000001 22843 Query 1 22934 use `test`; insert into t1 values( 152 )
+master-bin.000001 22934 Query 1 23025 use `test`; insert into t1 values( 151 )
+master-bin.000001 23025 Query 1 23116 use `test`; insert into t1 values( 150 )
+master-bin.000001 23116 Query 1 23207 use `test`; insert into t1 values( 149 )
+master-bin.000001 23207 Query 1 23298 use `test`; insert into t1 values( 148 )
+master-bin.000001 23298 Query 1 23389 use `test`; insert into t1 values( 147 )
+master-bin.000001 23389 Query 1 23480 use `test`; insert into t1 values( 146 )
+master-bin.000001 23480 Query 1 23571 use `test`; insert into t1 values( 145 )
+master-bin.000001 23571 Query 1 23662 use `test`; insert into t1 values( 144 )
+master-bin.000001 23662 Query 1 23753 use `test`; insert into t1 values( 143 )
+master-bin.000001 23753 Query 1 23844 use `test`; insert into t1 values( 142 )
+master-bin.000001 23844 Query 1 23935 use `test`; insert into t1 values( 141 )
+master-bin.000001 23935 Query 1 24026 use `test`; insert into t1 values( 140 )
+master-bin.000001 24026 Query 1 24117 use `test`; insert into t1 values( 139 )
+master-bin.000001 24117 Query 1 24208 use `test`; insert into t1 values( 138 )
+master-bin.000001 24208 Query 1 24299 use `test`; insert into t1 values( 137 )
+master-bin.000001 24299 Query 1 24390 use `test`; insert into t1 values( 136 )
+master-bin.000001 24390 Query 1 24481 use `test`; insert into t1 values( 135 )
+master-bin.000001 24481 Query 1 24572 use `test`; insert into t1 values( 134 )
+master-bin.000001 24572 Query 1 24663 use `test`; insert into t1 values( 133 )
+master-bin.000001 24663 Query 1 24754 use `test`; insert into t1 values( 132 )
+master-bin.000001 24754 Query 1 24845 use `test`; insert into t1 values( 131 )
+master-bin.000001 24845 Query 1 24936 use `test`; insert into t1 values( 130 )
+master-bin.000001 24936 Query 1 25027 use `test`; insert into t1 values( 129 )
+master-bin.000001 25027 Query 1 25118 use `test`; insert into t1 values( 128 )
+master-bin.000001 25118 Query 1 25209 use `test`; insert into t1 values( 127 )
+master-bin.000001 25209 Query 1 25300 use `test`; insert into t1 values( 126 )
+master-bin.000001 25300 Query 1 25391 use `test`; insert into t1 values( 125 )
+master-bin.000001 25391 Query 1 25482 use `test`; insert into t1 values( 124 )
+master-bin.000001 25482 Query 1 25573 use `test`; insert into t1 values( 123 )
+master-bin.000001 25573 Query 1 25664 use `test`; insert into t1 values( 122 )
+master-bin.000001 25664 Query 1 25755 use `test`; insert into t1 values( 121 )
+master-bin.000001 25755 Query 1 25846 use `test`; insert into t1 values( 120 )
+master-bin.000001 25846 Query 1 25937 use `test`; insert into t1 values( 119 )
+master-bin.000001 25937 Query 1 26028 use `test`; insert into t1 values( 118 )
+master-bin.000001 26028 Query 1 26119 use `test`; insert into t1 values( 117 )
+master-bin.000001 26119 Query 1 26210 use `test`; insert into t1 values( 116 )
+master-bin.000001 26210 Query 1 26301 use `test`; insert into t1 values( 115 )
+master-bin.000001 26301 Query 1 26392 use `test`; insert into t1 values( 114 )
+master-bin.000001 26392 Query 1 26483 use `test`; insert into t1 values( 113 )
+master-bin.000001 26483 Query 1 26574 use `test`; insert into t1 values( 112 )
+master-bin.000001 26574 Query 1 26665 use `test`; insert into t1 values( 111 )
+master-bin.000001 26665 Query 1 26756 use `test`; insert into t1 values( 110 )
+master-bin.000001 26756 Query 1 26847 use `test`; insert into t1 values( 109 )
+master-bin.000001 26847 Query 1 26938 use `test`; insert into t1 values( 108 )
+master-bin.000001 26938 Query 1 27029 use `test`; insert into t1 values( 107 )
+master-bin.000001 27029 Query 1 27120 use `test`; insert into t1 values( 106 )
+master-bin.000001 27120 Query 1 27211 use `test`; insert into t1 values( 105 )
+master-bin.000001 27211 Query 1 27302 use `test`; insert into t1 values( 104 )
+master-bin.000001 27302 Query 1 27393 use `test`; insert into t1 values( 103 )
+master-bin.000001 27393 Query 1 27484 use `test`; insert into t1 values( 102 )
+master-bin.000001 27484 Query 1 27575 use `test`; insert into t1 values( 101 )
+master-bin.000001 27575 Query 1 27666 use `test`; insert into t1 values( 100 )
+master-bin.000001 27666 Query 1 27756 use `test`; insert into t1 values( 99 )
+master-bin.000001 27756 Query 1 27846 use `test`; insert into t1 values( 98 )
+master-bin.000001 27846 Query 1 27936 use `test`; insert into t1 values( 97 )
+master-bin.000001 27936 Query 1 28026 use `test`; insert into t1 values( 96 )
+master-bin.000001 28026 Query 1 28116 use `test`; insert into t1 values( 95 )
+master-bin.000001 28116 Query 1 28206 use `test`; insert into t1 values( 94 )
+master-bin.000001 28206 Query 1 28296 use `test`; insert into t1 values( 93 )
+master-bin.000001 28296 Query 1 28386 use `test`; insert into t1 values( 92 )
+master-bin.000001 28386 Query 1 28476 use `test`; insert into t1 values( 91 )
+master-bin.000001 28476 Query 1 28566 use `test`; insert into t1 values( 90 )
+master-bin.000001 28566 Query 1 28656 use `test`; insert into t1 values( 89 )
+master-bin.000001 28656 Query 1 28746 use `test`; insert into t1 values( 88 )
+master-bin.000001 28746 Query 1 28836 use `test`; insert into t1 values( 87 )
+master-bin.000001 28836 Query 1 28926 use `test`; insert into t1 values( 86 )
+master-bin.000001 28926 Query 1 29016 use `test`; insert into t1 values( 85 )
+master-bin.000001 29016 Query 1 29106 use `test`; insert into t1 values( 84 )
+master-bin.000001 29106 Query 1 29196 use `test`; insert into t1 values( 83 )
+master-bin.000001 29196 Query 1 29286 use `test`; insert into t1 values( 82 )
+master-bin.000001 29286 Query 1 29376 use `test`; insert into t1 values( 81 )
+master-bin.000001 29376 Query 1 29466 use `test`; insert into t1 values( 80 )
+master-bin.000001 29466 Query 1 29556 use `test`; insert into t1 values( 79 )
+master-bin.000001 29556 Query 1 29646 use `test`; insert into t1 values( 78 )
+master-bin.000001 29646 Query 1 29736 use `test`; insert into t1 values( 77 )
+master-bin.000001 29736 Query 1 29826 use `test`; insert into t1 values( 76 )
+master-bin.000001 29826 Query 1 29916 use `test`; insert into t1 values( 75 )
+master-bin.000001 29916 Query 1 30006 use `test`; insert into t1 values( 74 )
+master-bin.000001 30006 Query 1 30096 use `test`; insert into t1 values( 73 )
+master-bin.000001 30096 Query 1 30186 use `test`; insert into t1 values( 72 )
+master-bin.000001 30186 Query 1 30276 use `test`; insert into t1 values( 71 )
+master-bin.000001 30276 Query 1 30366 use `test`; insert into t1 values( 70 )
+master-bin.000001 30366 Query 1 30456 use `test`; insert into t1 values( 69 )
+master-bin.000001 30456 Query 1 30546 use `test`; insert into t1 values( 68 )
+master-bin.000001 30546 Query 1 30636 use `test`; insert into t1 values( 67 )
+master-bin.000001 30636 Query 1 30726 use `test`; insert into t1 values( 66 )
+master-bin.000001 30726 Query 1 30816 use `test`; insert into t1 values( 65 )
+master-bin.000001 30816 Query 1 30906 use `test`; insert into t1 values( 64 )
+master-bin.000001 30906 Query 1 30996 use `test`; insert into t1 values( 63 )
+master-bin.000001 30996 Query 1 31086 use `test`; insert into t1 values( 62 )
+master-bin.000001 31086 Query 1 31176 use `test`; insert into t1 values( 61 )
+master-bin.000001 31176 Query 1 31266 use `test`; insert into t1 values( 60 )
+master-bin.000001 31266 Query 1 31356 use `test`; insert into t1 values( 59 )
+master-bin.000001 31356 Query 1 31446 use `test`; insert into t1 values( 58 )
+master-bin.000001 31446 Query 1 31536 use `test`; insert into t1 values( 57 )
+master-bin.000001 31536 Query 1 31626 use `test`; insert into t1 values( 56 )
+master-bin.000001 31626 Query 1 31716 use `test`; insert into t1 values( 55 )
+master-bin.000001 31716 Query 1 31806 use `test`; insert into t1 values( 54 )
+master-bin.000001 31806 Query 1 31896 use `test`; insert into t1 values( 53 )
+master-bin.000001 31896 Query 1 31986 use `test`; insert into t1 values( 52 )
+master-bin.000001 31986 Query 1 32076 use `test`; insert into t1 values( 51 )
+master-bin.000001 32076 Query 1 32166 use `test`; insert into t1 values( 50 )
+master-bin.000001 32166 Query 1 32256 use `test`; insert into t1 values( 49 )
+master-bin.000001 32256 Query 1 32346 use `test`; insert into t1 values( 48 )
+master-bin.000001 32346 Query 1 32436 use `test`; insert into t1 values( 47 )
+master-bin.000001 32436 Query 1 32526 use `test`; insert into t1 values( 46 )
+master-bin.000001 32526 Query 1 32616 use `test`; insert into t1 values( 45 )
+master-bin.000001 32616 Query 1 32706 use `test`; insert into t1 values( 44 )
+master-bin.000001 32706 Query 1 32796 use `test`; insert into t1 values( 43 )
+master-bin.000001 32796 Query 1 32886 use `test`; insert into t1 values( 42 )
+master-bin.000001 32886 Query 1 32976 use `test`; insert into t1 values( 41 )
+master-bin.000001 32976 Query 1 33066 use `test`; insert into t1 values( 40 )
+master-bin.000001 33066 Query 1 33156 use `test`; insert into t1 values( 39 )
+master-bin.000001 33156 Query 1 33246 use `test`; insert into t1 values( 38 )
+master-bin.000001 33246 Query 1 33336 use `test`; insert into t1 values( 37 )
+master-bin.000001 33336 Query 1 33426 use `test`; insert into t1 values( 36 )
+master-bin.000001 33426 Query 1 33516 use `test`; insert into t1 values( 35 )
+master-bin.000001 33516 Query 1 33606 use `test`; insert into t1 values( 34 )
+master-bin.000001 33606 Query 1 33696 use `test`; insert into t1 values( 33 )
+master-bin.000001 33696 Query 1 33786 use `test`; insert into t1 values( 32 )
+master-bin.000001 33786 Query 1 33876 use `test`; insert into t1 values( 31 )
+master-bin.000001 33876 Query 1 33966 use `test`; insert into t1 values( 30 )
+master-bin.000001 33966 Query 1 34056 use `test`; insert into t1 values( 29 )
+master-bin.000001 34056 Query 1 34146 use `test`; insert into t1 values( 28 )
+master-bin.000001 34146 Query 1 34236 use `test`; insert into t1 values( 27 )
+master-bin.000001 34236 Query 1 34326 use `test`; insert into t1 values( 26 )
+master-bin.000001 34326 Query 1 34416 use `test`; insert into t1 values( 25 )
+master-bin.000001 34416 Query 1 34506 use `test`; insert into t1 values( 24 )
+master-bin.000001 34506 Query 1 34596 use `test`; insert into t1 values( 23 )
+master-bin.000001 34596 Query 1 34686 use `test`; insert into t1 values( 22 )
+master-bin.000001 34686 Query 1 34776 use `test`; insert into t1 values( 21 )
+master-bin.000001 34776 Query 1 34866 use `test`; insert into t1 values( 20 )
+master-bin.000001 34866 Query 1 34956 use `test`; insert into t1 values( 19 )
+master-bin.000001 34956 Query 1 35046 use `test`; insert into t1 values( 18 )
+master-bin.000001 35046 Query 1 35136 use `test`; insert into t1 values( 17 )
+master-bin.000001 35136 Query 1 35226 use `test`; insert into t1 values( 16 )
+master-bin.000001 35226 Query 1 35316 use `test`; insert into t1 values( 15 )
+master-bin.000001 35316 Query 1 35406 use `test`; insert into t1 values( 14 )
+master-bin.000001 35406 Query 1 35496 use `test`; insert into t1 values( 13 )
+master-bin.000001 35496 Query 1 35586 use `test`; insert into t1 values( 12 )
+master-bin.000001 35586 Query 1 35676 use `test`; insert into t1 values( 11 )
+master-bin.000001 35676 Query 1 35766 use `test`; insert into t1 values( 10 )
+master-bin.000001 35766 Query 1 35855 use `test`; insert into t1 values( 9 )
+master-bin.000001 35855 Query 1 35944 use `test`; insert into t1 values( 8 )
+master-bin.000001 35944 Query 1 36033 use `test`; insert into t1 values( 7 )
+master-bin.000001 36033 Query 1 36122 use `test`; insert into t1 values( 6 )
+master-bin.000001 36122 Query 1 36211 use `test`; insert into t1 values( 5 )
+master-bin.000001 36211 Query 1 36300 use `test`; insert into t1 values( 4 )
+master-bin.000001 36300 Query 1 36389 use `test`; insert into t1 values( 3 )
+master-bin.000001 36389 Query 1 36478 use `test`; insert into t1 values( 2 )
+master-bin.000001 36478 Query 1 36567 use `test`; insert into t1 values( 1 )
+master-bin.000001 36567 Xid 1 36594 COMMIT /* XID */
+master-bin.000001 36594 Rotate 1 36638 master-bin.000002;pos=4
drop table t1;
set global binlog_cache_size=@bcs;
set session autocommit = @ac;
@@ -590,10 +590,12 @@ deallocate prepare stmt;
drop table t1;
show binlog events from 0;
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 4 Format_desc 1 107 Server version, Binlog ver: 4
+master-bin.000001 107 Query 1 228 use `test`; create table t1 (a bigint unsigned, b bigint(20) unsigned)
+master-bin.000001 228 Query 1 296 BEGIN
+master-bin.000001 296 Query 1 420 use `test`; insert into t1 values (9999999999999999,14632475938453979136)
+master-bin.000001 420 Query 1 489 COMMIT
+master-bin.000001 489 Query 1 565 use `test`; drop table t1
reset master;
CREATE DATABASE bug39182 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
USE bug39182;
@@ -699,16 +701,24 @@ use test;
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 (id tinyint auto_increment primary key)
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=127
master-bin.000001 # Query # # use `test`; insert into t1 values(null)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; drop table t1
master-bin.000001 # Query # # use `test`; create table t1 (a int)
master-bin.000001 # Query # # use `test`; create table if not exists t2 select * from t1
master-bin.000001 # Query # # use `test`; create temporary table tt1 (a int)
master-bin.000001 # Query # # use `test`; create table if not exists t3 like tt1
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `mysql`; INSERT INTO user SET host='localhost', user='@#@', password=password('Just a test')
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `mysql`; UPDATE user SET password=password('Another password') WHERE host='localhost' AND user='@#@'
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `mysql`; DELETE FROM user WHERE host='localhost' AND user='@#@'
+master-bin.000001 # Query # # COMMIT
drop table t1,t2,t3,tt1;
create table t1 (a int not null auto_increment, primary key (a)) engine=myisam;
insert delayed into t1 values (207);
@@ -718,16 +728,24 @@ FLUSH TABLES;
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 (id tinyint auto_increment primary key)
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=127
master-bin.000001 # Query # # use `test`; insert into t1 values(null)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; drop table t1
master-bin.000001 # Query # # use `test`; create table t1 (a int)
master-bin.000001 # Query # # use `test`; create table if not exists t2 select * from t1
master-bin.000001 # Query # # use `test`; create temporary table tt1 (a int)
master-bin.000001 # Query # # use `test`; create table if not exists t3 like tt1
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `mysql`; INSERT INTO user SET host='localhost', user='@#@', password=password('Just a test')
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `mysql`; UPDATE user SET password=password('Another password') WHERE host='localhost' AND user='@#@'
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `mysql`; DELETE FROM user WHERE host='localhost' AND user='@#@'
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; drop table t1,t2,t3,tt1
master-bin.000001 # Query # # use `test`; create table t1 (a int not null auto_increment, primary key (a)) engine=myisam
master-bin.000001 # Query # # BEGIN
@@ -764,14 +782,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 347
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 */;
File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000002 106
+master-bin.000002 107
drop table t3;
#
# Bug #45998: database crashes when running "create as select"
@@ -799,7 +817,9 @@ SHOW BINLOG EVENTS;
Log_name Pos Event_type Server_id End_log_pos Info
# # Format_desc 1 # Server ver: #, Binlog ver: #
# # Query 1 # use `test`; CREATE TABLE t1 (a INT PRIMARY KEY)
+# # Query 1 # BEGIN
# # Query 1 # use `test`; INSERT INTO t1 VALUES (1)
+# # Query 1 # COMMIT
# # Query 1 # BEGIN
# # Table_map 1 # table_id: # (test.t1)
# # Write_rows 1 # table_id: # flags: STMT_END_F
diff --git a/mysql-test/suite/binlog/r/binlog_stm_blackhole.result b/mysql-test/suite/binlog/r/binlog_stm_blackhole.result
index b2e6ac854cf..4c1b423720e 100644
--- a/mysql-test/suite/binlog/r/binlog_stm_blackhole.result
+++ b/mysql-test/suite/binlog/r/binlog_stm_blackhole.result
@@ -1,3 +1,4 @@
+CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
drop table if exists t1,t2;
CREATE TABLE t1 (
Period smallint(4) unsigned zerofill DEFAULT '0000' NOT NULL,
diff --git a/mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result b/mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result
index b7edf7fedb8..4bdafb609a7 100644
--- a/mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result
+++ b/mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result
@@ -5,26 +5,34 @@ reset master;
insert into t2 values (@v);
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 # User var # # @`v`=_ucs2 0x006100620063 COLLATE ucs2_general_ci
master-bin.000001 # Query # # use `test`; insert into t2 values (@v)
+master-bin.000001 # Query # # COMMIT
flush logs;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
-SET @`v`:=_ucs2 0x006100620063 COLLATE `ucs2_general_ci`/*!*/;
-use test/*!*/;
SET TIMESTAMP=10000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
+BEGIN
+/*!*/;
+SET @`v`:=_ucs2 0x006100620063 COLLATE `ucs2_general_ci`/*!*/;
+use test/*!*/;
+SET TIMESTAMP=10000/*!*/;
insert into t2 values (@v)
/*!*/;
+SET TIMESTAMP=10000/*!*/;
+COMMIT
+/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
diff --git a/mysql-test/suite/binlog/r/binlog_stm_do_db.result b/mysql-test/suite/binlog/r/binlog_stm_do_db.result
index ab4ba7cdca1..63421a968a4 100644
--- a/mysql-test/suite/binlog/r/binlog_stm_do_db.result
+++ b/mysql-test/suite/binlog/r/binlog_stm_do_db.result
@@ -25,11 +25,11 @@ use b42829;
### binlog-do-db is not filtering used database
BEGIN;
INSERT INTO t2 VALUES (1,2), (1,3), (1,4);
-ERROR HY000: Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
+ERROR HY000: Cannot execute statement: binlogging impossible since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
UPDATE b42829_filtered.t1 ft1, b42829.t1 nft1 SET ft1.x=1, nft1.x=2;
-ERROR HY000: Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
+ERROR HY000: Cannot execute statement: binlogging impossible since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
INSERT INTO t1 SELECT * FROM t2;
-ERROR HY000: Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
+ERROR HY000: Cannot execute statement: binlogging impossible since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
COMMIT;
### assertion: filtered events did not make into the binlog
show binlog events from <binlog_start>;
diff --git a/mysql-test/suite/binlog/r/binlog_stm_innodb_stat.result b/mysql-test/suite/binlog/r/binlog_stm_innodb_stat.result
index ca5067c4e1f..637be940383 100644
--- a/mysql-test/suite/binlog/r/binlog_stm_innodb_stat.result
+++ b/mysql-test/suite/binlog/r/binlog_stm_innodb_stat.result
@@ -9,7 +9,7 @@ drop table if exists t1;
create table t1 (a int) engine=innodb;
show status like "binlog_cache_use";
Variable_name Value
-Binlog_cache_use 1
+Binlog_cache_use 2
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
@@ -18,7 +18,7 @@ delete from t1;
commit;
show status like "binlog_cache_use";
Variable_name Value
-Binlog_cache_use 2
+Binlog_cache_use 4
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
diff --git a/mysql-test/suite/binlog/r/binlog_stm_insert_select.result b/mysql-test/suite/binlog/r/binlog_stm_insert_select.result
index a93a8edf4aa..72036d89b9e 100644
--- a/mysql-test/suite/binlog/r/binlog_stm_insert_select.result
+++ b/mysql-test/suite/binlog/r/binlog_stm_insert_select.result
@@ -8,7 +8,9 @@ insert into t1 select * from t2;
ERROR 23000: Duplicate entry '2' for key 'a'
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 t1 select * from t2
+master-bin.000001 # Query # # COMMIT
select * from t1;
a
1
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 e2f29295383..11525df9c24 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
@@ -1,4 +1,5 @@
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
drop table if exists t1, t2;
create table t1 (a int) engine=innodb;
create table t2 (a int) engine=myisam;
@@ -6,6 +7,8 @@ reset master;
begin;
insert into t1 values(1);
insert into t2 select * from t1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
commit;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
@@ -19,6 +22,8 @@ reset master;
begin;
insert into t1 values(2);
insert into t2 select * from t1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
rollback;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
@@ -36,6 +41,8 @@ insert into t1 values(3);
savepoint my_savepoint;
insert into t1 values(4);
insert into t2 select * from t1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
rollback to savepoint my_savepoint;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
@@ -57,6 +64,8 @@ insert into t1 values(5);
savepoint my_savepoint;
insert into t1 values(6);
insert into t2 select * from t1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
rollback to savepoint my_savepoint;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
@@ -85,6 +94,8 @@ get_lock("a",10)
begin;
insert into t1 values(8);
insert into t2 select * from t1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
select get_lock("a",10);
get_lock("a",10)
1
@@ -99,24 +110,32 @@ delete from t2;
reset master;
insert into t1 values(9);
insert into t2 select * from t1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
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 t1 values(9)
master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t2 select * from t1
+master-bin.000001 # Query # # COMMIT
delete from t1;
delete from t2;
reset master;
insert into t1 values(10);
begin;
insert into t2 select * from t1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
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 t1 values(10)
master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t2 select * from t1
+master-bin.000001 # Query # # COMMIT
insert into t1 values(11);
commit;
show binlog events from <binlog_start>;
@@ -124,7 +143,9 @@ Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 values(10)
master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t2 select * from t1
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 values(11)
master-bin.000001 # Xid # # COMMIT /* XID */
@@ -226,7 +247,7 @@ insert t0 select * from t1;
set autocommit=1;
insert into t0 select GET_LOCK("lock1",null);
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
set autocommit=0;
create table t2 (n int) engine=innodb;
insert into t2 values (3);
@@ -249,17 +270,29 @@ master-bin.000001 # Query # # use `test`; alter table t2 engine=MyISAM
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 values (1)
master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t2 values (20)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; drop table t1,t2
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; create temporary table ti (a int) engine=innodb
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into ti values(1)
master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; create temporary table t1 (a int) engine=myisam
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert t1 values (1)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; create table t0 (n int)
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert t0 select * from t1
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t0 select GET_LOCK("lock1",null)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; create table t2 (n int) engine=innodb
master-bin.000001 # Query # # use `test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `t1`,`ti`
do release_lock("lock1");
@@ -343,24 +376,42 @@ a b
DROP TABLE t1,t2;
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 t1 values (1,1),(1,2)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; DROP TABLE if exists t2
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 values (3,3)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS t2
master-bin.000001 # Query # # use `test`; CREATE TABLE t2 (a int, b int, primary key (a)) engine=innodb
-master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (4,4)
master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (4,4)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; TRUNCATE table t2
-master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (5,5)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; DROP TABLE t2
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 values (6,6)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE t2 (a int, b int, primary key (a)) engine=innodb
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 values (7,7)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 values (8,8)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 values (9,9)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; TRUNCATE table t2
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 values (10,10)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t2 values (100,100)
master-bin.000001 # Query # # COMMIT
@@ -374,6 +425,8 @@ get_lock("a",10)
begin;
insert into t1 values(8);
insert into t2 select * from t1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
select get_lock("a",10);
get_lock("a",10)
1
@@ -399,6 +452,8 @@ begin;
insert into ti values (1);
insert into ti values (2) ;
insert into tt select * from ti;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
rollback;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
@@ -416,6 +471,8 @@ select count(*) from ti /* zero */;
count(*)
0
insert into ti select * from tt;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
select * from ti /* that is what slave would miss - a bug */;
a
1
@@ -442,6 +499,8 @@ select count(*) from ti /* zero */;
count(*)
0
insert into ti select * from tt;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
select * from tt /* that is what otherwise slave missed - the bug */;
a
1
@@ -459,14 +518,20 @@ return n;
end|
reset master;
insert into t2 values (bug27417(1));
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
insert into t2 select bug27417(2);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
reset master;
insert into t2 values (bug27417(2));
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
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 # Intvar # # INSERT_ID=3
master-bin.000001 # Query # # use `test`; insert into t2 values (bug27417(2))
+master-bin.000001 # Query # # COMMIT
/* only (!) with fixes for #23333 will show there is the query */;
select count(*) from t1 /* must be 3 */;
count(*)
@@ -476,19 +541,25 @@ select count(*) from t2;
count(*)
2
delete from t2 where a=bug27417(3);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
select count(*) from t2 /* nothing got deleted */;
count(*)
2
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 # Intvar # # INSERT_ID=4
master-bin.000001 # Query # # use `test`; delete from t2 where a=bug27417(3)
+master-bin.000001 # Query # # COMMIT
/* the query must be in regardless of #23333 */;
select count(*) from t1 /* must be 5 */;
count(*)
5
delete t2 from t2 where t2.a=bug27417(100) /* must not affect t2 */;
affected rows: 0
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
select count(*) from t1 /* must be 7 */;
count(*)
7
@@ -535,8 +606,10 @@ update t3 set b=b+bug27417(1);
ERROR 23000: Duplicate entry '4' for key 'b'
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 # Intvar # # INSERT_ID=4
master-bin.000001 # Query # # use `test`; update t3 set b=b+bug27417(1)
+master-bin.000001 # Query # # COMMIT
/* the output must denote there is the query */;
select count(*) from t1 /* must be 2 */;
count(*)
@@ -643,6 +716,8 @@ begin;
insert into ti values (1);
insert into ti values (2) ;
insert into tt select * from ti;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
rollback;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
@@ -660,6 +735,8 @@ select count(*) from ti /* zero */;
count(*)
0
insert into ti select * from tt;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
select * from ti /* that is what slave would miss - bug#28960 */;
a
1
@@ -686,6 +763,8 @@ select count(*) from ti /* zero */;
count(*)
0
insert into ti select * from tt;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
select * from tt /* that is what otherwise slave missed - the bug */;
a
1
@@ -703,14 +782,20 @@ return n;
end|
reset master;
insert into t2 values (bug27417(1));
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
insert into t2 select bug27417(2);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
reset master;
insert into t2 values (bug27417(2));
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
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 # Intvar # # INSERT_ID=3
master-bin.000001 # Query # # use `test`; insert into t2 values (bug27417(2))
+master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 3 */;
count(*)
3
@@ -719,18 +804,24 @@ select count(*) from t2;
count(*)
2
delete from t2 where a=bug27417(3);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
select count(*) from t2 /* nothing got deleted */;
count(*)
2
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 # Intvar # # INSERT_ID=4
master-bin.000001 # Query # # use `test`; delete from t2 where a=bug27417(3)
+master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 5 */;
count(*)
5
delete t2 from t2 where t2.a=bug27417(100) /* must not affect t2 */;
affected rows: 0
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
select count(*) from t1 /* must be 7 */;
count(*)
7
@@ -775,8 +866,10 @@ update t3 set b=b+bug27417(1);
ERROR 23000: Duplicate entry '4' for key 'b'
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 # Intvar # # INSERT_ID=4
master-bin.000001 # Query # # use `test`; update t3 set b=b+bug27417(1)
+master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 2 */;
count(*)
2
diff --git a/mysql-test/suite/binlog/r/binlog_stm_ps.result b/mysql-test/suite/binlog/r/binlog_stm_ps.result
index 3af525e297c..43e8af8a272 100644
--- a/mysql-test/suite/binlog/r/binlog_stm_ps.result
+++ b/mysql-test/suite/binlog/r/binlog_stm_ps.result
@@ -11,12 +11,18 @@ prepare s from "insert into t1 select 100 limit ?";
set @a=100;
execute s using @a;
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
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)
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # User var # # @`a`=98
master-bin.000001 # Query # # use `test`; insert into t1 values (@a),(98)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 values (99)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 select 100 limit 100
+master-bin.000001 # Query # # COMMIT
drop table t1;
diff --git a/mysql-test/suite/binlog/r/binlog_stm_row.result b/mysql-test/suite/binlog/r/binlog_stm_row.result
index e74a05e8827..08be2d10bc3 100644
--- a/mysql-test/suite/binlog/r/binlog_stm_row.result
+++ b/mysql-test/suite/binlog/r/binlog_stm_row.result
@@ -1,4 +1,4 @@
-CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
+CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
set @saved_global_binlog_format = @@global.binlog_format;
@@ -31,7 +31,7 @@ RELEASE_LOCK('Bug#34306')
1
# con2
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
SELECT RELEASE_LOCK('Bug#34306');
RELEASE_LOCK('Bug#34306')
1
@@ -63,11 +63,21 @@ master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS t1
master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS t2
master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT)
master-bin.000001 # Query # # use `test`; CREATE TABLE t2 LIKE t1
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES(1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES(2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 SELECT * FROM t2 WHERE GET_LOCK('Bug#34306', 120)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES (3)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES (4)
+master-bin.000001 # Query # # COMMIT
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
diff --git a/mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result b/mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result
index edbd878982b..c2445aa1d1a 100644
--- a/mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result
+++ b/mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result
@@ -1,13 +1,15 @@
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted. .*");
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave. .*");
### NOT filtered database => assertion: warnings ARE shown
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a int, b int, primary key (a));
INSERT INTO t1 VALUES (1,2), (2,3);
UPDATE t1 SET b='4' WHERE a=1 LIMIT 1;
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
UPDATE t1 SET b='5' WHERE a=2 ORDER BY a LIMIT 1;
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
DROP TABLE t1;
### NOT filtered database => assertion: binlog disabled and warnings ARE NOT shown
SET SQL_LOG_BIN= 0;
@@ -38,11 +40,11 @@ CREATE TABLE t1 (a VARCHAR(36), b VARCHAR(10));
SET GLOBAL LOG_WARNINGS = 0;
INSERT INTO t1 VALUES(UUID(), 'Bug#46265');
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
SET GLOBAL LOG_WARNINGS = 1;
INSERT INTO t1 VALUES(UUID(), 'Bug#46265');
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
DROP TABLE t1;
SET GLOBAL log_warnings = @old_log_warnings;
# Count the number of times the "Unsafe" message was printed
diff --git a/mysql-test/suite/binlog/r/binlog_tmp_table.result b/mysql-test/suite/binlog/r/binlog_tmp_table.result
index 14b1963ffd9..e4928432324 100644
--- a/mysql-test/suite/binlog/r/binlog_tmp_table.result
+++ b/mysql-test/suite/binlog/r/binlog_tmp_table.result
@@ -1,4 +1,3 @@
-RESET MASTER;
create table foo (a int);
flush logs;
create temporary table tmp1_foo like foo;
diff --git a/mysql-test/suite/binlog/r/binlog_unsafe.result b/mysql-test/suite/binlog/r/binlog_unsafe.result
index 6b2a83c9483..e282bc5bd00 100644
--- a/mysql-test/suite/binlog/r/binlog_unsafe.result
+++ b/mysql-test/suite/binlog/r/binlog_unsafe.result
@@ -1,210 +1,2985 @@
-==== Setup tables ====
-CREATE TABLE t1 (a INT);
-CREATE TABLE t2 (a CHAR(40));
-CREATE TABLE t3 (a INT AUTO_INCREMENT PRIMARY KEY);
-CREATE TABLE trigger_table (a CHAR(7));
-CREATE TABLE trigger_table2 (a INT);
-==== Non-deterministic statements ====
-INSERT DELAYED INTO t1 VALUES (5);
-==== Some variables that *should* be unsafe ====
----- Insert directly ----
-INSERT INTO t1 VALUES (@@global.sync_binlog);
+#### Setup tables ####
+CREATE TABLE t0 (a CHAR(100));
+CREATE TABLE t1 (a CHAR(100));
+CREATE TABLE t2 (a CHAR(100));
+CREATE TABLE t3 (a CHAR(100));
+CREATE TABLE ta0 (a CHAR(100));
+CREATE TABLE ta1 (a CHAR(100));
+CREATE TABLE ta2 (a CHAR(100));
+CREATE TABLE ta3 (a CHAR(100));
+CREATE TABLE autoinc_table (a INT PRIMARY KEY AUTO_INCREMENT);
+CREATE TABLE data_table (a CHAR(100));
+INSERT INTO data_table VALUES ('foo');
+CREATE TABLE trigger_table_1 (a INT);
+CREATE TABLE trigger_table_2 (a INT);
+CREATE TABLE trigger_table_3 (a INT);
+CREATE TABLE double_autoinc_table (a INT PRIMARY KEY AUTO_INCREMENT);
+CREATE TRIGGER double_autoinc_trig
+BEFORE INSERT ON double_autoinc_table FOR EACH ROW
+BEGIN
+INSERT INTO autoinc_table VALUES (NULL);
+END|
+CREATE FUNCTION multi_unsafe_func() RETURNS INT
+BEGIN
+INSERT INTO t0 VALUES(CONCAT(@@hostname, @@hostname));
+INSERT INTO t0 VALUES(0);
+INSERT INTO t0 VALUES(CONCAT(UUID(), @@hostname));
+RETURN 1;
+END|
+CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "UDF_EXAMPLE_LIB";
+
+==== Testing UUID() unsafeness ====
+
+Invoking function func_retval_1 returning value from unsafe UUID() function.
+CREATE FUNCTION func_retval_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES (47); RETURN UUID(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t1 VALUES (func_retval_1());
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-INSERT INTO t1 VALUES (@@session.insert_id);
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+* Invoke statement so that return value is dicarded: expect no warning.
+SELECT func_retval_1();
+
+Invoking function func_retval_2 returning value from function func_retval_1 returning value from unsafe UUID() function.
+CREATE FUNCTION func_retval_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); RETURN func_retval_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 VALUES (func_retval_2());
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-INSERT INTO t1 VALUES (@@global.auto_increment_increment);
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+* Invoke statement so that return value is dicarded: expect no warning.
+SELECT func_retval_2();
+DROP FUNCTION func_retval_2;
+
+Invoking function func_sidef_2 invoking function func_retval_1 returning value from unsafe UUID() function.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 VALUES (func_retval_1()); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-INSERT INTO t2 SELECT UUID();
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking function func_retval_1 returning value from unsafe UUID() function.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 VALUES (func_retval_1()); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-INSERT INTO t2 VALUES (@@session.sql_mode);
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+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: # (test.ta1)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking function func_retval_1 returning value from unsafe UUID() function.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 VALUES (func_retval_1()); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-INSERT INTO t2 VALUES (@@global.init_slave);
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking view view_retval_2 returning value from function func_retval_1 returning value from unsafe UUID() function.
+CREATE VIEW view_retval_2 AS SELECT func_retval_1();
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-INSERT INTO t2 VALUES (@@hostname);
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT * FROM view_retval_2;
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
----- Insert from stored procedure ----
-CREATE PROCEDURE proc()
-BEGIN
-INSERT INTO t1 VALUES (@@global.sync_binlog);
-INSERT INTO t1 VALUES (@@session.insert_id);
-INSERT INTO t1 VALUES (@@global.auto_increment_increment);
-INSERT INTO t2 SELECT UUID();
-INSERT INTO t2 VALUES (@@session.sql_mode);
-INSERT INTO t2 VALUES (@@global.init_slave);
-INSERT INTO t2 VALUES (@@hostname);
-END|
-CALL proc();
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+* Invoke statement so that return value is dicarded: expect no warning.
+SELECT * FROM view_retval_2;
+DROP VIEW view_retval_2;
+
+Invoking prepared statement prep_2 invoking function func_retval_1 returning value from unsafe UUID() function.
+PREPARE prep_2 FROM "INSERT INTO t1 VALUES (func_retval_1())";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
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.
-Note 1592 Statement may not be safe to log in statement format.
-Note 1592 Statement may not be safe to log in statement format.
-Note 1592 Statement may not be safe to log in statement format.
-Note 1592 Statement may not be safe to log in statement format.
-Note 1592 Statement may not be safe to log in statement format.
----- Insert from stored function ----
-CREATE FUNCTION func()
-RETURNS INT
-BEGIN
-INSERT INTO t1 VALUES (@@global.sync_binlog);
-INSERT INTO t1 VALUES (@@session.insert_id);
-INSERT INTO t1 VALUES (@@global.auto_increment_increment);
-INSERT INTO t2 SELECT UUID();
-INSERT INTO t2 VALUES (@@session.sql_mode);
-INSERT INTO t2 VALUES (@@global.init_slave);
-INSERT INTO t2 VALUES (@@hostname);
-RETURN 0;
-END|
-SELECT func();
-func()
-0
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP FUNCTION func_retval_1;
+
+Invoking function func_sidef_1 invoking unsafe UUID() function.
+CREATE FUNCTION func_sidef_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO t0 VALUES (UUID()); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t1 SELECT func_sidef_1();
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.
-Note 1592 Statement may not be safe to log in statement format.
-Note 1592 Statement may not be safe to log in statement format.
-Note 1592 Statement may not be safe to log in statement format.
-Note 1592 Statement may not be safe to log in statement format.
-Note 1592 Statement may not be safe to log in statement format.
----- Insert from trigger ----
-CREATE TRIGGER trig
-BEFORE INSERT ON trigger_table
-FOR EACH ROW
-BEGIN
-INSERT INTO t1 VALUES (@@global.sync_binlog);
-INSERT INTO t1 VALUES (@@session.insert_id);
-INSERT INTO t1 VALUES (@@global.auto_increment_increment);
-INSERT INTO t2 SELECT UUID();
-INSERT INTO t2 VALUES (@@session.sql_mode);
-INSERT INTO t2 VALUES (@@global.init_slave);
-INSERT INTO t2 VALUES (@@hostname);
-END|
-INSERT INTO trigger_table VALUES ('bye.');
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking function func_sidef_1 invoking unsafe UUID() function.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
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.
-Note 1592 Statement may not be safe to log in statement format.
-Note 1592 Statement may not be safe to log in statement format.
-Note 1592 Statement may not be safe to log in statement format.
-Note 1592 Statement may not be safe to log in statement format.
-Note 1592 Statement may not be safe to log in statement format.
-Note 1592 Statement may not be safe to log in statement format.
----- Insert from prepared statement ----
-PREPARE p1 FROM 'INSERT INTO t1 VALUES (@@global.sync_binlog)';
-PREPARE p2 FROM 'INSERT INTO t1 VALUES (@@session.insert_id)';
-PREPARE p3 FROM 'INSERT INTO t1 VALUES (@@global.auto_increment_increment)';
-PREPARE p4 FROM 'INSERT INTO t2 SELECT UUID()';
-PREPARE p5 FROM 'INSERT INTO t2 VALUES (@@session.sql_mode)';
-PREPARE p6 FROM 'INSERT INTO t2 VALUES (@@global.init_slave)';
-PREPARE p7 FROM 'INSERT INTO t2 VALUES (@@hostname)';
-EXECUTE p1;
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking function func_sidef_1 invoking unsafe UUID() function.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-EXECUTE p2;
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+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: # (test.t0)
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking function func_sidef_1 invoking unsafe UUID() function.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-EXECUTE p3;
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking view view_sidef_2 invoking function func_sidef_1 invoking unsafe UUID() function.
+CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-EXECUTE p4;
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT * FROM view_sidef_2;
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-EXECUTE p5;
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP VIEW view_sidef_2;
+
+Invoking prepared statement prep_2 invoking function func_sidef_1 invoking unsafe UUID() function.
+PREPARE prep_2 FROM "INSERT INTO t1 SELECT func_sidef_1()";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-EXECUTE p6;
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP FUNCTION func_sidef_1;
+
+Invoking procedure proc_1 invoking unsafe UUID() function.
+CREATE PROCEDURE proc_1() BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO t0 VALUES (UUID()); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_1();
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-EXECUTE p7;
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking procedure proc_1 invoking unsafe UUID() function.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
----- Insert from nested call of triggers / functions / procedures ----
-CREATE PROCEDURE proc1()
-INSERT INTO trigger_table VALUES ('ha!')|
-CREATE FUNCTION func2()
-RETURNS INT
-BEGIN
-CALL proc1();
-RETURN 0;
-END|
-CREATE TRIGGER trig3
-BEFORE INSERT ON trigger_table2
-FOR EACH ROW
-BEGIN
-DECLARE tmp INT;
-SELECT func2() INTO tmp;
-END|
-CREATE PROCEDURE proc4()
-INSERT INTO trigger_table2 VALUES (1)|
-CREATE FUNCTION func5()
-RETURNS INT
-BEGIN
-CALL proc4;
-RETURN 0;
-END|
-PREPARE prep6 FROM 'SELECT func5()'|
-EXECUTE prep6;
-func5()
-0
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking procedure proc_1 invoking unsafe UUID() function.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
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.
-Note 1592 Statement may not be safe to log in statement format.
-Note 1592 Statement may not be safe to log in statement format.
-Note 1592 Statement may not be safe to log in statement format.
-Note 1592 Statement may not be safe to log in statement format.
-Note 1592 Statement may not be safe to log in statement format.
-==== Variables that should *not* be unsafe ====
-INSERT INTO t1 VALUES (@@session.pseudo_thread_id);
-INSERT INTO t1 VALUES (@@session.pseudo_thread_id);
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+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.t0)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking procedure proc_1 invoking unsafe UUID() function.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking prepared statement prep_2 invoking procedure proc_1 invoking unsafe UUID() function.
+PREPARE prep_2 FROM "CALL proc_1()";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP PROCEDURE proc_1;
+
+Invoking trigger trig_1 invoking unsafe UUID() function.
+CREATE TRIGGER trig_1 BEFORE INSERT ON trigger_table_1 FOR EACH ROW BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO t0 VALUES (UUID()); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_1 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking trigger trig_1 invoking unsafe UUID() function.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking trigger trig_1 invoking unsafe UUID() function.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.trigger_table_1)
+master-bin.000001 # Table_map # # table_id: # (test.t0)
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking trigger trig_1 invoking unsafe UUID() function.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking prepared statement prep_2 invoking trigger trig_1 invoking unsafe UUID() function.
+PREPARE prep_2 FROM "INSERT INTO trigger_table_1 VALUES (1)";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP TRIGGER trig_1;
+
+Invoking view view_retval_1 returning value from unsafe UUID() function.
+CREATE VIEW view_retval_1 AS SELECT UUID();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t1 SELECT * FROM view_retval_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+* Invoke statement so that return value is dicarded: expect no warning.
+SELECT * FROM view_retval_1;
+
+Invoking function func_sidef_2 invoking view view_retval_1 returning value from unsafe UUID() function.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT * FROM view_retval_1; RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking view view_retval_1 returning value from unsafe UUID() function.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT * FROM view_retval_1; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+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 PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking view view_retval_1 returning value from unsafe UUID() function.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT * FROM view_retval_1; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking view view_retval_2 returning value from view view_retval_1 returning value from unsafe UUID() function.
+CREATE VIEW view_retval_2 AS SELECT * FROM view_retval_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT * FROM view_retval_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+* Invoke statement so that return value is dicarded: expect no warning.
+SELECT * FROM view_retval_2;
+DROP VIEW view_retval_2;
+
+Invoking prepared statement prep_2 invoking view view_retval_1 returning value from unsafe UUID() function.
+PREPARE prep_2 FROM "INSERT INTO t1 SELECT * FROM view_retval_1";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP VIEW view_retval_1;
+
+Invoking prepared statement prep_1 invoking unsafe UUID() function.
+PREPARE prep_1 FROM "INSERT INTO t0 VALUES (UUID())";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_1;
+
+Invoking unsafe UUID() function.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t0 VALUES (UUID());
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+* Invoke statement so that return value is dicarded: expect no warning.
+SELECT UUID();
+
+==== Testing @@hostname unsafeness ====
+
+Invoking function func_retval_1 returning value from unsafe @@hostname variable.
+CREATE FUNCTION func_retval_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES (47); RETURN @@hostname; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t1 VALUES (func_retval_1());
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+* Invoke statement so that return value is dicarded: expect no warning.
+SELECT func_retval_1();
+
+Invoking function func_retval_2 returning value from function func_retval_1 returning value from unsafe @@hostname variable.
+CREATE FUNCTION func_retval_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); RETURN func_retval_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 VALUES (func_retval_2());
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+* Invoke statement so that return value is dicarded: expect no warning.
+SELECT func_retval_2();
+DROP FUNCTION func_retval_2;
+
+Invoking function func_sidef_2 invoking function func_retval_1 returning value from unsafe @@hostname variable.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 VALUES (func_retval_1()); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking function func_retval_1 returning value from unsafe @@hostname variable.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 VALUES (func_retval_1()); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+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: # (test.ta1)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking function func_retval_1 returning value from unsafe @@hostname variable.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 VALUES (func_retval_1()); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking view view_retval_2 returning value from function func_retval_1 returning value from unsafe @@hostname variable.
+CREATE VIEW view_retval_2 AS SELECT func_retval_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT * FROM view_retval_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+* Invoke statement so that return value is dicarded: expect no warning.
+SELECT * FROM view_retval_2;
+DROP VIEW view_retval_2;
+
+Invoking prepared statement prep_2 invoking function func_retval_1 returning value from unsafe @@hostname variable.
+PREPARE prep_2 FROM "INSERT INTO t1 VALUES (func_retval_1())";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP FUNCTION func_retval_1;
+
+Invoking function func_sidef_1 invoking unsafe @@hostname variable.
+CREATE FUNCTION func_sidef_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO t0 VALUES (@@hostname); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t1 SELECT func_sidef_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking function func_sidef_1 invoking unsafe @@hostname variable.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking function func_sidef_1 invoking unsafe @@hostname variable.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+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: # (test.t0)
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking function func_sidef_1 invoking unsafe @@hostname variable.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking view view_sidef_2 invoking function func_sidef_1 invoking unsafe @@hostname variable.
+CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT * FROM view_sidef_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP VIEW view_sidef_2;
+
+Invoking prepared statement prep_2 invoking function func_sidef_1 invoking unsafe @@hostname variable.
+PREPARE prep_2 FROM "INSERT INTO t1 SELECT func_sidef_1()";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP FUNCTION func_sidef_1;
+
+Invoking procedure proc_1 invoking unsafe @@hostname variable.
+CREATE PROCEDURE proc_1() BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO t0 VALUES (@@hostname); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking procedure proc_1 invoking unsafe @@hostname variable.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking procedure proc_1 invoking unsafe @@hostname variable.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+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.t0)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking procedure proc_1 invoking unsafe @@hostname variable.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking prepared statement prep_2 invoking procedure proc_1 invoking unsafe @@hostname variable.
+PREPARE prep_2 FROM "CALL proc_1()";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP PROCEDURE proc_1;
+
+Invoking trigger trig_1 invoking unsafe @@hostname variable.
+CREATE TRIGGER trig_1 BEFORE INSERT ON trigger_table_1 FOR EACH ROW BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO t0 VALUES (@@hostname); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_1 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking trigger trig_1 invoking unsafe @@hostname variable.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking trigger trig_1 invoking unsafe @@hostname variable.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.trigger_table_1)
+master-bin.000001 # Table_map # # table_id: # (test.t0)
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking trigger trig_1 invoking unsafe @@hostname variable.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking prepared statement prep_2 invoking trigger trig_1 invoking unsafe @@hostname variable.
+PREPARE prep_2 FROM "INSERT INTO trigger_table_1 VALUES (1)";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP TRIGGER trig_1;
+
+Invoking prepared statement prep_1 invoking unsafe @@hostname variable.
+PREPARE prep_1 FROM "INSERT INTO t0 VALUES (@@hostname)";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_1;
+
+Invoking unsafe @@hostname variable.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t0 VALUES (@@hostname);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+==== Testing SELECT...LIMIT unsafeness ====
+
+Invoking function func_sidef_1 invoking unsafe SELECT...LIMIT statement.
+CREATE FUNCTION func_sidef_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO t0 SELECT * FROM data_table LIMIT 1; RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t1 SELECT func_sidef_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking function func_sidef_1 invoking unsafe SELECT...LIMIT statement.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking function func_sidef_1 invoking unsafe SELECT...LIMIT statement.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+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: # (test.t0)
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking function func_sidef_1 invoking unsafe SELECT...LIMIT statement.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking view view_sidef_2 invoking function func_sidef_1 invoking unsafe SELECT...LIMIT statement.
+CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT * FROM view_sidef_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP VIEW view_sidef_2;
+
+Invoking prepared statement prep_2 invoking function func_sidef_1 invoking unsafe SELECT...LIMIT statement.
+PREPARE prep_2 FROM "INSERT INTO t1 SELECT func_sidef_1()";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP FUNCTION func_sidef_1;
+
+Invoking procedure proc_1 invoking unsafe SELECT...LIMIT statement.
+CREATE PROCEDURE proc_1() BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO t0 SELECT * FROM data_table LIMIT 1; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking procedure proc_1 invoking unsafe SELECT...LIMIT statement.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking procedure proc_1 invoking unsafe SELECT...LIMIT statement.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+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.t0)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking procedure proc_1 invoking unsafe SELECT...LIMIT statement.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking prepared statement prep_2 invoking procedure proc_1 invoking unsafe SELECT...LIMIT statement.
+PREPARE prep_2 FROM "CALL proc_1()";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP PROCEDURE proc_1;
+
+Invoking trigger trig_1 invoking unsafe SELECT...LIMIT statement.
+CREATE TRIGGER trig_1 BEFORE INSERT ON trigger_table_1 FOR EACH ROW BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO t0 SELECT * FROM data_table LIMIT 1; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_1 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking trigger trig_1 invoking unsafe SELECT...LIMIT statement.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking trigger trig_1 invoking unsafe SELECT...LIMIT statement.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.trigger_table_1)
+master-bin.000001 # Table_map # # table_id: # (test.t0)
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking trigger trig_1 invoking unsafe SELECT...LIMIT statement.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking prepared statement prep_2 invoking trigger trig_1 invoking unsafe SELECT...LIMIT statement.
+PREPARE prep_2 FROM "INSERT INTO trigger_table_1 VALUES (1)";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP TRIGGER trig_1;
+
+Invoking view view_retval_1 returning value from unsafe SELECT...LIMIT statement.
+CREATE VIEW view_retval_1 AS SELECT * FROM data_table LIMIT 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t1 SELECT * FROM view_retval_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+* Invoke statement so that return value is dicarded: expect no warning.
+SELECT * FROM view_retval_1;
+
+Invoking function func_sidef_2 invoking view view_retval_1 returning value from unsafe SELECT...LIMIT statement.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT * FROM view_retval_1; RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking view view_retval_1 returning value from unsafe SELECT...LIMIT statement.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT * FROM view_retval_1; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+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 PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking view view_retval_1 returning value from unsafe SELECT...LIMIT statement.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT * FROM view_retval_1; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking view view_retval_2 returning value from view view_retval_1 returning value from unsafe SELECT...LIMIT statement.
+CREATE VIEW view_retval_2 AS SELECT * FROM view_retval_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT * FROM view_retval_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+* Invoke statement so that return value is dicarded: expect no warning.
+SELECT * FROM view_retval_2;
+DROP VIEW view_retval_2;
+
+Invoking prepared statement prep_2 invoking view view_retval_1 returning value from unsafe SELECT...LIMIT statement.
+PREPARE prep_2 FROM "INSERT INTO t1 SELECT * FROM view_retval_1";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP VIEW view_retval_1;
+
+Invoking prepared statement prep_1 invoking unsafe SELECT...LIMIT statement.
+PREPARE prep_1 FROM "INSERT INTO t0 SELECT * FROM data_table LIMIT 1";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_1;
+
+Invoking unsafe SELECT...LIMIT statement.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t0 SELECT * FROM data_table LIMIT 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+* Invoke statement so that return value is dicarded: expect no warning.
+SELECT * FROM data_table LIMIT 1;
+
+==== Testing INSERT DELAYED unsafeness ====
+
+Invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
+CREATE FUNCTION func_sidef_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES (47); INSERT DELAYED INTO t0 VALUES (1), (2); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t1 SELECT func_sidef_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+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: # (test.t0)
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking view view_sidef_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
+CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT * FROM view_sidef_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP VIEW view_sidef_2;
+
+Invoking prepared statement prep_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
+PREPARE prep_2 FROM "INSERT INTO t1 SELECT func_sidef_1()";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP FUNCTION func_sidef_1;
+
+Invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
+CREATE PROCEDURE proc_1() BEGIN INSERT INTO ta1 VALUES (47); INSERT DELAYED INTO t0 VALUES (1), (2); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+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.t0)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking prepared statement prep_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
+PREPARE prep_2 FROM "CALL proc_1()";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP PROCEDURE proc_1;
+
+Invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
+CREATE TRIGGER trig_1 BEFORE INSERT ON trigger_table_1 FOR EACH ROW BEGIN INSERT INTO ta1 VALUES (47); INSERT DELAYED INTO t0 VALUES (1), (2); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_1 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.trigger_table_1)
+master-bin.000001 # Table_map # # table_id: # (test.t0)
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking prepared statement prep_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
+PREPARE prep_2 FROM "INSERT INTO trigger_table_1 VALUES (1)";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP TRIGGER trig_1;
+
+Invoking prepared statement prep_1 invoking unsafe INSERT DELAYED statement.
+PREPARE prep_1 FROM "INSERT DELAYED INTO t0 VALUES (1), (2)";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_1;
+
+Invoking unsafe INSERT DELAYED statement.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT DELAYED INTO t0 VALUES (1), (2);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+==== Testing unsafeness of insert of two autoinc values ====
+
+Invoking function func_sidef_1 invoking unsafe update of two autoinc columns.
+CREATE FUNCTION func_sidef_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO double_autoinc_table VALUES (NULL); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t1 SELECT func_sidef_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking function func_sidef_1 invoking unsafe update of two autoinc columns.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking function func_sidef_1 invoking unsafe update of two autoinc columns.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+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: # (test.double_autoinc_table)
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+master-bin.000001 # Table_map # # table_id: # (test.autoinc_table)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking function func_sidef_1 invoking unsafe update of two autoinc columns.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking view view_sidef_2 invoking function func_sidef_1 invoking unsafe update of two autoinc columns.
+CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT * FROM view_sidef_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP VIEW view_sidef_2;
+
+Invoking prepared statement prep_2 invoking function func_sidef_1 invoking unsafe update of two autoinc columns.
+PREPARE prep_2 FROM "INSERT INTO t1 SELECT func_sidef_1()";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP FUNCTION func_sidef_1;
+
+Invoking procedure proc_1 invoking unsafe update of two autoinc columns.
+CREATE PROCEDURE proc_1() BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO double_autoinc_table VALUES (NULL); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta1 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.double_autoinc_table)
+master-bin.000001 # Table_map # # table_id: # (test.autoinc_table)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+
+Invoking function func_sidef_2 invoking procedure proc_1 invoking unsafe update of two autoinc columns.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking procedure proc_1 invoking unsafe update of two autoinc columns.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO ta1 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.double_autoinc_table)
+master-bin.000001 # Table_map # # table_id: # (test.autoinc_table)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking procedure proc_1 invoking unsafe update of two autoinc columns.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking prepared statement prep_2 invoking procedure proc_1 invoking unsafe update of two autoinc columns.
+PREPARE prep_2 FROM "CALL proc_1()";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta1 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.double_autoinc_table)
+master-bin.000001 # Table_map # # table_id: # (test.autoinc_table)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PREPARE prep_2;
+DROP PROCEDURE proc_1;
+
+Invoking trigger trig_1 invoking unsafe update of two autoinc columns.
+CREATE TRIGGER trig_1 BEFORE INSERT ON trigger_table_1 FOR EACH ROW BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO double_autoinc_table VALUES (NULL); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_1 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking trigger trig_1 invoking unsafe update of two autoinc columns.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking trigger trig_1 invoking unsafe update of two autoinc columns.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.trigger_table_1)
+master-bin.000001 # Table_map # # table_id: # (test.double_autoinc_table)
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+master-bin.000001 # Table_map # # table_id: # (test.autoinc_table)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking trigger trig_1 invoking unsafe update of two autoinc columns.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking prepared statement prep_2 invoking trigger trig_1 invoking unsafe update of two autoinc columns.
+PREPARE prep_2 FROM "INSERT INTO trigger_table_1 VALUES (1)";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP TRIGGER trig_1;
+
+Invoking prepared statement prep_1 invoking unsafe update of two autoinc columns.
+PREPARE prep_1 FROM "INSERT INTO double_autoinc_table VALUES (NULL)";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_1;
+
+Invoking unsafe update of two autoinc columns.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO double_autoinc_table VALUES (NULL);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+==== Testing unsafeness of UDF's ====
+
+Invoking function func_retval_1 returning value from unsafe UDF.
+CREATE FUNCTION func_retval_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES (47); RETURN myfunc_int(10); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t1 VALUES (func_retval_1());
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+* Invoke statement so that return value is dicarded: expect no warning.
+SELECT func_retval_1();
+
+Invoking function func_retval_2 returning value from function func_retval_1 returning value from unsafe UDF.
+CREATE FUNCTION func_retval_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); RETURN func_retval_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 VALUES (func_retval_2());
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+* Invoke statement so that return value is dicarded: expect no warning.
+SELECT func_retval_2();
+DROP FUNCTION func_retval_2;
+
+Invoking function func_sidef_2 invoking function func_retval_1 returning value from unsafe UDF.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 VALUES (func_retval_1()); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking function func_retval_1 returning value from unsafe UDF.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 VALUES (func_retval_1()); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+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: # (test.ta1)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking function func_retval_1 returning value from unsafe UDF.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 VALUES (func_retval_1()); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking view view_retval_2 returning value from function func_retval_1 returning value from unsafe UDF.
+CREATE VIEW view_retval_2 AS SELECT func_retval_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT * FROM view_retval_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+* Invoke statement so that return value is dicarded: expect no warning.
+SELECT * FROM view_retval_2;
+DROP VIEW view_retval_2;
+
+Invoking prepared statement prep_2 invoking function func_retval_1 returning value from unsafe UDF.
+PREPARE prep_2 FROM "INSERT INTO t1 VALUES (func_retval_1())";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP FUNCTION func_retval_1;
+
+Invoking function func_sidef_1 invoking unsafe UDF.
+CREATE FUNCTION func_sidef_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO t0 VALUES (myfunc_int(10)); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t1 SELECT func_sidef_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking function func_sidef_1 invoking unsafe UDF.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking function func_sidef_1 invoking unsafe UDF.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+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: # (test.t0)
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking function func_sidef_1 invoking unsafe UDF.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking view view_sidef_2 invoking function func_sidef_1 invoking unsafe UDF.
+CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT * FROM view_sidef_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP VIEW view_sidef_2;
+
+Invoking prepared statement prep_2 invoking function func_sidef_1 invoking unsafe UDF.
+PREPARE prep_2 FROM "INSERT INTO t1 SELECT func_sidef_1()";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP FUNCTION func_sidef_1;
+
+Invoking procedure proc_1 invoking unsafe UDF.
+CREATE PROCEDURE proc_1() BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO t0 VALUES (myfunc_int(10)); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking procedure proc_1 invoking unsafe UDF.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking procedure proc_1 invoking unsafe UDF.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+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.t0)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking procedure proc_1 invoking unsafe UDF.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking prepared statement prep_2 invoking procedure proc_1 invoking unsafe UDF.
+PREPARE prep_2 FROM "CALL proc_1()";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP PROCEDURE proc_1;
+
+Invoking trigger trig_1 invoking unsafe UDF.
+CREATE TRIGGER trig_1 BEFORE INSERT ON trigger_table_1 FOR EACH ROW BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO t0 VALUES (myfunc_int(10)); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_1 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking trigger trig_1 invoking unsafe UDF.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking trigger trig_1 invoking unsafe UDF.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.trigger_table_1)
+master-bin.000001 # Table_map # # table_id: # (test.t0)
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking trigger trig_1 invoking unsafe UDF.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking prepared statement prep_2 invoking trigger trig_1 invoking unsafe UDF.
+PREPARE prep_2 FROM "INSERT INTO trigger_table_1 VALUES (1)";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP TRIGGER trig_1;
+
+Invoking view view_sidef_1 invoking unsafe UDF.
+CREATE VIEW view_sidef_1 AS SELECT myfunc_int(10);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t1 SELECT * FROM view_sidef_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking view view_sidef_1 invoking unsafe UDF.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT * FROM view_sidef_1; RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking view view_sidef_1 invoking unsafe UDF.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT * FROM view_sidef_1; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+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 PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking view view_sidef_1 invoking unsafe UDF.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT * FROM view_sidef_1; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking view view_sidef_2 invoking view view_sidef_1 invoking unsafe UDF.
+CREATE VIEW view_sidef_2 AS SELECT * FROM view_sidef_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT * FROM view_sidef_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP VIEW view_sidef_2;
+
+Invoking prepared statement prep_2 invoking view view_sidef_1 invoking unsafe UDF.
+PREPARE prep_2 FROM "INSERT INTO t1 SELECT * FROM view_sidef_1";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP VIEW view_sidef_1;
+
+Invoking prepared statement prep_1 invoking unsafe UDF.
+PREPARE prep_1 FROM "INSERT INTO t0 VALUES (myfunc_int(10))";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_1;
+
+Invoking unsafe UDF.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t0 VALUES (myfunc_int(10));
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+==== Testing unsafeness of access to mysql.general_log ====
+
+Invoking function func_sidef_1 invoking unsafe use of mysql.general_log.
+CREATE FUNCTION func_sidef_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO t0 SELECT COUNT(*) FROM mysql.general_log; RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t1 SELECT func_sidef_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking function func_sidef_1 invoking unsafe use of mysql.general_log.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking function func_sidef_1 invoking unsafe use of mysql.general_log.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+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: # (test.t0)
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking function func_sidef_1 invoking unsafe use of mysql.general_log.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking view view_sidef_2 invoking function func_sidef_1 invoking unsafe use of mysql.general_log.
+CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT * FROM view_sidef_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP VIEW view_sidef_2;
+
+Invoking prepared statement prep_2 invoking function func_sidef_1 invoking unsafe use of mysql.general_log.
+PREPARE prep_2 FROM "INSERT INTO t1 SELECT func_sidef_1()";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP FUNCTION func_sidef_1;
+
+Invoking procedure proc_1 invoking unsafe use of mysql.general_log.
+CREATE PROCEDURE proc_1() BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO t0 SELECT COUNT(*) FROM mysql.general_log; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta1 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t0)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+
+Invoking function func_sidef_2 invoking procedure proc_1 invoking unsafe use of mysql.general_log.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking procedure proc_1 invoking unsafe use of mysql.general_log.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO ta1 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t0)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking procedure proc_1 invoking unsafe use of mysql.general_log.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking prepared statement prep_2 invoking procedure proc_1 invoking unsafe use of mysql.general_log.
+PREPARE prep_2 FROM "CALL proc_1()";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta1 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t0)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PREPARE prep_2;
+DROP PROCEDURE proc_1;
+
+Invoking trigger trig_1 invoking unsafe use of mysql.general_log.
+CREATE TRIGGER trig_1 BEFORE INSERT ON trigger_table_1 FOR EACH ROW BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO t0 SELECT COUNT(*) FROM mysql.general_log; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_1 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking trigger trig_1 invoking unsafe use of mysql.general_log.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking trigger trig_1 invoking unsafe use of mysql.general_log.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.trigger_table_1)
+master-bin.000001 # Table_map # # table_id: # (test.t0)
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking trigger trig_1 invoking unsafe use of mysql.general_log.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking prepared statement prep_2 invoking trigger trig_1 invoking unsafe use of mysql.general_log.
+PREPARE prep_2 FROM "INSERT INTO trigger_table_1 VALUES (1)";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP TRIGGER trig_1;
+
+Invoking view view_retval_1 returning value from unsafe use of mysql.general_log.
+CREATE VIEW view_retval_1 AS SELECT COUNT(*) FROM mysql.general_log;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t1 SELECT * FROM view_retval_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+* Invoke statement so that return value is dicarded: expect no warning.
+SELECT * FROM view_retval_1;
+
+Invoking function func_sidef_2 invoking view view_retval_1 returning value from unsafe use of mysql.general_log.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT * FROM view_retval_1; RETURN 0; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking view view_retval_1 returning value from unsafe use of mysql.general_log.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT * FROM view_retval_1; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+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 PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking view view_retval_1 returning value from unsafe use of mysql.general_log.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT * FROM view_retval_1; END;
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking view view_retval_2 returning value from view view_retval_1 returning value from unsafe use of mysql.general_log.
+CREATE VIEW view_retval_2 AS SELECT * FROM view_retval_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t2 SELECT * FROM view_retval_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+* Invoke statement so that return value is dicarded: expect no warning.
+SELECT * FROM view_retval_2;
+DROP VIEW view_retval_2;
+
+Invoking prepared statement prep_2 invoking view view_retval_1 returning value from unsafe use of mysql.general_log.
+PREPARE prep_2 FROM "INSERT INTO t1 SELECT * FROM view_retval_1";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP VIEW view_retval_1;
+
+Invoking prepared statement prep_1 invoking unsafe use of mysql.general_log.
+PREPARE prep_1 FROM "INSERT INTO t0 SELECT COUNT(*) FROM mysql.general_log";
+* binlog_format = STATEMENT: expect 1 warnings.
+EXECUTE prep_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_1;
+
+Invoking unsafe use of mysql.general_log.
+* binlog_format = STATEMENT: expect 1 warnings.
+INSERT INTO t0 SELECT COUNT(*) FROM mysql.general_log;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+* Invoke statement so that return value is dicarded: expect no warning.
+SELECT COUNT(*) FROM mysql.general_log;
+
+==== Testing a statement that is unsafe in many ways ====
+
+Invoking function func_sidef_1 invoking statement that is unsafe in many ways.
+CREATE FUNCTION func_sidef_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES (47); INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1; RETURN 0; END;
+* binlog_format = STATEMENT: expect 7 warnings.
+INSERT INTO t1 SELECT func_sidef_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking function func_sidef_1 invoking statement that is unsafe in many ways.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); RETURN 0; END;
+* binlog_format = STATEMENT: expect 7 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking function func_sidef_1 invoking statement that is unsafe in many ways.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
+* binlog_format = STATEMENT: expect 7 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+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: # (test.ta1)
+master-bin.000001 # Table_map # # table_id: # (test.double_autoinc_table)
+master-bin.000001 # Table_map # # table_id: # (test.autoinc_table)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking function func_sidef_1 invoking statement that is unsafe in many ways.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
+* binlog_format = STATEMENT: expect 7 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking view view_sidef_2 invoking function func_sidef_1 invoking statement that is unsafe in many ways.
+CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* binlog_format = STATEMENT: expect 7 warnings.
+INSERT INTO t2 SELECT * FROM view_sidef_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP VIEW view_sidef_2;
+
+Invoking prepared statement prep_2 invoking function func_sidef_1 invoking statement that is unsafe in many ways.
+PREPARE prep_2 FROM "INSERT INTO t1 SELECT func_sidef_1()";
+* binlog_format = STATEMENT: expect 7 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP FUNCTION func_sidef_1;
+
+Invoking procedure proc_1 invoking statement that is unsafe in many ways.
+CREATE PROCEDURE proc_1() BEGIN INSERT INTO ta1 VALUES (47); INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1; END;
+* binlog_format = STATEMENT: expect 7 warnings.
+CALL proc_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking procedure proc_1 invoking statement that is unsafe in many ways.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); RETURN 0; END;
+* binlog_format = STATEMENT: expect 7 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking procedure proc_1 invoking statement that is unsafe in many ways.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
+* binlog_format = STATEMENT: expect 7 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+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.double_autoinc_table)
+master-bin.000001 # Table_map # # table_id: # (test.autoinc_table)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking procedure proc_1 invoking statement that is unsafe in many ways.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
+* binlog_format = STATEMENT: expect 7 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking prepared statement prep_2 invoking procedure proc_1 invoking statement that is unsafe in many ways.
+PREPARE prep_2 FROM "CALL proc_1()";
+* binlog_format = STATEMENT: expect 7 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP PROCEDURE proc_1;
+
+Invoking trigger trig_1 invoking statement that is unsafe in many ways.
+CREATE TRIGGER trig_1 BEFORE INSERT ON trigger_table_1 FOR EACH ROW BEGIN INSERT INTO ta1 VALUES (47); INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1; END;
+* binlog_format = STATEMENT: expect 7 warnings.
+INSERT INTO trigger_table_1 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking trigger trig_1 invoking statement that is unsafe in many ways.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); RETURN 0; END;
+* binlog_format = STATEMENT: expect 7 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking trigger trig_1 invoking statement that is unsafe in many ways.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
+* binlog_format = STATEMENT: expect 7 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.trigger_table_1)
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+master-bin.000001 # Table_map # # table_id: # (test.double_autoinc_table)
+master-bin.000001 # Table_map # # table_id: # (test.autoinc_table)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking trigger trig_1 invoking statement that is unsafe in many ways.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
+* binlog_format = STATEMENT: expect 7 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking prepared statement prep_2 invoking trigger trig_1 invoking statement that is unsafe in many ways.
+PREPARE prep_2 FROM "INSERT INTO trigger_table_1 VALUES (1)";
+* binlog_format = STATEMENT: expect 7 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP TRIGGER trig_1;
+
+Invoking prepared statement prep_1 invoking statement that is unsafe in many ways.
+PREPARE prep_1 FROM "INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1";
+* binlog_format = STATEMENT: expect 7 warnings.
+EXECUTE prep_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_1;
+
+Invoking statement that is unsafe in many ways.
+* binlog_format = STATEMENT: expect 7 warnings.
+INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a UDF. It cannot be determined if the UDF will return the same value on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+==== Testing a statement that is unsafe several times ====
+
+Invoking function func_sidef_1 invoking statement that is unsafe several times.
+CREATE FUNCTION func_sidef_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO ta0 VALUES (multi_unsafe_func()); RETURN 0; END;
+* binlog_format = STATEMENT: expect 2 warnings.
+INSERT INTO t1 SELECT func_sidef_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking function func_sidef_1 invoking statement that is unsafe several times.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); RETURN 0; END;
+* binlog_format = STATEMENT: expect 2 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking function func_sidef_1 invoking statement that is unsafe several times.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
+* binlog_format = STATEMENT: expect 2 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+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: # (test.ta0)
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+master-bin.000001 # Table_map # # table_id: # (test.t0)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking function func_sidef_1 invoking statement that is unsafe several times.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
+* binlog_format = STATEMENT: expect 2 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking view view_sidef_2 invoking function func_sidef_1 invoking statement that is unsafe several times.
+CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* binlog_format = STATEMENT: expect 2 warnings.
+INSERT INTO t2 SELECT * FROM view_sidef_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP VIEW view_sidef_2;
+
+Invoking prepared statement prep_2 invoking function func_sidef_1 invoking statement that is unsafe several times.
+PREPARE prep_2 FROM "INSERT INTO t1 SELECT func_sidef_1()";
+* binlog_format = STATEMENT: expect 2 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP FUNCTION func_sidef_1;
+
+Invoking procedure proc_1 invoking statement that is unsafe several times.
+CREATE PROCEDURE proc_1() BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO ta0 VALUES (multi_unsafe_func()); END;
+* binlog_format = STATEMENT: expect 2 warnings.
+CALL proc_1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta1 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.ta0)
+master-bin.000001 # Table_map # # table_id: # (test.t0)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+
+Invoking function func_sidef_2 invoking procedure proc_1 invoking statement that is unsafe several times.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); RETURN 0; END;
+* binlog_format = STATEMENT: expect 2 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking procedure proc_1 invoking statement that is unsafe several times.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
+* binlog_format = STATEMENT: expect 2 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO ta1 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.ta0)
+master-bin.000001 # Table_map # # table_id: # (test.t0)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking procedure proc_1 invoking statement that is unsafe several times.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
+* binlog_format = STATEMENT: expect 2 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking prepared statement prep_2 invoking procedure proc_1 invoking statement that is unsafe several times.
+PREPARE prep_2 FROM "CALL proc_1()";
+* binlog_format = STATEMENT: expect 2 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta1 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.ta0)
+master-bin.000001 # Table_map # # table_id: # (test.t0)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PREPARE prep_2;
+DROP PROCEDURE proc_1;
+
+Invoking trigger trig_1 invoking statement that is unsafe several times.
+CREATE TRIGGER trig_1 BEFORE INSERT ON trigger_table_1 FOR EACH ROW BEGIN INSERT INTO ta1 VALUES (47); INSERT INTO ta0 VALUES (multi_unsafe_func()); END;
+* binlog_format = STATEMENT: expect 2 warnings.
+INSERT INTO trigger_table_1 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking trigger trig_1 invoking statement that is unsafe several times.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); RETURN 0; END;
+* binlog_format = STATEMENT: expect 2 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking trigger trig_1 invoking statement that is unsafe several times.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
+* binlog_format = STATEMENT: expect 2 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.trigger_table_1)
+master-bin.000001 # Table_map # # table_id: # (test.ta0)
+master-bin.000001 # Table_map # # table_id: # (test.ta1)
+master-bin.000001 # Table_map # # table_id: # (test.t0)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking trigger trig_1 invoking statement that is unsafe several times.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
+* binlog_format = STATEMENT: expect 2 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking prepared statement prep_2 invoking trigger trig_1 invoking statement that is unsafe several times.
+PREPARE prep_2 FROM "INSERT INTO trigger_table_1 VALUES (1)";
+* binlog_format = STATEMENT: expect 2 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP TRIGGER trig_1;
+
+Invoking view view_sidef_1 invoking statement that is unsafe several times.
+CREATE VIEW view_sidef_1 AS SELECT multi_unsafe_func();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* binlog_format = STATEMENT: expect 2 warnings.
+INSERT INTO t1 SELECT * FROM view_sidef_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+
+Invoking function func_sidef_2 invoking view view_sidef_1 invoking statement that is unsafe several times.
+CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT * FROM view_sidef_1; RETURN 0; END;
+* binlog_format = STATEMENT: expect 2 warnings.
+INSERT INTO t2 SELECT func_sidef_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP FUNCTION func_sidef_2;
+
+Invoking procedure proc_2 invoking view view_sidef_1 invoking statement that is unsafe several times.
+CREATE PROCEDURE proc_2() BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT * FROM view_sidef_1; END;
+* binlog_format = STATEMENT: expect 2 warnings.
+CALL proc_2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+******** Failure! Event number 3 was a 'Query', not a 'Table_map'. ********
+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 ta2 VALUES (47)
+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: # (test.t0)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+DROP PROCEDURE proc_2;
+
+Invoking trigger trig_2 invoking view view_sidef_1 invoking statement that is unsafe several times.
+CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT * FROM view_sidef_1; END;
+* binlog_format = STATEMENT: expect 2 warnings.
+INSERT INTO trigger_table_2 VALUES (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER trig_2;
+
+Invoking view view_sidef_2 invoking view view_sidef_1 invoking statement that is unsafe several times.
+CREATE VIEW view_sidef_2 AS SELECT * FROM view_sidef_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* binlog_format = STATEMENT: expect 2 warnings.
+INSERT INTO t2 SELECT * FROM view_sidef_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP VIEW view_sidef_2;
+
+Invoking prepared statement prep_2 invoking view view_sidef_1 invoking statement that is unsafe several times.
+PREPARE prep_2 FROM "INSERT INTO t1 SELECT * FROM view_sidef_1";
+* binlog_format = STATEMENT: expect 2 warnings.
+EXECUTE prep_2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_2;
+DROP VIEW view_sidef_1;
+
+Invoking prepared statement prep_1 invoking statement that is unsafe several times.
+PREPARE prep_1 FROM "INSERT INTO ta0 VALUES (multi_unsafe_func())";
+* binlog_format = STATEMENT: expect 2 warnings.
+EXECUTE prep_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP PREPARE prep_1;
+
+Invoking statement that is unsafe several times.
+* binlog_format = STATEMENT: expect 2 warnings.
+INSERT INTO ta0 VALUES (multi_unsafe_func());
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* SQL_LOG_BIN = 0: expect nothing logged and no warning.
+* binlog_format = MIXED: expect row events in binlog and no warning.
+DROP TRIGGER double_autoinc_trig;
+DROP TABLE t0, t1, t2, t3, ta0, ta1, ta2, ta3,
+autoinc_table, double_autoinc_table,
+data_table,
+trigger_table_1, trigger_table_2, trigger_table_3;
+DROP FUNCTION myfunc_int;
+DROP FUNCTION multi_unsafe_func;
+==== Special system variables that should *not* be unsafe ====
+CREATE TABLE t1 (a VARCHAR(1000));
+CREATE TABLE autoinc_table (a INT PRIMARY KEY AUTO_INCREMENT);
+INSERT INTO t1 VALUES (@@session.auto_increment_increment);
+INSERT INTO t1 VALUES (@@session.auto_increment_offset);
+INSERT INTO t1 VALUES (@@session.character_set_client);
+INSERT INTO t1 VALUES (@@session.character_set_connection);
+INSERT INTO t1 VALUES (@@session.character_set_database);
+INSERT INTO t1 VALUES (@@session.character_set_server);
+INSERT INTO t1 VALUES (@@session.collation_connection);
+INSERT INTO t1 VALUES (@@session.collation_database);
+INSERT INTO t1 VALUES (@@session.collation_server);
INSERT INTO t1 VALUES (@@session.foreign_key_checks);
+INSERT INTO t1 VALUES (@@session.identity);
+INSERT INTO t1 VALUES (@@session.last_insert_id);
+INSERT INTO t1 VALUES (@@session.lc_time_names);
+INSERT INTO t1 VALUES (@@session.pseudo_thread_id);
INSERT INTO t1 VALUES (@@session.sql_auto_is_null);
+INSERT INTO t1 VALUES (@@session.timestamp);
+INSERT INTO t1 VALUES (@@session.time_zone);
INSERT INTO t1 VALUES (@@session.unique_checks);
-INSERT INTO t1 VALUES (@@session.auto_increment_increment);
-INSERT INTO t1 VALUES (@@session.auto_increment_offset);
-INSERT INTO t2 VALUES (@@session.character_set_client);
-INSERT INTO t2 VALUES (@@session.collation_connection);
-INSERT INTO t2 VALUES (@@session.collation_server);
-INSERT INTO t2 VALUES (@@session.time_zone);
-INSERT INTO t2 VALUES (@@session.lc_time_names);
-INSERT INTO t2 VALUES (@@session.collation_database);
-INSERT INTO t2 VALUES (@@session.timestamp);
-INSERT INTO t2 VALUES (@@session.last_insert_id);
SET @my_var= 4711;
INSERT INTO t1 VALUES (@my_var);
-SET insert_id=12;
-INSERT INTO t3 VALUES (NULL);
-==== Clean up ====
-DROP PROCEDURE proc;
-DROP FUNCTION func;
-DROP TRIGGER trig;
-DROP PROCEDURE proc1;
-DROP FUNCTION func2;
-DROP TRIGGER trig3;
-DROP PROCEDURE proc4;
-DROP FUNCTION func5;
-DROP PREPARE prep6;
-DROP TABLE t1, t2, t3, trigger_table, trigger_table2;
+SET insert_id= 12;
+INSERT INTO autoinc_table VALUES (NULL);
+The following variables *should* give a warning, despite they are replicated.
+INSERT INTO t1 VALUES (@@session.sql_mode);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+INSERT INTO t1 VALUES (@@session.insert_id);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
+DROP TABLE t1, autoinc_table;
CREATE TABLE t1(a INT, b INT, KEY(a), PRIMARY KEY(b));
INSERT INTO t1 SELECT * FROM t1 LIMIT 1;
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
REPLACE INTO t1 SELECT * FROM t1 LIMIT 1;
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
UPDATE t1 SET a=1 LIMIT 1;
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
DELETE FROM t1 LIMIT 1;
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
CREATE PROCEDURE p1()
BEGIN
INSERT INTO t1 SELECT * FROM t1 LIMIT 1;
@@ -214,10 +2989,7 @@ DELETE FROM t1 LIMIT 1;
END|
CALL p1();
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.
-Note 1592 Statement may not be safe to log in statement format.
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
DROP PROCEDURE p1;
DROP TABLE t1;
DROP TABLE IF EXISTS t1;
@@ -225,7 +2997,7 @@ CREATE TABLE t1 (a VARCHAR(100), b VARCHAR(100));
INSERT INTO t1 VALUES ('a','b');
UPDATE t1 SET b = '%s%s%s%s%s%s%s%s%s%s%s%s%s%s' WHERE a = 'a' LIMIT 1;
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
DROP TABLE t1;
DROP TABLE IF EXISTS t1, t2;
CREATE TABLE t1(i INT PRIMARY KEY);
@@ -234,7 +3006,7 @@ CREATE TABLE t3(i INT, ch CHAR(50));
"Should issue message Statement may not be safe to log in statement format."
INSERT INTO t1 SELECT * FROM t2 LIMIT 1;
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
CREATE FUNCTION func6()
RETURNS INT
BEGIN
@@ -246,7 +3018,7 @@ END|
"Should issue message Statement may not be safe to log in statement format only once"
INSERT INTO t3 VALUES(func6(), UUID());
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
"Check whether SET @@SQL_LOG_BIN = 0/1 doesn't work in substatements"
CREATE FUNCTION fun_check_log_bin() RETURNS INT
BEGIN
@@ -259,7 +3031,7 @@ SELECT fun_check_log_bin();
fun_check_log_bin()
100
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
"SQL_LOG_BIN should be ON still"
SHOW VARIABLES LIKE "SQL_LOG_BIN";
Variable_name Value
@@ -315,67 +3087,157 @@ CREATE TABLE t1(i INT PRIMARY KEY);
CREATE TABLE t2(i INT PRIMARY KEY);
INSERT INTO t1 SELECT * FROM t2 LIMIT 1;
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
INSERT INTO t1 VALUES(@@global.sync_binlog);
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system variable whose value may differ on slave.
UPDATE t1 SET i = 999 LIMIT 1;
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
DELETE FROM t1 LIMIT 1;
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
DROP TABLE t1, t2;
SET @@SESSION.SQL_MODE = @save_sql_mode;
+SET @old_binlog_format = @@session.binlog_format;
+SET binlog_format = MIXED;
+CREATE TABLE t1 (a INT);
+CREATE TABLE t2 (a INT);
+INSERT INTO t2 VALUES (1), (2);
+CREATE PROCEDURE proc_insert_delayed ()
+BEGIN
+INSERT DELAYED INTO t1 VALUES (1), (2);
+END|
+CREATE FUNCTION func_limit ()
+RETURNS INT
+BEGIN
+INSERT INTO t1 SELECT * FROM t2 LIMIT 1;
+RETURN 1;
+END|
+RESET MASTER;
+CALL proc_insert_delayed();
+SELECT func_limit();
+func_limit()
+1
+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 # 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 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+SET @@session.binlog_format = @old_binlog_format;
+DROP TABLE t1, t2;
+DROP PROCEDURE proc_insert_delayed;
+DROP FUNCTION func_limit;
+CREATE TABLE t1 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
+CREATE TABLE t2 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
+CREATE FUNCTION func_modify_t1 ()
+RETURNS INT
+BEGIN
+INSERT INTO t1 SET a = 1;
+RETURN 0;
+END|
+# The following statement causes auto-incrementation
+# of both t1 and t2. It is logged in statement format,
+# so it should produce unsafe warning.
+INSERT INTO t2 SET a = func_modify_t1();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+SET SESSION binlog_format = MIXED;
+# Check if the statement is logged in row format.
+INSERT INTO t2 SET a = func_modify_t1();
+SHOW BINLOG EVENTS FROM 1493;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 1493 Query 1 1561 BEGIN
+master-bin.000001 1561 Table_map 1 1603 table_id: 205 (test.t2)
+master-bin.000001 1603 Table_map 1 1645 table_id: 206 (test.t1)
+master-bin.000001 1645 Write_rows 1 1683 table_id: 206
+master-bin.000001 1683 Write_rows 1 1721 table_id: 205 flags: STMT_END_F
+master-bin.000001 1721 Query 1 1790 COMMIT
+DROP TABLE t1,t2;
+DROP FUNCTION func_modify_t1;
+SET SESSION binlog_format = STATEMENT;
+CREATE TABLE t1 (a INT);
+CREATE TABLE t2 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
+CREATE TABLE t3 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
+create trigger tri_modify_two_tables before insert on t1 for each row begin
+insert into t2(a) values(new.a);
+insert into t3(a) values(new.a);
+end |
+# The following statement causes auto-incrementation
+# of both t2 and t3. It is logged in statement format,
+# so it should produce unsafe warning
+INSERT INTO t1 SET a = 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+SET SESSION binlog_format = MIXED;
+# Check if the statement is logged in row format.
+INSERT INTO t1 SET a = 2;
+SHOW BINLOG EVENTS FROM 2773;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 2773 Query 1 2841 BEGIN
+master-bin.000001 2841 Table_map 1 2882 table_id: 208 (test.t1)
+master-bin.000001 2882 Table_map 1 2924 table_id: 209 (test.t3)
+master-bin.000001 2924 Table_map 1 2966 table_id: 210 (test.t2)
+master-bin.000001 2966 Write_rows 1 3004 table_id: 210
+master-bin.000001 3004 Write_rows 1 3042 table_id: 209
+master-bin.000001 3042 Write_rows 1 3076 table_id: 208 flags: STMT_END_F
+master-bin.000001 3076 Query 1 3145 COMMIT
+DROP TABLE t1,t2,t3;
+SET SESSION binlog_format = STATEMENT;
CREATE TABLE t1 (a VARCHAR(1000));
INSERT INTO t1 VALUES (CURRENT_USER());
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
INSERT INTO t1 VALUES (FOUND_ROWS());
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
INSERT INTO t1 VALUES (GET_LOCK('tmp', 1));
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
INSERT INTO t1 VALUES (IS_FREE_LOCK('tmp'));
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
INSERT INTO t1 VALUES (IS_USED_LOCK('tmp'));
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
INSERT INTO t1 VALUES (LOAD_FILE('../../std_data/words2.dat'));
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
INSERT INTO t1 VALUES (MASTER_POS_WAIT('dummy arg', 4711, 1));
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
INSERT INTO t1 VALUES (RELEASE_LOCK('tmp'));
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
INSERT INTO t1 VALUES (ROW_COUNT());
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
INSERT INTO t1 VALUES (SESSION_USER());
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
INSERT INTO t1 VALUES (SLEEP(1));
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
INSERT INTO t1 VALUES (SYSDATE());
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
INSERT INTO t1 VALUES (SYSTEM_USER());
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
INSERT INTO t1 VALUES (USER());
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
INSERT INTO t1 VALUES (UUID());
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
INSERT INTO t1 VALUES (UUID_SHORT());
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
INSERT INTO t1 VALUES (VERSION());
Warnings:
Note 1592 Statement may not be safe to log in statement format.
diff --git a/mysql-test/suite/binlog/t/binlog_auto_increment_bug33029.test b/mysql-test/suite/binlog/t/binlog_auto_increment_bug33029.test
index 5297767675c..19137066429 100644
--- a/mysql-test/suite/binlog/t/binlog_auto_increment_bug33029.test
+++ b/mysql-test/suite/binlog/t/binlog_auto_increment_bug33029.test
@@ -25,9 +25,22 @@ let $MYSQLD_DATADIR= `select @@datadir`;
copy_file $MYSQL_TEST_DIR/std_data/bug33029-slave-relay-bin.000001 $MYSQLD_DATADIR/slave-relay-bin.000001;
-write_file $MYSQLD_DATADIR/slave-relay-bin.index;
-slave-relay-bin.000001
-EOF
+
+# After patch for BUG#12190, the filename used in CHANGE MASTER
+# RELAY_LOG_FILE will be automatically added the directory of the
+# relay log before comparison, thus we need to added the directory
+# part (./ on unix .\ on windows) when faking the relay-log-bin.index.
+disable_query_log;
+if (`select convert(@@version_compile_os using latin1) IN ("Win32","Win64","Windows") = 0`)
+{
+ eval select './slave-relay-bin.000001\n' into dumpfile '$MYSQLD_DATADIR/slave-relay-bin.index';
+}
+
+if (`select convert(@@version_compile_os using latin1) IN ("Win32","Win64","Windows") != 0`)
+{
+ eval select '.\\\\slave-relay-bin.000001\n' into dumpfile '$MYSQLD_DATADIR/slave-relay-bin.index';
+}
+enable_query_log;
change master to
MASTER_HOST='dummy.localdomain',
diff --git a/mysql-test/suite/binlog/t/binlog_format_switch_inside_trans.test b/mysql-test/suite/binlog/t/binlog_format_switch_inside_trans.test
new file mode 100644
index 00000000000..8ae87d13a12
--- /dev/null
+++ b/mysql-test/suite/binlog/t/binlog_format_switch_inside_trans.test
@@ -0,0 +1,98 @@
+#
+# BUG#47863
+# This test verifies if the session variable 'binlog_format'
+# is read-only inside a transaction and in sub-statements.
+#
+
+source include/have_innodb.inc;
+source include/have_binlog_format_row.inc;
+
+set @save_binlog_format= @@global.binlog_format;
+create table t1 (a int) engine= myisam;
+create table t2 (a int) engine= innodb;
+
+SELECT @@session.binlog_format;
+SET AUTOCOMMIT=1;
+--echo # Test that the session variable 'binlog_format'
+--echo # is writable outside a transaction.
+set @@session.binlog_format= statement;
+SELECT @@session.binlog_format;
+
+begin;
+--echo # Test that the session variable 'binlog_format' is read-only
+--echo # inside a transaction with no preceding updates.
+--error ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT
+ set @@session.binlog_format= mixed;
+
+ insert into t2 values (1);
+--echo # Test that the session variable 'binlog_format' is read-only
+--echo # inside a transaction with preceding transactional updates.
+--error ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT
+ set @@session.binlog_format= row;
+commit;
+
+begin;
+ insert into t1 values (2);
+--echo # Test that the session variable 'binlog_format' is read-only
+--echo # inside a transaction with preceding non-transactional updates.
+--error ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT
+ set @@session.binlog_format= statement;
+commit;
+
+--echo # Test that the session variable 'binlog_format' is writable
+--echo # when AUTOCOMMIT=0, before a transaction has started.
+set AUTOCOMMIT=0;
+set @@session.binlog_format= row;
+SELECT @@session.binlog_format;
+
+insert into t1 values (4);
+--echo # Test that the session variable 'binlog_format' is read-only inside an
+--echo # AUTOCOMMIT=0 transaction with preceding non-transactional updates.
+--error ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT
+set @@session.binlog_format= statement;
+SELECT @@session.binlog_format;
+commit;
+
+insert into t2 values (5);
+--echo # Test that the session variable 'binlog_format' is read-only inside an
+--echo # AUTOCOMMIT=0 transaction with preceding transactional updates.
+--error ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT
+set @@session.binlog_format= row;
+SELECT @@session.binlog_format;
+commit;
+
+begin;
+ insert into t2 values (6);
+--echo # Test that the global variable 'binlog_format' is writable
+--echo # inside a transaction.
+ SELECT @@global.binlog_format;
+ set @@global.binlog_format= statement;
+ SELECT @@global.binlog_format;
+commit;
+
+set @@global.binlog_format= @save_binlog_format;
+
+create table t3(a int, b int) engine= innodb;
+create table t4(a int) engine= innodb;
+create table t5(a int) engine= innodb;
+delimiter |;
+eval create trigger tr2 after insert on t3 for each row begin
+ insert into t4(a) values(1);
+ set @@session.binlog_format= statement;
+ insert into t4(a) values(2);
+ insert into t5(a) values(3);
+end |
+delimiter ;|
+
+--echo # Test that the session variable 'binlog_format' is read-only
+--echo # in sub-statements.
+--error ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT
+insert into t3(a,b) values(1,1);
+SELECT @@session.binlog_format;
+
+drop table t1;
+drop table t2;
+drop table t3;
+drop table t4;
+drop table t5;
+
diff --git a/mysql-test/suite/binlog/t/binlog_grant.test b/mysql-test/suite/binlog/t/binlog_grant.test
index d36dcce4cc3..9d9c6031b5a 100644
--- a/mysql-test/suite/binlog/t/binlog_grant.test
+++ b/mysql-test/suite/binlog/t/binlog_grant.test
@@ -22,14 +22,10 @@ connect (root,localhost,root,,test);
connection root;
--echo [root]
---error ER_LOCAL_VARIABLE
-set global sql_log_bin = 1;
set session sql_log_bin = 1;
connection plain;
--echo [plain]
---error ER_LOCAL_VARIABLE
-set global sql_log_bin = 1;
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
set session sql_log_bin = 1;
diff --git a/mysql-test/suite/binlog/t/binlog_implicit_commit.test b/mysql-test/suite/binlog/t/binlog_implicit_commit.test
new file mode 100644
index 00000000000..a682ab95e3d
--- /dev/null
+++ b/mysql-test/suite/binlog/t/binlog_implicit_commit.test
@@ -0,0 +1,63 @@
+# The purpose of this test is to test that setting autocommit does a
+# commit of outstanding transactions and nothing is left pending in
+# the transaction cache.
+
+source include/have_log_bin.inc;
+source include/have_innodb.inc;
+
+# We need a transactional engine, so let's use InnoDB
+CREATE TABLE t1 (id INT) ENGINE = InnoDB;
+
+# Testing SET AUTOCOMMIT
+SET BINLOG_FORMAT = STATEMENT;
+
+let $cleanup = COMMIT;
+
+let $prepare = SET AUTOCOMMIT = 0;
+let $statement = SET AUTOCOMMIT = 1;
+source extra/binlog_tests/implicit.test;
+
+let $prepare = SET AUTOCOMMIT = 1;
+let $statement = SET AUTOCOMMIT = 1;
+source extra/binlog_tests/implicit.test;
+
+let $prepare = SET AUTOCOMMIT = 0;
+let $statement = SET AUTOCOMMIT = 0;
+source extra/binlog_tests/implicit.test;
+
+let $prepare = SET AUTOCOMMIT = 1;
+let $statement = SET AUTOCOMMIT = 0;
+source extra/binlog_tests/implicit.test;
+
+SET BINLOG_FORMAT = ROW;
+let $prepare = SET AUTOCOMMIT = 0;
+let $statement = SET AUTOCOMMIT = 1;
+source extra/binlog_tests/implicit.test;
+
+let $prepare = SET AUTOCOMMIT = 1;
+let $statement = SET AUTOCOMMIT = 1;
+source extra/binlog_tests/implicit.test;
+
+let $prepare = SET AUTOCOMMIT = 0;
+let $statement = SET AUTOCOMMIT = 0;
+source extra/binlog_tests/implicit.test;
+
+let $prepare = SET AUTOCOMMIT = 1;
+let $statement = SET AUTOCOMMIT = 0;
+source extra/binlog_tests/implicit.test;
+
+RESET MASTER;
+SET AUTOCOMMIT = 0;
+INSERT INTO t1 VALUES (1);
+source include/show_binlog_events.inc;
+LOCK TABLES t1 WRITE;
+source include/show_binlog_events.inc;
+INSERT INTO t1 VALUES (2);
+source include/show_binlog_events.inc;
+UNLOCK TABLES;
+source include/show_binlog_events.inc;
+COMMIT;
+source include/show_binlog_events.inc;
+
+# Cleaning up
+DROP TABLE t1;
diff --git a/mysql-test/suite/binlog/t/binlog_incident.test b/mysql-test/suite/binlog/t/binlog_incident.test
index 901ac49ea24..88e7332e88e 100644
--- a/mysql-test/suite/binlog/t/binlog_incident.test
+++ b/mysql-test/suite/binlog/t/binlog_incident.test
@@ -20,7 +20,7 @@ REPLACE INTO t1 VALUES (4);
DROP TABLE t1;
FLUSH LOGS;
-exec $MYSQL_BINLOG --start-position=106 $MYSQLD_DATADIR/master-bin.000001 >$MYSQLTEST_VARDIR/tmp/binlog_incident-bug44442.sql;
+exec $MYSQL_BINLOG --start-position=107 $MYSQLD_DATADIR/master-bin.000001 >$MYSQLTEST_VARDIR/tmp/binlog_incident-bug44442.sql;
--disable_query_log
eval SELECT cont LIKE '%RELOAD DATABASE; # Shall generate syntax error%' AS `Contain RELOAD DATABASE` FROM (SELECT load_file('$MYSQLTEST_VARDIR/tmp/binlog_incident-bug44442.sql') AS cont) AS tbl;
--enable_query_log
diff --git a/mysql-test/suite/binlog/t/binlog_innodb.test b/mysql-test/suite/binlog/t/binlog_innodb.test
index f84fd65226a..c33a31a30f2 100644
--- a/mysql-test/suite/binlog/t/binlog_innodb.test
+++ b/mysql-test/suite/binlog/t/binlog_innodb.test
@@ -27,13 +27,13 @@ SET BINLOG_FORMAT=STATEMENT;
BEGIN;
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
-error ER_BINLOG_LOGGING_IMPOSSIBLE;
+error ER_BINLOG_STMT_MODE_AND_ROW_ENGINE;
UPDATE t1 SET b = 1*a WHERE a > 1;
COMMIT;
BEGIN;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
-error ER_BINLOG_LOGGING_IMPOSSIBLE;
+error ER_BINLOG_STMT_MODE_AND_ROW_ENGINE;
UPDATE t1 SET b = 2*a WHERE a > 2;
COMMIT;
@@ -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_master_status.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 no UPDATE in binlog
+source include/show_master_status.inc;
# cleanup bug#27716
drop table t1, t2;
diff --git a/mysql-test/suite/binlog/t/binlog_killed.test b/mysql-test/suite/binlog/t/binlog_killed.test
index e2db326129d..5380ccc1d72 100644
--- a/mysql-test/suite/binlog/t/binlog_killed.test
+++ b/mysql-test/suite/binlog/t/binlog_killed.test
@@ -1,6 +1,8 @@
-- source include/have_innodb.inc
-- source include/have_binlog_format_statement.inc
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
# You cannot use `KILL' with the Embedded MySQL Server library,
# because the embedded server merely runs inside the threads of the host
# application. -- the docs
@@ -51,7 +53,7 @@ reap;
let $rows= `select count(*) from t2 /* must be 2 or 0 */`;
let $MYSQLD_DATADIR= `select @@datadir`;
---exec $MYSQL_BINLOG --force-if-open --start-position=134 $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/kill_query_calling_sp.binlog
+--exec $MYSQL_BINLOG --force-if-open --start-position=175 $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/kill_query_calling_sp.binlog
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
eval select
(@a:=load_file("$MYSQLTEST_VARDIR/tmp/kill_query_calling_sp.binlog"))
diff --git a/mysql-test/suite/binlog/t/binlog_killed_simulate.test b/mysql-test/suite/binlog/t/binlog_killed_simulate.test
index ec61271ae88..9cfa9e3e88e 100644
--- a/mysql-test/suite/binlog/t/binlog_killed_simulate.test
+++ b/mysql-test/suite/binlog/t/binlog_killed_simulate.test
@@ -24,7 +24,7 @@ update t1 set a=2 /* will be "killed" after work has been done */;
# for some constants like the offset of the first real event
# that is different between severs versions.
let $MYSQLD_DATADIR= `select @@datadir`;
---exec $MYSQL_BINLOG --force-if-open --start-position=106 $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog
+--exec $MYSQL_BINLOG --force-if-open --start-position=107 $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
eval select
(@a:=load_file("$MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
@@ -52,7 +52,7 @@ load data infile '../../std_data/rpl_loaddata.dat' into table t2 /* will be "kil
source include/show_binlog_events.inc;
---exec $MYSQL_BINLOG --force-if-open --start-position=98 $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog
+--exec $MYSQL_BINLOG --force-if-open --start-position=210 --stop-position=387 $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
eval select
(@a:=load_file("$MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
diff --git a/mysql-test/suite/binlog/t/binlog_max_extension.test b/mysql-test/suite/binlog/t/binlog_max_extension.test
new file mode 100644
index 00000000000..9f52d195e21
--- /dev/null
+++ b/mysql-test/suite/binlog/t/binlog_max_extension.test
@@ -0,0 +1,92 @@
+# BUG#40611: MySQL cannot make a binary log after sequential number beyond
+# unsigned long.
+#
+# Problem statement
+# =================
+#
+# Extension for log file names might be created with negative
+# numbers (when counter used would wrap around), causing server
+# failure when incrementing -00001 (reaching number 000000
+# extension).
+#
+# Test
+# ====
+# This tests aims at testing the a patch that removes negatives
+# numbers from log name extensions and checks that the server
+# reports gracefully that the limit has been reached.
+#
+# It instruments index file to point to a log file close to
+# the new maximum and calls flush logs to get warning.
+#
+
+call mtr.add_suppression("Next log extension: 2147483647. Remaining log filename extensions: 0.");
+call mtr.add_suppression("Log filename extension number exhausted:");
+call mtr.add_suppression("Can't generate a unique log-filename");
+
+
+-- source include/have_log_bin.inc
+RESET MASTER;
+
+-- let $MYSQLD_DATADIR= `select @@datadir`
+
+###############################################
+# check hitting maximum file name extension:
+###############################################
+
+##########
+# Prepare
+##########
+
+# 1. Stop master server
+-- write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
+wait
+EOF
+-- shutdown_server 10
+-- source include/wait_until_disconnected.inc
+
+# 2. Prepare log and index file
+-- copy_file $MYSQLD_DATADIR/master-bin.index $MYSQLD_DATADIR/master-bin.index.orig
+-- copy_file $MYSQLD_DATADIR/master-bin.000001 $MYSQLD_DATADIR/master-bin.2147483646
+-- append_file $MYSQLD_DATADIR/master-bin.index
+master-bin.2147483646
+EOF
+
+# 3. Restart the server
+-- append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
+restart
+EOF
+-- enable_reconnect
+-- source include/wait_until_connected_again.inc
+
+###########
+# Assertion
+###########
+
+# assertion: should throw warning
+FLUSH LOGS;
+
+##############
+# Clean up
+##############
+
+# 1. Stop the server
+-- write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
+wait
+EOF
+-- shutdown_server 10
+-- source include/wait_until_disconnected.inc
+
+# 2. Undo changes to index and log files
+-- remove_file $MYSQLD_DATADIR/master-bin.index
+-- copy_file $MYSQLD_DATADIR/master-bin.index.orig $MYSQLD_DATADIR/master-bin.index
+-- remove_file $MYSQLD_DATADIR/master-bin.index.orig
+
+-- remove_file $MYSQLD_DATADIR/master-bin.2147483646
+-- remove_file $MYSQLD_DATADIR/master-bin.2147483647
+
+# 3. Restart the server
+-- append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
+restart
+EOF
+-- enable_reconnect
+-- source include/wait_until_connected_again.inc
diff --git a/mysql-test/suite/binlog/t/binlog_mixed_failure_mixing_engines.test b/mysql-test/suite/binlog/t/binlog_mixed_failure_mixing_engines.test
deleted file mode 100644
index 09b168c2882..00000000000
--- a/mysql-test/suite/binlog/t/binlog_mixed_failure_mixing_engines.test
+++ /dev/null
@@ -1,4 +0,0 @@
---source include/have_binlog_format_mixed.inc
---source include/have_innodb.inc
-
---source extra/binlog_tests/binlog_failure_mixing_engines.test
diff --git a/mysql-test/suite/binlog/t/binlog_multi_engine.test b/mysql-test/suite/binlog/t/binlog_multi_engine.test
index c8136d669e4..25ce9e162f1 100644
--- a/mysql-test/suite/binlog/t/binlog_multi_engine.test
+++ b/mysql-test/suite/binlog/t/binlog_multi_engine.test
@@ -7,6 +7,8 @@ source include/have_blackhole.inc;
source include/have_ndb.inc;
source include/have_log_bin.inc;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
CREATE TABLE t1m (m INT, n INT) ENGINE=MYISAM;
CREATE TABLE t1b (b INT, c INT) ENGINE=BLACKHOLE;
CREATE TABLE t1n (e INT, f INT) ENGINE=NDB;
@@ -22,8 +24,10 @@ UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c;
# Here and below we need to wait when some event appears in binlog
# to avoid unsrted mixing local events and from NDB
-let $wait_binlog_event= t1m, t1b;
+let $wait_binlog_event= COMMIT;
source include/wait_for_binlog_event.inc;
+let $event= query_get_value(SHOW BINLOG EVENTS, Info, 9);
+--echo The last event before the COMMIT is $event
echo *** Please look in binlog_multi_engine.test if you have a diff here ****;
START TRANSACTION;
@@ -51,8 +55,10 @@ SET SESSION BINLOG_FORMAT=MIXED;
INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2);
INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2);
-let $wait_binlog_event= t1m;
+let $wait_binlog_event= COMMIT;
source include/wait_for_binlog_event.inc;
+let $event= query_get_value(SHOW BINLOG EVENTS, Info, 6);
+--echo The last event before the COMMIT is $event
INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2);
@@ -60,7 +66,7 @@ let $wait_binlog_event= COMMIT;
source include/wait_for_binlog_event.inc;
UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c;
-error ER_BINLOG_LOGGING_IMPOSSIBLE;
+error ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE;
UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f;
# Not possible to test this since NDB writes its own binlog, which
@@ -84,7 +90,7 @@ INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2);
INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2);
INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2);
-error ER_BINLOG_LOGGING_IMPOSSIBLE;
+error ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE;
UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f;
# Not possible to test this since NDB writes its own binlog, which
@@ -93,7 +99,7 @@ UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f;
#UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f;
-error ER_BINLOG_LOGGING_IMPOSSIBLE;
+error ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE;
UPDATE t1n, t1b SET e = 2, b = 3 WHERE f = c;
source include/show_binlog_events.inc;
diff --git a/mysql-test/suite/binlog/t/binlog_row_failure_mixing_engines.test b/mysql-test/suite/binlog/t/binlog_row_failure_mixing_engines.test
deleted file mode 100644
index e25af7a7e10..00000000000
--- a/mysql-test/suite/binlog/t/binlog_row_failure_mixing_engines.test
+++ /dev/null
@@ -1,4 +0,0 @@
---source include/have_binlog_format_row.inc
---source include/have_innodb.inc
-
---source extra/binlog_tests/binlog_failure_mixing_engines.test
diff --git a/mysql-test/suite/binlog/t/binlog_statement_insert_delayed.test b/mysql-test/suite/binlog/t/binlog_statement_insert_delayed.test
index 9b78296236f..b23f73784d4 100644
--- a/mysql-test/suite/binlog/t/binlog_statement_insert_delayed.test
+++ b/mysql-test/suite/binlog/t/binlog_statement_insert_delayed.test
@@ -6,4 +6,7 @@
-- disable_query_log
reset master; # get rid of previous tests binlog
-- enable_query_log
+disable_query_log;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+enable_query_log;
-- source extra/binlog_tests/binlog_insert_delayed.test
diff --git a/mysql-test/suite/binlog/t/binlog_stm_do_db.test b/mysql-test/suite/binlog/t/binlog_stm_do_db.test
index 858bc8cc683..991fdef1bea 100644
--- a/mysql-test/suite/binlog/t/binlog_stm_do_db.test
+++ b/mysql-test/suite/binlog/t/binlog_stm_do_db.test
@@ -74,11 +74,11 @@ INSERT INTO t1 SELECT * FROM t2;
-- echo ### assertion: the statements *will* raise log error because
-- echo ### binlog-do-db is not filtering used database
BEGIN;
--- error ER_BINLOG_LOGGING_IMPOSSIBLE
+-- error ER_BINLOG_STMT_MODE_AND_ROW_ENGINE
INSERT INTO t2 VALUES (1,2), (1,3), (1,4);
--- error ER_BINLOG_LOGGING_IMPOSSIBLE
+-- error ER_BINLOG_STMT_MODE_AND_ROW_ENGINE
-- eval UPDATE $filtered.t1 ft1, $not_filtered.t1 nft1 SET ft1.x=1, nft1.x=2
--- error ER_BINLOG_LOGGING_IMPOSSIBLE
+-- error ER_BINLOG_STMT_MODE_AND_ROW_ENGINE
INSERT INTO t1 SELECT * FROM t2;
COMMIT;
diff --git a/mysql-test/suite/binlog/t/binlog_stm_ps.test b/mysql-test/suite/binlog/t/binlog_stm_ps.test
index 55e3d30ad23..02db8dfc0fa 100644
--- a/mysql-test/suite/binlog/t/binlog_stm_ps.test
+++ b/mysql-test/suite/binlog/t/binlog_stm_ps.test
@@ -3,6 +3,10 @@
-- source include/not_embedded.inc
-- source include/have_binlog_format_statement.inc
+disable_query_log;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+enable_query_log;
+
-- disable_query_log
reset master; # get rid of previous tests binlog
-- enable_query_log
diff --git a/mysql-test/suite/binlog/t/binlog_stm_row.test b/mysql-test/suite/binlog/t/binlog_stm_row.test
index 29b0a69330d..71444a04c6f 100644
--- a/mysql-test/suite/binlog/t/binlog_stm_row.test
+++ b/mysql-test/suite/binlog/t/binlog_stm_row.test
@@ -2,7 +2,7 @@
# Test sets its own binlog_format, so we restrict it to run only once
--source include/have_binlog_format_row.inc
-CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
+CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
# Get rid of previous tests binlog
--disable_query_log
diff --git a/mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test b/mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test
index 21c11d5a3df..35235ce951a 100644
--- a/mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test
+++ b/mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test
@@ -25,6 +25,8 @@
-- source include/have_log_bin.inc
-- source include/have_binlog_format_statement.inc
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted. .*");
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave. .*");
-- echo ### NOT filtered database => assertion: warnings ARE shown
diff --git a/mysql-test/suite/binlog/t/binlog_tmp_table.test b/mysql-test/suite/binlog/t/binlog_tmp_table.test
index 54af8a8cb68..6947959a5e0 100644
--- a/mysql-test/suite/binlog/t/binlog_tmp_table.test
+++ b/mysql-test/suite/binlog/t/binlog_tmp_table.test
@@ -30,7 +30,6 @@ source include/have_binlog_format_mixed_or_statement.inc;
connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
connect (master1,127.0.0.1,root,,test,$MASTER_MYPORT,);
-RESET MASTER;
create table foo (a int);
diff --git a/mysql-test/suite/binlog/t/binlog_unsafe-master.opt b/mysql-test/suite/binlog/t/binlog_unsafe-master.opt
new file mode 100644
index 00000000000..78bcdd89270
--- /dev/null
+++ b/mysql-test/suite/binlog/t/binlog_unsafe-master.opt
@@ -0,0 +1 @@
+$UDF_EXAMPLE_LIB_OPT --log-output=file,table
diff --git a/mysql-test/suite/binlog/t/binlog_unsafe.test b/mysql-test/suite/binlog/t/binlog_unsafe.test
index 5e399f3e602..601c7b34a9e 100644
--- a/mysql-test/suite/binlog/t/binlog_unsafe.test
+++ b/mysql-test/suite/binlog/t/binlog_unsafe.test
@@ -1,34 +1,61 @@
+# ==== Background ====
+#
+# Some statements may execute differently on master and slave when
+# logged in statement format. Such statements are called unsafe.
+# Unsafe statements include:
+#
+# - statements using @@variables (with a small number of exceptions;
+# see below);
+# - statements using certain functions, e.g., UUID();
+# - statements using LIMIT;
+# - INSERT DELAYED;
+# - insert into two autoinc columns;
+# - statements using UDF's.
+# - statements reading from log tables in the mysql database.
+#
+# Note that statements that use stored functions, stored procedures,
+# triggers, views, or prepared statements that invoke unsafe
+# statements shall also be unsafe.
+#
+# Unsafeness of a statement shall have the following consequences:
+#
+# 1. If the binlogging is on and the unsafe statement is logged:
+# - If binlog_format=STATEMENT, the statement shall give a warning.
+# - If binlog_format=MIXED or binlog_format=ROW, the statement shall
+# be logged in row format.
+#
+# 2. If binlogging is off or the statement is not logged (e.g. SELECT
+# UUID()), no warning shall be issued and the statement shall not
+# be logged.
+#
+# Moreover, when a sub-statement of a recursive construct (i.e.,
+# stored function, stored procedure, trigger, view, or prepared
+# statement) is unsafe and binlog_format=STATEMENT, then a warning
+# shall be issued for every recursive construct. In effect, this
+# creates a stack trace from the top-level statement to the unsafe
+# statement.
+#
+#
# ==== Purpose ====
#
-# Some statements can not be written to the binlog in a safe manner
-# with statement-based replication, either because they rely on
-# features that are local to the server they are replicated from
-# (e.g., @@variables), or because they include nondeterministic
-# queries (e.g., LIMIT), or because the time at which the query is
-# executed cannot be determined (e.g., INSERT DELAYED). Such
-# statements should be marked unsafe. All unsafe statements should
-# give a warning.
-# Yet the warning/error message isn't issued when SQL_LOG_BIN is turned off.
-#
-# This test verifies that a warning is generated for statements that
-# should be unsafe, when they are executed under statement mode
-# logging.
-#
-# All variables should be unsafe, with some exceptions. Therefore,
-# this test also verifies that the exceptions do *not* generare a
+# This test verifies that a warning is generated when it should,
+# according to the rules above.
+#
+# All @@variables should be unsafe, with some exceptions. Therefore,
+# this test also verifies that the exceptions do *not* generate a
# warning.
#
#
# ==== Method ====
#
-# We try an INSERT DELAYED statement and verify that a warning is
-# issued.
+# 1. Each type of statements listed above is executed.
#
-# We try to insert unsafe variables into a table in several ways:
-# directly with an INSERT statement, from a stored procedure, from a
-# stored function, from a trigger, from a prepared statement, and from
-# a complicated nesting of triggers, functions, procedures, and
-# prepared statements. In all cases, a warning should be issued.
+# 2. Each unsafe statement is wrapped in each type of recursive
+# construct (stored function, stored procedure, trigger, view, or
+# prepared statement).
+#
+# 3. Each unsafe statement is wrapped in two levels of recursive
+# constructs (function invoking trigger invoking UUID(), etc).
#
# We try to insert the variables that should not be unsafe into a
# table, and verify that *no* warning is issued.
@@ -38,7 +65,8 @@
# Execute a unsafe statement calling a trigger or stored function
# or neither when @@SQL_LOG_BIN is turned OFF,
# no warning/error is issued
-
+#
+#
# ==== Related bugs and worklogs ====
#
# WL#3339: Issue warnings when statement-based replication may fail
@@ -47,6 +75,8 @@
# BUG#34768: nondeterministic INSERT using LIMIT logged in stmt mode if binlog_format=mixed
# BUG#41980, SBL, INSERT .. SELECT .. LIMIT = ERROR, even when @@SQL_LOG_BIN is 0
# BUG#42640: mysqld crashes when unsafe statements are executed (STRICT_TRANS_TABLES mode)
+# BUG#45825: INSERT DELAYED is not unsafe: logged in statement format
+# BUG#45785: LIMIT in SP does not cause RBL if binlog_format=MIXED
# BUG#47995: Mark user functions as unsafe
# BUG#49222: Mare RAND() unsafe
#
@@ -59,192 +89,313 @@
# rpl.rpl_variables_stm tests the small subset of variables that
# actually can be replicated safely in statement mode.
#
-#
-# ==== Todo ====
-#
-# There are several other ways to create unsafe statements: see, e.g.,
-# WL#3339, BUG#34768.
-
-source include/have_log_bin.inc;
-source include/have_binlog_format_statement.inc;
-
---echo ==== Setup tables ====
-
-CREATE TABLE t1 (a INT);
-CREATE TABLE t2 (a CHAR(40));
-CREATE TABLE t3 (a INT AUTO_INCREMENT PRIMARY KEY);
-CREATE TABLE trigger_table (a CHAR(7));
-CREATE TABLE trigger_table2 (a INT);
-
-
---echo ==== Non-deterministic statements ====
-
-INSERT DELAYED INTO t1 VALUES (5);
-
-
---echo ==== Some variables that *should* be unsafe ====
-
---echo ---- Insert directly ----
-
-INSERT INTO t1 VALUES (@@global.sync_binlog);
-INSERT INTO t1 VALUES (@@session.insert_id);
-INSERT INTO t1 VALUES (@@global.auto_increment_increment);
-INSERT INTO t2 SELECT UUID();
-INSERT INTO t2 VALUES (@@session.sql_mode);
-INSERT INTO t2 VALUES (@@global.init_slave);
-INSERT INTO t2 VALUES (@@hostname);
-
---echo ---- Insert from stored procedure ----
-
-DELIMITER |;
-CREATE PROCEDURE proc()
-BEGIN
- INSERT INTO t1 VALUES (@@global.sync_binlog);
- INSERT INTO t1 VALUES (@@session.insert_id);
- INSERT INTO t1 VALUES (@@global.auto_increment_increment);
- INSERT INTO t2 SELECT UUID();
- INSERT INTO t2 VALUES (@@session.sql_mode);
- INSERT INTO t2 VALUES (@@global.init_slave);
- INSERT INTO t2 VALUES (@@hostname);
-END|
-DELIMITER ;|
-
-CALL proc();
-
---echo ---- Insert from stored function ----
-
-DELIMITER |;
-CREATE FUNCTION func()
-RETURNS INT
+# rpl_ndb.rpl_ndb_binlog_format_errors tests all errors and warnings
+# related to logging format (not just 'Unsafe statement binlogged in
+# statement mode since BINLOG_FORMAT = STATEMENT').
+
+--source include/have_udf.inc
+--source include/have_log_bin.inc
+--source include/have_binlog_format_statement.inc
+
+--disable_query_log
+call mtr.add_suppression("Unsafe statement binlogged in statement format");
+--enable_query_log
+
+--echo #### Setup tables ####
+
+CREATE TABLE t0 (a CHAR(100));
+CREATE TABLE t1 (a CHAR(100));
+CREATE TABLE t2 (a CHAR(100));
+CREATE TABLE t3 (a CHAR(100));
+CREATE TABLE ta0 (a CHAR(100));
+CREATE TABLE ta1 (a CHAR(100));
+CREATE TABLE ta2 (a CHAR(100));
+CREATE TABLE ta3 (a CHAR(100));
+CREATE TABLE autoinc_table (a INT PRIMARY KEY AUTO_INCREMENT);
+CREATE TABLE data_table (a CHAR(100));
+INSERT INTO data_table VALUES ('foo');
+CREATE TABLE trigger_table_1 (a INT);
+CREATE TABLE trigger_table_2 (a INT);
+CREATE TABLE trigger_table_3 (a INT);
+CREATE TABLE double_autoinc_table (a INT PRIMARY KEY AUTO_INCREMENT);
+
+--DELIMITER |
+CREATE TRIGGER double_autoinc_trig
+BEFORE INSERT ON double_autoinc_table FOR EACH ROW
BEGIN
- INSERT INTO t1 VALUES (@@global.sync_binlog);
- INSERT INTO t1 VALUES (@@session.insert_id);
- INSERT INTO t1 VALUES (@@global.auto_increment_increment);
- INSERT INTO t2 SELECT UUID();
- INSERT INTO t2 VALUES (@@session.sql_mode);
- INSERT INTO t2 VALUES (@@global.init_slave);
- INSERT INTO t2 VALUES (@@hostname);
- RETURN 0;
+ INSERT INTO autoinc_table VALUES (NULL);
END|
-DELIMITER ;|
-
-SELECT func();
---echo ---- Insert from trigger ----
-
-DELIMITER |;
-CREATE TRIGGER trig
-BEFORE INSERT ON trigger_table
-FOR EACH ROW
+CREATE FUNCTION multi_unsafe_func() RETURNS INT
BEGIN
- INSERT INTO t1 VALUES (@@global.sync_binlog);
- INSERT INTO t1 VALUES (@@session.insert_id);
- INSERT INTO t1 VALUES (@@global.auto_increment_increment);
- INSERT INTO t2 SELECT UUID();
- INSERT INTO t2 VALUES (@@session.sql_mode);
- INSERT INTO t2 VALUES (@@global.init_slave);
- INSERT INTO t2 VALUES (@@hostname);
+ INSERT INTO t0 VALUES(CONCAT(@@hostname, @@hostname));
+ INSERT INTO t0 VALUES(0);
+ INSERT INTO t0 VALUES(CONCAT(UUID(), @@hostname));
+ RETURN 1;
END|
-DELIMITER ;|
-
-INSERT INTO trigger_table VALUES ('bye.');
+--DELIMITER ;
+
+--replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
+--eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB"
+
+# In each iteration of this loop, we select one method to make the
+# statement unsafe.
+--let $unsafe_type= 0
+while (`SELECT $unsafe_type < 9`) {
+
+ --echo
+
+ if (`SELECT $unsafe_type = 0`) {
+ --echo ==== Testing UUID() unsafeness ====
+ --let $desc_0= unsafe UUID() function
+ --let $stmt_sidef_0= INSERT INTO t0 VALUES (UUID())
+ --let $value_0= UUID()
+ --let $sel_sidef_0=
+ --let $sel_retval_0= SELECT UUID()
+ --let $CRC_ARG_expected_number_of_warnings= 1
+ }
+
+ if (`SELECT $unsafe_type = 1`) {
+ --echo ==== Testing @@hostname unsafeness ====
+ --let $desc_0= unsafe @@hostname variable
+ --let $stmt_sidef_0= INSERT INTO t0 VALUES (@@hostname)
+ --let $value_0= @@hostname
+ --let $sel_sidef_0=
+ # $sel_retval is going to be used in views. Views cannot execute
+ # statements that refer to @@variables. Hence, we set $set_retval
+ # to empty instead of SELECT @@hostname.
+ --let $sel_retval_0=
+ --let $CRC_ARG_expected_number_of_warnings= 1
+ }
+
+ if (`SELECT $unsafe_type = 2`) {
+ --echo ==== Testing SELECT...LIMIT unsafeness ====
+ --let $desc_0= unsafe SELECT...LIMIT statement
+ --let $stmt_sidef_0= INSERT INTO t0 SELECT * FROM data_table LIMIT 1
+ --let $value_0=
+ --let $sel_sidef_0=
+ --let $sel_retval_0= SELECT * FROM data_table LIMIT 1
+ --let $CRC_ARG_expected_number_of_warnings= 1
+ }
+
+ if (`SELECT $unsafe_type = 3`) {
+ --echo ==== Testing INSERT DELAYED unsafeness ====
+ --let $desc_0= unsafe INSERT DELAYED statement
+ --let $stmt_sidef_0= INSERT DELAYED INTO t0 VALUES (1), (2)
+ --let $value_0=
+ --let $sel_sidef_0=
+ --let $sel_retval_0=
+ --let $CRC_ARG_expected_number_of_warnings= 1
+ }
+
+ if (`SELECT $unsafe_type = 4`) {
+ --echo ==== Testing unsafeness of insert of two autoinc values ====
+ --let $desc_0= unsafe update of two autoinc columns
+ --let $stmt_sidef_0= INSERT INTO double_autoinc_table VALUES (NULL)
+ --let $value_0=
+ --let $sel_sidef_0=
+ --let $sel_retval_0=
+ --let $CRC_ARG_expected_number_of_warnings= 1
+ }
+
+ if (`SELECT $unsafe_type = 5`) {
+ --echo ==== Testing unsafeness of UDF's ====
+ --let $desc_0= unsafe UDF
+ --let $stmt_sidef_0= INSERT INTO t0 VALUES (myfunc_int(10))
+ --let $value_0= myfunc_int(10)
+ --let $sel_sidef_0= SELECT myfunc_int(10)
+ --let $sel_retval_0=
+ --let $CRC_ARG_expected_number_of_warnings= 1
+ }
+
+ if (`SELECT $unsafe_type = 6`) {
+ --echo ==== Testing unsafeness of access to mysql.general_log ====
+ --let $desc_0= unsafe use of mysql.general_log
+ --let $stmt_sidef_0= INSERT INTO t0 SELECT COUNT(*) FROM mysql.general_log
+ --let $value_0=
+ --let $sel_sidef_0=
+ --let $sel_retval_0= SELECT COUNT(*) FROM mysql.general_log
+ --let $CRC_ARG_expected_number_of_warnings= 1
+ }
+
+ if (`SELECT $unsafe_type = 7`) {
+ --echo ==== Testing a statement that is unsafe in many ways ====
+ --let $desc_0= statement that is unsafe in many ways
+ # Concatenate three unsafe values, and then concatenate NULL to
+ # that so that the result is NULL and we instead use autoinc.
+ --let $stmt_sidef_0= INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1
+ --let $value_0=
+ --let $sel_sidef_0=
+ --let $sel_retval_0=
+ --let $CRC_ARG_expected_number_of_warnings= 7
+ }
+
+ if (`SELECT $unsafe_type = 8`) {
+ --echo ==== Testing a statement that is unsafe several times ====
+ --let $desc_0= statement that is unsafe several times
+ --let $stmt_sidef_0= INSERT INTO ta0 VALUES (multi_unsafe_func())
+ --let $value_0=
+ --let $sel_sidef_0= SELECT multi_unsafe_func()
+ --let $sel_retval_0=
+ --let $CRC_ARG_expected_number_of_warnings= 2
+ }
+
+ # In each iteration of the following loop, we select one way to
+ # enclose the unsafe statement as a sub-statement of a recursive
+ # construct (i.e., a function, procedure, trigger, view, or prepared
+ # statement).
+ #
+ # In the last iteration, $call_type_1=7, we don't create a recursive
+ # construct. Instead, we just invoke the unsafe statement directly.
+
+ --let $call_type_1= 0
+ while (`SELECT $call_type_1 < 8`) {
+ #--echo debug: level 1, types $call_type_1 -> $unsafe_type
+ --let $CRC_ARG_level= 1
+ --let $CRC_ARG_type= $call_type_1
+ --let $CRC_ARG_stmt_sidef= $stmt_sidef_0
+ --let $CRC_ARG_value= $value_0
+ --let $CRC_ARG_sel_sidef= $sel_sidef_0
+ --let $CRC_ARG_sel_retval= $sel_retval_0
+ --let $CRC_ARG_desc= $desc_0
+ --source extra/rpl_tests/create_recursive_construct.inc
+ --let $stmt_sidef_1= $CRC_RET_stmt_sidef
+ --let $value_1= $CRC_RET_value
+ --let $sel_sidef_1= $CRC_RET_sel_sidef
+ --let $sel_retval_1= $CRC_RET_sel_retval
+ --let $is_toplevel_1= $CRC_RET_is_toplevel
+ --let $drop_1= $CRC_RET_drop
+ --let $desc_1= $CRC_RET_desc
+
+ # Some statements must be top-level statements, i.e., cannot be
+ # called as a sub-statement of any recursive construct. (One
+ # example is 'EXECUTE prepared_stmt'). When
+ # create_recursive_construct.inc creates a top-level statement, it
+ # sets $CRC_RET_is_toplevel=1.
+
+ if (!$is_toplevel_1) {
+
+ # In each iteration of this loop, we select one way to enclose
+ # the previous recursive construct in another recursive
+ # construct.
+
+ --let $call_type_2= 0
+ while (`SELECT $call_type_2 < 7`) {
+ #--echo debug: level 2, types $call_type_2 -> $call_type_1 -> $unsafe_type
+ --let $CRC_ARG_level= 2
+ --let $CRC_ARG_type= $call_type_2
+ --let $CRC_ARG_stmt_sidef= $stmt_sidef_1
+ --let $CRC_ARG_value= $value_1
+ --let $CRC_ARG_sel_sidef= $sel_sidef_1
+ --let $CRC_ARG_sel_retval= $sel_retval_1
+ --let $CRC_ARG_desc= $desc_1
+ --source extra/rpl_tests/create_recursive_construct.inc
+ --let $stmt_sidef_2= $CRC_RET_stmt_sidef
+ --let $value_2= $CRC_RET_value
+ --let $sel_sidef_2= $CRC_RET_sel_sidef
+ --let $sel_retval_2= $CRC_RET_sel_retval
+ --let $is_toplevel_2= $CRC_RET_is_toplevel
+ --let $drop_2= $CRC_RET_drop
+ --let $desc_2= $CRC_RET_desc
+
+ if (!$is_toplevel_2) {
+
+ # Conditioned out since it makes result file really big.
+
+ if (0) {
+
+ # In each iteration of this loop, we select one way to enclose
+ # the previous recursive construct in another recursive
+ # construct.
+
+ --let $call_type_3= 0
+ while (`SELECT $call_type_3 < 7`) {
+ #--echo debug: level 3, types $call_type_2 -> $call_type_2 -> $call_type_1 -> $unsafe_type
+ --let $CRC_ARG_level= 3
+ --let $CRC_ARG_type= $call_type_3
+ --let $CRC_ARG_stmt_sidef= $stmt_sidef_2
+ --let $CRC_ARG_value= $value_2
+ --let $CRC_ARG_sel_sidef= $sel_sidef_2
+ --let $CRC_ARG_sel_retval= $sel_retval_2
+ --let $CRC_ARG_desc= $desc_2
+ --source extra/rpl_tests/create_recursive_construct.inc
+
+ # Drop created object.
+ if (`SELECT '$drop_3' != ''`) {
+ --eval $drop_3
+ }
+ --inc $call_type_3
+ } # while (call_type_3)
+ } # if (0)
+ } # if (!is_toplevel_2)
+
+ # Drop created object.
+ if (`SELECT '$drop_2' != ''`) {
+ --eval $drop_2
+ }
+ --inc $call_type_2
+ } # while (call_type_2)
+ } # if (!is_toplevel_1)
+
+ # Drop created object.
+ if (`SELECT '$drop_1' != ''`) {
+ --eval $drop_1
+ }
+ --inc $call_type_1
+ } # while (call_type_1)
+
+ --inc $unsafe_type
+} # while (unsafe_type)
+
+DROP TRIGGER double_autoinc_trig;
+DROP TABLE t0, t1, t2, t3, ta0, ta1, ta2, ta3,
+ autoinc_table, double_autoinc_table,
+ data_table,
+ trigger_table_1, trigger_table_2, trigger_table_3;
+DROP FUNCTION myfunc_int;
+DROP FUNCTION multi_unsafe_func;
+
+
+--echo ==== Special system variables that should *not* be unsafe ====
---echo ---- Insert from prepared statement ----
-
-PREPARE p1 FROM 'INSERT INTO t1 VALUES (@@global.sync_binlog)';
-PREPARE p2 FROM 'INSERT INTO t1 VALUES (@@session.insert_id)';
-PREPARE p3 FROM 'INSERT INTO t1 VALUES (@@global.auto_increment_increment)';
-PREPARE p4 FROM 'INSERT INTO t2 SELECT UUID()';
-PREPARE p5 FROM 'INSERT INTO t2 VALUES (@@session.sql_mode)';
-PREPARE p6 FROM 'INSERT INTO t2 VALUES (@@global.init_slave)';
-PREPARE p7 FROM 'INSERT INTO t2 VALUES (@@hostname)';
-
-EXECUTE p1; EXECUTE p2; EXECUTE p3; EXECUTE p4; EXECUTE p5;
-EXECUTE p6; EXECUTE p7;
-
---echo ---- Insert from nested call of triggers / functions / procedures ----
-
-DELIMITER |;
-
-# proc1: cause trigger 'trig' above to be triggered.
-CREATE PROCEDURE proc1()
- INSERT INTO trigger_table VALUES ('ha!')|
-
-# func2: call proc1 above.
-CREATE FUNCTION func2()
-RETURNS INT
-BEGIN
- CALL proc1();
- RETURN 0;
-END|
-
-# trig3: call func2 above
-CREATE TRIGGER trig3
-BEFORE INSERT ON trigger_table2
-FOR EACH ROW
-BEGIN
- DECLARE tmp INT;
- SELECT func2() INTO tmp;
-END|
-
-# proc4: cause trig3 above to be triggered.
-CREATE PROCEDURE proc4()
- INSERT INTO trigger_table2 VALUES (1)|
-
-# func5: call proc4 above.
-CREATE FUNCTION func5()
-RETURNS INT
-BEGIN
- CALL proc4;
- RETURN 0;
-END|
-
-# prep6: call func5() above.
-PREPARE prep6 FROM 'SELECT func5()'|
-
-DELIMITER ;|
-
-# try a complicated call path to trigger 'trig'.
-EXECUTE prep6;
-
-
---echo ==== Variables that should *not* be unsafe ====
+CREATE TABLE t1 (a VARCHAR(1000));
+CREATE TABLE autoinc_table (a INT PRIMARY KEY AUTO_INCREMENT);
-INSERT INTO t1 VALUES (@@session.pseudo_thread_id);
-INSERT INTO t1 VALUES (@@session.pseudo_thread_id);
+INSERT INTO t1 VALUES (@@session.auto_increment_increment);
+INSERT INTO t1 VALUES (@@session.auto_increment_offset);
+INSERT INTO t1 VALUES (@@session.character_set_client);
+INSERT INTO t1 VALUES (@@session.character_set_connection);
+INSERT INTO t1 VALUES (@@session.character_set_database);
+INSERT INTO t1 VALUES (@@session.character_set_server);
+INSERT INTO t1 VALUES (@@session.collation_connection);
+INSERT INTO t1 VALUES (@@session.collation_database);
+INSERT INTO t1 VALUES (@@session.collation_server);
INSERT INTO t1 VALUES (@@session.foreign_key_checks);
+INSERT INTO t1 VALUES (@@session.identity);
+INSERT INTO t1 VALUES (@@session.last_insert_id);
+INSERT INTO t1 VALUES (@@session.lc_time_names);
+INSERT INTO t1 VALUES (@@session.pseudo_thread_id);
INSERT INTO t1 VALUES (@@session.sql_auto_is_null);
+INSERT INTO t1 VALUES (@@session.timestamp);
+INSERT INTO t1 VALUES (@@session.time_zone);
INSERT INTO t1 VALUES (@@session.unique_checks);
-INSERT INTO t1 VALUES (@@session.auto_increment_increment);
-INSERT INTO t1 VALUES (@@session.auto_increment_offset);
-INSERT INTO t2 VALUES (@@session.character_set_client);
-INSERT INTO t2 VALUES (@@session.collation_connection);
-INSERT INTO t2 VALUES (@@session.collation_server);
-INSERT INTO t2 VALUES (@@session.time_zone);
-INSERT INTO t2 VALUES (@@session.lc_time_names);
-INSERT INTO t2 VALUES (@@session.collation_database);
-INSERT INTO t2 VALUES (@@session.timestamp);
-INSERT INTO t2 VALUES (@@session.last_insert_id);
+
SET @my_var= 4711;
INSERT INTO t1 VALUES (@my_var);
# using insert_id implicitly should be ok.
-SET insert_id=12;
-INSERT INTO t3 VALUES (NULL);
+SET insert_id= 12;
+INSERT INTO autoinc_table VALUES (NULL);
+# See set_var.cc for explanation.
+--echo The following variables *should* give a warning, despite they are replicated.
+INSERT INTO t1 VALUES (@@session.sql_mode);
+INSERT INTO t1 VALUES (@@session.insert_id);
+
+
+DROP TABLE t1, autoinc_table;
---echo ==== Clean up ====
-DROP PROCEDURE proc;
-DROP FUNCTION func;
-DROP TRIGGER trig;
-DROP PROCEDURE proc1;
-DROP FUNCTION func2;
-DROP TRIGGER trig3;
-DROP PROCEDURE proc4;
-DROP FUNCTION func5;
-DROP PREPARE prep6;
-DROP TABLE t1, t2, t3, trigger_table, trigger_table2;
#
# BUG#34768 - nondeterministic INSERT using LIMIT logged in stmt mode if
# binlog_format=mixed
@@ -392,6 +543,109 @@ DROP TABLE t1, t2;
SET @@SESSION.SQL_MODE = @save_sql_mode;
#
+# BUG#45825: INSERT DELAYED is not unsafe: logged in statement format
+# BUG#45785: LIMIT in SP does not cause RBL if binlog_format=MIXED
+#
+SET @old_binlog_format = @@session.binlog_format;
+SET binlog_format = MIXED;
+
+CREATE TABLE t1 (a INT);
+CREATE TABLE t2 (a INT);
+INSERT INTO t2 VALUES (1), (2);
+
+--DELIMITER |
+CREATE PROCEDURE proc_insert_delayed ()
+BEGIN
+ INSERT DELAYED INTO t1 VALUES (1), (2);
+END|
+
+CREATE FUNCTION func_limit ()
+RETURNS INT
+BEGIN
+ INSERT INTO t1 SELECT * FROM t2 LIMIT 1;
+ RETURN 1;
+END|
+--DELIMITER ;
+
+RESET MASTER;
+CALL proc_insert_delayed();
+SELECT func_limit();
+source include/show_binlog_events.inc;
+
+SET @@session.binlog_format = @old_binlog_format;
+DROP TABLE t1, t2;
+DROP PROCEDURE proc_insert_delayed;
+DROP FUNCTION func_limit;
+
+#
+# BUG#45827
+# The test verifies if stmt that have more than one
+# different tables to update with autoinc columns
+# will produce unsafe warning
+#
+
+# Test case1: stmt that have more than one different tables
+# to update with autoinc columns should produce
+# unsafe warning when calling a function
+CREATE TABLE t1 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
+CREATE TABLE t2 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
+
+# The purpose of this function is to insert into t1 so that the second
+# column is auto_increment'ed.
+DELIMITER |;
+CREATE FUNCTION func_modify_t1 ()
+RETURNS INT
+BEGIN
+ INSERT INTO t1 SET a = 1;
+ RETURN 0;
+END|
+DELIMITER ;|
+--echo # The following statement causes auto-incrementation
+--echo # of both t1 and t2. It is logged in statement format,
+--echo # so it should produce unsafe warning.
+INSERT INTO t2 SET a = func_modify_t1();
+
+SET SESSION binlog_format = MIXED;
+--echo # Check if the statement is logged in row format.
+let $pos0_master= query_get_value(SHOW MASTER STATUS, Position, 1);
+INSERT INTO t2 SET a = func_modify_t1();
+eval SHOW BINLOG EVENTS FROM $pos0_master;
+
+# clean up
+DROP TABLE t1,t2;
+DROP FUNCTION func_modify_t1;
+#
+# Test case2: stmt that have more than one different tables
+# to update with autoinc columns should produce
+# unsafe warning when invoking a trigger
+SET SESSION binlog_format = STATEMENT;
+CREATE TABLE t1 (a INT);
+CREATE TABLE t2 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
+CREATE TABLE t3 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
+
+# The purpose of this function is to insert into t1 so that the second
+# column is auto_increment'ed.
+delimiter |;
+create trigger tri_modify_two_tables before insert on t1 for each row begin
+ insert into t2(a) values(new.a);
+ insert into t3(a) values(new.a);
+end |
+delimiter ;|
+--echo # The following statement causes auto-incrementation
+--echo # of both t2 and t3. It is logged in statement format,
+--echo # so it should produce unsafe warning
+INSERT INTO t1 SET a = 1;
+
+SET SESSION binlog_format = MIXED;
+--echo # Check if the statement is logged in row format.
+let $pos1_master= query_get_value(SHOW MASTER STATUS, Position, 1);
+INSERT INTO t1 SET a = 2;
+eval SHOW BINLOG EVENTS FROM $pos1_master;
+
+# clean up
+DROP TABLE t1,t2,t3;
+
+#
# BUG#47995: Mark user functions as unsafe
# BUG#49222: Mare RAND() unsafe
#
@@ -399,6 +653,7 @@ SET @@SESSION.SQL_MODE = @save_sql_mode;
# generate a warning. Each INSERT statement below should generate a
# warning.
#
+SET SESSION binlog_format = STATEMENT;
CREATE TABLE t1 (a VARCHAR(1000));
INSERT INTO t1 VALUES (CURRENT_USER()); #marked unsafe before BUG#47995
diff --git a/mysql-test/suite/binlog/t/binlog_write_error.test b/mysql-test/suite/binlog/t/binlog_write_error.test
index 0e57db3d9a0..78f55c1bb0d 100644
--- a/mysql-test/suite/binlog/t/binlog_write_error.test
+++ b/mysql-test/suite/binlog/t/binlog_write_error.test
@@ -15,6 +15,7 @@
source include/have_log_bin.inc;
source include/have_debug.inc;
+source include/have_binlog_format_mixed_or_statement.inc;
--echo #
--echo # Initialization
diff --git a/mysql-test/suite/binlog/t/disabled.def b/mysql-test/suite/binlog/t/disabled.def
index 0018387de94..a86136fec69 100644
--- a/mysql-test/suite/binlog/t/disabled.def
+++ b/mysql-test/suite/binlog/t/disabled.def
@@ -10,4 +10,5 @@
#
##############################################################################
binlog_truncate_innodb : BUG#42643 2009-02-06 mats Changes to InnoDB requires to complete fix for BUG#36763
+binlog_unsafe : BUG#50312 2010-01-13 lsoares Warnings for unsafe sub-statement not returned to client
diff --git a/mysql-test/suite/federated/federated_debug.test b/mysql-test/suite/federated/federated_debug.test
index 4152d2975b3..2183def4610 100644
--- a/mysql-test/suite/federated/federated_debug.test
+++ b/mysql-test/suite/federated/federated_debug.test
@@ -19,7 +19,7 @@ eval CREATE TABLE t1(a INT) ENGINE=FEDERATED
SELECT * FROM t1;
--echo # Start a asynchronous reload
---exec $MYSQLADMIN --no-defaults -S $MASTER_MYSOCK -P $MASTER_MYPORT -u root --password= refresh 2>&1
+--exec $MYSQLADMIN --no-defaults --default-character-set=latin1 -S $MASTER_MYSOCK -P $MASTER_MYPORT -u root --password= refresh 2>&1
--echo # Wait for tables to be closed
let $show_statement= SHOW STATUS LIKE 'Open_tables';
diff --git a/mysql-test/suite/federated/federated_server.result b/mysql-test/suite/federated/federated_server.result
index 2c20d1c1d57..5079a4dcfa0 100644
--- a/mysql-test/suite/federated/federated_server.result
+++ b/mysql-test/suite/federated/federated_server.result
@@ -197,13 +197,13 @@ select * from federated.t1;
id name
1 this is legitimate
alter server s1 options (database 'db_bogus');
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
flush tables;
select * from federated.t1;
id name
1 this is legitimate
alter server s1 options (database 'db_bogus');
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
flush tables;
select * from federated.t1;
id name
@@ -214,7 +214,7 @@ select * from federated.t1;
id name
2 this is bogus
drop server if exists 's1';
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
create server 's1' foreign data wrapper 'mysql' options
(HOST '127.0.0.1',
DATABASE 'db_legitimate',
@@ -223,7 +223,7 @@ PASSWORD '',
PORT SLAVE_PORT,
SOCKET '',
OWNER 'root');
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
drop server 's1';
create server 's1' foreign data wrapper 'mysql' options
(HOST '127.0.0.1',
diff --git a/mysql-test/suite/federated/my.cnf b/mysql-test/suite/federated/my.cnf
index 82600949712..67ac440f0df 100644
--- a/mysql-test/suite/federated/my.cnf
+++ b/mysql-test/suite/federated/my.cnf
@@ -1,5 +1,6 @@
# Use default setting for mysqld processes
!include include/default_mysqld.cnf
+!include include/default_client.cnf
[mysqld.1]
log-bin= master-bin
diff --git a/mysql-test/suite/funcs_1/datadict/basics_mixed1.inc b/mysql-test/suite/funcs_1/datadict/basics_mixed1.inc
index 2cb9cbc700b..ba51bfce57b 100644
--- a/mysql-test/suite/funcs_1/datadict/basics_mixed1.inc
+++ b/mysql-test/suite/funcs_1/datadict/basics_mixed1.inc
@@ -15,8 +15,7 @@ let $message= root: create a table with a name of an IS table directly in IS;
let $dd_part1= CREATE TABLE;
let $dd_part2= ( c1 INT );
--source suite/funcs_1/datadict/basics_mixed2.inc
-# FIXME 3.2.1.6: error message ER_UNKNOWN_TABLE is misleading
---error ER_UNKNOWN_TABLE
+--error ER_DBACCESS_DENIED_ERROR
CREATE TABLE t1 (f1 INT, f2 INT, f3 INT);
#
# 1.2 CREATE VIEW
@@ -26,8 +25,7 @@ CREATE VIEW tables AS SELECT 'garbage';
--error ER_DBACCESS_DENIED_ERROR
CREATE VIEW tables AS SELECT * FROM information_schema.tables;
# 1.2.2 New view
-# ER_DBACCESS_DENIED_ERROR would be better.
---error ER_UNKNOWN_TABLE
+--error ER_DBACCESS_DENIED_ERROR
CREATE VIEW v1 AS SELECT 'garbage';
# 2 Attempt to create tables and views when residing in information_schema
@@ -37,8 +35,7 @@ let $message= root: create a table with a name of an IS table from other db;
let $dd_part1= CREATE TABLE information_schema.;
let $dd_part2= ( c1 INT );
--source suite/funcs_1/datadict/basics_mixed2.inc
-# FIXME 3.2.1.6: error message ER_UNKNOWN_TABLE is misleading
---error ER_UNKNOWN_TABLE
+--error ER_DBACCESS_DENIED_ERROR
CREATE TABLE information_schema.t1 (f1 INT, f2 INT, f3 INT);
#
# Hit on existing INFORMATION_SCHEMA table
@@ -48,6 +45,5 @@ CREATE VIEW information_schema.tables AS SELECT 'garbage';
CREATE VIEW information_schema.tables AS
SELECT * FROM information_schema.tables;
# New table
-# ER_DBACCESS_DENIED_ERROR would be better.
---error ER_UNKNOWN_TABLE
+--error ER_DBACCESS_DENIED_ERROR
CREATE VIEW information_schema.v1 AS SELECT 'garbage';
diff --git a/mysql-test/suite/funcs_1/datadict/datadict_priv.inc b/mysql-test/suite/funcs_1/datadict/datadict_priv.inc
index 8256b51949e..013d9957812 100644
--- a/mysql-test/suite/funcs_1/datadict/datadict_priv.inc
+++ b/mysql-test/suite/funcs_1/datadict/datadict_priv.inc
@@ -88,13 +88,13 @@ eval ALTER TABLE $table DROP COLUMN $drop_column;
--error ER_DBACCESS_DENIED_ERROR
eval ALTER TABLE $table ADD COLUMN (my_column INT);
---error ER_UNKNOWN_TABLE
+--error ER_DBACCESS_DENIED_ERROR
eval RENAME TABLE $table TO new_$table;
--error ER_DBACCESS_DENIED_ERROR
eval RENAME TABLE $table TO files;
---error ER_UNKNOWN_TABLE
+--error ER_DBACCESS_DENIED_ERROR
eval CREATE TABLE new_$table AS SELECT * FROM $table;
#----------------------------------------------------------------------
diff --git a/mysql-test/suite/funcs_1/datadict/is_routines.inc b/mysql-test/suite/funcs_1/datadict/is_routines.inc
index c2b547e600f..f3ab766e885 100644
--- a/mysql-test/suite/funcs_1/datadict/is_routines.inc
+++ b/mysql-test/suite/funcs_1/datadict/is_routines.inc
@@ -181,19 +181,19 @@ FLUSH PRIVILEGES;
--echo # Establish connection testuser1 (user=testuser1)
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
connect (testuser1, localhost, testuser1, , db_datadict);
---replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss"
+--replace_column 23 "YYYY-MM-DD hh:mm:ss" 24 "YYYY-MM-DD hh:mm:ss"
SELECT * FROM information_schema.routines;
--echo # Establish connection testuser2 (user=testuser2)
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
connect (testuser2, localhost, testuser2, , db_datadict);
---replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss"
+--replace_column 23 "YYYY-MM-DD hh:mm:ss" 24 "YYYY-MM-DD hh:mm:ss"
SELECT * FROM information_schema.routines;
--echo # Establish connection testuser3 (user=testuser3)
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
connect (testuser3, localhost, testuser3, , test);
---replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss"
+--replace_column 23 "YYYY-MM-DD hh:mm:ss" 24 "YYYY-MM-DD hh:mm:ss"
SELECT * FROM information_schema.routines;
# Cleanup
@@ -238,7 +238,7 @@ USE db_datadict;
CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
--vertical_results
---replace_column 16 <created> 17 <modified>
+--replace_column 23 <created> 24 <modified>
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
ORDER BY routine_name;
--horizontal_results
@@ -246,7 +246,7 @@ ORDER BY routine_name;
ALTER PROCEDURE sp_for_routines SQL SECURITY INVOKER;
ALTER FUNCTION function_for_routines COMMENT 'updated comments';
--vertical_results
---replace_column 16 <created> 17 <modified>
+--replace_column 23 <created> 24 <modified>
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
ORDER BY routine_name;
--horizontal_results
@@ -258,7 +258,7 @@ SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
--vertical_results
---replace_column 16 <created> 17 <modified>
+--replace_column 23 <created> 24 <modified>
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
ORDER BY routine_name;
--horizontal_results
@@ -403,7 +403,7 @@ CALL db_datadict.sp_6_408004 ();
SELECT * FROM db_datadict.res_6_408004_2;
--vertical_results
---replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss"
+--replace_column 23 "YYYY-MM-DD hh:mm:ss" 24 "YYYY-MM-DD hh:mm:ss"
SELECT *, LENGTH(routine_definition) FROM information_schema.routines
WHERE routine_schema = 'db_datadict';
--horizontal_results
diff --git a/mysql-test/suite/funcs_1/datadict/is_tables.inc b/mysql-test/suite/funcs_1/datadict/is_tables.inc
index d1e4608a572..0177ca05e50 100644
--- a/mysql-test/suite/funcs_1/datadict/is_tables.inc
+++ b/mysql-test/suite/funcs_1/datadict/is_tables.inc
@@ -43,7 +43,7 @@ eval SHOW TABLES FROM information_schema LIKE '$is_table';
# Ensure that the INFORMATION_SCHEMA.TABLES table has the following columns,
# in the following order:
#
-# TABLE_CATALOG (always shows NULL),
+# TABLE_CATALOG (always shows 'def'),
# TABLE_SCHEMA (shows the name of the database, or schema, in which an
# accessible table resides),
# TABLE_NAME (shows the name of a table which the current user may access),
@@ -81,9 +81,9 @@ eval SHOW COLUMNS FROM information_schema.$is_table;
# Note: Retrieval of information within information_schema.columns about
# information_schema.tables is in is_columns_is.test.
-# Show that TABLE_CATALOG is always NULL.
+# Show that TABLE_CATALOG is always 'def'.
SELECT table_catalog, table_schema, table_name
-FROM information_schema.tables WHERE table_catalog IS NOT NULL;
+FROM information_schema.tables WHERE table_catalog IS NULL OR table_catalog <> 'def';
--echo ################################################################################
diff --git a/mysql-test/suite/funcs_1/r/innodb_func_view.result b/mysql-test/suite/funcs_1/r/innodb_func_view.result
index 4beb0c8aaf2..e788dfd9fc1 100644
--- a/mysql-test/suite/funcs_1/r/innodb_func_view.result
+++ b/mysql-test/suite/funcs_1/r/innodb_func_view.result
@@ -910,13 +910,13 @@ SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double), my_double, id FROM t
WHERE select_id = 151 OR select_id IS NULL order by id;
LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id
NULL NULL 1
- -1.7976931348623e+308 2
-AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3
+ -1.7976931348623e308 2
+AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e308 3
0 4
-1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö',`t1_values`.`my_double`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -925,13 +925,13 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 151 OR select_id IS NULL) order by id;
LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id
NULL NULL 1
- -1.7976931348623e+308 2
-AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3
+ -1.7976931348623e308 2
+AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e308 3
0 4
-1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
DROP VIEW v1;
@@ -945,8 +945,8 @@ AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9999999999999999999999999999999999.999999999999
0.000000000000000000000000000000 4
-1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö',`t1_values`.`my_decimal`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -960,8 +960,8 @@ AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9999999999999999999999999999999999.999999999999
0.000000000000000000000000000000 4
-1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
DROP VIEW v1;
@@ -1354,8 +1354,8 @@ my_double, id FROM t1_values
WHERE select_id = 133 OR select_id IS NULL order by id;
IFNULL(my_double,'IS_NULL') my_double id
IS_NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
SHOW CREATE VIEW v1;
@@ -1366,8 +1366,8 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 133 OR select_id IS NULL) order by id;
IFNULL(my_double,'IS_NULL') my_double id
IS_NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
DROP VIEW v1;
@@ -1682,8 +1682,8 @@ WHERE select_id = 121 OR select_id IS NULL order by id;
IF(my_double IS NULL, 'IS NULL',
'IS NOT NULL') my_double id
IS NULL NULL 1
-IS NOT NULL -1.7976931348623e+308 2
-IS NOT NULL 1.7976931348623e+308 3
+IS NOT NULL -1.7976931348623e308 2
+IS NOT NULL 1.7976931348623e308 3
IS NOT NULL 0 4
IS NOT NULL -1 5
SHOW CREATE VIEW v1;
@@ -1696,8 +1696,8 @@ WHERE select_id = 121 OR select_id IS NULL) order by id;
IF(my_double IS NULL, 'IS NULL',
'IS NOT NULL') my_double id
IS NULL NULL 1
-IS NOT NULL -1.7976931348623e+308 2
-IS NOT NULL 1.7976931348623e+308 3
+IS NOT NULL -1.7976931348623e308 2
+IS NOT NULL 1.7976931348623e308 3
IS NOT NULL 0 4
IS NOT NULL -1 5
DROP VIEW v1;
@@ -2014,8 +2014,8 @@ my_double, id FROM t1_values
WHERE select_id = 109 OR select_id IS NULL order by id;
IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id
IS NOT TRUE NULL 1
-IS TRUE -1.7976931348623e+308 2
-IS TRUE 1.7976931348623e+308 3
+IS TRUE -1.7976931348623e308 2
+IS TRUE 1.7976931348623e308 3
IS NOT TRUE 0 4
IS TRUE -1 5
SHOW CREATE VIEW v1;
@@ -2026,8 +2026,8 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 109 OR select_id IS NULL) order by id;
IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id
IS NOT TRUE NULL 1
-IS TRUE -1.7976931348623e+308 2
-IS TRUE 1.7976931348623e+308 3
+IS TRUE -1.7976931348623e308 2
+IS TRUE 1.7976931348623e308 3
IS NOT TRUE 0 4
IS TRUE -1 5
DROP VIEW v1;
@@ -2096,6 +2096,9 @@ IS NOT TRUE 2
IS NOT TRUE <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varbinary_1000`,'IS TRUE','IS NOT TRUE') AS `IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2108,6 +2111,9 @@ IS NOT TRUE 2
IS NOT TRUE <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -2123,10 +2129,10 @@ IS NOT TRUE <--------30 characters-------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
Warnings:
-Warning 1292 Truncated incorrect DOUBLE value: ''
+Warning 1292 Truncated incorrect DOUBLE value: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->'
-Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
-Warning 1292 Truncated incorrect DOUBLE value: '-1'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---\xC3\xA4\xC3\x96\xC3\xBC\xC3\x9F@\xC2\xB5*$-- \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DOUBLE value: '-1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_binary_30`,'IS TRUE','IS NOT TRUE') AS `IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2140,10 +2146,10 @@ IS NOT TRUE <--------30 characters-------> 3
IS NOT TRUE ---äÖüß@µ*$--
IS TRUE -1
Warnings:
-Warning 1292 Truncated incorrect DOUBLE value: ''
+Warning 1292 Truncated incorrect DOUBLE value: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->'
-Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
-Warning 1292 Truncated incorrect DOUBLE value: '-1'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---\xC3\xA4\xC3\x96\xC3\xBC\xC3\x9F@\xC2\xB5*$-- \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DOUBLE value: '-1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
DROP VIEW v1;
@@ -2158,6 +2164,9 @@ IS NOT TRUE 2
IS NOT TRUE <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varchar_1000`,'IS TRUE','IS NOT TRUE') AS `IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2170,6 +2179,9 @@ IS NOT TRUE 2
IS NOT TRUE <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -2186,7 +2198,7 @@ IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->'
-Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_char_30`,'IS TRUE','IS NOT TRUE') AS `IF(my_char_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2201,7 +2213,7 @@ IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->'
-Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -2550,13 +2562,13 @@ my_double, id FROM t1_values
WHERE select_id = 89 OR select_id IS NULL order by id;
CAST(my_double AS UNSIGNED INTEGER) my_double id
NULL NULL 1
-9223372036854775808 -1.7976931348623e+308 2
-9223372036854775807 1.7976931348623e+308 3
+9223372036854775808 -1.7976931348623e308 2
+9223372036854775807 1.7976931348623e308 3
0 0 4
18446744073709551615 -1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as unsigned) AS `CAST(my_double AS UNSIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2565,13 +2577,13 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 89 OR select_id IS NULL) order by id;
CAST(my_double AS UNSIGNED INTEGER) my_double id
NULL NULL 1
-9223372036854775808 -1.7976931348623e+308 2
-9223372036854775807 1.7976931348623e+308 3
+9223372036854775808 -1.7976931348623e308 2
+9223372036854775807 1.7976931348623e308 3
0 0 4
18446744073709551615 -1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
DROP VIEW v1;
@@ -2587,9 +2599,9 @@ NULL NULL 1
0 0.000000000000000000000000000000 4
0 -1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as unsigned) AS `CAST(my_decimal AS UNSIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2603,9 +2615,9 @@ NULL NULL 1
0 0.000000000000000000000000000000 4
0 -1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
DROP VIEW v1;
@@ -2918,13 +2930,13 @@ my_double, id FROM t1_values
WHERE select_id = 77 OR select_id IS NULL order by id;
CAST(my_double AS SIGNED INTEGER) my_double id
NULL NULL 1
--9223372036854775808 -1.7976931348623e+308 2
-9223372036854775807 1.7976931348623e+308 3
+-9223372036854775808 -1.7976931348623e308 2
+9223372036854775807 1.7976931348623e308 3
0 0 4
-1 -1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as signed) AS `CAST(my_double AS SIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2933,13 +2945,13 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 77 OR select_id IS NULL) order by id;
CAST(my_double AS SIGNED INTEGER) my_double id
NULL NULL 1
--9223372036854775808 -1.7976931348623e+308 2
-9223372036854775807 1.7976931348623e+308 3
+-9223372036854775808 -1.7976931348623e308 2
+9223372036854775807 1.7976931348623e308 3
0 0 4
-1 -1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
DROP VIEW v1;
@@ -2955,8 +2967,8 @@ NULL NULL 1
0 0.000000000000000000000000000000 4
-1 -1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as signed) AS `CAST(my_decimal AS SIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2970,8 +2982,8 @@ NULL NULL 1
0 0.000000000000000000000000000000 4
-1 -1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
DROP VIEW v1;
@@ -3276,16 +3288,16 @@ my_double, id FROM t1_values
WHERE select_id = 65 OR select_id IS NULL order by id;
CAST(my_double AS DECIMAL(37,2)) my_double id
NULL NULL 1
--99999999999999999999999999999999999.99 -1.7976931348623e+308 2
-99999999999999999999999999999999999.99 1.7976931348623e+308 3
+-99999999999999999999999999999999999.99 -1.7976931348623e308 2
+99999999999999999999999999999999999.99 1.7976931348623e308 3
0.00 0 4
-1.00 -1 5
-3333.33 -3333.3333 30
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as decimal(37,2)) AS `CAST(my_double AS DECIMAL(37,2))`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3294,16 +3306,16 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 65 OR select_id IS NULL) order by id;
CAST(my_double AS DECIMAL(37,2)) my_double id
NULL NULL 1
--99999999999999999999999999999999999.99 -1.7976931348623e+308 2
-99999999999999999999999999999999999.99 1.7976931348623e+308 3
+-99999999999999999999999999999999999.99 -1.7976931348623e308 2
+99999999999999999999999999999999999.99 1.7976931348623e308 3
0.00 0 4
-1.00 -1 5
-3333.33 -3333.3333 30
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
DROP VIEW v1;
@@ -3372,9 +3384,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 29
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as decimal(37,2)) AS `CAST(my_varbinary_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3389,9 +3404,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 29
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -3408,14 +3426,14 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 28
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ''
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: '<--------30 characters------->'
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
-Warning 1292 Truncated incorrect DECIMAL value: '-1'
-Warning 1292 Truncated incorrect DECIMAL value: '-3333.3333'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---\xC3\xA4\xC3\x96\xC3\xBC\xC3\x9F@\xC2\xB5*$-- \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DECIMAL value: '-1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DECIMAL value: '-3333.3333\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as decimal(37,2)) AS `CAST(my_binary_30 AS DECIMAL(37,2))`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3430,14 +3448,14 @@ NULL NULL 1
-1.00 -1
-3333.33 -3333.3333
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ''
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: '<--------30 characters------->'
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
-Warning 1292 Truncated incorrect DECIMAL value: '-1'
-Warning 1292 Truncated incorrect DECIMAL value: '-3333.3333'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---\xC3\xA4\xC3\x96\xC3\xBC\xC3\x9F@\xC2\xB5*$-- \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DECIMAL value: '-1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DECIMAL value: '-3333.3333\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
DROP VIEW v1;
@@ -3454,9 +3472,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 27
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as decimal(37,2)) AS `CAST(my_varchar_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3471,9 +3492,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 27
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -3490,12 +3514,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 26
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: ' '
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: '<--------30 characters------->'
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as decimal(37,2)) AS `CAST(my_char_30 AS DECIMAL(37,2))`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3510,12 +3534,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 26
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: ' '
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: '<--------30 characters------->'
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -3656,14 +3680,14 @@ my_double, id FROM t1_values
WHERE select_id = 53 OR select_id IS NULL order by id;
CAST(my_double AS TIME) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
00:00:00 0 4
-00:00:01 -1 5
00:17:58 1758 25
Warnings:
-Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect time value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect time value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect time value: '1.7976931348623e308'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as time) AS `CAST(my_double AS TIME)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3672,14 +3696,14 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 53 OR select_id IS NULL) order by id;
CAST(my_double AS TIME) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
00:00:00 0 4
-00:00:01 -1 5
00:17:58 1758 25
Warnings:
-Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect time value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect time value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect time value: '1.7976931348623e308'
DROP VIEW v1;
@@ -4018,14 +4042,14 @@ my_double, id FROM t1_values
WHERE select_id = 42 OR select_id IS NULL order by id;
CAST(my_double AS DATETIME) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
NULL 0 4
NULL -1 5
NULL 200506271758 19
Warnings:
-Warning 1292 Incorrect datetime value: '-1.7976931348623e+308'
-Warning 1292 Incorrect datetime value: '1.7976931348623e+308'
+Warning 1292 Incorrect datetime value: '-1.7976931348623e308'
+Warning 1292 Incorrect datetime value: '1.7976931348623e308'
Warning 1292 Incorrect datetime value: '0'
Warning 1292 Incorrect datetime value: '-1'
Warning 1292 Incorrect datetime value: '200506271758'
@@ -4037,14 +4061,14 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 42 OR select_id IS NULL) order by id;
CAST(my_double AS DATETIME) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
NULL 0 4
NULL -1 5
NULL 200506271758 19
Warnings:
-Warning 1292 Incorrect datetime value: '-1.7976931348623e+308'
-Warning 1292 Incorrect datetime value: '1.7976931348623e+308'
+Warning 1292 Incorrect datetime value: '-1.7976931348623e308'
+Warning 1292 Incorrect datetime value: '1.7976931348623e308'
Warning 1292 Incorrect datetime value: '0'
Warning 1292 Incorrect datetime value: '-1'
Warning 1292 Incorrect datetime value: '200506271758'
@@ -4392,14 +4416,14 @@ my_double, id FROM t1_values
WHERE select_id = 31 OR select_id IS NULL order by id;
CAST(my_double AS DATE) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
NULL 0 4
NULL -1 5
2005-06-27 20050627 13
Warnings:
-Warning 1292 Incorrect datetime value: '-1.7976931348623e+308'
-Warning 1292 Incorrect datetime value: '1.7976931348623e+308'
+Warning 1292 Incorrect datetime value: '-1.7976931348623e308'
+Warning 1292 Incorrect datetime value: '1.7976931348623e308'
Warning 1292 Incorrect datetime value: '0'
Warning 1292 Incorrect datetime value: '-1'
SHOW CREATE VIEW v1;
@@ -4410,14 +4434,14 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 31 OR select_id IS NULL) order by id;
CAST(my_double AS DATE) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
NULL 0 4
NULL -1 5
2005-06-27 20050627 13
Warnings:
-Warning 1292 Incorrect datetime value: '-1.7976931348623e+308'
-Warning 1292 Incorrect datetime value: '1.7976931348623e+308'
+Warning 1292 Incorrect datetime value: '-1.7976931348623e308'
+Warning 1292 Incorrect datetime value: '1.7976931348623e308'
Warning 1292 Incorrect datetime value: '0'
Warning 1292 Incorrect datetime value: '-1'
DROP VIEW v1;
@@ -4752,8 +4776,8 @@ my_double, id FROM t1_values
WHERE select_id = 20 OR select_id IS NULL order by id;
CAST(my_double AS CHAR) my_double id
NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
SHOW CREATE VIEW v1;
@@ -4764,8 +4788,8 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 20 OR select_id IS NULL) order by id;
CAST(my_double AS CHAR) my_double id
NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
DROP VIEW v1;
@@ -5064,8 +5088,8 @@ my_double, id FROM t1_values
WHERE select_id = 8 OR select_id IS NULL order by id;
CAST(my_double AS BINARY) my_double id
NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
SHOW CREATE VIEW v1;
@@ -5076,8 +5100,8 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 8 OR select_id IS NULL) order by id;
CAST(my_double AS BINARY) my_double id
NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
DROP VIEW v1;
diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result
index 65fc5b5afc9..3e2d084aa0c 100644
--- a/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result
+++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result
@@ -550,9 +550,6 @@ exit handler 2
exit handler 2
exit handler 1
exit handler 1
-Warnings:
-Note 1051 Unknown table 'tqq'
-Note 1051 Unknown table 'tqq'
create table res_t1(w char unique, x char);
insert into res_t1 values ('a', 'b');
CREATE PROCEDURE h1 ()
diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_07.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_07.result
index 5a2c0bb6bdf..a520bdfac36 100644
--- a/mysql-test/suite/funcs_1/r/innodb_storedproc_07.result
+++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_07.result
@@ -80,7 +80,7 @@ CREATE TABLE result (f1 text(200), f2 char(20));
set @@sql_mode='traditional';
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
CREATE PROCEDURE sp1()
BEGIN
declare a tinyint;
@@ -97,7 +97,7 @@ END if;
END//
SHOW CREATE PROCEDURE sp1;
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
-sp1 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`()
+sp1 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`()
BEGIN
declare a tinyint;
declare count_ int default 1;
@@ -117,10 +117,10 @@ Variable_name Value
sql_mode
CALL sp1();
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
SELECT * from result;
f1 f2
-STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER value restored
+STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION value restored
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
sql_mode
@@ -142,7 +142,7 @@ DROP PROCEDURE IF EXISTS sp2;
... show initial value
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
CREATE PROCEDURE sp2()
BEGIN
SET @@sql_mode='MAXDB';
@@ -150,7 +150,7 @@ SHOW VARIABLES LIKE 'sql_mode';
END//
SHOW CREATE PROCEDURE sp2;
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
-sp2 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER CREATE DEFINER=`root`@`localhost` PROCEDURE `sp2`()
+sp2 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `sp2`()
BEGIN
SET @@sql_mode='MAXDB';
SHOW VARIABLES LIKE 'sql_mode';
@@ -158,7 +158,7 @@ END latin1 latin1_swedish_ci latin1_swedish_ci
... show value prior calling procedure
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
... call procedure that changes sql_mode
CALL sp2();
Variable_name Value
@@ -166,7 +166,7 @@ sql_mode PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_
... check whether old value is re-set
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
DROP PROCEDURE sp2;
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_08.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_08.result
index 2e504af6ed4..4d85b97369c 100644
--- a/mysql-test/suite/funcs_1/r/innodb_storedproc_08.result
+++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_08.result
@@ -105,10 +105,17 @@ END//
-----------------------------
SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
SPECIFIC_NAME fn_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_1
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -132,10 +139,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME fn_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_2
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -159,10 +173,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_1
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -184,10 +205,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_2
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -323,10 +351,17 @@ ALTER FUNCTION fn_2 MODIFIES SQL DATA;
-----------------------------
SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
SPECIFIC_NAME fn_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_1
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -350,10 +385,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME fn_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_2
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -377,10 +419,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_1
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -402,10 +451,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_2
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -534,10 +590,17 @@ ALTER FUNCTION fn_2 CONTAINS SQL;
-----------------------------
SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
SPECIFIC_NAME fn_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_1
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -561,10 +624,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME fn_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_2
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -588,10 +658,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_1
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -613,10 +690,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_2
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_03.result b/mysql-test/suite/funcs_1/r/innodb_trig_03.result
index b02fba0f38d..012977ae4a3 100644
--- a/mysql-test/suite/funcs_1/r/innodb_trig_03.result
+++ b/mysql-test/suite/funcs_1/r/innodb_trig_03.result
@@ -77,7 +77,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke TRIGGER on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER on *.* to test_yesprivs@localhost;
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
@@ -155,7 +155,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke UPDATE on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER, UPDATE on *.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
@@ -169,7 +169,7 @@ test_noprivs@localhost
use priv_db;
show grants;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
select f1 from t1 order by f1;
f1
insert 3.5.3.2-no
@@ -401,7 +401,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke SELECT on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER, SELECT on *.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
@@ -415,7 +415,7 @@ test_noprivs@localhost
use priv_db;
show grants;
Grants for test_noprivs@localhost
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
create trigger trg5a_1 before INSERT on t1 for each row
set @test_var = new.f1;
set @test_var = 'before trig 3.5.3.8-1a';
diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_03e.result b/mysql-test/suite/funcs_1/r/innodb_trig_03e.result
index 476ccc6ebd8..bc3f7daf5bc 100644
--- a/mysql-test/suite/funcs_1/r/innodb_trig_03e.result
+++ b/mysql-test/suite/funcs_1/r/innodb_trig_03e.result
@@ -562,7 +562,7 @@ trig 1_1-yes
revoke TRIGGER on *.* from test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
Grants for test_yesprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
select current_user;
current_user
@@ -609,7 +609,7 @@ root@localhost
grant TRIGGER on priv_db.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
Grants for test_yesprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
GRANT TRIGGER ON `priv_db`.* TO 'test_yesprivs'@'localhost'
trigger privilege on db level for create:
@@ -1251,7 +1251,7 @@ drop trigger trg1_0;
create definer=not_ex_user@localhost trigger trg1_0
before INSERT on t1 for each row
set new.f1 = 'trig 1_0-yes';
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
create definer=current_user trigger trg1_1
before INSERT on t1 for each row
set new.f1 = 'trig 1_1-yes';
@@ -1284,7 +1284,7 @@ GRANT SELECT, INSERT, UPDATE, TRIGGER ON `priv_db`.`t1` TO 'test_yesprivs'@'loca
create definer=not_ex_user@localhost trigger trg1_3
after UPDATE on t1 for each row
set @var1 = 'trig 1_3-yes';
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
select current_user;
current_user
root@localhost
diff --git a/mysql-test/suite/funcs_1/r/innodb_views.result b/mysql-test/suite/funcs_1/r/innodb_views.result
index a335e135a4f..b4bce0b0d1b 100644
--- a/mysql-test/suite/funcs_1/r/innodb_views.result
+++ b/mysql-test/suite/funcs_1/r/innodb_views.result
@@ -3546,11 +3546,11 @@ CREATE VIEW v1 or REPLACE AS Select * from tb2 my_table;
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 'or REPLACE AS Select * from tb2 my_table' at line 1
CREATE VIEW v1 WITH CASCADED CHECK OPTION AS Select *
from tb2 my_table limit 50;
-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 'WITH CASCADED CHECK OPTION AS Select *
+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 'CASCADED CHECK OPTION AS Select *
from tb2 my_table limit 50' at line 1
CREATE VIEW v1 WITH LOCAL CHECK OPTION AS Select *
from tb2 my_table limit 50;
-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 'WITH LOCAL CHECK OPTION AS Select *
+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 'LOCAL CHECK OPTION AS Select *
from tb2 my_table limit 50' at line 1
SELECT * FROM tb2 my_table CREATE VIEW As v1;
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 'CREATE VIEW As v1' at line 1
@@ -3580,7 +3580,7 @@ FROM test.tb2 my_table CHECK OPTION WITH CASCADED;
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 'CHECK OPTION WITH CASCADED' at line 2
CREATE OR REPLACE VIEW v1 WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table;
-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 'WITH CASCADED CHECK OPTION
+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 'CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table' at line 1
CREATE OR REPLACE AS SELECT F59, F60
FROM test.tb2 my_table VIEW v1 WITH CASCADED CHECK OPTION;
@@ -3609,7 +3609,7 @@ FROM test.tb2 my_table CHECK OPTION WITH LOCAL;
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 'CHECK OPTION WITH LOCAL' at line 2
CREATE OR REPLACE VIEW v1 WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table;
-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 'WITH CASCADED CHECK OPTION
+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 'CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table' at line 1
CREATE OR REPLACE AS SELECT F59, F60
FROM test.tb2 my_table VIEW v1 WITH LOCAL CHECK OPTION;
@@ -22824,7 +22824,7 @@ f1 f2
ABC 3
SELECT * FROM v1 order by 2;
f1 my_sqrt
-ABC 1.73205080756888
+ABC 1.7320508075688772
ALTER TABLE t1 CHANGE COLUMN f2 f2 VARCHAR(30);
INSERT INTO t1 SET f1 = 'ABC', f2 = 'DEF';
DESCRIBE t1;
@@ -22842,7 +22842,10 @@ ABC DEF
SELECT * FROM v1 order by 2;
f1 my_sqrt
ABC 0
-ABC 1.73205080756888
+ABC 1.7320508075688772
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
SELECT SQRT('DEF');
SQRT('DEF')
0
@@ -22862,27 +22865,36 @@ my_sqrt double YES NULL
SELECT * FROM v2 order by 2;
f1 my_sqrt
ABC 0
-ABC 1.73205080756888
+ABC 1.7320508075688772
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
CREATE TABLE t2 AS SELECT f1, SQRT(f2) my_sqrt FROM t1;
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
SELECT * FROM t2 order by 2;
f1 ABC
my_sqrt 0
f1 ABC
-my_sqrt 1.73205080756888
+my_sqrt 1.7320508075688772
DROP TABLE t2;
CREATE TABLE t2 AS SELECT * FROM v1;
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
SELECT * FROM t2 order by 2;
f1 ABC
my_sqrt 0
f1 ABC
-my_sqrt 1.73205080756888
+my_sqrt 1.7320508075688772
DROP TABLE t2;
CREATE TABLE t2 AS SELECT * FROM v2;
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
SELECT * FROM t2 order by 2;
f1 ABC
my_sqrt 0
f1 ABC
-my_sqrt 1.73205080756888
+my_sqrt 1.7320508075688772
DROP TABLE t1;
DROP TABLE t2;
DROP VIEW v1;
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..ce0bb69e5ee 100644
--- a/mysql-test/suite/funcs_1/r/is_basics_mixed.result
+++ b/mysql-test/suite/funcs_1/r/is_basics_mixed.result
@@ -73,13 +73,13 @@ ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_
CREATE TABLE triggers ( c1 INT );
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
CREATE TABLE t1 (f1 INT, f2 INT, f3 INT);
-ERROR 42S02: Unknown table 't1' in information_schema
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
CREATE VIEW tables AS SELECT 'garbage';
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
CREATE VIEW tables AS SELECT * FROM information_schema.tables;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
CREATE VIEW v1 AS SELECT 'garbage';
-ERROR 42S02: Unknown table 'v1' in information_schema
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
USE test;
CREATE TABLE information_schema. schemata ( c1 INT );
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
@@ -114,14 +114,14 @@ ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_
CREATE TABLE information_schema. triggers ( c1 INT );
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
CREATE TABLE information_schema.t1 (f1 INT, f2 INT, f3 INT);
-ERROR 42S02: Unknown table 't1' in information_schema
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
CREATE VIEW information_schema.tables AS SELECT 'garbage';
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
CREATE VIEW information_schema.tables AS
SELECT * FROM information_schema.tables;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
CREATE VIEW information_schema.v1 AS SELECT 'garbage';
-ERROR 42S02: Unknown table 'v1' in information_schema
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
DROP USER 'testuser1'@'localhost';
CREATE USER 'testuser1'@'localhost';
GRANT ALL ON *.* TO testuser1@localhost;
@@ -163,13 +163,13 @@ ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'informa
CREATE TABLE triggers ( c1 INT );
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
CREATE TABLE t1 (f1 INT, f2 INT, f3 INT);
-ERROR 42S02: Unknown table 't1' in information_schema
+ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
CREATE VIEW tables AS SELECT 'garbage';
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
CREATE VIEW tables AS SELECT * FROM information_schema.tables;
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
CREATE VIEW v1 AS SELECT 'garbage';
-ERROR 42S02: Unknown table 'v1' in information_schema
+ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
USE test;
CREATE TABLE information_schema. schemata ( c1 INT );
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
@@ -204,14 +204,14 @@ ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'informa
CREATE TABLE information_schema. triggers ( c1 INT );
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
CREATE TABLE information_schema.t1 (f1 INT, f2 INT, f3 INT);
-ERROR 42S02: Unknown table 't1' in information_schema
+ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
CREATE VIEW information_schema.tables AS SELECT 'garbage';
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
CREATE VIEW information_schema.tables AS
SELECT * FROM information_schema.tables;
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
CREATE VIEW information_schema.v1 AS SELECT 'garbage';
-ERROR 42S02: Unknown table 'v1' in information_schema
+ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
# Switch to connection default (user=root) and close connection testuser1
DROP USER 'testuser1'@'localhost';
###############################################################################
@@ -584,9 +584,7 @@ DROP PROCEDURE IF EXISTS test.p1;
CREATE PROCEDURE test.p1()
INSERT INTO information_schema.tables
SELECT * FROM information_schema.tables LIMIT 1;
-CALL test.p1();
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
-DROP PROCEDURE test.p1;
CREATE PROCEDURE test.p1()
UPDATE information_schema.columns SET table_schema = 'garbage';
CALL test.p1();
@@ -594,9 +592,7 @@ ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_
DROP PROCEDURE test.p1;
CREATE PROCEDURE test.p1()
DELETE FROM information_schema.schemata;
-CALL test.p1();
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
-DROP PROCEDURE test.p1;
#########################################################################
# Testcase 3.2.17.1+3.2.17.2: To be implemented outside of this script
#########################################################################
diff --git a/mysql-test/suite/funcs_1/r/is_cml_innodb.result b/mysql-test/suite/funcs_1/r/is_cml_innodb.result
index 7c214cb770f..59b802d7c8b 100644
--- a/mysql-test/suite/funcs_1/r/is_cml_innodb.result
+++ b/mysql-test/suite/funcs_1/r/is_cml_innodb.result
@@ -17,16 +17,16 @@ SELECT * FROM information_schema.columns
WHERE table_schema LIKE 'test%'
ORDER BY table_schema, table_name, column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
-NULL test t1 f1 1 NULL YES char 1 2 NULL NULL ucs2 ucs2_general_ci char(1) select,insert,update,references
-NULL test t1 f10 9 NULL YES mediumtext 8388607 16777215 NULL NULL ucs2 ucs2_general_ci mediumtext select,insert,update,references
-NULL test t1 f11 10 NULL YES longtext 2147483647 4294967295 NULL NULL ucs2 ucs2_general_ci longtext select,insert,update,references
-NULL test t1 f2 2 NULL YES char 0 0 NULL NULL ucs2 ucs2_general_ci char(0) select,insert,update,references
-NULL test t1 f3 3 NULL YES char 10 20 NULL NULL ucs2 ucs2_general_ci char(10) select,insert,update,references
-NULL test t1 f5 4 NULL YES varchar 0 0 NULL NULL ucs2 ucs2_general_ci varchar(0) select,insert,update,references
-NULL test t1 f6 5 NULL YES varchar 255 510 NULL NULL ucs2 ucs2_general_ci varchar(255) select,insert,update,references
-NULL test t1 f7 6 NULL YES varchar 260 520 NULL NULL ucs2 ucs2_general_ci varchar(260) select,insert,update,references
-NULL test t1 f8 7 NULL YES text 32767 65535 NULL NULL ucs2 ucs2_general_ci text select,insert,update,references
-NULL test t1 f9 8 NULL YES tinytext 127 255 NULL NULL ucs2 ucs2_general_ci tinytext select,insert,update,references
+def test t1 f1 1 NULL YES char 1 2 NULL NULL ucs2 ucs2_general_ci char(1) select,insert,update,references
+def test t1 f10 9 NULL YES mediumtext 8388607 16777215 NULL NULL ucs2 ucs2_general_ci mediumtext select,insert,update,references
+def test t1 f11 10 NULL YES longtext 2147483647 4294967295 NULL NULL ucs2 ucs2_general_ci longtext select,insert,update,references
+def test t1 f2 2 NULL YES char 0 0 NULL NULL ucs2 ucs2_general_ci char(0) select,insert,update,references
+def test t1 f3 3 NULL YES char 10 20 NULL NULL ucs2 ucs2_general_ci char(10) select,insert,update,references
+def test t1 f5 4 NULL YES varchar 0 0 NULL NULL ucs2 ucs2_general_ci varchar(0) select,insert,update,references
+def test t1 f6 5 NULL YES varchar 255 510 NULL NULL ucs2 ucs2_general_ci varchar(255) select,insert,update,references
+def test t1 f7 6 NULL YES varchar 260 520 NULL NULL ucs2 ucs2_general_ci varchar(260) select,insert,update,references
+def test t1 f8 7 NULL YES text 32767 65535 NULL NULL ucs2 ucs2_general_ci text select,insert,update,references
+def test t1 f9 8 NULL YES tinytext 127 255 NULL NULL ucs2 ucs2_general_ci tinytext select,insert,update,references
##########################################################################
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
##########################################################################
diff --git a/mysql-test/suite/funcs_1/r/is_cml_memory.result b/mysql-test/suite/funcs_1/r/is_cml_memory.result
index fe4b018cec3..6a4abb1f0b9 100644
--- a/mysql-test/suite/funcs_1/r/is_cml_memory.result
+++ b/mysql-test/suite/funcs_1/r/is_cml_memory.result
@@ -14,12 +14,12 @@ SELECT * FROM information_schema.columns
WHERE table_schema LIKE 'test%'
ORDER BY table_schema, table_name, column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
-NULL test t1 f1 1 NULL YES char 1 2 NULL NULL ucs2 ucs2_general_ci char(1) select,insert,update,references
-NULL test t1 f2 2 NULL YES char 0 0 NULL NULL ucs2 ucs2_general_ci char(0) select,insert,update,references
-NULL test t1 f3 3 NULL YES char 10 20 NULL NULL ucs2 ucs2_general_ci char(10) select,insert,update,references
-NULL test t1 f5 4 NULL YES varchar 0 0 NULL NULL ucs2 ucs2_general_ci varchar(0) select,insert,update,references
-NULL test t1 f6 5 NULL YES varchar 255 510 NULL NULL ucs2 ucs2_general_ci varchar(255) select,insert,update,references
-NULL test t1 f7 6 NULL YES varchar 260 520 NULL NULL ucs2 ucs2_general_ci varchar(260) select,insert,update,references
+def test t1 f1 1 NULL YES char 1 2 NULL NULL ucs2 ucs2_general_ci char(1) select,insert,update,references
+def test t1 f2 2 NULL YES char 0 0 NULL NULL ucs2 ucs2_general_ci char(0) select,insert,update,references
+def test t1 f3 3 NULL YES char 10 20 NULL NULL ucs2 ucs2_general_ci char(10) select,insert,update,references
+def test t1 f5 4 NULL YES varchar 0 0 NULL NULL ucs2 ucs2_general_ci varchar(0) select,insert,update,references
+def test t1 f6 5 NULL YES varchar 255 510 NULL NULL ucs2 ucs2_general_ci varchar(255) select,insert,update,references
+def test t1 f7 6 NULL YES varchar 260 520 NULL NULL ucs2 ucs2_general_ci varchar(260) select,insert,update,references
##########################################################################
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
##########################################################################
diff --git a/mysql-test/suite/funcs_1/r/is_cml_myisam.result b/mysql-test/suite/funcs_1/r/is_cml_myisam.result
index 9808b1c1793..e876f108ed8 100644
--- a/mysql-test/suite/funcs_1/r/is_cml_myisam.result
+++ b/mysql-test/suite/funcs_1/r/is_cml_myisam.result
@@ -18,16 +18,16 @@ SELECT * FROM information_schema.columns
WHERE table_schema LIKE 'test%'
ORDER BY table_schema, table_name, column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
-NULL test t1 f1 1 NULL YES char 1 2 NULL NULL ucs2 ucs2_general_ci char(1) select,insert,update,references
-NULL test t1 f10 9 NULL YES mediumtext 8388607 16777215 NULL NULL ucs2 ucs2_general_ci mediumtext select,insert,update,references
-NULL test t1 f11 10 NULL YES longtext 2147483647 4294967295 NULL NULL ucs2 ucs2_general_ci longtext select,insert,update,references
-NULL test t1 f2 2 NULL YES char 0 0 NULL NULL ucs2 ucs2_general_ci char(0) select,insert,update,references
-NULL test t1 f3 3 NULL YES char 10 20 NULL NULL ucs2 ucs2_general_ci char(10) select,insert,update,references
-NULL test t1 f5 4 NULL YES varchar 0 0 NULL NULL ucs2 ucs2_general_ci varchar(0) select,insert,update,references
-NULL test t1 f6 5 NULL YES varchar 255 510 NULL NULL ucs2 ucs2_general_ci varchar(255) select,insert,update,references
-NULL test t1 f7 6 NULL YES varchar 260 520 NULL NULL ucs2 ucs2_general_ci varchar(260) select,insert,update,references
-NULL test t1 f8 7 NULL YES text 32767 65535 NULL NULL ucs2 ucs2_general_ci text select,insert,update,references
-NULL test t1 f9 8 NULL YES tinytext 127 255 NULL NULL ucs2 ucs2_general_ci tinytext select,insert,update,references
+def test t1 f1 1 NULL YES char 1 2 NULL NULL ucs2 ucs2_general_ci char(1) select,insert,update,references
+def test t1 f10 9 NULL YES mediumtext 8388607 16777215 NULL NULL ucs2 ucs2_general_ci mediumtext select,insert,update,references
+def test t1 f11 10 NULL YES longtext 2147483647 4294967295 NULL NULL ucs2 ucs2_general_ci longtext select,insert,update,references
+def test t1 f2 2 NULL YES char 0 0 NULL NULL ucs2 ucs2_general_ci char(0) select,insert,update,references
+def test t1 f3 3 NULL YES char 10 20 NULL NULL ucs2 ucs2_general_ci char(10) select,insert,update,references
+def test t1 f5 4 NULL YES varchar 0 0 NULL NULL ucs2 ucs2_general_ci varchar(0) select,insert,update,references
+def test t1 f6 5 NULL YES varchar 255 510 NULL NULL ucs2 ucs2_general_ci varchar(255) select,insert,update,references
+def test t1 f7 6 NULL YES varchar 260 520 NULL NULL ucs2 ucs2_general_ci varchar(260) select,insert,update,references
+def test t1 f8 7 NULL YES text 32767 65535 NULL NULL ucs2 ucs2_general_ci text select,insert,update,references
+def test t1 f9 8 NULL YES tinytext 127 255 NULL NULL ucs2 ucs2_general_ci tinytext select,insert,update,references
##########################################################################
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
##########################################################################
diff --git a/mysql-test/suite/funcs_1/r/is_cml_ndb.result b/mysql-test/suite/funcs_1/r/is_cml_ndb.result
index b6ccc766d69..22f90433acf 100644
--- a/mysql-test/suite/funcs_1/r/is_cml_ndb.result
+++ b/mysql-test/suite/funcs_1/r/is_cml_ndb.result
@@ -18,16 +18,16 @@ SELECT * FROM information_schema.columns
WHERE table_schema LIKE 'test%'
ORDER BY table_schema, table_name, column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
-NULL test t1 f1 1 NO char 1 2 NULL NULL ucs2 ucs2_general_ci char(1) PRI select,insert,update,references
-NULL test t1 f10 9 NULL YES mediumtext 8388607 16777215 NULL NULL ucs2 ucs2_general_ci mediumtext select,insert,update,references
-NULL test t1 f11 10 NULL YES longtext 2147483647 4294967295 NULL NULL ucs2 ucs2_general_ci longtext select,insert,update,references
-NULL test t1 f2 2 NULL YES char 0 0 NULL NULL ucs2 ucs2_general_ci char(0) select,insert,update,references
-NULL test t1 f3 3 NULL YES char 10 20 NULL NULL ucs2 ucs2_general_ci char(10) select,insert,update,references
-NULL test t1 f5 4 NULL YES varchar 0 0 NULL NULL ucs2 ucs2_general_ci varchar(0) select,insert,update,references
-NULL test t1 f6 5 NULL YES varchar 255 510 NULL NULL ucs2 ucs2_general_ci varchar(255) select,insert,update,references
-NULL test t1 f7 6 NULL YES varchar 260 520 NULL NULL ucs2 ucs2_general_ci varchar(260) select,insert,update,references
-NULL test t1 f8 7 NULL YES text 32767 65535 NULL NULL ucs2 ucs2_general_ci text select,insert,update,references
-NULL test t1 f9 8 NULL YES tinytext 127 255 NULL NULL ucs2 ucs2_general_ci tinytext select,insert,update,references
+def test t1 f1 1 NO char 1 2 NULL NULL ucs2 ucs2_general_ci char(1) PRI select,insert,update,references
+def test t1 f10 9 NULL YES mediumtext 8388607 16777215 NULL NULL ucs2 ucs2_general_ci mediumtext select,insert,update,references
+def test t1 f11 10 NULL YES longtext 2147483647 4294967295 NULL NULL ucs2 ucs2_general_ci longtext select,insert,update,references
+def test t1 f2 2 NULL YES char 0 0 NULL NULL ucs2 ucs2_general_ci char(0) select,insert,update,references
+def test t1 f3 3 NULL YES char 10 20 NULL NULL ucs2 ucs2_general_ci char(10) select,insert,update,references
+def test t1 f5 4 NULL YES varchar 0 0 NULL NULL ucs2 ucs2_general_ci varchar(0) select,insert,update,references
+def test t1 f6 5 NULL YES varchar 255 510 NULL NULL ucs2 ucs2_general_ci varchar(255) select,insert,update,references
+def test t1 f7 6 NULL YES varchar 260 520 NULL NULL ucs2 ucs2_general_ci varchar(260) select,insert,update,references
+def test t1 f8 7 NULL YES text 32767 65535 NULL NULL ucs2 ucs2_general_ci text select,insert,update,references
+def test t1 f9 8 NULL YES tinytext 127 255 NULL NULL ucs2 ucs2_general_ci tinytext select,insert,update,references
##########################################################################
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
##########################################################################
diff --git a/mysql-test/suite/funcs_1/r/is_column_privileges.result b/mysql-test/suite/funcs_1/r/is_column_privileges.result
index 7b12cf8142d..edf0a401697 100644
--- a/mysql-test/suite/funcs_1/r/is_column_privileges.result
+++ b/mysql-test/suite/funcs_1/r/is_column_privileges.result
@@ -29,7 +29,7 @@ DROP FUNCTION test.f1;
DESCRIBE information_schema.COLUMN_PRIVILEGES;
Field Type Null Key Default Extra
GRANTEE varchar(81) NO
-TABLE_CATALOG varchar(512) YES NULL
+TABLE_CATALOG varchar(512) NO
TABLE_SCHEMA varchar(64) NO
TABLE_NAME varchar(64) NO
COLUMN_NAME varchar(64) NO
@@ -39,7 +39,7 @@ SHOW CREATE TABLE information_schema.COLUMN_PRIVILEGES;
Table Create Table
COLUMN_PRIVILEGES CREATE TEMPORARY TABLE `COLUMN_PRIVILEGES` (
`GRANTEE` varchar(81) NOT NULL DEFAULT '',
- `TABLE_CATALOG` varchar(512) DEFAULT NULL,
+ `TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
`COLUMN_NAME` varchar(64) NOT NULL DEFAULT '',
@@ -49,7 +49,7 @@ COLUMN_PRIVILEGES CREATE TEMPORARY TABLE `COLUMN_PRIVILEGES` (
SHOW COLUMNS FROM information_schema.COLUMN_PRIVILEGES;
Field Type Null Key Default Extra
GRANTEE varchar(81) NO
-TABLE_CATALOG varchar(512) YES NULL
+TABLE_CATALOG varchar(512) NO
TABLE_SCHEMA varchar(64) NO
TABLE_NAME varchar(64) NO
COLUMN_NAME varchar(64) NO
@@ -86,91 +86,91 @@ SELECT * FROM information_schema.column_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict t1 f1 INSERT NO
-'testuser1'@'localhost' NULL db_datadict t1 f1 SELECT NO
-'testuser1'@'localhost' NULL db_datadict t1 f2 UPDATE NO
-'testuser1'@'localhost' NULL db_datadict t1 f3 SELECT NO
-'testuser2'@'localhost' NULL db_datadict t1 f2 SELECT NO
-'testuser3'@'localhost' NULL db_datadict t1 f3 SELECT YES
+'testuser1'@'localhost' def db_datadict t1 f1 INSERT NO
+'testuser1'@'localhost' def db_datadict t1 f1 SELECT NO
+'testuser1'@'localhost' def db_datadict t1 f2 UPDATE NO
+'testuser1'@'localhost' def db_datadict t1 f3 SELECT NO
+'testuser2'@'localhost' def db_datadict t1 f2 SELECT NO
+'testuser3'@'localhost' def db_datadict t1 f3 SELECT YES
GRANT UPDATE(f3) ON db_datadict.t1 TO 'testuser1'@'localhost'
WITH GRANT OPTION;
SELECT * FROM information_schema.column_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict t1 f1 INSERT YES
-'testuser1'@'localhost' NULL db_datadict t1 f1 SELECT YES
-'testuser1'@'localhost' NULL db_datadict t1 f2 UPDATE YES
-'testuser1'@'localhost' NULL db_datadict t1 f3 SELECT YES
-'testuser1'@'localhost' NULL db_datadict t1 f3 UPDATE YES
-'testuser2'@'localhost' NULL db_datadict t1 f2 SELECT NO
-'testuser3'@'localhost' NULL db_datadict t1 f3 SELECT YES
+'testuser1'@'localhost' def db_datadict t1 f1 INSERT YES
+'testuser1'@'localhost' def db_datadict t1 f1 SELECT YES
+'testuser1'@'localhost' def db_datadict t1 f2 UPDATE YES
+'testuser1'@'localhost' def db_datadict t1 f3 SELECT YES
+'testuser1'@'localhost' def db_datadict t1 f3 UPDATE YES
+'testuser2'@'localhost' def db_datadict t1 f2 SELECT NO
+'testuser3'@'localhost' def db_datadict t1 f3 SELECT YES
# Establish connection testuser1 (user=testuser1)
SELECT * FROM information_schema.column_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict t1 f1 INSERT YES
-'testuser1'@'localhost' NULL db_datadict t1 f1 SELECT YES
-'testuser1'@'localhost' NULL db_datadict t1 f2 UPDATE YES
-'testuser1'@'localhost' NULL db_datadict t1 f3 SELECT YES
-'testuser1'@'localhost' NULL db_datadict t1 f3 UPDATE YES
+'testuser1'@'localhost' def db_datadict t1 f1 INSERT YES
+'testuser1'@'localhost' def db_datadict t1 f1 SELECT YES
+'testuser1'@'localhost' def db_datadict t1 f2 UPDATE YES
+'testuser1'@'localhost' def db_datadict t1 f3 SELECT YES
+'testuser1'@'localhost' def db_datadict t1 f3 UPDATE YES
# Establish connection testuser2 (user=testuser2)
SELECT * FROM information_schema.column_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser2'@'localhost' NULL db_datadict t1 f2 SELECT NO
+'testuser2'@'localhost' def db_datadict t1 f2 SELECT NO
# Establish connection testuser3 (user=testuser3)
# FIXME: Is it correct that granted TABLES do not occur in COLUMN_PRIVILEGES?
SELECT * FROM information_schema.table_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee,table_schema,table_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser3'@'localhost' NULL db_datadict t1 INSERT YES
-'testuser3'@'localhost' NULL db_datadict t1 SELECT YES
+'testuser3'@'localhost' def db_datadict t1 INSERT YES
+'testuser3'@'localhost' def db_datadict t1 SELECT YES
SELECT * FROM information_schema.schema_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee,table_schema,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'testuser3'@'localhost' NULL db_datadict ALTER NO
-'testuser3'@'localhost' NULL db_datadict ALTER ROUTINE NO
-'testuser3'@'localhost' NULL db_datadict CREATE NO
-'testuser3'@'localhost' NULL db_datadict CREATE ROUTINE NO
-'testuser3'@'localhost' NULL db_datadict CREATE TEMPORARY TABLES NO
-'testuser3'@'localhost' NULL db_datadict CREATE VIEW NO
-'testuser3'@'localhost' NULL db_datadict DELETE NO
-'testuser3'@'localhost' NULL db_datadict DROP NO
-'testuser3'@'localhost' NULL db_datadict EVENT NO
-'testuser3'@'localhost' NULL db_datadict EXECUTE NO
-'testuser3'@'localhost' NULL db_datadict INDEX NO
-'testuser3'@'localhost' NULL db_datadict INSERT NO
-'testuser3'@'localhost' NULL db_datadict LOCK TABLES NO
-'testuser3'@'localhost' NULL db_datadict REFERENCES NO
-'testuser3'@'localhost' NULL db_datadict SELECT NO
-'testuser3'@'localhost' NULL db_datadict SHOW VIEW NO
-'testuser3'@'localhost' NULL db_datadict TRIGGER NO
-'testuser3'@'localhost' NULL db_datadict UPDATE NO
+'testuser3'@'localhost' def db_datadict ALTER NO
+'testuser3'@'localhost' def db_datadict ALTER ROUTINE NO
+'testuser3'@'localhost' def db_datadict CREATE NO
+'testuser3'@'localhost' def db_datadict CREATE ROUTINE NO
+'testuser3'@'localhost' def db_datadict CREATE TEMPORARY TABLES NO
+'testuser3'@'localhost' def db_datadict CREATE VIEW NO
+'testuser3'@'localhost' def db_datadict DELETE NO
+'testuser3'@'localhost' def db_datadict DROP NO
+'testuser3'@'localhost' def db_datadict EVENT NO
+'testuser3'@'localhost' def db_datadict EXECUTE NO
+'testuser3'@'localhost' def db_datadict INDEX NO
+'testuser3'@'localhost' def db_datadict INSERT NO
+'testuser3'@'localhost' def db_datadict LOCK TABLES NO
+'testuser3'@'localhost' def db_datadict REFERENCES NO
+'testuser3'@'localhost' def db_datadict SELECT NO
+'testuser3'@'localhost' def db_datadict SHOW VIEW NO
+'testuser3'@'localhost' def db_datadict TRIGGER NO
+'testuser3'@'localhost' def db_datadict UPDATE NO
SELECT * FROM information_schema.column_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser3'@'localhost' NULL db_datadict t1 f3 SELECT YES
+'testuser3'@'localhost' def db_datadict t1 f3 SELECT YES
GRANT SELECT(f1, f3) ON db_datadict.t1 TO 'testuser2'@'localhost';
# FIXME: Is it intended that *my* grants to others are *NOT* shown here?
SELECT * FROM information_schema.column_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser3'@'localhost' NULL db_datadict t1 f3 SELECT YES
+'testuser3'@'localhost' def db_datadict t1 f3 SELECT YES
# Switch to connection testuser2 (user=testuser2)
SELECT * FROM information_schema.column_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser2'@'localhost' NULL db_datadict t1 f1 SELECT NO
-'testuser2'@'localhost' NULL db_datadict t1 f2 SELECT NO
-'testuser2'@'localhost' NULL db_datadict t1 f3 SELECT NO
+'testuser2'@'localhost' def db_datadict t1 f1 SELECT NO
+'testuser2'@'localhost' def db_datadict t1 f2 SELECT NO
+'testuser2'@'localhost' def db_datadict t1 f3 SELECT NO
# Switch to connection default and close connections testuser1,testuser2,testuser3
DROP DATABASE db_datadict;
DROP USER 'testuser1'@'localhost';
@@ -209,8 +209,8 @@ SELECT * FROM information_schema.column_privileges
WHERE table_name = 'my_table'
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict my_table f1 SELECT NO
-'testuser1'@'localhost' NULL db_datadict my_table f3 SELECT NO
+'testuser1'@'localhost' def db_datadict my_table f1 SELECT NO
+'testuser1'@'localhost' def db_datadict my_table f3 SELECT NO
SHOW GRANTS FOR 'testuser1'@'localhost';
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -221,8 +221,8 @@ SELECT * FROM information_schema.column_privileges
WHERE table_name = 'my_table'
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict my_table f1 SELECT NO
-'testuser1'@'localhost' NULL db_datadict my_table f3 SELECT NO
+'testuser1'@'localhost' def db_datadict my_table f1 SELECT NO
+'testuser1'@'localhost' def db_datadict my_table f3 SELECT NO
SHOW GRANTS FOR 'testuser1'@'localhost';
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -235,9 +235,9 @@ SELECT * FROM information_schema.column_privileges
WHERE table_name = 'my_table'
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict my_table f1 SELECT NO
-'testuser1'@'localhost' NULL db_datadict my_table f1 UPDATE NO
-'testuser1'@'localhost' NULL db_datadict my_table f3 SELECT NO
+'testuser1'@'localhost' def db_datadict my_table f1 SELECT NO
+'testuser1'@'localhost' def db_datadict my_table f1 UPDATE NO
+'testuser1'@'localhost' def db_datadict my_table f3 SELECT NO
SHOW GRANTS FOR 'testuser1'@'localhost';
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -248,9 +248,9 @@ SELECT * FROM information_schema.column_privileges
WHERE table_name = 'my_table'
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict my_table f1 SELECT NO
-'testuser1'@'localhost' NULL db_datadict my_table f1 UPDATE NO
-'testuser1'@'localhost' NULL db_datadict my_table f3 SELECT NO
+'testuser1'@'localhost' def db_datadict my_table f1 SELECT NO
+'testuser1'@'localhost' def db_datadict my_table f1 UPDATE NO
+'testuser1'@'localhost' def db_datadict my_table f3 SELECT NO
SHOW GRANTS FOR 'testuser1'@'localhost';
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -264,9 +264,9 @@ SELECT * FROM information_schema.column_privileges
WHERE table_name = 'my_table'
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict my_table f1 SELECT NO
-'testuser1'@'localhost' NULL db_datadict my_table f1 UPDATE NO
-'testuser1'@'localhost' NULL db_datadict my_table f3 SELECT NO
+'testuser1'@'localhost' def db_datadict my_table f1 SELECT NO
+'testuser1'@'localhost' def db_datadict my_table f1 UPDATE NO
+'testuser1'@'localhost' def db_datadict my_table f3 SELECT NO
SHOW GRANTS FOR 'testuser1'@'localhost';
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -277,9 +277,9 @@ SELECT * FROM information_schema.column_privileges
WHERE table_name = 'my_table'
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict my_table f1 SELECT NO
-'testuser1'@'localhost' NULL db_datadict my_table f1 UPDATE NO
-'testuser1'@'localhost' NULL db_datadict my_table f3 SELECT NO
+'testuser1'@'localhost' def db_datadict my_table f1 SELECT NO
+'testuser1'@'localhost' def db_datadict my_table f1 UPDATE NO
+'testuser1'@'localhost' def db_datadict my_table f3 SELECT NO
SHOW GRANTS FOR 'testuser1'@'localhost';
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -291,9 +291,9 @@ SELECT * FROM information_schema.column_privileges
WHERE table_name = 'my_table'
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict my_table f1 SELECT NO
-'testuser1'@'localhost' NULL db_datadict my_table f1 UPDATE NO
-'testuser1'@'localhost' NULL db_datadict my_table f3 SELECT NO
+'testuser1'@'localhost' def db_datadict my_table f1 SELECT NO
+'testuser1'@'localhost' def db_datadict my_table f1 UPDATE NO
+'testuser1'@'localhost' def db_datadict my_table f3 SELECT NO
SHOW GRANTS FOR 'testuser1'@'localhost';
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -304,9 +304,9 @@ SELECT * FROM information_schema.column_privileges
WHERE table_name = 'my_table'
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict my_table f1 SELECT NO
-'testuser1'@'localhost' NULL db_datadict my_table f1 UPDATE NO
-'testuser1'@'localhost' NULL db_datadict my_table f3 SELECT NO
+'testuser1'@'localhost' def db_datadict my_table f1 SELECT NO
+'testuser1'@'localhost' def db_datadict my_table f1 UPDATE NO
+'testuser1'@'localhost' def db_datadict my_table f3 SELECT NO
SHOW GRANTS FOR 'testuser1'@'localhost';
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
diff --git a/mysql-test/suite/funcs_1/r/is_columns.result b/mysql-test/suite/funcs_1/r/is_columns.result
index e0780a60e2e..479bc0a647a 100644
--- a/mysql-test/suite/funcs_1/r/is_columns.result
+++ b/mysql-test/suite/funcs_1/r/is_columns.result
@@ -28,7 +28,7 @@ DROP FUNCTION test.f1;
#########################################################################
DESCRIBE information_schema.COLUMNS;
Field Type Null Key Default Extra
-TABLE_CATALOG varchar(512) YES NULL
+TABLE_CATALOG varchar(512) NO
TABLE_SCHEMA varchar(64) NO
TABLE_NAME varchar(64) NO
COLUMN_NAME varchar(64) NO
@@ -50,7 +50,7 @@ COLUMN_COMMENT varchar(255) NO
SHOW CREATE TABLE information_schema.COLUMNS;
Table Create Table
COLUMNS CREATE TEMPORARY TABLE `COLUMNS` (
- `TABLE_CATALOG` varchar(512) DEFAULT NULL,
+ `TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
`COLUMN_NAME` varchar(64) NOT NULL DEFAULT '',
@@ -72,7 +72,7 @@ COLUMNS CREATE TEMPORARY TABLE `COLUMNS` (
) ENGINE=MyISAM DEFAULT CHARSET=utf8
SHOW COLUMNS FROM information_schema.COLUMNS;
Field Type Null Key Default Extra
-TABLE_CATALOG varchar(512) YES NULL
+TABLE_CATALOG varchar(512) NO
TABLE_SCHEMA varchar(64) NO
TABLE_NAME varchar(64) NO
COLUMN_NAME varchar(64) NO
@@ -92,7 +92,7 @@ EXTRA varchar(27) NO
PRIVILEGES varchar(80) NO
COLUMN_COMMENT varchar(255) NO
SELECT table_catalog, table_schema, table_name, column_name
-FROM information_schema.columns WHERE table_catalog IS NOT NULL;
+FROM information_schema.columns WHERE table_catalog IS NULL OR table_catalog <> 'def';
table_catalog table_schema table_name column_name
###############################################################################
# Testcase 3.2.6.2 + 3.2.6.3: INFORMATION_SCHEMA.COLUMNS accessible information
@@ -118,16 +118,16 @@ SELECT * FROM information_schema.columns
WHERE table_schema = 'db_datadict'
ORDER BY table_schema, table_name, ordinal_position;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
-NULL db_datadict t1 f1 1 NULL YES char 10 10 NULL NULL latin1 latin1_swedish_ci char(10) MUL select,insert,update,references
-NULL db_datadict t1 f2 2 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text select,insert,update,references
-NULL db_datadict t1 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL db_datadict t1 f4 4 NULL NO int NULL NULL 10 0 NULL NULL int(11) PRI auto_increment select,insert,update,references
-NULL db_datadict t2 f1 1 NO char 10 10 NULL NULL latin1 latin1_swedish_ci char(10) PRI select,insert,update,references
-NULL db_datadict t2 f2 2 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text select,insert,update,references
-NULL db_datadict t2 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL db_datadict t2 f4 4 0 NO int NULL NULL 10 0 NULL NULL int(11) PRI select,insert,update,references
-NULL db_datadict v1 f1 1 0 NO int NULL NULL 10 0 NULL NULL int(1) select,insert,update,references
-NULL db_datadict v1 f2 2 0 NO int NULL NULL 10 0 NULL NULL int(1) select,insert,update,references
+def db_datadict t1 f1 1 NULL YES char 10 10 NULL NULL latin1 latin1_swedish_ci char(10) MUL select,insert,update,references
+def db_datadict t1 f2 2 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text select,insert,update,references
+def db_datadict t1 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def db_datadict t1 f4 4 NULL NO int NULL NULL 10 0 NULL NULL int(11) PRI auto_increment select,insert,update,references
+def db_datadict t2 f1 1 NO char 10 10 NULL NULL latin1 latin1_swedish_ci char(10) PRI select,insert,update,references
+def db_datadict t2 f2 2 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text select,insert,update,references
+def db_datadict t2 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def db_datadict t2 f4 4 0 NO int NULL NULL 10 0 NULL NULL int(11) PRI select,insert,update,references
+def db_datadict v1 f1 1 0 NO int NULL NULL 10 0 NULL NULL int(1) select,insert,update,references
+def db_datadict v1 f2 2 0 NO int NULL NULL 10 0 NULL NULL int(1) select,insert,update,references
SHOW COLUMNS FROM db_datadict.t1;
Field Type Null Key Default Extra
f1 char(10) YES MUL NULL
@@ -149,9 +149,9 @@ SELECT * FROM information_schema.columns
WHERE table_schema = 'db_datadict'
ORDER BY table_schema, table_name, ordinal_position;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
-NULL db_datadict t1 f1 1 NULL YES char 10 10 NULL NULL latin1 latin1_swedish_ci char(10) MUL select
-NULL db_datadict t1 f2 2 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text select
-NULL db_datadict v1 f2 2 0 NO int NULL NULL 10 0 NULL NULL int(1) select
+def db_datadict t1 f1 1 NULL YES char 10 10 NULL NULL latin1 latin1_swedish_ci char(10) MUL select
+def db_datadict t1 f2 2 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text select
+def db_datadict v1 f2 2 0 NO int NULL NULL 10 0 NULL NULL int(1) select
SHOW COLUMNS FROM db_datadict.t1;
Field Type Null Key Default Extra
f1 char(10) YES MUL NULL
@@ -166,8 +166,8 @@ SELECT * FROM information_schema.columns
WHERE table_schema = 'db_datadict'
ORDER BY table_schema, table_name, ordinal_position;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
-NULL db_datadict t2 f1 1 NO char 10 10 NULL NULL latin1 latin1_swedish_ci char(10) PRI insert
-NULL db_datadict t2 f2 2 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text insert
+def db_datadict t2 f1 1 NO char 10 10 NULL NULL latin1 latin1_swedish_ci char(10) PRI insert
+def db_datadict t2 f2 2 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text insert
SHOW COLUMNS FROM db_datadict.t1;
ERROR 42000: SELECT command denied to user 'testuser2'@'localhost' for table 't1'
SHOW COLUMNS FROM db_datadict.t2;
@@ -194,7 +194,7 @@ DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
ENGINE = <engine_type>;
SELECT * FROM information_schema.columns
WHERE table_name = 't1_my_table';
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test
TABLE_NAME t1_my_table
COLUMN_NAME f1
@@ -399,7 +399,7 @@ AS SELECT 1 AS "col1", 'A' collate latin1_german1_ci AS "col2";
SELECT * FROM information_schema.columns
WHERE table_name = 't1_my_tablex'
ORDER BY table_name, column_name;
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test
TABLE_NAME t1_my_tablex
COLUMN_NAME col1
@@ -418,7 +418,7 @@ COLUMN_KEY
EXTRA
PRIVILEGES select,insert,update,references
COLUMN_COMMENT
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test
TABLE_NAME t1_my_tablex
COLUMN_NAME col2
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..1fac7ca83db 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_innodb.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_innodb.result
@@ -383,332 +383,332 @@ SELECT * FROM information_schema.columns
WHERE table_schema LIKE 'test%'
ORDER BY table_schema, table_name, column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
-NULL test t1 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t1 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t1 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t1 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t1 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t1 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t10 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t10 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t10 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t10 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t10 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t10 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t11 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t11 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t11 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t11 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t11 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t11 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t2 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t2 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t2 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t2 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t2 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t2 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t3 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t3 f2 2 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t3 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t4 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t4 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t4 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t4 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t4 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t4 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t7 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t7 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t7 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t7 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t8 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t8 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t8 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t8 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t9 f1 1 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t9 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t9 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test tb1 f1 1 NULL YES char 0 0 NULL NULL latin1 latin1_swedish_ci char(0) select,insert,update,references
-NULL test tb1 f10 10 NULL YES mediumblob 16777215 16777215 NULL NULL NULL NULL mediumblob select,insert,update,references
-NULL test tb1 f11 11 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
-NULL test tb1 f12 12 NULL YES binary 1 1 NULL NULL NULL NULL binary(1) select,insert,update,references
-NULL test tb1 f13 13 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(4) select,insert,update,references
-NULL test tb1 f14 14 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned select,insert,update,references
-NULL test tb1 f15 15 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
-NULL test tb1 f16 16 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
-NULL test tb1 f17 17 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(6) select,insert,update,references
-NULL test tb1 f18 18 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned select,insert,update,references
-NULL test tb1 f19 19 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
-NULL test tb1 f2 2 NULL YES char 0 0 NULL NULL latin1 latin1_bin char(0) select,insert,update,references
-NULL test tb1 f20 20 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
-NULL test tb1 f21 21 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(9) select,insert,update,references
-NULL test tb1 f22 22 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned select,insert,update,references
-NULL test tb1 f23 23 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
-NULL test tb1 f24 24 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
-NULL test tb1 f25 25 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test tb1 f26 26 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
-NULL test tb1 f27 27 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
-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 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
-NULL test tb1 f36 36 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f37 37 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb1 f38 38 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
-NULL test tb1 f39 39 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb1 f4 4 NULL YES tinytext 255 255 NULL NULL latin1 latin1_swedish_ci tinytext select,insert,update,references
-NULL test tb1 f40 40 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
-NULL test tb1 f41 41 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f42 42 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f43 43 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f44 44 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f45 45 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb1 f46 46 9.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
-NULL test tb1 f47 47 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb1 f48 48 9.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
-NULL test tb1 f49 49 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f5 5 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text select,insert,update,references
-NULL test tb1 f50 50 000000000000000000000000000000009.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb1 f51 51 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f52 52 000000000000000000000000000000009.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb1 f53 53 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb1 f54 54 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb1 f55 55 0000000099 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f56 56 0000000099 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f57 57 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb1 f58 58 99 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
-NULL test tb1 f6 6 NULL YES mediumtext 16777215 16777215 NULL NULL latin1 latin1_swedish_ci mediumtext select,insert,update,references
-NULL test tb1 f7 7 NULL YES longtext 4294967295 4294967295 NULL NULL latin1 latin1_swedish_ci longtext select,insert,update,references
-NULL test tb1 f8 8 NULL YES tinyblob 255 255 NULL NULL NULL NULL tinyblob select,insert,update,references
-NULL test tb1 f9 9 NULL YES blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
-NULL test tb2 f100 42 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
-NULL test tb2 f103 45 0002-02-02 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
-NULL test tb2 f104 46 2000-12-31 23:59:59 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
-NULL test tb2 f105 47 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test tb2 f106 48 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test tb2 f107 49 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test tb2 f108 50 1enum NO enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
-NULL test tb2 f109 51 1set NO set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
-NULL test tb2 f59 1 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb2 f60 2 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
-NULL test tb2 f61 3 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb2 f62 4 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb2 f63 5 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb2 f64 6 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb2 f65 7 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb2 f66 8 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
-NULL test tb2 f67 9 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb2 f68 10 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
-NULL test tb2 f69 11 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb2 f70 12 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb2 f71 13 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb2 f72 14 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb2 f73 15 NULL YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test tb2 f74 16 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test tb2 f75 17 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb2 f76 18 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb2 f77 19 7.7 YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test tb2 f78 20 7.7 YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test tb2 f79 21 00000000000000000007.7 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb2 f80 22 00000000000000000008.8 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb2 f81 23 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb2 f82 24 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb2 f83 25 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f84 26 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f85 27 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb2 f86 28 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb2 f87 29 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb2 f88 30 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb2 f89 31 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f90 32 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f91 33 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f92 34 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f93 35 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb2 f94 36 8.8 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test tb2 f95 37 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb2 f96 38 8.8 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test tb2 f97 39 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f98 40 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb2 f99 41 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb3 f118 1 a NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
-NULL test tb3 f119 2  NO char 1 1 NULL NULL latin1 latin1_bin char(1) select,insert,update,references
-NULL test tb3 f120 3  NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
-NULL test tb3 f121 4 NULL YES tinytext 255 255 NULL NULL latin1 latin1_swedish_ci tinytext select,insert,update,references
-NULL test tb3 f122 5 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text select,insert,update,references
-NULL test tb3 f123 6 NULL YES mediumtext 16777215 16777215 NULL NULL latin1 latin1_swedish_ci mediumtext select,insert,update,references
-NULL test tb3 f124 7 NULL YES longtext 4294967295 4294967295 NULL NULL latin1 latin1_swedish_ci longtext select,insert,update,references
-NULL test tb3 f125 8 NULL YES tinyblob 255 255 NULL NULL NULL NULL tinyblob select,insert,update,references
-NULL test tb3 f126 9 NULL YES blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
-NULL test tb3 f127 10 NULL YES mediumblob 16777215 16777215 NULL NULL NULL NULL mediumblob select,insert,update,references
-NULL test tb3 f128 11 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
-NULL test tb3 f129 12  NO binary 1 1 NULL NULL NULL NULL binary(1) select,insert,update,references
-NULL test tb3 f130 13 99 NO tinyint NULL NULL 3 0 NULL NULL tinyint(4) select,insert,update,references
-NULL test tb3 f131 14 99 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned select,insert,update,references
-NULL test tb3 f132 15 099 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
-NULL test tb3 f133 16 099 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
-NULL test tb3 f134 17 999 NO smallint NULL NULL 5 0 NULL NULL smallint(6) select,insert,update,references
-NULL test tb3 f135 18 999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned select,insert,update,references
-NULL test tb3 f136 19 00999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
-NULL test tb3 f137 20 00999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
-NULL test tb3 f138 21 9999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(9) select,insert,update,references
-NULL test tb3 f139 22 9999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned select,insert,update,references
-NULL test tb3 f140 23 00009999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
-NULL test tb3 f141 24 00009999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
-NULL test tb3 f142 25 99999 NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test tb3 f143 26 99999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
-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 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
-NULL test tb3 f153 36 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f154 37 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb3 f155 38 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
-NULL test tb3 f156 39 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb3 f157 40 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
-NULL test tb3 f158 41 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f159 42 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f160 43 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f161 44 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f162 45 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb3 f163 46 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
-NULL test tb3 f164 47 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb3 f165 48 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
-NULL test tb3 f166 49 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f167 50 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb3 f168 51 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f169 52 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb3 f170 53 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb3 f171 54 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb3 f172 55 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f173 56 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f174 57 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb3 f175 58 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
-NULL test tb4 f176 1 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb4 f177 2 9 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
-NULL test tb4 f178 3 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb4 f179 4 0000000000000000000000000000000000000000000000000000000000000009 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb4 f180 5 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb4 f181 6 0000000000000000000000000000000000000000000000000000000000000009 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb4 f182 7 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb4 f183 8 9.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
-NULL test tb4 f184 9 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb4 f185 10 9.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
-NULL test tb4 f186 11 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb4 f187 12 000000000000000000000000000000009.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb4 f188 13 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb4 f189 14 000000000000000000000000000000009.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb4 f190 15 88.8 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test tb4 f191 16 88.8 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test tb4 f192 17 00000000000000000088.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb4 f193 18 00000000000000000088.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb4 f194 19 55.5 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test tb4 f195 20 55.5 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test tb4 f196 21 00000000000000000055.5 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb4 f197 22 00000000000000000055.5 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb4 f198 23 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb4 f199 24 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb4 f200 25 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f201 26 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f202 27 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb4 f203 28 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb4 f204 29 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb4 f205 30 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb4 f206 31 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f207 32 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f208 33 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f209 34 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f210 35 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb4 f211 36 NULL YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test tb4 f212 37 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb4 f213 38 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test tb4 f214 39 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f215 40 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb4 f216 41 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f217 42 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb4 f218 43 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test tb4 f219 44 NULL YES time NULL NULL NULL NULL NULL NULL time select,insert,update,references
-NULL test tb4 f220 45 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
-NULL test tb4 f221 46 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
-NULL test tb4 f222 47 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test tb4 f223 48 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test tb4 f224 49 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test tb4 f225 50 NULL YES enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
-NULL test tb4 f226 51 NULL YES set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
-NULL test tb4 f235 52 NULL YES char 0 0 NULL NULL latin1 latin1_swedish_ci char(0) select,insert,update,references
-NULL test tb4 f236 53 NULL YES char 90 90 NULL NULL latin1 latin1_swedish_ci char(90) select,insert,update,references
-NULL test tb4 f237 54 NULL YES char 255 255 NULL NULL latin1 latin1_swedish_ci char(255) select,insert,update,references
-NULL test tb4 f238 55 NULL YES varchar 0 0 NULL NULL latin1 latin1_swedish_ci varchar(0) select,insert,update,references
-NULL test tb4 f239 56 NULL YES varchar 20000 20000 NULL NULL latin1 latin1_bin varchar(20000) select,insert,update,references
-NULL test tb4 f240 57 NULL YES varchar 2000 2000 NULL NULL latin1 latin1_swedish_ci varchar(2000) select,insert,update,references
-NULL test tb4 f241 58 NULL YES char 100 100 NULL NULL latin1 latin1_swedish_ci char(100) select,insert,update,references
-NULL test1 tb2 f100 42 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test1 tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test1 tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
-NULL test1 tb2 f103 45 0002-02-02 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
-NULL test1 tb2 f104 46 2000-12-31 23:59:59 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
-NULL test1 tb2 f105 47 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test1 tb2 f106 48 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test1 tb2 f107 49 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test1 tb2 f108 50 1enum NO enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
-NULL test1 tb2 f109 51 1set NO set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
-NULL test1 tb2 f59 1 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test1 tb2 f60 2 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
-NULL test1 tb2 f61 3 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f62 4 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f63 5 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f64 6 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f65 7 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test1 tb2 f66 8 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
-NULL test1 tb2 f67 9 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test1 tb2 f68 10 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
-NULL test1 tb2 f69 11 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f70 12 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f71 13 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f72 14 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f73 15 NULL YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test1 tb2 f74 16 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test1 tb2 f75 17 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test1 tb2 f76 18 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test1 tb2 f77 19 7.7 YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test1 tb2 f78 20 7.7 YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test1 tb2 f79 21 00000000000000000007.7 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test1 tb2 f80 22 00000000000000000008.8 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test1 tb2 f81 23 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test1 tb2 f82 24 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test1 tb2 f83 25 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f84 26 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f85 27 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test1 tb2 f86 28 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test1 tb2 f87 29 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test1 tb2 f88 30 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test1 tb2 f89 31 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f90 32 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f91 33 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f92 34 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f93 35 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test1 tb2 f94 36 8.8 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test1 tb2 f95 37 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test1 tb2 f96 38 8.8 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test1 tb2 f97 39 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f98 40 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test1 tb2 f99 41 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test4 t6 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test4 t6 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test4 t6 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test4 t6 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test4 t6 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test4 t6 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t1 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t1 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t1 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t1 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t1 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t1 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t10 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t10 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t10 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t10 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t10 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t10 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t11 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t11 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t11 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t11 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t11 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t11 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t2 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t2 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t2 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t2 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t2 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t2 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t3 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t3 f2 2 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t3 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t4 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t4 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t4 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t4 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t4 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t4 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t7 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t7 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t7 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t7 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t8 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t8 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t8 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t8 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t9 f1 1 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t9 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t9 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test tb1 f1 1 NULL YES char 0 0 NULL NULL latin1 latin1_swedish_ci char(0) select,insert,update,references
+def test tb1 f10 10 NULL YES mediumblob 16777215 16777215 NULL NULL NULL NULL mediumblob select,insert,update,references
+def test tb1 f11 11 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
+def test tb1 f12 12 NULL YES binary 1 1 NULL NULL NULL NULL binary(1) select,insert,update,references
+def test tb1 f13 13 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(4) select,insert,update,references
+def test tb1 f14 14 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned select,insert,update,references
+def test tb1 f15 15 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
+def test tb1 f16 16 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
+def test tb1 f17 17 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(6) select,insert,update,references
+def test tb1 f18 18 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned select,insert,update,references
+def test tb1 f19 19 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
+def test tb1 f2 2 NULL YES char 0 0 NULL NULL latin1 latin1_bin char(0) select,insert,update,references
+def test tb1 f20 20 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
+def test tb1 f21 21 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(9) select,insert,update,references
+def test tb1 f22 22 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned select,insert,update,references
+def test tb1 f23 23 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
+def test tb1 f24 24 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
+def test tb1 f25 25 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test tb1 f26 26 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
+def test tb1 f27 27 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
+def test tb1 f28 28 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
+def test tb1 f29 29 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) select,insert,update,references
+def test tb1 f3 3 NULL YES char 0 0 NULL NULL latin1 latin1_swedish_ci char(0) select,insert,update,references
+def test tb1 f30 30 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
+def test tb1 f31 31 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+def test tb1 f32 32 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+def test tb1 f33 33 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb1 f34 34 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb1 f35 35 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f36 36 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f37 37 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb1 f38 38 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
+def test tb1 f39 39 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb1 f4 4 NULL YES tinytext 255 255 NULL NULL latin1 latin1_swedish_ci tinytext select,insert,update,references
+def test tb1 f40 40 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
+def test tb1 f41 41 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f42 42 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb1 f43 43 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f44 44 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb1 f45 45 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb1 f46 46 9.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
+def test tb1 f47 47 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb1 f48 48 9.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
+def test tb1 f49 49 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f5 5 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text select,insert,update,references
+def test tb1 f50 50 000000000000000000000000000000009.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb1 f51 51 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f52 52 000000000000000000000000000000009.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb1 f53 53 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb1 f54 54 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb1 f55 55 0000000099 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f56 56 0000000099 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f57 57 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb1 f58 58 99 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
+def test tb1 f6 6 NULL YES mediumtext 16777215 16777215 NULL NULL latin1 latin1_swedish_ci mediumtext select,insert,update,references
+def test tb1 f7 7 NULL YES longtext 4294967295 4294967295 NULL NULL latin1 latin1_swedish_ci longtext select,insert,update,references
+def test tb1 f8 8 NULL YES tinyblob 255 255 NULL NULL NULL NULL tinyblob select,insert,update,references
+def test tb1 f9 9 NULL YES blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
+def test tb2 f100 42 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
+def test tb2 f103 45 0002-02-02 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
+def test tb2 f104 46 2000-12-31 23:59:59 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
+def test tb2 f105 47 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test tb2 f106 48 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test tb2 f107 49 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test tb2 f108 50 1enum NO enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
+def test tb2 f109 51 1set NO set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
+def test tb2 f59 1 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb2 f60 2 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
+def test tb2 f61 3 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb2 f62 4 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb2 f63 5 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb2 f64 6 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb2 f65 7 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb2 f66 8 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
+def test tb2 f67 9 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb2 f68 10 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
+def test tb2 f69 11 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb2 f70 12 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb2 f71 13 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb2 f72 14 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb2 f73 15 NULL YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test tb2 f74 16 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test tb2 f75 17 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb2 f76 18 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb2 f77 19 7.7 YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test tb2 f78 20 7.7 YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test tb2 f79 21 00000000000000000007.7 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb2 f80 22 00000000000000000008.8 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb2 f81 23 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb2 f82 24 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb2 f83 25 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f84 26 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f85 27 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb2 f86 28 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb2 f87 29 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb2 f88 30 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb2 f89 31 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f90 32 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f91 33 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f92 34 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f93 35 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb2 f94 36 8.8 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test tb2 f95 37 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb2 f96 38 8.8 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test tb2 f97 39 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f98 40 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb2 f99 41 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb3 f118 1 a NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
+def test tb3 f119 2  NO char 1 1 NULL NULL latin1 latin1_bin char(1) select,insert,update,references
+def test tb3 f120 3  NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
+def test tb3 f121 4 NULL YES tinytext 255 255 NULL NULL latin1 latin1_swedish_ci tinytext select,insert,update,references
+def test tb3 f122 5 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text select,insert,update,references
+def test tb3 f123 6 NULL YES mediumtext 16777215 16777215 NULL NULL latin1 latin1_swedish_ci mediumtext select,insert,update,references
+def test tb3 f124 7 NULL YES longtext 4294967295 4294967295 NULL NULL latin1 latin1_swedish_ci longtext select,insert,update,references
+def test tb3 f125 8 NULL YES tinyblob 255 255 NULL NULL NULL NULL tinyblob select,insert,update,references
+def test tb3 f126 9 NULL YES blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
+def test tb3 f127 10 NULL YES mediumblob 16777215 16777215 NULL NULL NULL NULL mediumblob select,insert,update,references
+def test tb3 f128 11 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
+def test tb3 f129 12  NO binary 1 1 NULL NULL NULL NULL binary(1) select,insert,update,references
+def test tb3 f130 13 99 NO tinyint NULL NULL 3 0 NULL NULL tinyint(4) select,insert,update,references
+def test tb3 f131 14 99 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned select,insert,update,references
+def test tb3 f132 15 099 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
+def test tb3 f133 16 099 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
+def test tb3 f134 17 999 NO smallint NULL NULL 5 0 NULL NULL smallint(6) select,insert,update,references
+def test tb3 f135 18 999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned select,insert,update,references
+def test tb3 f136 19 00999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
+def test tb3 f137 20 00999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
+def test tb3 f138 21 9999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(9) select,insert,update,references
+def test tb3 f139 22 9999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned select,insert,update,references
+def test tb3 f140 23 00009999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
+def test tb3 f141 24 00009999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
+def test tb3 f142 25 99999 NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test tb3 f143 26 99999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
+def test tb3 f144 27 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
+def test tb3 f145 28 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
+def test tb3 f146 29 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) select,insert,update,references
+def test tb3 f147 30 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
+def test tb3 f148 31 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+def test tb3 f149 32 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+def test tb3 f150 33 1000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb3 f151 34 999 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb3 f152 35 0000001000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f153 36 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f154 37 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb3 f155 38 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
+def test tb3 f156 39 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb3 f157 40 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
+def test tb3 f158 41 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f159 42 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb3 f160 43 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f161 44 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb3 f162 45 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb3 f163 46 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
+def test tb3 f164 47 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb3 f165 48 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
+def test tb3 f166 49 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f167 50 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb3 f168 51 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f169 52 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb3 f170 53 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb3 f171 54 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb3 f172 55 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f173 56 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f174 57 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb3 f175 58 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
+def test tb4 f176 1 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb4 f177 2 9 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
+def test tb4 f178 3 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb4 f179 4 0000000000000000000000000000000000000000000000000000000000000009 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb4 f180 5 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb4 f181 6 0000000000000000000000000000000000000000000000000000000000000009 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb4 f182 7 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb4 f183 8 9.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
+def test tb4 f184 9 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb4 f185 10 9.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
+def test tb4 f186 11 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb4 f187 12 000000000000000000000000000000009.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb4 f188 13 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb4 f189 14 000000000000000000000000000000009.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb4 f190 15 88.8 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test tb4 f191 16 88.8 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test tb4 f192 17 00000000000000000088.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb4 f193 18 00000000000000000088.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb4 f194 19 55.5 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test tb4 f195 20 55.5 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test tb4 f196 21 00000000000000000055.5 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb4 f197 22 00000000000000000055.5 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb4 f198 23 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb4 f199 24 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb4 f200 25 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f201 26 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f202 27 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb4 f203 28 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb4 f204 29 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb4 f205 30 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb4 f206 31 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f207 32 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f208 33 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f209 34 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f210 35 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb4 f211 36 NULL YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test tb4 f212 37 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb4 f213 38 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test tb4 f214 39 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f215 40 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb4 f216 41 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f217 42 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb4 f218 43 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test tb4 f219 44 NULL YES time NULL NULL NULL NULL NULL NULL time select,insert,update,references
+def test tb4 f220 45 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
+def test tb4 f221 46 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
+def test tb4 f222 47 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test tb4 f223 48 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test tb4 f224 49 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test tb4 f225 50 NULL YES enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
+def test tb4 f226 51 NULL YES set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
+def test tb4 f235 52 NULL YES char 0 0 NULL NULL latin1 latin1_swedish_ci char(0) select,insert,update,references
+def test tb4 f236 53 NULL YES char 90 90 NULL NULL latin1 latin1_swedish_ci char(90) select,insert,update,references
+def test tb4 f237 54 NULL YES char 255 255 NULL NULL latin1 latin1_swedish_ci char(255) select,insert,update,references
+def test tb4 f238 55 NULL YES varchar 0 0 NULL NULL latin1 latin1_swedish_ci varchar(0) select,insert,update,references
+def test tb4 f239 56 NULL YES varchar 20000 20000 NULL NULL latin1 latin1_bin varchar(20000) select,insert,update,references
+def test tb4 f240 57 NULL YES varchar 2000 2000 NULL NULL latin1 latin1_swedish_ci varchar(2000) select,insert,update,references
+def test tb4 f241 58 NULL YES char 100 100 NULL NULL latin1 latin1_swedish_ci char(100) select,insert,update,references
+def test1 tb2 f100 42 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test1 tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test1 tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
+def test1 tb2 f103 45 0002-02-02 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
+def test1 tb2 f104 46 2000-12-31 23:59:59 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
+def test1 tb2 f105 47 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test1 tb2 f106 48 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test1 tb2 f107 49 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test1 tb2 f108 50 1enum NO enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
+def test1 tb2 f109 51 1set NO set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
+def test1 tb2 f59 1 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test1 tb2 f60 2 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
+def test1 tb2 f61 3 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test1 tb2 f62 4 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test1 tb2 f63 5 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test1 tb2 f64 6 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test1 tb2 f65 7 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test1 tb2 f66 8 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
+def test1 tb2 f67 9 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test1 tb2 f68 10 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
+def test1 tb2 f69 11 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test1 tb2 f70 12 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test1 tb2 f71 13 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test1 tb2 f72 14 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test1 tb2 f73 15 NULL YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test1 tb2 f74 16 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test1 tb2 f75 17 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test1 tb2 f76 18 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test1 tb2 f77 19 7.7 YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test1 tb2 f78 20 7.7 YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test1 tb2 f79 21 00000000000000000007.7 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test1 tb2 f80 22 00000000000000000008.8 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test1 tb2 f81 23 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test1 tb2 f82 24 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test1 tb2 f83 25 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f84 26 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f85 27 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test1 tb2 f86 28 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test1 tb2 f87 29 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test1 tb2 f88 30 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test1 tb2 f89 31 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f90 32 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f91 33 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f92 34 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f93 35 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test1 tb2 f94 36 8.8 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test1 tb2 f95 37 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test1 tb2 f96 38 8.8 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test1 tb2 f97 39 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f98 40 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test1 tb2 f99 41 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test4 t6 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test4 t6 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test4 t6 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test4 t6 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test4 t6 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test4 t6 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
##########################################################################
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
##########################################################################
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 ccb94c63d46..a460e694aac 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_is.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_is.result
@@ -1,305 +1,336 @@
SELECT * FROM information_schema.columns
WHERE table_schema = 'information_schema'
-AND table_name <> 'profiling'
+AND table_name <> 'profiling' AND table_name not like 'innodb_%'
ORDER BY table_schema, table_name, column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
-NULL information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
-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 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
-NULL information_schema COLLATIONS IS_COMPILED 5 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
-NULL information_schema COLLATIONS IS_DEFAULT 4 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
-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_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
-NULL information_schema COLUMNS COLUMN_DEFAULT 6 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
-NULL information_schema COLUMNS COLUMN_KEY 16 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
-NULL information_schema COLUMNS COLUMN_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema COLUMNS COLUMN_TYPE 15 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
-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 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
-NULL information_schema COLUMNS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema COLUMN_PRIVILEGES COLUMN_NAME 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema COLUMN_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
-NULL information_schema COLUMN_PRIVILEGES IS_GRANTABLE 7 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
-NULL information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-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 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
-NULL information_schema ENGINES TRANSACTIONS 4 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
-NULL information_schema ENGINES XA 5 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
-NULL information_schema EVENTS CHARACTER_SET_CLIENT 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
-NULL information_schema EVENTS COLLATION_CONNECTION 23 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
-NULL information_schema EVENTS CREATED 17 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select
-NULL information_schema EVENTS DATABASE_COLLATION 24 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
-NULL information_schema EVENTS DEFINER 4 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77) select
-NULL information_schema EVENTS ENDS 14 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
-NULL information_schema EVENTS EVENT_BODY 6 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select
-NULL information_schema EVENTS EVENT_CATALOG 1 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema EVENTS EVENT_COMMENT 20 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema EVENTS EVENT_DEFINITION 7 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
-NULL information_schema EVENTS EVENT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema EVENTS EVENT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema EVENTS EVENT_TYPE 8 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9) select
-NULL information_schema EVENTS EXECUTE_AT 9 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
-NULL information_schema EVENTS INTERVAL_FIELD 11 NULL YES varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18) select
-NULL information_schema EVENTS INTERVAL_VALUE 10 NULL YES varchar 256 768 NULL NULL utf8 utf8_general_ci varchar(256) select
-NULL information_schema EVENTS LAST_ALTERED 18 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select
-NULL information_schema EVENTS LAST_EXECUTED 19 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
-NULL information_schema EVENTS ON_COMPLETION 16 NO varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12) select
-NULL information_schema EVENTS ORIGINATOR 21 0 NO bigint NULL NULL 19 0 NULL NULL bigint(10) select
-NULL information_schema EVENTS SQL_MODE 12 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192) select
-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 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 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
-NULL information_schema FILES EXTRA 38 NULL YES varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255) select
-NULL information_schema FILES FILE_ID 1 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4) select
-NULL information_schema FILES FILE_NAME 2 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-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 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 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_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 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 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
-NULL information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema KEY_COLUMN_USAGE ORDINAL_POSITION 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(10) select
-NULL information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(10) select
-NULL information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME 12 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME 11 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA 10 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-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 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 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 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 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_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 PLUGINS PLUGIN_AUTHOR 8 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema PLUGINS PLUGIN_DESCRIPTION 9 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
-NULL information_schema PLUGINS PLUGIN_LIBRARY 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema PLUGINS PLUGIN_LIBRARY_VERSION 7 NULL YES varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20) select
-NULL information_schema PLUGINS PLUGIN_LICENSE 10 NULL YES varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
-NULL information_schema PLUGINS PLUGIN_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema PLUGINS PLUGIN_STATUS 3 NO varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10) select
-NULL information_schema PLUGINS PLUGIN_TYPE 4 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
-NULL information_schema PLUGINS PLUGIN_TYPE_VERSION 5 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20) select
-NULL information_schema PLUGINS PLUGIN_VERSION 2 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20) select
-NULL information_schema PROCESSLIST COMMAND 5 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16) select
-NULL information_schema PROCESSLIST DB 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema PROCESSLIST HOST 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema PROCESSLIST ID 1 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4) select
-NULL information_schema PROCESSLIST INFO 8 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
-NULL information_schema PROCESSLIST STATE 7 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema PROCESSLIST TIME 6 0 NO int NULL NULL 10 0 NULL NULL int(7) select
-NULL information_schema PROCESSLIST USER 2 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16) select
-NULL information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
-NULL information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema REFERENTIAL_CONSTRAINTS DELETE_RULE 9 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema REFERENTIAL_CONSTRAINTS MATCH_OPTION 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema REFERENTIAL_CONSTRAINTS REFERENCED_TABLE_NAME 11 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema REFERENTIAL_CONSTRAINTS TABLE_NAME 10 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG 4 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
-NULL information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema ROUTINES CHARACTER_SET_CLIENT 21 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
-NULL information_schema ROUTINES COLLATION_CONNECTION 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
-NULL information_schema ROUTINES CREATED 16 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select
-NULL information_schema ROUTINES DATABASE_COLLATION 23 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
-NULL information_schema ROUTINES DEFINER 20 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77) select
-NULL information_schema ROUTINES DTD_IDENTIFIER 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema ROUTINES EXTERNAL_LANGUAGE 10 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema ROUTINES EXTERNAL_NAME 9 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema ROUTINES IS_DETERMINISTIC 12 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
-NULL information_schema ROUTINES LAST_ALTERED 17 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select
-NULL information_schema ROUTINES PARAMETER_STYLE 11 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select
-NULL information_schema ROUTINES ROUTINE_BODY 7 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select
-NULL information_schema ROUTINES ROUTINE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
-NULL information_schema ROUTINES ROUTINE_COMMENT 19 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema ROUTINES ROUTINE_DEFINITION 8 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
-NULL information_schema ROUTINES ROUTINE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema ROUTINES ROUTINE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema ROUTINES ROUTINE_TYPE 5 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9) select
-NULL information_schema ROUTINES SECURITY_TYPE 15 NO varchar 7 21 NULL NULL utf8 utf8_general_ci varchar(7) select
-NULL information_schema ROUTINES SPECIFIC_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema ROUTINES SQL_DATA_ACCESS 13 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema ROUTINES SQL_MODE 18 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192) select
-NULL information_schema ROUTINES SQL_PATH 14 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema SCHEMATA CATALOG_NAME 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
-NULL information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME 3 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
-NULL information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
-NULL information_schema SCHEMATA SCHEMA_NAME 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema SCHEMATA SQL_PATH 5 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
-NULL information_schema SCHEMA_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
-NULL information_schema SCHEMA_PRIVILEGES IS_GRANTABLE 5 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
-NULL information_schema SCHEMA_PRIVILEGES PRIVILEGE_TYPE 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema SCHEMA_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
-NULL information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema SESSION_STATUS VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema SESSION_STATUS VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
-NULL information_schema SESSION_VARIABLES VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema SESSION_VARIABLES VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
-NULL information_schema STATISTICS CARDINALITY 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) select
-NULL information_schema STATISTICS COLLATION 9 NULL YES varchar 1 3 NULL NULL utf8 utf8_general_ci varchar(1) select
-NULL information_schema STATISTICS COLUMN_NAME 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema STATISTICS COMMENT 15 NULL YES varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16) select
-NULL information_schema STATISTICS INDEX_NAME 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema STATISTICS INDEX_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema STATISTICS INDEX_TYPE 14 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16) select
-NULL information_schema STATISTICS NON_UNIQUE 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(1) select
-NULL information_schema STATISTICS NULLABLE 13 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
-NULL information_schema STATISTICS PACKED 12 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10) select
-NULL information_schema STATISTICS SEQ_IN_INDEX 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(2) select
-NULL information_schema STATISTICS SUB_PART 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(3) select
-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 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 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 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_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 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
-NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_TYPE 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema TABLE_CONSTRAINTS TABLE_NAME 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema TABLE_CONSTRAINTS TABLE_SCHEMA 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema TABLE_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
-NULL information_schema TABLE_PRIVILEGES IS_GRANTABLE 6 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
-NULL information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-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 TRIGGERS ACTION_CONDITION 9 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
-NULL information_schema TRIGGERS ACTION_ORDER 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4) select
-NULL information_schema TRIGGERS ACTION_ORIENTATION 11 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9) select
-NULL information_schema TRIGGERS ACTION_REFERENCE_NEW_ROW 16 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
-NULL information_schema TRIGGERS ACTION_REFERENCE_NEW_TABLE 14 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema TRIGGERS ACTION_REFERENCE_OLD_ROW 15 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
-NULL information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE 13 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema TRIGGERS ACTION_STATEMENT 10 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
-NULL information_schema TRIGGERS ACTION_TIMING 12 NO varchar 6 18 NULL NULL utf8 utf8_general_ci varchar(6) select
-NULL information_schema TRIGGERS CHARACTER_SET_CLIENT 20 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
-NULL information_schema TRIGGERS COLLATION_CONNECTION 21 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
-NULL information_schema TRIGGERS CREATED 17 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
-NULL information_schema TRIGGERS DATABASE_COLLATION 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
-NULL information_schema TRIGGERS DEFINER 19 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77) select
-NULL information_schema TRIGGERS EVENT_MANIPULATION 4 NO varchar 6 18 NULL NULL utf8 utf8_general_ci varchar(6) select
-NULL information_schema TRIGGERS EVENT_OBJECT_CATALOG 5 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
-NULL information_schema TRIGGERS EVENT_OBJECT_SCHEMA 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema TRIGGERS EVENT_OBJECT_TABLE 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema TRIGGERS SQL_MODE 18 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192) select
-NULL information_schema TRIGGERS TRIGGER_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
-NULL information_schema TRIGGERS TRIGGER_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema TRIGGERS TRIGGER_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema USER_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
-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 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
-NULL information_schema VIEWS COLLATION_CONNECTION 10 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
-NULL information_schema VIEWS DEFINER 7 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77) select
-NULL information_schema VIEWS IS_UPDATABLE 6 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
-NULL information_schema VIEWS SECURITY_TYPE 8 NO varchar 7 21 NULL NULL utf8 utf8_general_ci varchar(7) select
-NULL information_schema VIEWS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
-NULL information_schema VIEWS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema VIEWS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema VIEWS VIEW_DEFINITION 4 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
+def information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema CHARACTER_SETS DESCRIPTION 3 NO varchar 60 180 NULL NULL utf8 utf8_general_ci varchar(60) select
+def information_schema CHARACTER_SETS MAXLEN 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(3) select
+def information_schema COLLATIONS CHARACTER_SET_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema COLLATIONS COLLATION_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema COLLATIONS ID 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(11) select
+def information_schema COLLATIONS IS_COMPILED 5 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
+def information_schema COLLATIONS IS_DEFAULT 4 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
+def information_schema COLLATIONS SORTLEN 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(3) select
+def information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema COLUMNS CHARACTER_OCTET_LENGTH 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema COLUMNS CHARACTER_SET_NAME 13 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema COLUMNS COLLATION_NAME 14 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema COLUMNS COLUMN_COMMENT 19 NO varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255) select
+def information_schema COLUMNS COLUMN_DEFAULT 6 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
+def information_schema COLUMNS COLUMN_KEY 16 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
+def information_schema COLUMNS COLUMN_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema COLUMNS COLUMN_TYPE 15 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
+def information_schema COLUMNS DATA_TYPE 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema COLUMNS EXTRA 17 NO varchar 27 81 NULL NULL utf8 utf8_general_ci varchar(27) select
+def information_schema COLUMNS IS_NULLABLE 7 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
+def information_schema COLUMNS NUMERIC_PRECISION 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema COLUMNS NUMERIC_SCALE 12 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema COLUMNS ORDINAL_POSITION 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema COLUMNS PRIVILEGES 18 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
+def information_schema COLUMNS TABLE_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema COLUMNS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema COLUMNS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema COLUMN_PRIVILEGES COLUMN_NAME 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema COLUMN_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
+def information_schema COLUMN_PRIVILEGES IS_GRANTABLE 7 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
+def information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema COLUMN_PRIVILEGES TABLE_CATALOG 2 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema COLUMN_PRIVILEGES TABLE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema COLUMN_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema ENGINES COMMENT 3 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
+def information_schema ENGINES ENGINE 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema ENGINES SAVEPOINTS 6 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
+def information_schema ENGINES SUPPORT 2 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select
+def information_schema ENGINES TRANSACTIONS 4 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
+def information_schema ENGINES XA 5 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
+def information_schema EVENTS CHARACTER_SET_CLIENT 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema EVENTS COLLATION_CONNECTION 23 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema EVENTS CREATED 17 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema EVENTS DATABASE_COLLATION 24 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema EVENTS DEFINER 4 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77) select
+def information_schema EVENTS ENDS 14 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema EVENTS EVENT_BODY 6 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select
+def information_schema EVENTS EVENT_CATALOG 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema EVENTS EVENT_COMMENT 20 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema EVENTS EVENT_DEFINITION 7 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
+def information_schema EVENTS EVENT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema EVENTS EVENT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema EVENTS EVENT_TYPE 8 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9) select
+def information_schema EVENTS EXECUTE_AT 9 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema EVENTS INTERVAL_FIELD 11 NULL YES varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18) select
+def information_schema EVENTS INTERVAL_VALUE 10 NULL YES varchar 256 768 NULL NULL utf8 utf8_general_ci varchar(256) select
+def information_schema EVENTS LAST_ALTERED 18 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema EVENTS LAST_EXECUTED 19 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema EVENTS ON_COMPLETION 16 NO varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12) select
+def information_schema EVENTS ORIGINATOR 21 0 NO bigint NULL NULL 19 0 NULL NULL bigint(10) select
+def information_schema EVENTS SQL_MODE 12 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192) select
+def information_schema EVENTS STARTS 13 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema EVENTS STATUS 15 NO varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18) select
+def information_schema EVENTS TIME_ZONE 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema FILES AUTOEXTEND_SIZE 19 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema FILES AVG_ROW_LENGTH 28 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema FILES CHECKSUM 36 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema FILES CHECK_TIME 35 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema FILES CREATE_TIME 33 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema FILES CREATION_TIME 20 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema FILES DATA_FREE 32 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema FILES DATA_LENGTH 29 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema FILES DELETED_ROWS 12 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
+def information_schema FILES ENGINE 10 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema FILES EXTENT_SIZE 16 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4) select
+def information_schema FILES EXTRA 38 NULL YES varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255) select
+def information_schema FILES FILE_ID 1 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4) select
+def information_schema FILES FILE_NAME 2 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema FILES FILE_TYPE 3 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20) select
+def information_schema FILES FREE_EXTENTS 14 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
+def information_schema FILES FULLTEXT_KEYS 11 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema FILES INDEX_LENGTH 31 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema FILES INITIAL_SIZE 17 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema FILES LAST_ACCESS_TIME 22 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema FILES LAST_UPDATE_TIME 21 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema FILES LOGFILE_GROUP_NAME 8 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema FILES LOGFILE_GROUP_NUMBER 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
+def information_schema FILES MAXIMUM_SIZE 18 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema FILES MAX_DATA_LENGTH 30 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema FILES RECOVER_TIME 23 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
+def information_schema FILES ROW_FORMAT 26 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10) select
+def information_schema FILES STATUS 37 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20) select
+def information_schema FILES TABLESPACE_NAME 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema FILES TABLE_CATALOG 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema FILES TABLE_NAME 7 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema FILES TABLE_ROWS 27 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema FILES TABLE_SCHEMA 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema FILES TOTAL_EXTENTS 15 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
+def information_schema FILES TRANSACTION_COUNTER 24 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
+def information_schema FILES UPDATE_COUNT 13 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
+def information_schema FILES UPDATE_TIME 34 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema FILES VERSION 25 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema GLOBAL_STATUS VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema GLOBAL_STATUS VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
+def information_schema GLOBAL_VARIABLES VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema GLOBAL_VARIABLES VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
+def information_schema KEY_COLUMN_USAGE COLUMN_NAME 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema KEY_COLUMN_USAGE ORDINAL_POSITION 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(10) select
+def information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(10) select
+def information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME 12 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME 11 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA 10 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema KEY_COLUMN_USAGE TABLE_CATALOG 4 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema KEY_COLUMN_USAGE TABLE_NAME 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema KEY_COLUMN_USAGE TABLE_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema PARAMETERS CHARACTER_MAXIMUM_LENGTH 8 NULL YES int NULL NULL 10 0 NULL NULL int(21) select
+def information_schema PARAMETERS CHARACTER_OCTET_LENGTH 9 NULL YES int NULL NULL 10 0 NULL NULL int(21) select
+def information_schema PARAMETERS CHARACTER_SET_NAME 12 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema PARAMETERS COLLATION_NAME 13 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema PARAMETERS DATA_TYPE 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema PARAMETERS DTD_IDENTIFIER 14 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
+def information_schema PARAMETERS NUMERIC_PRECISION 10 NULL YES int NULL NULL 10 0 NULL NULL int(21) select
+def information_schema PARAMETERS NUMERIC_SCALE 11 NULL YES int NULL NULL 10 0 NULL NULL int(21) select
+def information_schema PARAMETERS ORDINAL_POSITION 4 0 NO int NULL NULL 10 0 NULL NULL int(21) select
+def information_schema PARAMETERS PARAMETER_MODE 5 NULL YES varchar 5 15 NULL NULL utf8 utf8_general_ci varchar(5) select
+def information_schema PARAMETERS PARAMETER_NAME 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema PARAMETERS ROUTINE_TYPE 15 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9) select
+def information_schema PARAMETERS SPECIFIC_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema PARAMETERS SPECIFIC_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema PARAMETERS SPECIFIC_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema PARTITIONS AVG_ROW_LENGTH 14 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema PARTITIONS CHECKSUM 22 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema PARTITIONS CHECK_TIME 21 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema PARTITIONS CREATE_TIME 19 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema PARTITIONS DATA_FREE 18 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema PARTITIONS DATA_LENGTH 15 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema PARTITIONS INDEX_LENGTH 17 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema PARTITIONS MAX_DATA_LENGTH 16 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema PARTITIONS NODEGROUP 24 NO varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12) select
+def information_schema PARTITIONS PARTITION_COMMENT 23 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
+def information_schema PARTITIONS PARTITION_DESCRIPTION 12 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
+def information_schema PARTITIONS PARTITION_EXPRESSION 10 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
+def information_schema PARTITIONS PARTITION_METHOD 8 NULL YES varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18) select
+def information_schema PARTITIONS PARTITION_NAME 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema PARTITIONS PARTITION_ORDINAL_POSITION 6 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema PARTITIONS SUBPARTITION_EXPRESSION 11 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
+def information_schema PARTITIONS SUBPARTITION_METHOD 9 NULL YES varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12) select
+def information_schema PARTITIONS SUBPARTITION_NAME 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema PARTITIONS SUBPARTITION_ORDINAL_POSITION 7 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema PARTITIONS TABLESPACE_NAME 25 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema PARTITIONS TABLE_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema PARTITIONS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema PARTITIONS TABLE_ROWS 13 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema PARTITIONS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema PARTITIONS UPDATE_TIME 20 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema PLUGINS PLUGIN_AUTHOR 8 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema PLUGINS PLUGIN_DESCRIPTION 9 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
+def information_schema PLUGINS PLUGIN_LIBRARY 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema PLUGINS PLUGIN_LIBRARY_VERSION 7 NULL YES varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20) select
+def information_schema PLUGINS PLUGIN_LICENSE 10 NULL YES varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
+def information_schema PLUGINS PLUGIN_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema PLUGINS PLUGIN_STATUS 3 NO varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10) select
+def information_schema PLUGINS PLUGIN_TYPE 4 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
+def information_schema PLUGINS PLUGIN_TYPE_VERSION 5 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20) select
+def information_schema PLUGINS PLUGIN_VERSION 2 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20) select
+def information_schema PROCESSLIST COMMAND 5 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16) select
+def information_schema PROCESSLIST DB 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema PROCESSLIST HOST 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema PROCESSLIST ID 1 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4) select
+def information_schema PROCESSLIST INFO 8 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
+def information_schema PROCESSLIST STATE 7 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema PROCESSLIST TIME 6 0 NO int NULL NULL 10 0 NULL NULL int(7) select
+def information_schema PROCESSLIST USER 2 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16) select
+def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema REFERENTIAL_CONSTRAINTS DELETE_RULE 9 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema REFERENTIAL_CONSTRAINTS MATCH_OPTION 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema REFERENTIAL_CONSTRAINTS REFERENCED_TABLE_NAME 11 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema REFERENTIAL_CONSTRAINTS TABLE_NAME 10 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG 4 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema ROUTINES CHARACTER_MAXIMUM_LENGTH 7 NULL YES int NULL NULL 10 0 NULL NULL int(21) select
+def information_schema ROUTINES CHARACTER_OCTET_LENGTH 8 NULL YES int NULL NULL 10 0 NULL NULL int(21) select
+def information_schema ROUTINES CHARACTER_SET_CLIENT 28 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema ROUTINES CHARACTER_SET_NAME 11 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema ROUTINES COLLATION_CONNECTION 29 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema ROUTINES COLLATION_NAME 12 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema ROUTINES CREATED 23 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema ROUTINES DATABASE_COLLATION 30 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema ROUTINES DATA_TYPE 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema ROUTINES DEFINER 27 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77) select
+def information_schema ROUTINES DTD_IDENTIFIER 13 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
+def information_schema ROUTINES EXTERNAL_LANGUAGE 17 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema ROUTINES EXTERNAL_NAME 16 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema ROUTINES IS_DETERMINISTIC 19 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
+def information_schema ROUTINES LAST_ALTERED 24 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema ROUTINES NUMERIC_PRECISION 9 NULL YES int NULL NULL 10 0 NULL NULL int(21) select
+def information_schema ROUTINES NUMERIC_SCALE 10 NULL YES int NULL NULL 10 0 NULL NULL int(21) select
+def information_schema ROUTINES PARAMETER_STYLE 18 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select
+def information_schema ROUTINES ROUTINE_BODY 14 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select
+def information_schema ROUTINES ROUTINE_CATALOG 2 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema ROUTINES ROUTINE_COMMENT 26 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
+def information_schema ROUTINES ROUTINE_DEFINITION 15 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
+def information_schema ROUTINES ROUTINE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema ROUTINES ROUTINE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema ROUTINES ROUTINE_TYPE 5 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9) select
+def information_schema ROUTINES SECURITY_TYPE 22 NO varchar 7 21 NULL NULL utf8 utf8_general_ci varchar(7) select
+def information_schema ROUTINES SPECIFIC_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema ROUTINES SQL_DATA_ACCESS 20 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema ROUTINES SQL_MODE 25 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192) select
+def information_schema ROUTINES SQL_PATH 21 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema SCHEMATA CATALOG_NAME 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME 3 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema SCHEMATA SCHEMA_NAME 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema SCHEMATA SQL_PATH 5 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema SCHEMA_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
+def information_schema SCHEMA_PRIVILEGES IS_GRANTABLE 5 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
+def information_schema SCHEMA_PRIVILEGES PRIVILEGE_TYPE 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema SCHEMA_PRIVILEGES TABLE_CATALOG 2 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema SESSION_STATUS VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema SESSION_STATUS VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
+def information_schema SESSION_VARIABLES VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema SESSION_VARIABLES VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
+def information_schema STATISTICS CARDINALITY 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) select
+def information_schema STATISTICS COLLATION 9 NULL YES varchar 1 3 NULL NULL utf8 utf8_general_ci varchar(1) select
+def information_schema STATISTICS COLUMN_NAME 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema STATISTICS COMMENT 15 NULL YES varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16) select
+def information_schema STATISTICS INDEX_NAME 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema STATISTICS INDEX_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema STATISTICS INDEX_TYPE 14 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16) select
+def information_schema STATISTICS NON_UNIQUE 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(1) select
+def information_schema STATISTICS NULLABLE 13 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
+def information_schema STATISTICS PACKED 12 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10) select
+def information_schema STATISTICS SEQ_IN_INDEX 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(2) select
+def information_schema STATISTICS SUB_PART 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(3) select
+def information_schema STATISTICS TABLE_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema STATISTICS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema STATISTICS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TABLES AUTO_INCREMENT 14 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema TABLES AVG_ROW_LENGTH 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema TABLES CHECKSUM 19 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema TABLES CHECK_TIME 17 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema TABLES CREATE_OPTIONS 20 NULL YES varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255) select
+def information_schema TABLES CREATE_TIME 15 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema TABLES DATA_FREE 13 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema TABLES DATA_LENGTH 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema TABLES ENGINE 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TABLES INDEX_LENGTH 12 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema TABLES MAX_DATA_LENGTH 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema TABLES ROW_FORMAT 7 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10) select
+def information_schema TABLES TABLE_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema TABLES TABLE_COLLATION 18 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema TABLES TABLE_COMMENT 21 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
+def information_schema TABLES TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TABLES TABLE_ROWS 8 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema TABLES TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TABLES TABLE_TYPE 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TABLES UPDATE_TIME 16 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema TABLES VERSION 6 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema TABLESPACES AUTOEXTEND_SIZE 6 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema TABLESPACES ENGINE 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TABLESPACES EXTENT_SIZE 5 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema TABLESPACES LOGFILE_GROUP_NAME 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TABLESPACES MAXIMUM_SIZE 7 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema TABLESPACES NODEGROUP_ID 8 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+def information_schema TABLESPACES TABLESPACE_COMMENT 9 NULL YES varchar 2048 6144 NULL NULL utf8 utf8_general_ci varchar(2048) select
+def information_schema TABLESPACES TABLESPACE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TABLESPACES TABLESPACE_TYPE 3 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TABLE_CONSTRAINTS CONSTRAINT_TYPE 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TABLE_CONSTRAINTS TABLE_NAME 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TABLE_CONSTRAINTS TABLE_SCHEMA 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TABLE_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
+def information_schema TABLE_PRIVILEGES IS_GRANTABLE 6 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
+def information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TABLE_PRIVILEGES TABLE_CATALOG 2 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema TABLE_PRIVILEGES TABLE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TABLE_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TRIGGERS ACTION_CONDITION 9 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
+def information_schema TRIGGERS ACTION_ORDER 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4) select
+def information_schema TRIGGERS ACTION_ORIENTATION 11 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9) select
+def information_schema TRIGGERS ACTION_REFERENCE_NEW_ROW 16 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
+def information_schema TRIGGERS ACTION_REFERENCE_NEW_TABLE 14 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TRIGGERS ACTION_REFERENCE_OLD_ROW 15 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
+def information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE 13 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TRIGGERS ACTION_STATEMENT 10 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
+def information_schema TRIGGERS ACTION_TIMING 12 NO varchar 6 18 NULL NULL utf8 utf8_general_ci varchar(6) select
+def information_schema TRIGGERS CHARACTER_SET_CLIENT 20 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema TRIGGERS COLLATION_CONNECTION 21 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema TRIGGERS CREATED 17 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
+def information_schema TRIGGERS DATABASE_COLLATION 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema TRIGGERS DEFINER 19 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77) select
+def information_schema TRIGGERS EVENT_MANIPULATION 4 NO varchar 6 18 NULL NULL utf8 utf8_general_ci varchar(6) select
+def information_schema TRIGGERS EVENT_OBJECT_CATALOG 5 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema TRIGGERS EVENT_OBJECT_SCHEMA 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TRIGGERS EVENT_OBJECT_TABLE 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TRIGGERS SQL_MODE 18 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192) select
+def information_schema TRIGGERS TRIGGER_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema TRIGGERS TRIGGER_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema TRIGGERS TRIGGER_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema USER_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
+def information_schema USER_PRIVILEGES IS_GRANTABLE 4 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
+def information_schema USER_PRIVILEGES PRIVILEGE_TYPE 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema USER_PRIVILEGES TABLE_CATALOG 2 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema VIEWS CHARACTER_SET_CLIENT 9 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema VIEWS CHECK_OPTION 5 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select
+def information_schema VIEWS COLLATION_CONNECTION 10 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+def information_schema VIEWS DEFINER 7 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77) select
+def information_schema VIEWS IS_UPDATABLE 6 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
+def information_schema VIEWS SECURITY_TYPE 8 NO varchar 7 21 NULL NULL utf8 utf8_general_ci varchar(7) select
+def information_schema VIEWS TABLE_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
+def information_schema VIEWS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema VIEWS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+def information_schema VIEWS VIEW_DEFINITION 4 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
##########################################################################
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
##########################################################################
@@ -310,7 +341,7 @@ CHARACTER_SET_NAME,
COLLATION_NAME
FROM information_schema.columns
WHERE table_schema = 'information_schema'
-AND table_name <> 'profiling'
+AND table_name <> 'profiling' AND table_name not like 'innodb_%'
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
@@ -322,7 +353,7 @@ CHARACTER_SET_NAME,
COLLATION_NAME
FROM information_schema.columns
WHERE table_schema = 'information_schema'
-AND table_name <> 'profiling'
+AND table_name <> 'profiling' AND table_name not like 'innodb_%'
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
@@ -334,7 +365,7 @@ CHARACTER_SET_NAME,
COLLATION_NAME
FROM information_schema.columns
WHERE table_schema = 'information_schema'
-AND table_name <> 'profiling'
+AND table_name <> 'profiling' AND table_name not like 'innodb_%'
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
@@ -355,7 +386,7 @@ COLLATION_NAME,
COLUMN_TYPE
FROM information_schema.columns
WHERE table_schema = 'information_schema'
-AND table_name <> 'profiling'
+AND table_name <> 'profiling' AND table_name not like 'innodb_%'
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE
3.0000 information_schema CHARACTER_SETS CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
@@ -480,6 +511,21 @@ NULL information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT bigint NU
3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema PARAMETERS SPECIFIC_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
+3.0000 information_schema PARAMETERS SPECIFIC_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema PARAMETERS SPECIFIC_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema PARAMETERS ORDINAL_POSITION int NULL NULL NULL NULL int(21)
+3.0000 information_schema PARAMETERS PARAMETER_MODE varchar 5 15 utf8 utf8_general_ci varchar(5)
+3.0000 information_schema PARAMETERS PARAMETER_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema PARAMETERS DATA_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema PARAMETERS CHARACTER_MAXIMUM_LENGTH int NULL NULL NULL NULL int(21)
+NULL information_schema PARAMETERS CHARACTER_OCTET_LENGTH int NULL NULL NULL NULL int(21)
+NULL information_schema PARAMETERS NUMERIC_PRECISION int NULL NULL NULL NULL int(21)
+NULL information_schema PARAMETERS NUMERIC_SCALE int NULL NULL NULL NULL int(21)
+3.0000 information_schema PARAMETERS CHARACTER_SET_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema PARAMETERS COLLATION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+1.0000 information_schema PARAMETERS DTD_IDENTIFIER longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
+3.0000 information_schema PARAMETERS ROUTINE_TYPE varchar 9 27 utf8 utf8_general_ci varchar(9)
3.0000 information_schema PARTITIONS TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
3.0000 information_schema PARTITIONS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema PARTITIONS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
@@ -487,7 +533,7 @@ NULL information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT bigint NU
3.0000 information_schema PARTITIONS SUBPARTITION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
NULL information_schema PARTITIONS PARTITION_ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(21) unsigned
NULL information_schema PARTITIONS SUBPARTITION_ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(21) unsigned
-3.0000 information_schema PARTITIONS PARTITION_METHOD varchar 12 36 utf8 utf8_general_ci varchar(12)
+3.0000 information_schema PARTITIONS PARTITION_METHOD varchar 18 54 utf8 utf8_general_ci varchar(18)
3.0000 information_schema PARTITIONS SUBPARTITION_METHOD varchar 12 36 utf8 utf8_general_ci varchar(12)
1.0000 information_schema PARTITIONS PARTITION_EXPRESSION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
1.0000 information_schema PARTITIONS SUBPARTITION_EXPRESSION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
@@ -539,7 +585,14 @@ NULL information_schema PROCESSLIST TIME int NULL NULL NULL NULL int(7)
3.0000 information_schema ROUTINES ROUTINE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema ROUTINES ROUTINE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema ROUTINES ROUTINE_TYPE varchar 9 27 utf8 utf8_general_ci varchar(9)
-3.0000 information_schema ROUTINES DTD_IDENTIFIER varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema ROUTINES DATA_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema ROUTINES CHARACTER_MAXIMUM_LENGTH int NULL NULL NULL NULL int(21)
+NULL information_schema ROUTINES CHARACTER_OCTET_LENGTH int NULL NULL NULL NULL int(21)
+NULL information_schema ROUTINES NUMERIC_PRECISION int NULL NULL NULL NULL int(21)
+NULL information_schema ROUTINES NUMERIC_SCALE int NULL NULL NULL NULL int(21)
+3.0000 information_schema ROUTINES CHARACTER_SET_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema ROUTINES COLLATION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+1.0000 information_schema ROUTINES DTD_IDENTIFIER longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
3.0000 information_schema ROUTINES ROUTINE_BODY varchar 8 24 utf8 utf8_general_ci varchar(8)
1.0000 information_schema ROUTINES ROUTINE_DEFINITION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
3.0000 information_schema ROUTINES EXTERNAL_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
@@ -552,7 +605,7 @@ NULL information_schema PROCESSLIST TIME int NULL NULL NULL NULL int(7)
NULL information_schema ROUTINES CREATED datetime NULL NULL NULL NULL datetime
NULL information_schema ROUTINES LAST_ALTERED datetime NULL NULL NULL NULL datetime
3.0000 information_schema ROUTINES SQL_MODE varchar 8192 24576 utf8 utf8_general_ci varchar(8192)
-3.0000 information_schema ROUTINES ROUTINE_COMMENT varchar 64 192 utf8 utf8_general_ci varchar(64)
+1.0000 information_schema ROUTINES ROUTINE_COMMENT longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
3.0000 information_schema ROUTINES DEFINER varchar 77 231 utf8 utf8_general_ci varchar(77)
3.0000 information_schema ROUTINES CHARACTER_SET_CLIENT varchar 32 96 utf8 utf8_general_ci varchar(32)
3.0000 information_schema ROUTINES COLLATION_CONNECTION varchar 32 96 utf8 utf8_general_ci varchar(32)
@@ -607,6 +660,15 @@ NULL information_schema TABLES CHECK_TIME datetime NULL NULL NULL NULL datetime
NULL information_schema TABLES CHECKSUM bigint NULL NULL NULL NULL bigint(21) unsigned
3.0000 information_schema TABLES CREATE_OPTIONS varchar 255 765 utf8 utf8_general_ci varchar(255)
3.0000 information_schema TABLES TABLE_COMMENT varchar 80 240 utf8 utf8_general_ci varchar(80)
+3.0000 information_schema TABLESPACES TABLESPACE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TABLESPACES ENGINE varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TABLESPACES TABLESPACE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TABLESPACES LOGFILE_GROUP_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema TABLESPACES EXTENT_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema TABLESPACES AUTOEXTEND_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema TABLESPACES MAXIMUM_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema TABLESPACES NODEGROUP_ID bigint NULL NULL NULL NULL bigint(21) unsigned
+3.0000 information_schema TABLESPACES TABLESPACE_COMMENT varchar 2048 6144 utf8 utf8_general_ci varchar(2048)
3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
diff --git a/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result b/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result
index 59ad695c413..d02270a6b6f 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result
@@ -1,305 +1,336 @@
SELECT * FROM information_schema.columns
WHERE table_schema = 'information_schema'
-AND table_name <> 'profiling'
+AND table_name <> 'profiling' AND table_name not like 'innodb_%'
ORDER BY table_schema, table_name, column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
-NULL information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema CHARACTER_SETS DESCRIPTION 3 NO varchar 60 180 NULL NULL utf8 utf8_general_ci varchar(60)
-NULL information_schema CHARACTER_SETS MAXLEN 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(3)
-NULL information_schema COLLATIONS CHARACTER_SET_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema COLLATIONS COLLATION_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema COLLATIONS ID 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(11)
-NULL information_schema COLLATIONS IS_COMPILED 5 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
-NULL information_schema COLLATIONS IS_DEFAULT 4 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
-NULL information_schema COLLATIONS SORTLEN 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(3)
-NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema COLUMNS CHARACTER_OCTET_LENGTH 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema COLUMNS CHARACTER_SET_NAME 13 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema COLUMNS COLLATION_NAME 14 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema COLUMNS COLUMN_COMMENT 19 NO varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255)
-NULL information_schema COLUMNS COLUMN_DEFAULT 6 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
-NULL information_schema COLUMNS COLUMN_KEY 16 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
-NULL information_schema COLUMNS COLUMN_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema COLUMNS COLUMN_TYPE 15 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
-NULL information_schema COLUMNS DATA_TYPE 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema COLUMNS EXTRA 17 NO varchar 27 81 NULL NULL utf8 utf8_general_ci varchar(27)
-NULL information_schema COLUMNS IS_NULLABLE 7 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
-NULL information_schema COLUMNS NUMERIC_PRECISION 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema COLUMNS NUMERIC_SCALE 12 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema COLUMNS ORDINAL_POSITION 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema COLUMNS PRIVILEGES 18 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
-NULL information_schema COLUMNS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL information_schema COLUMNS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema COLUMNS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema COLUMN_PRIVILEGES COLUMN_NAME 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema COLUMN_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81)
-NULL information_schema COLUMN_PRIVILEGES IS_GRANTABLE 7 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
-NULL information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema COLUMN_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL information_schema COLUMN_PRIVILEGES TABLE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema COLUMN_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema ENGINES COMMENT 3 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
-NULL information_schema ENGINES ENGINE 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema ENGINES SAVEPOINTS 6 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
-NULL information_schema ENGINES SUPPORT 2 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8)
-NULL information_schema ENGINES TRANSACTIONS 4 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
-NULL information_schema ENGINES XA 5 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
-NULL information_schema EVENTS CHARACTER_SET_CLIENT 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema EVENTS COLLATION_CONNECTION 23 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema EVENTS CREATED 17 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema EVENTS DATABASE_COLLATION 24 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema EVENTS DEFINER 4 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77)
-NULL information_schema EVENTS ENDS 14 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema EVENTS EVENT_BODY 6 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8)
-NULL information_schema EVENTS EVENT_CATALOG 1 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema EVENTS EVENT_COMMENT 20 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema EVENTS EVENT_DEFINITION 7 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
-NULL information_schema EVENTS EVENT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema EVENTS EVENT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema EVENTS EVENT_TYPE 8 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9)
-NULL information_schema EVENTS EXECUTE_AT 9 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema EVENTS INTERVAL_FIELD 11 NULL YES varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18)
-NULL information_schema EVENTS INTERVAL_VALUE 10 NULL YES varchar 256 768 NULL NULL utf8 utf8_general_ci varchar(256)
-NULL information_schema EVENTS LAST_ALTERED 18 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema EVENTS LAST_EXECUTED 19 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema EVENTS ON_COMPLETION 16 NO varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12)
-NULL information_schema EVENTS ORIGINATOR 21 0 NO bigint NULL NULL 19 0 NULL NULL bigint(10)
-NULL information_schema EVENTS SQL_MODE 12 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192)
-NULL information_schema EVENTS STARTS 13 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema EVENTS STATUS 15 NO varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18)
-NULL information_schema EVENTS TIME_ZONE 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema FILES AUTOEXTEND_SIZE 19 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema FILES AVG_ROW_LENGTH 28 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema FILES CHECKSUM 36 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema FILES CHECK_TIME 35 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema FILES CREATE_TIME 33 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema FILES CREATION_TIME 20 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema FILES DATA_FREE 32 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema FILES DATA_LENGTH 29 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema FILES DELETED_ROWS 12 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
-NULL information_schema FILES ENGINE 10 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema FILES EXTENT_SIZE 16 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4)
-NULL information_schema FILES EXTRA 38 NULL YES varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255)
-NULL information_schema FILES FILE_ID 1 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4)
-NULL information_schema FILES FILE_NAME 2 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema FILES FILE_TYPE 3 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20)
-NULL information_schema FILES FREE_EXTENTS 14 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
-NULL information_schema FILES FULLTEXT_KEYS 11 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema FILES INDEX_LENGTH 31 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema FILES INITIAL_SIZE 17 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema FILES LAST_ACCESS_TIME 22 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema FILES LAST_UPDATE_TIME 21 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema FILES LOGFILE_GROUP_NAME 8 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema FILES LOGFILE_GROUP_NUMBER 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
-NULL information_schema FILES MAXIMUM_SIZE 18 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema FILES MAX_DATA_LENGTH 30 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema FILES RECOVER_TIME 23 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
-NULL information_schema FILES ROW_FORMAT 26 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10)
-NULL information_schema FILES STATUS 37 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20)
-NULL information_schema FILES TABLESPACE_NAME 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema FILES TABLE_CATALOG 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema FILES TABLE_NAME 7 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema FILES TABLE_ROWS 27 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema FILES TABLE_SCHEMA 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema FILES TOTAL_EXTENTS 15 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
-NULL information_schema FILES TRANSACTION_COUNTER 24 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
-NULL information_schema FILES UPDATE_COUNT 13 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
-NULL information_schema FILES UPDATE_TIME 34 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema FILES VERSION 25 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema GLOBAL_STATUS VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema GLOBAL_STATUS VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024)
-NULL information_schema GLOBAL_VARIABLES VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema GLOBAL_VARIABLES VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024)
-NULL information_schema KEY_COLUMN_USAGE COLUMN_NAME 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema KEY_COLUMN_USAGE ORDINAL_POSITION 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(10)
-NULL information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(10)
-NULL information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME 12 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME 11 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA 10 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema KEY_COLUMN_USAGE TABLE_CATALOG 4 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL information_schema KEY_COLUMN_USAGE TABLE_NAME 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema KEY_COLUMN_USAGE TABLE_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema PARTITIONS AVG_ROW_LENGTH 14 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema PARTITIONS CHECKSUM 22 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema PARTITIONS CHECK_TIME 21 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema PARTITIONS CREATE_TIME 19 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema PARTITIONS DATA_FREE 18 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema PARTITIONS DATA_LENGTH 15 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema PARTITIONS INDEX_LENGTH 17 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema PARTITIONS MAX_DATA_LENGTH 16 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema PARTITIONS NODEGROUP 24 NO varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12)
-NULL information_schema PARTITIONS PARTITION_COMMENT 23 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
-NULL information_schema PARTITIONS PARTITION_DESCRIPTION 12 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
-NULL information_schema PARTITIONS PARTITION_EXPRESSION 10 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
-NULL information_schema PARTITIONS PARTITION_METHOD 8 NULL YES varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12)
-NULL information_schema PARTITIONS PARTITION_NAME 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema PARTITIONS PARTITION_ORDINAL_POSITION 6 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema PARTITIONS SUBPARTITION_EXPRESSION 11 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
-NULL information_schema PARTITIONS SUBPARTITION_METHOD 9 NULL YES varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12)
-NULL information_schema PARTITIONS SUBPARTITION_NAME 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema PARTITIONS SUBPARTITION_ORDINAL_POSITION 7 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema PARTITIONS TABLESPACE_NAME 25 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema PARTITIONS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL information_schema PARTITIONS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema PARTITIONS TABLE_ROWS 13 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema PARTITIONS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema PARTITIONS UPDATE_TIME 20 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema PLUGINS PLUGIN_AUTHOR 8 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema PLUGINS PLUGIN_DESCRIPTION 9 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
-NULL information_schema PLUGINS PLUGIN_LIBRARY 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema PLUGINS PLUGIN_LIBRARY_VERSION 7 NULL YES varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20)
-NULL information_schema PLUGINS PLUGIN_LICENSE 10 NULL YES varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
-NULL information_schema PLUGINS PLUGIN_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema PLUGINS PLUGIN_STATUS 3 NO varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10)
-NULL information_schema PLUGINS PLUGIN_TYPE 4 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
-NULL information_schema PLUGINS PLUGIN_TYPE_VERSION 5 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20)
-NULL information_schema PLUGINS PLUGIN_VERSION 2 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20)
-NULL information_schema PROCESSLIST COMMAND 5 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16)
-NULL information_schema PROCESSLIST DB 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema PROCESSLIST HOST 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema PROCESSLIST ID 1 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4)
-NULL information_schema PROCESSLIST INFO 8 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
-NULL information_schema PROCESSLIST STATE 7 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema PROCESSLIST TIME 6 0 NO int NULL NULL 10 0 NULL NULL int(7)
-NULL information_schema PROCESSLIST USER 2 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16)
-NULL information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema REFERENTIAL_CONSTRAINTS DELETE_RULE 9 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema REFERENTIAL_CONSTRAINTS MATCH_OPTION 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema REFERENTIAL_CONSTRAINTS REFERENCED_TABLE_NAME 11 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema REFERENTIAL_CONSTRAINTS TABLE_NAME 10 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG 4 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema ROUTINES CHARACTER_SET_CLIENT 21 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema ROUTINES COLLATION_CONNECTION 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema ROUTINES CREATED 16 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema ROUTINES DATABASE_COLLATION 23 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema ROUTINES DEFINER 20 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77)
-NULL information_schema ROUTINES DTD_IDENTIFIER 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema ROUTINES EXTERNAL_LANGUAGE 10 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema ROUTINES EXTERNAL_NAME 9 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema ROUTINES IS_DETERMINISTIC 12 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
-NULL information_schema ROUTINES LAST_ALTERED 17 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema ROUTINES PARAMETER_STYLE 11 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8)
-NULL information_schema ROUTINES ROUTINE_BODY 7 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8)
-NULL information_schema ROUTINES ROUTINE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL information_schema ROUTINES ROUTINE_COMMENT 19 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema ROUTINES ROUTINE_DEFINITION 8 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
-NULL information_schema ROUTINES ROUTINE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema ROUTINES ROUTINE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema ROUTINES ROUTINE_TYPE 5 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9)
-NULL information_schema ROUTINES SECURITY_TYPE 15 NO varchar 7 21 NULL NULL utf8 utf8_general_ci varchar(7)
-NULL information_schema ROUTINES SPECIFIC_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema ROUTINES SQL_DATA_ACCESS 13 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema ROUTINES SQL_MODE 18 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192)
-NULL information_schema ROUTINES SQL_PATH 14 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema SCHEMATA CATALOG_NAME 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME 3 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema SCHEMATA SCHEMA_NAME 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema SCHEMATA SQL_PATH 5 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL information_schema SCHEMA_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81)
-NULL information_schema SCHEMA_PRIVILEGES IS_GRANTABLE 5 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
-NULL information_schema SCHEMA_PRIVILEGES PRIVILEGE_TYPE 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema SCHEMA_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema SESSION_STATUS VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema SESSION_STATUS VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024)
-NULL information_schema SESSION_VARIABLES VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema SESSION_VARIABLES VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024)
-NULL information_schema STATISTICS CARDINALITY 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21)
-NULL information_schema STATISTICS COLLATION 9 NULL YES varchar 1 3 NULL NULL utf8 utf8_general_ci varchar(1)
-NULL information_schema STATISTICS COLUMN_NAME 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema STATISTICS COMMENT 15 NULL YES varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16)
-NULL information_schema STATISTICS INDEX_NAME 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema STATISTICS INDEX_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema STATISTICS INDEX_TYPE 14 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16)
-NULL information_schema STATISTICS NON_UNIQUE 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(1)
-NULL information_schema STATISTICS NULLABLE 13 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
-NULL information_schema STATISTICS PACKED 12 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10)
-NULL information_schema STATISTICS SEQ_IN_INDEX 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(2)
-NULL information_schema STATISTICS SUB_PART 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(3)
-NULL information_schema STATISTICS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL information_schema STATISTICS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema STATISTICS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema TABLES AUTO_INCREMENT 14 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema TABLES AVG_ROW_LENGTH 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema TABLES CHECKSUM 19 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema TABLES CHECK_TIME 17 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema TABLES CREATE_OPTIONS 20 NULL YES varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255)
-NULL information_schema TABLES CREATE_TIME 15 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema TABLES DATA_FREE 13 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema TABLES DATA_LENGTH 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema TABLES ENGINE 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema TABLES INDEX_LENGTH 12 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema TABLES MAX_DATA_LENGTH 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema TABLES ROW_FORMAT 7 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10)
-NULL information_schema TABLES TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL information_schema TABLES TABLE_COLLATION 18 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema TABLES TABLE_COMMENT 21 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
-NULL information_schema TABLES TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema TABLES TABLE_ROWS 8 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema TABLES TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema TABLES TABLE_TYPE 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema TABLES UPDATE_TIME 16 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema TABLES VERSION 6 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
-NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_TYPE 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema TABLE_CONSTRAINTS TABLE_NAME 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema TABLE_CONSTRAINTS TABLE_SCHEMA 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema TABLE_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81)
-NULL information_schema TABLE_PRIVILEGES IS_GRANTABLE 6 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
-NULL information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema TABLE_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL information_schema TABLE_PRIVILEGES TABLE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema TABLE_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema TRIGGERS ACTION_CONDITION 9 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
-NULL information_schema TRIGGERS ACTION_ORDER 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4)
-NULL information_schema TRIGGERS ACTION_ORIENTATION 11 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9)
-NULL information_schema TRIGGERS ACTION_REFERENCE_NEW_ROW 16 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
-NULL information_schema TRIGGERS ACTION_REFERENCE_NEW_TABLE 14 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema TRIGGERS ACTION_REFERENCE_OLD_ROW 15 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
-NULL information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE 13 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema TRIGGERS ACTION_STATEMENT 10 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
-NULL information_schema TRIGGERS ACTION_TIMING 12 NO varchar 6 18 NULL NULL utf8 utf8_general_ci varchar(6)
-NULL information_schema TRIGGERS CHARACTER_SET_CLIENT 20 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema TRIGGERS COLLATION_CONNECTION 21 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema TRIGGERS CREATED 17 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL information_schema TRIGGERS DATABASE_COLLATION 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema TRIGGERS DEFINER 19 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77)
-NULL information_schema TRIGGERS EVENT_MANIPULATION 4 NO varchar 6 18 NULL NULL utf8 utf8_general_ci varchar(6)
-NULL information_schema TRIGGERS EVENT_OBJECT_CATALOG 5 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL information_schema TRIGGERS EVENT_OBJECT_SCHEMA 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema TRIGGERS EVENT_OBJECT_TABLE 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema TRIGGERS SQL_MODE 18 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192)
-NULL information_schema TRIGGERS TRIGGER_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL information_schema TRIGGERS TRIGGER_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema TRIGGERS TRIGGER_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema USER_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81)
-NULL information_schema USER_PRIVILEGES IS_GRANTABLE 4 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
-NULL information_schema USER_PRIVILEGES PRIVILEGE_TYPE 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema USER_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL information_schema VIEWS CHARACTER_SET_CLIENT 9 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema VIEWS CHECK_OPTION 5 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8)
-NULL information_schema VIEWS COLLATION_CONNECTION 10 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
-NULL information_schema VIEWS DEFINER 7 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77)
-NULL information_schema VIEWS IS_UPDATABLE 6 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
-NULL information_schema VIEWS SECURITY_TYPE 8 NO varchar 7 21 NULL NULL utf8 utf8_general_ci varchar(7)
-NULL information_schema VIEWS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL information_schema VIEWS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema VIEWS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL information_schema VIEWS VIEW_DEFINITION 4 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+def information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema CHARACTER_SETS DESCRIPTION 3 NO varchar 60 180 NULL NULL utf8 utf8_general_ci varchar(60)
+def information_schema CHARACTER_SETS MAXLEN 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(3)
+def information_schema COLLATIONS CHARACTER_SET_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema COLLATIONS COLLATION_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema COLLATIONS ID 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(11)
+def information_schema COLLATIONS IS_COMPILED 5 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+def information_schema COLLATIONS IS_DEFAULT 4 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+def information_schema COLLATIONS SORTLEN 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(3)
+def information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema COLUMNS CHARACTER_OCTET_LENGTH 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema COLUMNS CHARACTER_SET_NAME 13 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema COLUMNS COLLATION_NAME 14 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema COLUMNS COLUMN_COMMENT 19 NO varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255)
+def information_schema COLUMNS COLUMN_DEFAULT 6 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+def information_schema COLUMNS COLUMN_KEY 16 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+def information_schema COLUMNS COLUMN_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema COLUMNS COLUMN_TYPE 15 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+def information_schema COLUMNS DATA_TYPE 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema COLUMNS EXTRA 17 NO varchar 27 81 NULL NULL utf8 utf8_general_ci varchar(27)
+def information_schema COLUMNS IS_NULLABLE 7 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+def information_schema COLUMNS NUMERIC_PRECISION 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema COLUMNS NUMERIC_SCALE 12 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema COLUMNS ORDINAL_POSITION 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema COLUMNS PRIVILEGES 18 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
+def information_schema COLUMNS TABLE_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema COLUMNS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema COLUMNS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema COLUMN_PRIVILEGES COLUMN_NAME 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema COLUMN_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81)
+def information_schema COLUMN_PRIVILEGES IS_GRANTABLE 7 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+def information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema COLUMN_PRIVILEGES TABLE_CATALOG 2 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema COLUMN_PRIVILEGES TABLE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema COLUMN_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema ENGINES COMMENT 3 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
+def information_schema ENGINES ENGINE 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema ENGINES SAVEPOINTS 6 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+def information_schema ENGINES SUPPORT 2 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8)
+def information_schema ENGINES TRANSACTIONS 4 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+def information_schema ENGINES XA 5 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+def information_schema EVENTS CHARACTER_SET_CLIENT 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema EVENTS COLLATION_CONNECTION 23 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema EVENTS CREATED 17 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema EVENTS DATABASE_COLLATION 24 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema EVENTS DEFINER 4 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77)
+def information_schema EVENTS ENDS 14 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema EVENTS EVENT_BODY 6 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8)
+def information_schema EVENTS EVENT_CATALOG 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema EVENTS EVENT_COMMENT 20 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema EVENTS EVENT_DEFINITION 7 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+def information_schema EVENTS EVENT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema EVENTS EVENT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema EVENTS EVENT_TYPE 8 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9)
+def information_schema EVENTS EXECUTE_AT 9 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema EVENTS INTERVAL_FIELD 11 NULL YES varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18)
+def information_schema EVENTS INTERVAL_VALUE 10 NULL YES varchar 256 768 NULL NULL utf8 utf8_general_ci varchar(256)
+def information_schema EVENTS LAST_ALTERED 18 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema EVENTS LAST_EXECUTED 19 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema EVENTS ON_COMPLETION 16 NO varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12)
+def information_schema EVENTS ORIGINATOR 21 0 NO bigint NULL NULL 19 0 NULL NULL bigint(10)
+def information_schema EVENTS SQL_MODE 12 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192)
+def information_schema EVENTS STARTS 13 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema EVENTS STATUS 15 NO varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18)
+def information_schema EVENTS TIME_ZONE 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema FILES AUTOEXTEND_SIZE 19 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema FILES AVG_ROW_LENGTH 28 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema FILES CHECKSUM 36 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema FILES CHECK_TIME 35 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema FILES CREATE_TIME 33 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema FILES CREATION_TIME 20 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema FILES DATA_FREE 32 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema FILES DATA_LENGTH 29 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema FILES DELETED_ROWS 12 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
+def information_schema FILES ENGINE 10 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema FILES EXTENT_SIZE 16 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4)
+def information_schema FILES EXTRA 38 NULL YES varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255)
+def information_schema FILES FILE_ID 1 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4)
+def information_schema FILES FILE_NAME 2 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema FILES FILE_TYPE 3 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20)
+def information_schema FILES FREE_EXTENTS 14 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
+def information_schema FILES FULLTEXT_KEYS 11 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema FILES INDEX_LENGTH 31 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema FILES INITIAL_SIZE 17 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema FILES LAST_ACCESS_TIME 22 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema FILES LAST_UPDATE_TIME 21 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema FILES LOGFILE_GROUP_NAME 8 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema FILES LOGFILE_GROUP_NUMBER 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
+def information_schema FILES MAXIMUM_SIZE 18 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema FILES MAX_DATA_LENGTH 30 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema FILES RECOVER_TIME 23 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
+def information_schema FILES ROW_FORMAT 26 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10)
+def information_schema FILES STATUS 37 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20)
+def information_schema FILES TABLESPACE_NAME 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema FILES TABLE_CATALOG 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema FILES TABLE_NAME 7 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema FILES TABLE_ROWS 27 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema FILES TABLE_SCHEMA 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema FILES TOTAL_EXTENTS 15 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
+def information_schema FILES TRANSACTION_COUNTER 24 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
+def information_schema FILES UPDATE_COUNT 13 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
+def information_schema FILES UPDATE_TIME 34 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema FILES VERSION 25 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema GLOBAL_STATUS VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema GLOBAL_STATUS VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024)
+def information_schema GLOBAL_VARIABLES VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema GLOBAL_VARIABLES VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024)
+def information_schema KEY_COLUMN_USAGE COLUMN_NAME 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema KEY_COLUMN_USAGE ORDINAL_POSITION 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(10)
+def information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(10)
+def information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME 12 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME 11 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA 10 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema KEY_COLUMN_USAGE TABLE_CATALOG 4 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema KEY_COLUMN_USAGE TABLE_NAME 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema KEY_COLUMN_USAGE TABLE_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema PARAMETERS CHARACTER_MAXIMUM_LENGTH 8 NULL YES int NULL NULL 10 0 NULL NULL int(21)
+def information_schema PARAMETERS CHARACTER_OCTET_LENGTH 9 NULL YES int NULL NULL 10 0 NULL NULL int(21)
+def information_schema PARAMETERS CHARACTER_SET_NAME 12 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema PARAMETERS COLLATION_NAME 13 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema PARAMETERS DATA_TYPE 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema PARAMETERS DTD_IDENTIFIER 14 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+def information_schema PARAMETERS NUMERIC_PRECISION 10 NULL YES int NULL NULL 10 0 NULL NULL int(21)
+def information_schema PARAMETERS NUMERIC_SCALE 11 NULL YES int NULL NULL 10 0 NULL NULL int(21)
+def information_schema PARAMETERS ORDINAL_POSITION 4 0 NO int NULL NULL 10 0 NULL NULL int(21)
+def information_schema PARAMETERS PARAMETER_MODE 5 NULL YES varchar 5 15 NULL NULL utf8 utf8_general_ci varchar(5)
+def information_schema PARAMETERS PARAMETER_NAME 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema PARAMETERS ROUTINE_TYPE 15 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9)
+def information_schema PARAMETERS SPECIFIC_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema PARAMETERS SPECIFIC_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema PARAMETERS SPECIFIC_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema PARTITIONS AVG_ROW_LENGTH 14 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema PARTITIONS CHECKSUM 22 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema PARTITIONS CHECK_TIME 21 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema PARTITIONS CREATE_TIME 19 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema PARTITIONS DATA_FREE 18 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema PARTITIONS DATA_LENGTH 15 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema PARTITIONS INDEX_LENGTH 17 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema PARTITIONS MAX_DATA_LENGTH 16 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema PARTITIONS NODEGROUP 24 NO varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12)
+def information_schema PARTITIONS PARTITION_COMMENT 23 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
+def information_schema PARTITIONS PARTITION_DESCRIPTION 12 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+def information_schema PARTITIONS PARTITION_EXPRESSION 10 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+def information_schema PARTITIONS PARTITION_METHOD 8 NULL YES varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18)
+def information_schema PARTITIONS PARTITION_NAME 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema PARTITIONS PARTITION_ORDINAL_POSITION 6 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema PARTITIONS SUBPARTITION_EXPRESSION 11 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+def information_schema PARTITIONS SUBPARTITION_METHOD 9 NULL YES varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12)
+def information_schema PARTITIONS SUBPARTITION_NAME 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema PARTITIONS SUBPARTITION_ORDINAL_POSITION 7 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema PARTITIONS TABLESPACE_NAME 25 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema PARTITIONS TABLE_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema PARTITIONS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema PARTITIONS TABLE_ROWS 13 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema PARTITIONS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema PARTITIONS UPDATE_TIME 20 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema PLUGINS PLUGIN_AUTHOR 8 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema PLUGINS PLUGIN_DESCRIPTION 9 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+def information_schema PLUGINS PLUGIN_LIBRARY 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema PLUGINS PLUGIN_LIBRARY_VERSION 7 NULL YES varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20)
+def information_schema PLUGINS PLUGIN_LICENSE 10 NULL YES varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
+def information_schema PLUGINS PLUGIN_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema PLUGINS PLUGIN_STATUS 3 NO varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10)
+def information_schema PLUGINS PLUGIN_TYPE 4 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
+def information_schema PLUGINS PLUGIN_TYPE_VERSION 5 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20)
+def information_schema PLUGINS PLUGIN_VERSION 2 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20)
+def information_schema PROCESSLIST COMMAND 5 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16)
+def information_schema PROCESSLIST DB 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema PROCESSLIST HOST 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema PROCESSLIST ID 1 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4)
+def information_schema PROCESSLIST INFO 8 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+def information_schema PROCESSLIST STATE 7 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema PROCESSLIST TIME 6 0 NO int NULL NULL 10 0 NULL NULL int(7)
+def information_schema PROCESSLIST USER 2 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16)
+def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema REFERENTIAL_CONSTRAINTS DELETE_RULE 9 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema REFERENTIAL_CONSTRAINTS MATCH_OPTION 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema REFERENTIAL_CONSTRAINTS REFERENCED_TABLE_NAME 11 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema REFERENTIAL_CONSTRAINTS TABLE_NAME 10 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG 4 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema ROUTINES CHARACTER_MAXIMUM_LENGTH 7 NULL YES int NULL NULL 10 0 NULL NULL int(21)
+def information_schema ROUTINES CHARACTER_OCTET_LENGTH 8 NULL YES int NULL NULL 10 0 NULL NULL int(21)
+def information_schema ROUTINES CHARACTER_SET_CLIENT 28 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema ROUTINES CHARACTER_SET_NAME 11 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema ROUTINES COLLATION_CONNECTION 29 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema ROUTINES COLLATION_NAME 12 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema ROUTINES CREATED 23 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema ROUTINES DATABASE_COLLATION 30 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema ROUTINES DATA_TYPE 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema ROUTINES DEFINER 27 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77)
+def information_schema ROUTINES DTD_IDENTIFIER 13 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+def information_schema ROUTINES EXTERNAL_LANGUAGE 17 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema ROUTINES EXTERNAL_NAME 16 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema ROUTINES IS_DETERMINISTIC 19 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+def information_schema ROUTINES LAST_ALTERED 24 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema ROUTINES NUMERIC_PRECISION 9 NULL YES int NULL NULL 10 0 NULL NULL int(21)
+def information_schema ROUTINES NUMERIC_SCALE 10 NULL YES int NULL NULL 10 0 NULL NULL int(21)
+def information_schema ROUTINES PARAMETER_STYLE 18 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8)
+def information_schema ROUTINES ROUTINE_BODY 14 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8)
+def information_schema ROUTINES ROUTINE_CATALOG 2 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema ROUTINES ROUTINE_COMMENT 26 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+def information_schema ROUTINES ROUTINE_DEFINITION 15 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+def information_schema ROUTINES ROUTINE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema ROUTINES ROUTINE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema ROUTINES ROUTINE_TYPE 5 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9)
+def information_schema ROUTINES SECURITY_TYPE 22 NO varchar 7 21 NULL NULL utf8 utf8_general_ci varchar(7)
+def information_schema ROUTINES SPECIFIC_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema ROUTINES SQL_DATA_ACCESS 20 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema ROUTINES SQL_MODE 25 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192)
+def information_schema ROUTINES SQL_PATH 21 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema SCHEMATA CATALOG_NAME 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME 3 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema SCHEMATA SCHEMA_NAME 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema SCHEMATA SQL_PATH 5 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema SCHEMA_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81)
+def information_schema SCHEMA_PRIVILEGES IS_GRANTABLE 5 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+def information_schema SCHEMA_PRIVILEGES PRIVILEGE_TYPE 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema SCHEMA_PRIVILEGES TABLE_CATALOG 2 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema SESSION_STATUS VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema SESSION_STATUS VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024)
+def information_schema SESSION_VARIABLES VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema SESSION_VARIABLES VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024)
+def information_schema STATISTICS CARDINALITY 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21)
+def information_schema STATISTICS COLLATION 9 NULL YES varchar 1 3 NULL NULL utf8 utf8_general_ci varchar(1)
+def information_schema STATISTICS COLUMN_NAME 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema STATISTICS COMMENT 15 NULL YES varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16)
+def information_schema STATISTICS INDEX_NAME 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema STATISTICS INDEX_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema STATISTICS INDEX_TYPE 14 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16)
+def information_schema STATISTICS NON_UNIQUE 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(1)
+def information_schema STATISTICS NULLABLE 13 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+def information_schema STATISTICS PACKED 12 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10)
+def information_schema STATISTICS SEQ_IN_INDEX 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(2)
+def information_schema STATISTICS SUB_PART 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(3)
+def information_schema STATISTICS TABLE_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema STATISTICS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema STATISTICS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TABLES AUTO_INCREMENT 14 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema TABLES AVG_ROW_LENGTH 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema TABLES CHECKSUM 19 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema TABLES CHECK_TIME 17 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema TABLES CREATE_OPTIONS 20 NULL YES varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255)
+def information_schema TABLES CREATE_TIME 15 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema TABLES DATA_FREE 13 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema TABLES DATA_LENGTH 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema TABLES ENGINE 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TABLES INDEX_LENGTH 12 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema TABLES MAX_DATA_LENGTH 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema TABLES ROW_FORMAT 7 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10)
+def information_schema TABLES TABLE_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema TABLES TABLE_COLLATION 18 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema TABLES TABLE_COMMENT 21 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
+def information_schema TABLES TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TABLES TABLE_ROWS 8 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema TABLES TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TABLES TABLE_TYPE 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TABLES UPDATE_TIME 16 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema TABLES VERSION 6 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema TABLESPACES AUTOEXTEND_SIZE 6 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema TABLESPACES ENGINE 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TABLESPACES EXTENT_SIZE 5 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema TABLESPACES LOGFILE_GROUP_NAME 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TABLESPACES MAXIMUM_SIZE 7 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema TABLESPACES NODEGROUP_ID 8 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned
+def information_schema TABLESPACES TABLESPACE_COMMENT 9 NULL YES varchar 2048 6144 NULL NULL utf8 utf8_general_ci varchar(2048)
+def information_schema TABLESPACES TABLESPACE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TABLESPACES TABLESPACE_TYPE 3 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TABLE_CONSTRAINTS CONSTRAINT_TYPE 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TABLE_CONSTRAINTS TABLE_NAME 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TABLE_CONSTRAINTS TABLE_SCHEMA 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TABLE_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81)
+def information_schema TABLE_PRIVILEGES IS_GRANTABLE 6 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+def information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TABLE_PRIVILEGES TABLE_CATALOG 2 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema TABLE_PRIVILEGES TABLE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TABLE_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TRIGGERS ACTION_CONDITION 9 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+def information_schema TRIGGERS ACTION_ORDER 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4)
+def information_schema TRIGGERS ACTION_ORIENTATION 11 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9)
+def information_schema TRIGGERS ACTION_REFERENCE_NEW_ROW 16 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+def information_schema TRIGGERS ACTION_REFERENCE_NEW_TABLE 14 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TRIGGERS ACTION_REFERENCE_OLD_ROW 15 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+def information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE 13 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TRIGGERS ACTION_STATEMENT 10 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+def information_schema TRIGGERS ACTION_TIMING 12 NO varchar 6 18 NULL NULL utf8 utf8_general_ci varchar(6)
+def information_schema TRIGGERS CHARACTER_SET_CLIENT 20 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema TRIGGERS COLLATION_CONNECTION 21 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema TRIGGERS CREATED 17 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def information_schema TRIGGERS DATABASE_COLLATION 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema TRIGGERS DEFINER 19 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77)
+def information_schema TRIGGERS EVENT_MANIPULATION 4 NO varchar 6 18 NULL NULL utf8 utf8_general_ci varchar(6)
+def information_schema TRIGGERS EVENT_OBJECT_CATALOG 5 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema TRIGGERS EVENT_OBJECT_SCHEMA 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TRIGGERS EVENT_OBJECT_TABLE 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TRIGGERS SQL_MODE 18 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192)
+def information_schema TRIGGERS TRIGGER_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema TRIGGERS TRIGGER_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema TRIGGERS TRIGGER_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema USER_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81)
+def information_schema USER_PRIVILEGES IS_GRANTABLE 4 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+def information_schema USER_PRIVILEGES PRIVILEGE_TYPE 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema USER_PRIVILEGES TABLE_CATALOG 2 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema VIEWS CHARACTER_SET_CLIENT 9 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema VIEWS CHECK_OPTION 5 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8)
+def information_schema VIEWS COLLATION_CONNECTION 10 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
+def information_schema VIEWS DEFINER 7 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77)
+def information_schema VIEWS IS_UPDATABLE 6 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+def information_schema VIEWS SECURITY_TYPE 8 NO varchar 7 21 NULL NULL utf8 utf8_general_ci varchar(7)
+def information_schema VIEWS TABLE_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def information_schema VIEWS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema VIEWS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def information_schema VIEWS VIEW_DEFINITION 4 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
##########################################################################
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
##########################################################################
@@ -310,7 +341,7 @@ CHARACTER_SET_NAME,
COLLATION_NAME
FROM information_schema.columns
WHERE table_schema = 'information_schema'
-AND table_name <> 'profiling'
+AND table_name <> 'profiling' AND table_name not like 'innodb_%'
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
@@ -322,7 +353,7 @@ CHARACTER_SET_NAME,
COLLATION_NAME
FROM information_schema.columns
WHERE table_schema = 'information_schema'
-AND table_name <> 'profiling'
+AND table_name <> 'profiling' AND table_name not like 'innodb_%'
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
@@ -334,7 +365,7 @@ CHARACTER_SET_NAME,
COLLATION_NAME
FROM information_schema.columns
WHERE table_schema = 'information_schema'
-AND table_name <> 'profiling'
+AND table_name <> 'profiling' AND table_name not like 'innodb_%'
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
@@ -355,7 +386,7 @@ COLLATION_NAME,
COLUMN_TYPE
FROM information_schema.columns
WHERE table_schema = 'information_schema'
-AND table_name <> 'profiling'
+AND table_name <> 'profiling' AND table_name not like 'innodb_%'
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE
3.0000 information_schema CHARACTER_SETS CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
@@ -480,6 +511,21 @@ NULL information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT bigint NU
3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema PARAMETERS SPECIFIC_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
+3.0000 information_schema PARAMETERS SPECIFIC_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema PARAMETERS SPECIFIC_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema PARAMETERS ORDINAL_POSITION int NULL NULL NULL NULL int(21)
+3.0000 information_schema PARAMETERS PARAMETER_MODE varchar 5 15 utf8 utf8_general_ci varchar(5)
+3.0000 information_schema PARAMETERS PARAMETER_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema PARAMETERS DATA_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema PARAMETERS CHARACTER_MAXIMUM_LENGTH int NULL NULL NULL NULL int(21)
+NULL information_schema PARAMETERS CHARACTER_OCTET_LENGTH int NULL NULL NULL NULL int(21)
+NULL information_schema PARAMETERS NUMERIC_PRECISION int NULL NULL NULL NULL int(21)
+NULL information_schema PARAMETERS NUMERIC_SCALE int NULL NULL NULL NULL int(21)
+3.0000 information_schema PARAMETERS CHARACTER_SET_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema PARAMETERS COLLATION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+1.0000 information_schema PARAMETERS DTD_IDENTIFIER longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
+3.0000 information_schema PARAMETERS ROUTINE_TYPE varchar 9 27 utf8 utf8_general_ci varchar(9)
3.0000 information_schema PARTITIONS TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
3.0000 information_schema PARTITIONS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema PARTITIONS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
@@ -487,7 +533,7 @@ NULL information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT bigint NU
3.0000 information_schema PARTITIONS SUBPARTITION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
NULL information_schema PARTITIONS PARTITION_ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(21) unsigned
NULL information_schema PARTITIONS SUBPARTITION_ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(21) unsigned
-3.0000 information_schema PARTITIONS PARTITION_METHOD varchar 12 36 utf8 utf8_general_ci varchar(12)
+3.0000 information_schema PARTITIONS PARTITION_METHOD varchar 18 54 utf8 utf8_general_ci varchar(18)
3.0000 information_schema PARTITIONS SUBPARTITION_METHOD varchar 12 36 utf8 utf8_general_ci varchar(12)
1.0000 information_schema PARTITIONS PARTITION_EXPRESSION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
1.0000 information_schema PARTITIONS SUBPARTITION_EXPRESSION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
@@ -539,7 +585,14 @@ NULL information_schema PROCESSLIST TIME int NULL NULL NULL NULL int(7)
3.0000 information_schema ROUTINES ROUTINE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema ROUTINES ROUTINE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema ROUTINES ROUTINE_TYPE varchar 9 27 utf8 utf8_general_ci varchar(9)
-3.0000 information_schema ROUTINES DTD_IDENTIFIER varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema ROUTINES DATA_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema ROUTINES CHARACTER_MAXIMUM_LENGTH int NULL NULL NULL NULL int(21)
+NULL information_schema ROUTINES CHARACTER_OCTET_LENGTH int NULL NULL NULL NULL int(21)
+NULL information_schema ROUTINES NUMERIC_PRECISION int NULL NULL NULL NULL int(21)
+NULL information_schema ROUTINES NUMERIC_SCALE int NULL NULL NULL NULL int(21)
+3.0000 information_schema ROUTINES CHARACTER_SET_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema ROUTINES COLLATION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+1.0000 information_schema ROUTINES DTD_IDENTIFIER longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
3.0000 information_schema ROUTINES ROUTINE_BODY varchar 8 24 utf8 utf8_general_ci varchar(8)
1.0000 information_schema ROUTINES ROUTINE_DEFINITION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
3.0000 information_schema ROUTINES EXTERNAL_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
@@ -552,7 +605,7 @@ NULL information_schema PROCESSLIST TIME int NULL NULL NULL NULL int(7)
NULL information_schema ROUTINES CREATED datetime NULL NULL NULL NULL datetime
NULL information_schema ROUTINES LAST_ALTERED datetime NULL NULL NULL NULL datetime
3.0000 information_schema ROUTINES SQL_MODE varchar 8192 24576 utf8 utf8_general_ci varchar(8192)
-3.0000 information_schema ROUTINES ROUTINE_COMMENT varchar 64 192 utf8 utf8_general_ci varchar(64)
+1.0000 information_schema ROUTINES ROUTINE_COMMENT longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
3.0000 information_schema ROUTINES DEFINER varchar 77 231 utf8 utf8_general_ci varchar(77)
3.0000 information_schema ROUTINES CHARACTER_SET_CLIENT varchar 32 96 utf8 utf8_general_ci varchar(32)
3.0000 information_schema ROUTINES COLLATION_CONNECTION varchar 32 96 utf8 utf8_general_ci varchar(32)
@@ -607,6 +660,15 @@ NULL information_schema TABLES CHECK_TIME datetime NULL NULL NULL NULL datetime
NULL information_schema TABLES CHECKSUM bigint NULL NULL NULL NULL bigint(21) unsigned
3.0000 information_schema TABLES CREATE_OPTIONS varchar 255 765 utf8 utf8_general_ci varchar(255)
3.0000 information_schema TABLES TABLE_COMMENT varchar 80 240 utf8 utf8_general_ci varchar(80)
+3.0000 information_schema TABLESPACES TABLESPACE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TABLESPACES ENGINE varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TABLESPACES TABLESPACE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TABLESPACES LOGFILE_GROUP_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema TABLESPACES EXTENT_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema TABLESPACES AUTOEXTEND_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema TABLESPACES MAXIMUM_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema TABLESPACES NODEGROUP_ID bigint NULL NULL NULL NULL bigint(21) unsigned
+3.0000 information_schema TABLESPACES TABLESPACE_COMMENT varchar 2048 6144 utf8 utf8_general_ci varchar(2048)
3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_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..b2a798c938c 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_memory.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_memory.result
@@ -372,317 +372,317 @@ SELECT * FROM information_schema.columns
WHERE table_schema LIKE 'test%'
ORDER BY table_schema, table_name, column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
-NULL test t1 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t1 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t1 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t1 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t1 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t1 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t10 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t10 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t10 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t10 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t10 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t10 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t11 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t11 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t11 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t11 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t11 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t11 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t2 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t2 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t2 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t2 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t2 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t2 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t3 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t3 f2 2 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t3 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t4 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t4 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t4 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t4 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t4 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t4 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t7 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t7 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t7 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t7 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t8 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t8 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t8 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t8 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t9 f1 1 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t9 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t9 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test tb1 f1 1 NULL YES char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
-NULL test tb1 f12 4 NULL YES binary 1 1 NULL NULL NULL NULL binary(1) select,insert,update,references
-NULL test tb1 f13 5 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(4) select,insert,update,references
-NULL test tb1 f14 6 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned select,insert,update,references
-NULL test tb1 f15 7 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
-NULL test tb1 f16 8 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
-NULL test tb1 f17 9 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(6) select,insert,update,references
-NULL test tb1 f18 10 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned select,insert,update,references
-NULL test tb1 f19 11 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
-NULL test tb1 f2 2 NULL YES char 1 1 NULL NULL latin1 latin1_bin char(1) select,insert,update,references
-NULL test tb1 f20 12 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
-NULL test tb1 f21 13 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(9) select,insert,update,references
-NULL test tb1 f22 14 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned select,insert,update,references
-NULL test tb1 f23 15 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
-NULL test tb1 f24 16 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
-NULL test tb1 f25 17 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test tb1 f26 18 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
-NULL test tb1 f27 19 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
-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 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
-NULL test tb1 f36 28 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f37 29 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb1 f38 30 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
-NULL test tb1 f39 31 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb1 f40 32 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
-NULL test tb1 f41 33 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f42 34 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f43 35 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f44 36 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f45 37 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb1 f46 38 9.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
-NULL test tb1 f47 39 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb1 f48 40 9.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
-NULL test tb1 f49 41 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f50 42 000000000000000000000000000000009.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb1 f51 43 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f52 44 000000000000000000000000000000009.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb1 f53 45 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb1 f54 46 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb1 f55 47 0000000099 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f56 48 0000000099 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f57 49 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb1 f58 50 99 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
-NULL test tb2 f100 42 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
-NULL test tb2 f103 45 0002-02-02 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
-NULL test tb2 f104 46 2000-12-31 23:59:59 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
-NULL test tb2 f105 47 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test tb2 f106 48 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test tb2 f107 49 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test tb2 f108 50 1enum NO enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
-NULL test tb2 f109 51 1set NO set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
-NULL test tb2 f59 1 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb2 f60 2 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
-NULL test tb2 f61 3 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb2 f62 4 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb2 f63 5 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb2 f64 6 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb2 f65 7 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb2 f66 8 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
-NULL test tb2 f67 9 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb2 f68 10 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
-NULL test tb2 f69 11 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb2 f70 12 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb2 f71 13 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb2 f72 14 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb2 f73 15 NULL YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test tb2 f74 16 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test tb2 f75 17 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb2 f76 18 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb2 f77 19 7.7 YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test tb2 f78 20 7.7 YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test tb2 f79 21 00000000000000000007.7 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb2 f80 22 00000000000000000008.8 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb2 f81 23 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb2 f82 24 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb2 f83 25 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f84 26 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f85 27 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb2 f86 28 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb2 f87 29 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb2 f88 30 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb2 f89 31 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f90 32 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f91 33 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f92 34 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f93 35 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb2 f94 36 8.8 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test tb2 f95 37 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb2 f96 38 8.8 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test tb2 f97 39 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f98 40 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb2 f99 41 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb3 f118 1 a NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
-NULL test tb3 f119 2  NO char 1 1 NULL NULL latin1 latin1_bin char(1) select,insert,update,references
-NULL test tb3 f120 3  NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
-NULL test tb3 f121 4 NULL YES char 50 50 NULL NULL latin1 latin1_swedish_ci char(50) select,insert,update,references
-NULL test tb3 f122 5 NULL YES char 50 50 NULL NULL latin1 latin1_swedish_ci char(50) select,insert,update,references
-NULL test tb3 f129 6  NO binary 1 1 NULL NULL NULL NULL binary(1) select,insert,update,references
-NULL test tb3 f130 7 99 NO tinyint NULL NULL 3 0 NULL NULL tinyint(4) select,insert,update,references
-NULL test tb3 f131 8 99 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned select,insert,update,references
-NULL test tb3 f132 9 099 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
-NULL test tb3 f133 10 099 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
-NULL test tb3 f134 11 999 NO smallint NULL NULL 5 0 NULL NULL smallint(6) select,insert,update,references
-NULL test tb3 f135 12 999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned select,insert,update,references
-NULL test tb3 f136 13 00999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
-NULL test tb3 f137 14 00999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
-NULL test tb3 f138 15 9999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(9) select,insert,update,references
-NULL test tb3 f139 16 9999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned select,insert,update,references
-NULL test tb3 f140 17 00009999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
-NULL test tb3 f141 18 00009999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
-NULL test tb3 f142 19 99999 NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test tb3 f143 20 99999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
-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 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
-NULL test tb3 f153 30 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f154 31 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb3 f155 32 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
-NULL test tb3 f156 33 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb3 f157 34 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
-NULL test tb3 f158 35 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f159 36 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f160 37 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f161 38 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f162 39 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb3 f163 40 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
-NULL test tb3 f164 41 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb3 f165 42 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
-NULL test tb3 f166 43 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f167 44 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb3 f168 45 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f169 46 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb3 f170 47 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb3 f171 48 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb3 f172 49 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f173 50 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f174 51 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb3 f175 52 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
-NULL test tb4 f176 1 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb4 f177 2 9 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
-NULL test tb4 f178 3 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb4 f179 4 0000000000000000000000000000000000000000000000000000000000000009 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb4 f180 5 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb4 f181 6 0000000000000000000000000000000000000000000000000000000000000009 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb4 f182 7 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb4 f183 8 9.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
-NULL test tb4 f184 9 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb4 f185 10 9.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
-NULL test tb4 f186 11 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb4 f187 12 000000000000000000000000000000009.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb4 f188 13 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb4 f189 14 000000000000000000000000000000009.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb4 f190 15 88.8 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test tb4 f191 16 88.8 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test tb4 f192 17 00000000000000000088.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb4 f193 18 00000000000000000088.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb4 f194 19 55.5 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test tb4 f195 20 55.5 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test tb4 f196 21 00000000000000000055.5 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb4 f197 22 00000000000000000055.5 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb4 f198 23 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb4 f199 24 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb4 f200 25 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f201 26 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f202 27 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb4 f203 28 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb4 f204 29 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb4 f205 30 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb4 f206 31 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f207 32 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f208 33 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f209 34 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f210 35 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb4 f211 36 NULL YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test tb4 f212 37 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb4 f213 38 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test tb4 f214 39 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f215 40 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb4 f216 41 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f217 42 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb4 f218 43 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test tb4 f219 44 NULL YES time NULL NULL NULL NULL NULL NULL time select,insert,update,references
-NULL test tb4 f220 45 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
-NULL test tb4 f221 46 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
-NULL test tb4 f222 47 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test tb4 f223 48 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test tb4 f224 49 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test tb4 f225 50 NULL YES enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
-NULL test tb4 f226 51 NULL YES set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
-NULL test tb4 f236 52 NULL YES char 95 95 NULL NULL latin1 latin1_swedish_ci char(95) select,insert,update,references
-NULL test tb4 f237 54 NULL YES char 130 130 NULL NULL latin1 latin1_bin char(130) select,insert,update,references
-NULL test tb4 f238 55 NULL YES varchar 25000 25000 NULL NULL latin1 latin1_bin varchar(25000) select,insert,update,references
-NULL test tb4 f239 56 NULL YES varbinary 0 0 NULL NULL NULL NULL varbinary(0) select,insert,update,references
-NULL test tb4 f240 57 NULL YES varchar 1200 1200 NULL NULL latin1 latin1_swedish_ci varchar(1200) select,insert,update,references
-NULL test tb4 f241 53 NULL YES char 255 255 NULL NULL latin1 latin1_swedish_ci char(255) select,insert,update,references
-NULL test1 tb2 f100 42 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test1 tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test1 tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
-NULL test1 tb2 f103 45 0002-02-02 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
-NULL test1 tb2 f104 46 2000-12-31 23:59:59 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
-NULL test1 tb2 f105 47 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test1 tb2 f106 48 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test1 tb2 f107 49 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test1 tb2 f108 50 1enum NO enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
-NULL test1 tb2 f109 51 1set NO set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
-NULL test1 tb2 f59 1 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test1 tb2 f60 2 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
-NULL test1 tb2 f61 3 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f62 4 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f63 5 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f64 6 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f65 7 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test1 tb2 f66 8 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
-NULL test1 tb2 f67 9 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test1 tb2 f68 10 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
-NULL test1 tb2 f69 11 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f70 12 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f71 13 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f72 14 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f73 15 NULL YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test1 tb2 f74 16 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test1 tb2 f75 17 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test1 tb2 f76 18 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test1 tb2 f77 19 7.7 YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test1 tb2 f78 20 7.7 YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test1 tb2 f79 21 00000000000000000007.7 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test1 tb2 f80 22 00000000000000000008.8 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test1 tb2 f81 23 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test1 tb2 f82 24 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test1 tb2 f83 25 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f84 26 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f85 27 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test1 tb2 f86 28 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test1 tb2 f87 29 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test1 tb2 f88 30 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test1 tb2 f89 31 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f90 32 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f91 33 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f92 34 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f93 35 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test1 tb2 f94 36 8.8 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test1 tb2 f95 37 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test1 tb2 f96 38 8.8 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test1 tb2 f97 39 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f98 40 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test1 tb2 f99 41 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test4 t6 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test4 t6 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test4 t6 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test4 t6 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test4 t6 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test4 t6 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t1 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t1 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t1 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t1 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t1 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t1 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t10 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t10 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t10 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t10 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t10 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t10 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t11 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t11 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t11 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t11 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t11 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t11 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t2 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t2 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t2 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t2 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t2 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t2 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t3 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t3 f2 2 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t3 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t4 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t4 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t4 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t4 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t4 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t4 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t7 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t7 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t7 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t7 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t8 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t8 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t8 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t8 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t9 f1 1 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t9 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t9 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test tb1 f1 1 NULL YES char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
+def test tb1 f12 4 NULL YES binary 1 1 NULL NULL NULL NULL binary(1) select,insert,update,references
+def test tb1 f13 5 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(4) select,insert,update,references
+def test tb1 f14 6 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned select,insert,update,references
+def test tb1 f15 7 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
+def test tb1 f16 8 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
+def test tb1 f17 9 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(6) select,insert,update,references
+def test tb1 f18 10 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned select,insert,update,references
+def test tb1 f19 11 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
+def test tb1 f2 2 NULL YES char 1 1 NULL NULL latin1 latin1_bin char(1) select,insert,update,references
+def test tb1 f20 12 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
+def test tb1 f21 13 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(9) select,insert,update,references
+def test tb1 f22 14 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned select,insert,update,references
+def test tb1 f23 15 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
+def test tb1 f24 16 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
+def test tb1 f25 17 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test tb1 f26 18 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
+def test tb1 f27 19 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
+def test tb1 f28 20 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
+def test tb1 f29 21 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) select,insert,update,references
+def test tb1 f3 3 NULL YES char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
+def test tb1 f30 22 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
+def test tb1 f31 23 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+def test tb1 f32 24 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+def test tb1 f33 25 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb1 f34 26 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb1 f35 27 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f36 28 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f37 29 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb1 f38 30 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
+def test tb1 f39 31 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb1 f40 32 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
+def test tb1 f41 33 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f42 34 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb1 f43 35 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f44 36 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb1 f45 37 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb1 f46 38 9.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
+def test tb1 f47 39 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb1 f48 40 9.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
+def test tb1 f49 41 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f50 42 000000000000000000000000000000009.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb1 f51 43 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f52 44 000000000000000000000000000000009.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb1 f53 45 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb1 f54 46 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb1 f55 47 0000000099 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f56 48 0000000099 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f57 49 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb1 f58 50 99 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
+def test tb2 f100 42 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
+def test tb2 f103 45 0002-02-02 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
+def test tb2 f104 46 2000-12-31 23:59:59 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
+def test tb2 f105 47 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test tb2 f106 48 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test tb2 f107 49 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test tb2 f108 50 1enum NO enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
+def test tb2 f109 51 1set NO set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
+def test tb2 f59 1 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb2 f60 2 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
+def test tb2 f61 3 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb2 f62 4 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb2 f63 5 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb2 f64 6 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb2 f65 7 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb2 f66 8 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
+def test tb2 f67 9 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb2 f68 10 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
+def test tb2 f69 11 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb2 f70 12 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb2 f71 13 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb2 f72 14 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb2 f73 15 NULL YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test tb2 f74 16 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test tb2 f75 17 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb2 f76 18 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb2 f77 19 7.7 YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test tb2 f78 20 7.7 YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test tb2 f79 21 00000000000000000007.7 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb2 f80 22 00000000000000000008.8 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb2 f81 23 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb2 f82 24 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb2 f83 25 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f84 26 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f85 27 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb2 f86 28 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb2 f87 29 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb2 f88 30 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb2 f89 31 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f90 32 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f91 33 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f92 34 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f93 35 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb2 f94 36 8.8 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test tb2 f95 37 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb2 f96 38 8.8 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test tb2 f97 39 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f98 40 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb2 f99 41 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb3 f118 1 a NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
+def test tb3 f119 2  NO char 1 1 NULL NULL latin1 latin1_bin char(1) select,insert,update,references
+def test tb3 f120 3  NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
+def test tb3 f121 4 NULL YES char 50 50 NULL NULL latin1 latin1_swedish_ci char(50) select,insert,update,references
+def test tb3 f122 5 NULL YES char 50 50 NULL NULL latin1 latin1_swedish_ci char(50) select,insert,update,references
+def test tb3 f129 6  NO binary 1 1 NULL NULL NULL NULL binary(1) select,insert,update,references
+def test tb3 f130 7 99 NO tinyint NULL NULL 3 0 NULL NULL tinyint(4) select,insert,update,references
+def test tb3 f131 8 99 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned select,insert,update,references
+def test tb3 f132 9 099 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
+def test tb3 f133 10 099 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
+def test tb3 f134 11 999 NO smallint NULL NULL 5 0 NULL NULL smallint(6) select,insert,update,references
+def test tb3 f135 12 999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned select,insert,update,references
+def test tb3 f136 13 00999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
+def test tb3 f137 14 00999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
+def test tb3 f138 15 9999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(9) select,insert,update,references
+def test tb3 f139 16 9999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned select,insert,update,references
+def test tb3 f140 17 00009999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
+def test tb3 f141 18 00009999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
+def test tb3 f142 19 99999 NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test tb3 f143 20 99999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
+def test tb3 f144 21 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
+def test tb3 f145 22 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
+def test tb3 f146 23 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) select,insert,update,references
+def test tb3 f147 24 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
+def test tb3 f148 25 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+def test tb3 f149 26 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+def test tb3 f150 27 1000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb3 f151 28 999 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb3 f152 29 0000001000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f153 30 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f154 31 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb3 f155 32 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
+def test tb3 f156 33 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb3 f157 34 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
+def test tb3 f158 35 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f159 36 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb3 f160 37 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f161 38 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb3 f162 39 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb3 f163 40 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
+def test tb3 f164 41 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb3 f165 42 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
+def test tb3 f166 43 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f167 44 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb3 f168 45 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f169 46 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb3 f170 47 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb3 f171 48 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb3 f172 49 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f173 50 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f174 51 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb3 f175 52 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
+def test tb4 f176 1 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb4 f177 2 9 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
+def test tb4 f178 3 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb4 f179 4 0000000000000000000000000000000000000000000000000000000000000009 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb4 f180 5 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb4 f181 6 0000000000000000000000000000000000000000000000000000000000000009 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb4 f182 7 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb4 f183 8 9.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
+def test tb4 f184 9 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb4 f185 10 9.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
+def test tb4 f186 11 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb4 f187 12 000000000000000000000000000000009.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb4 f188 13 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb4 f189 14 000000000000000000000000000000009.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb4 f190 15 88.8 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test tb4 f191 16 88.8 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test tb4 f192 17 00000000000000000088.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb4 f193 18 00000000000000000088.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb4 f194 19 55.5 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test tb4 f195 20 55.5 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test tb4 f196 21 00000000000000000055.5 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb4 f197 22 00000000000000000055.5 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb4 f198 23 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb4 f199 24 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb4 f200 25 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f201 26 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f202 27 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb4 f203 28 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb4 f204 29 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb4 f205 30 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb4 f206 31 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f207 32 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f208 33 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f209 34 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f210 35 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb4 f211 36 NULL YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test tb4 f212 37 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb4 f213 38 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test tb4 f214 39 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f215 40 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb4 f216 41 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f217 42 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb4 f218 43 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test tb4 f219 44 NULL YES time NULL NULL NULL NULL NULL NULL time select,insert,update,references
+def test tb4 f220 45 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
+def test tb4 f221 46 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
+def test tb4 f222 47 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test tb4 f223 48 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test tb4 f224 49 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test tb4 f225 50 NULL YES enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
+def test tb4 f226 51 NULL YES set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
+def test tb4 f236 52 NULL YES char 95 95 NULL NULL latin1 latin1_swedish_ci char(95) select,insert,update,references
+def test tb4 f237 54 NULL YES char 130 130 NULL NULL latin1 latin1_bin char(130) select,insert,update,references
+def test tb4 f238 55 NULL YES varchar 25000 25000 NULL NULL latin1 latin1_bin varchar(25000) select,insert,update,references
+def test tb4 f239 56 NULL YES varbinary 0 0 NULL NULL NULL NULL varbinary(0) select,insert,update,references
+def test tb4 f240 57 NULL YES varchar 1200 1200 NULL NULL latin1 latin1_swedish_ci varchar(1200) select,insert,update,references
+def test tb4 f241 53 NULL YES char 255 255 NULL NULL latin1 latin1_swedish_ci char(255) select,insert,update,references
+def test1 tb2 f100 42 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test1 tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test1 tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
+def test1 tb2 f103 45 0002-02-02 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
+def test1 tb2 f104 46 2000-12-31 23:59:59 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
+def test1 tb2 f105 47 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test1 tb2 f106 48 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test1 tb2 f107 49 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test1 tb2 f108 50 1enum NO enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
+def test1 tb2 f109 51 1set NO set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
+def test1 tb2 f59 1 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test1 tb2 f60 2 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
+def test1 tb2 f61 3 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test1 tb2 f62 4 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test1 tb2 f63 5 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test1 tb2 f64 6 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test1 tb2 f65 7 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test1 tb2 f66 8 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
+def test1 tb2 f67 9 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test1 tb2 f68 10 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
+def test1 tb2 f69 11 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test1 tb2 f70 12 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test1 tb2 f71 13 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test1 tb2 f72 14 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test1 tb2 f73 15 NULL YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test1 tb2 f74 16 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test1 tb2 f75 17 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test1 tb2 f76 18 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test1 tb2 f77 19 7.7 YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test1 tb2 f78 20 7.7 YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test1 tb2 f79 21 00000000000000000007.7 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test1 tb2 f80 22 00000000000000000008.8 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test1 tb2 f81 23 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test1 tb2 f82 24 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test1 tb2 f83 25 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f84 26 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f85 27 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test1 tb2 f86 28 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test1 tb2 f87 29 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test1 tb2 f88 30 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test1 tb2 f89 31 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f90 32 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f91 33 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f92 34 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f93 35 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test1 tb2 f94 36 8.8 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test1 tb2 f95 37 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test1 tb2 f96 38 8.8 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test1 tb2 f97 39 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f98 40 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test1 tb2 f99 41 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test4 t6 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test4 t6 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test4 t6 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test4 t6 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test4 t6 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test4 t6 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
##########################################################################
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
##########################################################################
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..b7c972c7238 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_myisam.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_myisam.result
@@ -412,357 +412,357 @@ SELECT * FROM information_schema.columns
WHERE table_schema LIKE 'test%'
ORDER BY table_schema, table_name, column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
-NULL test t1 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t1 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t1 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t1 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t1 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t1 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t10 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t10 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t10 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t10 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t10 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t10 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t11 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t11 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t11 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t11 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t11 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t11 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t2 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t2 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t2 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t2 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t2 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t2 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t3 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t3 f2 2 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t3 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t4 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t4 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t4 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t4 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t4 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t4 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t7 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t7 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t7 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t7 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t8 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t8 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t8 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t8 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t9 f1 1 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t9 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t9 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test tb1 f1 1 NULL YES char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
-NULL test tb1 f10 10 NULL YES mediumblob 16777215 16777215 NULL NULL NULL NULL mediumblob select,insert,update,references
-NULL test tb1 f11 11 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
-NULL test tb1 f12 12 NULL YES binary 1 1 NULL NULL NULL NULL binary(1) select,insert,update,references
-NULL test tb1 f13 13 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(4) select,insert,update,references
-NULL test tb1 f14 14 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned select,insert,update,references
-NULL test tb1 f15 15 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
-NULL test tb1 f16 16 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
-NULL test tb1 f17 17 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(6) select,insert,update,references
-NULL test tb1 f18 18 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned select,insert,update,references
-NULL test tb1 f19 19 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
-NULL test tb1 f2 2 NULL YES char 1 1 NULL NULL latin1 latin1_bin char(1) select,insert,update,references
-NULL test tb1 f20 20 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
-NULL test tb1 f21 21 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(9) select,insert,update,references
-NULL test tb1 f22 22 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned select,insert,update,references
-NULL test tb1 f23 23 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
-NULL test tb1 f24 24 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
-NULL test tb1 f25 25 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test tb1 f26 26 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
-NULL test tb1 f27 27 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
-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 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
-NULL test tb1 f36 36 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f37 37 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb1 f38 38 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
-NULL test tb1 f39 39 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb1 f4 4 NULL YES tinytext 255 255 NULL NULL latin1 latin1_swedish_ci tinytext select,insert,update,references
-NULL test tb1 f40 40 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
-NULL test tb1 f41 41 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f42 42 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f43 43 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f44 44 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f45 45 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb1 f46 46 9.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
-NULL test tb1 f47 47 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb1 f48 48 9.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
-NULL test tb1 f49 49 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f5 5 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text select,insert,update,references
-NULL test tb1 f50 50 000000000000000000000000000000009.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb1 f51 51 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f52 52 000000000000000000000000000000009.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb1 f53 53 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb1 f54 54 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb1 f55 55 0000000099 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f56 56 0000000099 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb1 f57 57 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb1 f58 58 99 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
-NULL test tb1 f6 6 NULL YES mediumtext 16777215 16777215 NULL NULL latin1 latin1_swedish_ci mediumtext select,insert,update,references
-NULL test tb1 f7 7 NULL YES longtext 4294967295 4294967295 NULL NULL latin1 latin1_swedish_ci longtext select,insert,update,references
-NULL test tb1 f8 8 NULL YES tinyblob 255 255 NULL NULL NULL NULL tinyblob select,insert,update,references
-NULL test tb1 f9 9 NULL YES blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
-NULL test tb2 f100 42 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
-NULL test tb2 f103 45 0002-02-02 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
-NULL test tb2 f104 46 2000-12-31 23:59:59 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
-NULL test tb2 f105 47 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test tb2 f106 48 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test tb2 f107 49 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test tb2 f108 50 1enum NO enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
-NULL test tb2 f109 51 1set NO set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
-NULL test tb2 f110 52 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64) select,insert,update,references
-NULL test tb2 f111 53 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27) select,insert,update,references
-NULL test tb2 f112 54 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64) select,insert,update,references
-NULL test tb2 f113 55 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192) select,insert,update,references
-NULL test tb2 f114 56 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192) select,insert,update,references
-NULL test tb2 f115 57 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27) select,insert,update,references
-NULL test tb2 f116 58 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64) select,insert,update,references
-NULL test tb2 f117 59 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192) select,insert,update,references
-NULL test tb2 f59 1 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb2 f60 2 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
-NULL test tb2 f61 3 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb2 f62 4 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb2 f63 5 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb2 f64 6 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb2 f65 7 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb2 f66 8 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
-NULL test tb2 f67 9 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb2 f68 10 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
-NULL test tb2 f69 11 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb2 f70 12 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb2 f71 13 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb2 f72 14 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb2 f73 15 NULL YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test tb2 f74 16 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test tb2 f75 17 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb2 f76 18 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb2 f77 19 7.7 YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test tb2 f78 20 7.7 YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test tb2 f79 21 00000000000000000007.7 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb2 f80 22 00000000000000000008.8 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb2 f81 23 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb2 f82 24 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb2 f83 25 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f84 26 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f85 27 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb2 f86 28 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb2 f87 29 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb2 f88 30 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb2 f89 31 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f90 32 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f91 33 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f92 34 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f93 35 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb2 f94 36 8.8 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test tb2 f95 37 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb2 f96 38 8.8 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test tb2 f97 39 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb2 f98 40 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb2 f99 41 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb3 f118 1 a NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
-NULL test tb3 f119 2  NO char 1 1 NULL NULL latin1 latin1_bin char(1) select,insert,update,references
-NULL test tb3 f120 3  NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
-NULL test tb3 f121 4 NULL YES tinytext 255 255 NULL NULL latin1 latin1_swedish_ci tinytext select,insert,update,references
-NULL test tb3 f122 5 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text select,insert,update,references
-NULL test tb3 f123 6 NULL YES mediumtext 16777215 16777215 NULL NULL latin1 latin1_swedish_ci mediumtext select,insert,update,references
-NULL test tb3 f124 7 NULL YES longtext 4294967295 4294967295 NULL NULL latin1 latin1_swedish_ci longtext select,insert,update,references
-NULL test tb3 f125 8 NULL YES tinyblob 255 255 NULL NULL NULL NULL tinyblob select,insert,update,references
-NULL test tb3 f126 9 NULL YES blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
-NULL test tb3 f127 10 NULL YES mediumblob 16777215 16777215 NULL NULL NULL NULL mediumblob select,insert,update,references
-NULL test tb3 f128 11 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
-NULL test tb3 f129 12  NO binary 1 1 NULL NULL NULL NULL binary(1) select,insert,update,references
-NULL test tb3 f130 13 99 NO tinyint NULL NULL 3 0 NULL NULL tinyint(4) select,insert,update,references
-NULL test tb3 f131 14 99 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned select,insert,update,references
-NULL test tb3 f132 15 099 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
-NULL test tb3 f133 16 099 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
-NULL test tb3 f134 17 999 NO smallint NULL NULL 5 0 NULL NULL smallint(6) select,insert,update,references
-NULL test tb3 f135 18 999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned select,insert,update,references
-NULL test tb3 f136 19 00999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
-NULL test tb3 f137 20 00999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
-NULL test tb3 f138 21 9999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(9) select,insert,update,references
-NULL test tb3 f139 22 9999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned select,insert,update,references
-NULL test tb3 f140 23 00009999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
-NULL test tb3 f141 24 00009999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
-NULL test tb3 f142 25 99999 NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test tb3 f143 26 99999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
-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 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
-NULL test tb3 f153 36 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f154 37 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb3 f155 38 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
-NULL test tb3 f156 39 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb3 f157 40 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
-NULL test tb3 f158 41 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f159 42 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f160 43 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f161 44 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f162 45 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb3 f163 46 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
-NULL test tb3 f164 47 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb3 f165 48 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
-NULL test tb3 f166 49 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f167 50 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb3 f168 51 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f169 52 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb3 f170 53 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb3 f171 54 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb3 f172 55 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f173 56 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb3 f174 57 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb3 f175 58 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
-NULL test tb4 f176 1 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb4 f177 2 9 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
-NULL test tb4 f178 3 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb4 f179 4 0000000000000000000000000000000000000000000000000000000000000009 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb4 f180 5 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb4 f181 6 0000000000000000000000000000000000000000000000000000000000000009 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test tb4 f182 7 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test tb4 f183 8 9.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
-NULL test tb4 f184 9 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb4 f185 10 9.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
-NULL test tb4 f186 11 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb4 f187 12 000000000000000000000000000000009.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb4 f188 13 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test tb4 f189 14 000000000000000000000000000000009.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test tb4 f190 15 88.8 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test tb4 f191 16 88.8 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test tb4 f192 17 00000000000000000088.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb4 f193 18 00000000000000000088.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb4 f194 19 55.5 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test tb4 f195 20 55.5 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test tb4 f196 21 00000000000000000055.5 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb4 f197 22 00000000000000000055.5 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb4 f198 23 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb4 f199 24 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb4 f200 25 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f201 26 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f202 27 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb4 f203 28 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb4 f204 29 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb4 f205 30 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb4 f206 31 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f207 32 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f208 33 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f209 34 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f210 35 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test tb4 f211 36 NULL YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test tb4 f212 37 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test tb4 f213 38 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test tb4 f214 39 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f215 40 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb4 f216 41 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test tb4 f217 42 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test tb4 f218 43 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test tb4 f219 44 NULL YES time NULL NULL NULL NULL NULL NULL time select,insert,update,references
-NULL test tb4 f220 45 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
-NULL test tb4 f221 46 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
-NULL test tb4 f222 47 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test tb4 f223 48 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test tb4 f224 49 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test tb4 f225 50 NULL YES enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
-NULL test tb4 f226 51 NULL YES set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
-NULL test tb4 f227 52 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64) select,insert,update,references
-NULL test tb4 f228 53 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27) select,insert,update,references
-NULL test tb4 f229 54 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64) select,insert,update,references
-NULL test tb4 f230 55 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192) select,insert,update,references
-NULL test tb4 f231 56 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192) select,insert,update,references
-NULL test tb4 f232 57 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27) select,insert,update,references
-NULL test tb4 f233 58 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64) select,insert,update,references
-NULL test tb4 f234 59 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192) select,insert,update,references
-NULL test tb4 f235 60 NULL YES char 255 255 NULL NULL latin1 latin1_swedish_ci char(255) select,insert,update,references
-NULL test tb4 f236 61 NULL YES char 60 60 NULL NULL latin1 latin1_swedish_ci char(60) select,insert,update,references
-NULL test tb4 f237 62 NULL YES char 255 255 NULL NULL latin1 latin1_bin char(255) select,insert,update,references
-NULL test tb4 f238 63 NULL YES varchar 0 0 NULL NULL latin1 latin1_bin varchar(0) select,insert,update,references
-NULL test tb4 f239 64 NULL YES varbinary 1000 1000 NULL NULL NULL NULL varbinary(1000) select,insert,update,references
-NULL test tb4 f240 65 NULL YES varchar 120 120 NULL NULL latin1 latin1_swedish_ci varchar(120) select,insert,update,references
-NULL test tb4 f241 66 NULL YES char 100 100 NULL NULL latin1 latin1_swedish_ci char(100) select,insert,update,references
-NULL test tb4 f242 67 NULL YES bit NULL NULL 30 NULL NULL NULL bit(30) select,insert,update,references
-NULL test1 tb2 f100 42 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test1 tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test1 tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
-NULL test1 tb2 f103 45 0002-02-02 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
-NULL test1 tb2 f104 46 2000-12-31 23:59:59 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
-NULL test1 tb2 f105 47 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test1 tb2 f106 48 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test1 tb2 f107 49 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
-NULL test1 tb2 f108 50 1enum NO enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
-NULL test1 tb2 f109 51 1set NO set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
-NULL test1 tb2 f110 52 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64) select,insert,update,references
-NULL test1 tb2 f111 53 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27) select,insert,update,references
-NULL test1 tb2 f112 54 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64) select,insert,update,references
-NULL test1 tb2 f113 55 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192) select,insert,update,references
-NULL test1 tb2 f114 56 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192) select,insert,update,references
-NULL test1 tb2 f115 57 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27) select,insert,update,references
-NULL test1 tb2 f116 58 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64) select,insert,update,references
-NULL test1 tb2 f117 59 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192) select,insert,update,references
-NULL test1 tb2 f59 1 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test1 tb2 f60 2 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
-NULL test1 tb2 f61 3 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f62 4 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f63 5 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f64 6 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f65 7 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
-NULL test1 tb2 f66 8 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
-NULL test1 tb2 f67 9 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test1 tb2 f68 10 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
-NULL test1 tb2 f69 11 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f70 12 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f71 13 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f72 14 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
-NULL test1 tb2 f73 15 NULL YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test1 tb2 f74 16 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test1 tb2 f75 17 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test1 tb2 f76 18 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test1 tb2 f77 19 7.7 YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test1 tb2 f78 20 7.7 YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test1 tb2 f79 21 00000000000000000007.7 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test1 tb2 f80 22 00000000000000000008.8 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test1 tb2 f81 23 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test1 tb2 f82 24 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test1 tb2 f83 25 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f84 26 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f85 27 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test1 tb2 f86 28 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test1 tb2 f87 29 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test1 tb2 f88 30 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test1 tb2 f89 31 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f90 32 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f91 33 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f92 34 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f93 35 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
-NULL test1 tb2 f94 36 8.8 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
-NULL test1 tb2 f95 37 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
-NULL test1 tb2 f96 38 8.8 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
-NULL test1 tb2 f97 39 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test1 tb2 f98 40 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
-NULL test1 tb2 f99 41 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
-NULL test4 t6 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test4 t6 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test4 t6 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test4 t6 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test4 t6 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test4 t6 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t1 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t1 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t1 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t1 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t1 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t1 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t10 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t10 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t10 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t10 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t10 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t10 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t11 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t11 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t11 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t11 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t11 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t11 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t2 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t2 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t2 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t2 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t2 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t2 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t3 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t3 f2 2 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t3 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t4 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t4 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t4 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t4 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t4 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t4 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t7 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t7 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t7 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t7 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t8 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t8 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t8 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t8 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t9 f1 1 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t9 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t9 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test tb1 f1 1 NULL YES char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
+def test tb1 f10 10 NULL YES mediumblob 16777215 16777215 NULL NULL NULL NULL mediumblob select,insert,update,references
+def test tb1 f11 11 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
+def test tb1 f12 12 NULL YES binary 1 1 NULL NULL NULL NULL binary(1) select,insert,update,references
+def test tb1 f13 13 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(4) select,insert,update,references
+def test tb1 f14 14 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned select,insert,update,references
+def test tb1 f15 15 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
+def test tb1 f16 16 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
+def test tb1 f17 17 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(6) select,insert,update,references
+def test tb1 f18 18 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned select,insert,update,references
+def test tb1 f19 19 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
+def test tb1 f2 2 NULL YES char 1 1 NULL NULL latin1 latin1_bin char(1) select,insert,update,references
+def test tb1 f20 20 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
+def test tb1 f21 21 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(9) select,insert,update,references
+def test tb1 f22 22 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned select,insert,update,references
+def test tb1 f23 23 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
+def test tb1 f24 24 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
+def test tb1 f25 25 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test tb1 f26 26 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
+def test tb1 f27 27 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
+def test tb1 f28 28 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
+def test tb1 f29 29 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) select,insert,update,references
+def test tb1 f3 3 NULL YES char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
+def test tb1 f30 30 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
+def test tb1 f31 31 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+def test tb1 f32 32 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+def test tb1 f33 33 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb1 f34 34 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb1 f35 35 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f36 36 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f37 37 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb1 f38 38 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
+def test tb1 f39 39 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb1 f4 4 NULL YES tinytext 255 255 NULL NULL latin1 latin1_swedish_ci tinytext select,insert,update,references
+def test tb1 f40 40 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
+def test tb1 f41 41 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f42 42 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb1 f43 43 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f44 44 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb1 f45 45 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb1 f46 46 9.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
+def test tb1 f47 47 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb1 f48 48 9.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
+def test tb1 f49 49 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f5 5 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text select,insert,update,references
+def test tb1 f50 50 000000000000000000000000000000009.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb1 f51 51 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f52 52 000000000000000000000000000000009.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb1 f53 53 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb1 f54 54 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb1 f55 55 0000000099 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f56 56 0000000099 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb1 f57 57 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb1 f58 58 99 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
+def test tb1 f6 6 NULL YES mediumtext 16777215 16777215 NULL NULL latin1 latin1_swedish_ci mediumtext select,insert,update,references
+def test tb1 f7 7 NULL YES longtext 4294967295 4294967295 NULL NULL latin1 latin1_swedish_ci longtext select,insert,update,references
+def test tb1 f8 8 NULL YES tinyblob 255 255 NULL NULL NULL NULL tinyblob select,insert,update,references
+def test tb1 f9 9 NULL YES blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
+def test tb2 f100 42 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
+def test tb2 f103 45 0002-02-02 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
+def test tb2 f104 46 2000-12-31 23:59:59 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
+def test tb2 f105 47 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test tb2 f106 48 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test tb2 f107 49 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test tb2 f108 50 1enum NO enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
+def test tb2 f109 51 1set NO set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
+def test tb2 f110 52 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64) select,insert,update,references
+def test tb2 f111 53 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27) select,insert,update,references
+def test tb2 f112 54 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64) select,insert,update,references
+def test tb2 f113 55 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192) select,insert,update,references
+def test tb2 f114 56 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192) select,insert,update,references
+def test tb2 f115 57 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27) select,insert,update,references
+def test tb2 f116 58 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64) select,insert,update,references
+def test tb2 f117 59 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192) select,insert,update,references
+def test tb2 f59 1 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb2 f60 2 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
+def test tb2 f61 3 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb2 f62 4 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb2 f63 5 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb2 f64 6 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb2 f65 7 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb2 f66 8 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
+def test tb2 f67 9 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb2 f68 10 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
+def test tb2 f69 11 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb2 f70 12 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb2 f71 13 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb2 f72 14 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb2 f73 15 NULL YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test tb2 f74 16 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test tb2 f75 17 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb2 f76 18 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb2 f77 19 7.7 YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test tb2 f78 20 7.7 YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test tb2 f79 21 00000000000000000007.7 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb2 f80 22 00000000000000000008.8 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb2 f81 23 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb2 f82 24 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb2 f83 25 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f84 26 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f85 27 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb2 f86 28 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb2 f87 29 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb2 f88 30 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb2 f89 31 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f90 32 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f91 33 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f92 34 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f93 35 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb2 f94 36 8.8 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test tb2 f95 37 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb2 f96 38 8.8 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test tb2 f97 39 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb2 f98 40 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb2 f99 41 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb3 f118 1 a NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
+def test tb3 f119 2  NO char 1 1 NULL NULL latin1 latin1_bin char(1) select,insert,update,references
+def test tb3 f120 3  NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
+def test tb3 f121 4 NULL YES tinytext 255 255 NULL NULL latin1 latin1_swedish_ci tinytext select,insert,update,references
+def test tb3 f122 5 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text select,insert,update,references
+def test tb3 f123 6 NULL YES mediumtext 16777215 16777215 NULL NULL latin1 latin1_swedish_ci mediumtext select,insert,update,references
+def test tb3 f124 7 NULL YES longtext 4294967295 4294967295 NULL NULL latin1 latin1_swedish_ci longtext select,insert,update,references
+def test tb3 f125 8 NULL YES tinyblob 255 255 NULL NULL NULL NULL tinyblob select,insert,update,references
+def test tb3 f126 9 NULL YES blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
+def test tb3 f127 10 NULL YES mediumblob 16777215 16777215 NULL NULL NULL NULL mediumblob select,insert,update,references
+def test tb3 f128 11 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
+def test tb3 f129 12  NO binary 1 1 NULL NULL NULL NULL binary(1) select,insert,update,references
+def test tb3 f130 13 99 NO tinyint NULL NULL 3 0 NULL NULL tinyint(4) select,insert,update,references
+def test tb3 f131 14 99 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned select,insert,update,references
+def test tb3 f132 15 099 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
+def test tb3 f133 16 099 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill select,insert,update,references
+def test tb3 f134 17 999 NO smallint NULL NULL 5 0 NULL NULL smallint(6) select,insert,update,references
+def test tb3 f135 18 999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned select,insert,update,references
+def test tb3 f136 19 00999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
+def test tb3 f137 20 00999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill select,insert,update,references
+def test tb3 f138 21 9999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(9) select,insert,update,references
+def test tb3 f139 22 9999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned select,insert,update,references
+def test tb3 f140 23 00009999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
+def test tb3 f141 24 00009999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill select,insert,update,references
+def test tb3 f142 25 99999 NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test tb3 f143 26 99999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
+def test tb3 f144 27 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
+def test tb3 f145 28 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
+def test tb3 f146 29 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) select,insert,update,references
+def test tb3 f147 30 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
+def test tb3 f148 31 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+def test tb3 f149 32 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+def test tb3 f150 33 1000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb3 f151 34 999 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb3 f152 35 0000001000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f153 36 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f154 37 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb3 f155 38 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
+def test tb3 f156 39 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb3 f157 40 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
+def test tb3 f158 41 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f159 42 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb3 f160 43 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f161 44 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb3 f162 45 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb3 f163 46 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
+def test tb3 f164 47 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb3 f165 48 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
+def test tb3 f166 49 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f167 50 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb3 f168 51 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f169 52 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb3 f170 53 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb3 f171 54 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb3 f172 55 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f173 56 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb3 f174 57 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb3 f175 58 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
+def test tb4 f176 1 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb4 f177 2 9 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
+def test tb4 f178 3 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb4 f179 4 0000000000000000000000000000000000000000000000000000000000000009 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb4 f180 5 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb4 f181 6 0000000000000000000000000000000000000000000000000000000000000009 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test tb4 f182 7 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test tb4 f183 8 9.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
+def test tb4 f184 9 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test tb4 f185 10 9.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
+def test tb4 f186 11 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb4 f187 12 000000000000000000000000000000009.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb4 f188 13 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test tb4 f189 14 000000000000000000000000000000009.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test tb4 f190 15 88.8 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test tb4 f191 16 88.8 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test tb4 f192 17 00000000000000000088.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb4 f193 18 00000000000000000088.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb4 f194 19 55.5 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test tb4 f195 20 55.5 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test tb4 f196 21 00000000000000000055.5 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb4 f197 22 00000000000000000055.5 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb4 f198 23 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb4 f199 24 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb4 f200 25 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f201 26 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f202 27 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb4 f203 28 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb4 f204 29 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb4 f205 30 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb4 f206 31 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f207 32 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f208 33 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f209 34 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f210 35 NULL YES float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test tb4 f211 36 NULL YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test tb4 f212 37 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test tb4 f213 38 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test tb4 f214 39 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f215 40 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb4 f216 41 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test tb4 f217 42 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test tb4 f218 43 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test tb4 f219 44 NULL YES time NULL NULL NULL NULL NULL NULL time select,insert,update,references
+def test tb4 f220 45 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
+def test tb4 f221 46 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
+def test tb4 f222 47 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test tb4 f223 48 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test tb4 f224 49 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test tb4 f225 50 NULL YES enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
+def test tb4 f226 51 NULL YES set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
+def test tb4 f227 52 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64) select,insert,update,references
+def test tb4 f228 53 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27) select,insert,update,references
+def test tb4 f229 54 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64) select,insert,update,references
+def test tb4 f230 55 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192) select,insert,update,references
+def test tb4 f231 56 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192) select,insert,update,references
+def test tb4 f232 57 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27) select,insert,update,references
+def test tb4 f233 58 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64) select,insert,update,references
+def test tb4 f234 59 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192) select,insert,update,references
+def test tb4 f235 60 NULL YES char 255 255 NULL NULL latin1 latin1_swedish_ci char(255) select,insert,update,references
+def test tb4 f236 61 NULL YES char 60 60 NULL NULL latin1 latin1_swedish_ci char(60) select,insert,update,references
+def test tb4 f237 62 NULL YES char 255 255 NULL NULL latin1 latin1_bin char(255) select,insert,update,references
+def test tb4 f238 63 NULL YES varchar 0 0 NULL NULL latin1 latin1_bin varchar(0) select,insert,update,references
+def test tb4 f239 64 NULL YES varbinary 1000 1000 NULL NULL NULL NULL varbinary(1000) select,insert,update,references
+def test tb4 f240 65 NULL YES varchar 120 120 NULL NULL latin1 latin1_swedish_ci varchar(120) select,insert,update,references
+def test tb4 f241 66 NULL YES char 100 100 NULL NULL latin1 latin1_swedish_ci char(100) select,insert,update,references
+def test tb4 f242 67 NULL YES bit NULL NULL 30 NULL NULL NULL bit(30) select,insert,update,references
+def test1 tb2 f100 42 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test1 tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test1 tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
+def test1 tb2 f103 45 0002-02-02 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
+def test1 tb2 f104 46 2000-12-31 23:59:59 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
+def test1 tb2 f105 47 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test1 tb2 f106 48 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test1 tb2 f107 49 2000 NO year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
+def test1 tb2 f108 50 1enum NO enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
+def test1 tb2 f109 51 1set NO set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
+def test1 tb2 f110 52 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64) select,insert,update,references
+def test1 tb2 f111 53 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27) select,insert,update,references
+def test1 tb2 f112 54 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64) select,insert,update,references
+def test1 tb2 f113 55 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192) select,insert,update,references
+def test1 tb2 f114 56 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192) select,insert,update,references
+def test1 tb2 f115 57 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27) select,insert,update,references
+def test1 tb2 f116 58 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64) select,insert,update,references
+def test1 tb2 f117 59 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192) select,insert,update,references
+def test1 tb2 f59 1 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test1 tb2 f60 2 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
+def test1 tb2 f61 3 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test1 tb2 f62 4 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test1 tb2 f63 5 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test1 tb2 f64 6 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
+def test1 tb2 f65 7 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
+def test1 tb2 f66 8 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) select,insert,update,references
+def test1 tb2 f67 9 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
+def test1 tb2 f68 10 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned select,insert,update,references
+def test1 tb2 f69 11 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test1 tb2 f70 12 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test1 tb2 f71 13 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
+def test1 tb2 f72 14 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill select,insert,update,references
+def test1 tb2 f73 15 NULL YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test1 tb2 f74 16 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test1 tb2 f75 17 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test1 tb2 f76 18 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test1 tb2 f77 19 7.7 YES double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test1 tb2 f78 20 7.7 YES double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test1 tb2 f79 21 00000000000000000007.7 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test1 tb2 f80 22 00000000000000000008.8 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test1 tb2 f81 23 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test1 tb2 f82 24 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test1 tb2 f83 25 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f84 26 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f85 27 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test1 tb2 f86 28 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test1 tb2 f87 29 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test1 tb2 f88 30 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test1 tb2 f89 31 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f90 32 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f91 33 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f92 34 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f93 35 8.8 NO float NULL NULL 12 NULL NULL NULL float select,insert,update,references
+def test1 tb2 f94 36 8.8 NO double NULL NULL 22 NULL NULL NULL double select,insert,update,references
+def test1 tb2 f95 37 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned select,insert,update,references
+def test1 tb2 f96 38 8.8 NO double NULL NULL 22 NULL NULL NULL double unsigned select,insert,update,references
+def test1 tb2 f97 39 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test1 tb2 f98 40 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
+def test1 tb2 f99 41 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill select,insert,update,references
+def test4 t6 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test4 t6 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test4 t6 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test4 t6 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test4 t6 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test4 t6 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
##########################################################################
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
##########################################################################
diff --git a/mysql-test/suite/funcs_1/r/is_columns_myisam_embedded.result b/mysql-test/suite/funcs_1/r/is_columns_myisam_embedded.result
index 2721dcf3c6e..55f7ebf91ae 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_myisam_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_myisam_embedded.result
@@ -412,357 +412,357 @@ SELECT * FROM information_schema.columns
WHERE table_schema LIKE 'test%'
ORDER BY table_schema, table_name, column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
-NULL test t1 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
-NULL test t1 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
-NULL test t1 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
-NULL test t1 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
-NULL test t1 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
-NULL test t1 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
-NULL test t10 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
-NULL test t10 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
-NULL test t10 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
-NULL test t10 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
-NULL test t10 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
-NULL test t10 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
-NULL test t11 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
-NULL test t11 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
-NULL test t11 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
-NULL test t11 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
-NULL test t11 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
-NULL test t11 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
-NULL test t2 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
-NULL test t2 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
-NULL test t2 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
-NULL test t2 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
-NULL test t2 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
-NULL test t2 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
-NULL test t3 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
-NULL test t3 f2 2 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
-NULL test t3 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11)
-NULL test t4 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
-NULL test t4 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
-NULL test t4 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
-NULL test t4 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
-NULL test t4 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
-NULL test t4 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
-NULL test t7 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
-NULL test t7 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
-NULL test t7 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
-NULL test t7 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
-NULL test t8 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
-NULL test t8 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
-NULL test t8 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
-NULL test t8 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
-NULL test t9 f1 1 NULL YES int NULL NULL 10 0 NULL NULL int(11)
-NULL test t9 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
-NULL test t9 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11)
-NULL test tb1 f1 1 NULL YES char 1 1 NULL NULL latin1 latin1_swedish_ci char(1)
-NULL test tb1 f10 10 NULL YES mediumblob 16777215 16777215 NULL NULL NULL NULL mediumblob
-NULL test tb1 f11 11 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
-NULL test tb1 f12 12 NULL YES binary 1 1 NULL NULL NULL NULL binary(1)
-NULL test tb1 f13 13 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(4)
-NULL test tb1 f14 14 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned
-NULL test tb1 f15 15 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill
-NULL test tb1 f16 16 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill
-NULL test tb1 f17 17 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(6)
-NULL test tb1 f18 18 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned
-NULL test tb1 f19 19 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill
-NULL test tb1 f2 2 NULL YES char 1 1 NULL NULL latin1 latin1_bin char(1)
-NULL test tb1 f20 20 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill
-NULL test tb1 f21 21 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(9)
-NULL test tb1 f22 22 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned
-NULL test tb1 f23 23 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill
-NULL test tb1 f24 24 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill
-NULL test tb1 f25 25 NULL YES int NULL NULL 10 0 NULL NULL int(11)
-NULL test tb1 f26 26 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned
-NULL test tb1 f27 27 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill
-NULL test tb1 f28 28 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill
-NULL test tb1 f29 29 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20)
-NULL test tb1 f3 3 NULL YES char 1 1 NULL NULL latin1 latin1_swedish_ci char(1)
-NULL test tb1 f30 30 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned
-NULL test tb1 f31 31 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill
-NULL test tb1 f32 32 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill
-NULL test tb1 f33 33 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
-NULL test tb1 f34 34 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
-NULL test tb1 f35 35 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb1 f36 36 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb1 f37 37 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
-NULL test tb1 f38 38 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0)
-NULL test tb1 f39 39 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
-NULL test tb1 f4 4 NULL YES tinytext 255 255 NULL NULL latin1 latin1_swedish_ci tinytext
-NULL test tb1 f40 40 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned
-NULL test tb1 f41 41 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb1 f42 42 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
-NULL test tb1 f43 43 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb1 f44 44 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
-NULL test tb1 f45 45 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
-NULL test tb1 f46 46 9.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30)
-NULL test tb1 f47 47 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
-NULL test tb1 f48 48 9.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned
-NULL test tb1 f49 49 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb1 f5 5 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text
-NULL test tb1 f50 50 000000000000000000000000000000009.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
-NULL test tb1 f51 51 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb1 f52 52 000000000000000000000000000000009.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
-NULL test tb1 f53 53 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
-NULL test tb1 f54 54 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
-NULL test tb1 f55 55 0000000099 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb1 f56 56 0000000099 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb1 f57 57 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
-NULL test tb1 f58 58 99 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0)
-NULL test tb1 f6 6 NULL YES mediumtext 16777215 16777215 NULL NULL latin1 latin1_swedish_ci mediumtext
-NULL test tb1 f7 7 NULL YES longtext 4294967295 4294967295 NULL NULL latin1 latin1_swedish_ci longtext
-NULL test tb1 f8 8 NULL YES tinyblob 255 255 NULL NULL NULL NULL tinyblob
-NULL test tb1 f9 9 NULL YES blob 65535 65535 NULL NULL NULL NULL blob
-NULL test tb2 f100 42 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill
-NULL test tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date
-NULL test tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time
-NULL test tb2 f103 45 0002-02-02 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
-NULL test tb2 f104 46 2000-12-31 23:59:59 NO timestamp NULL NULL NULL NULL NULL NULL timestamp
-NULL test tb2 f105 47 2000 NO year NULL NULL NULL NULL NULL NULL year(4)
-NULL test tb2 f106 48 2000 NO year NULL NULL NULL NULL NULL NULL year(4)
-NULL test tb2 f107 49 2000 NO year NULL NULL NULL NULL NULL NULL year(4)
-NULL test tb2 f108 50 1enum NO enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum')
-NULL test tb2 f109 51 1set NO set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set')
-NULL test tb2 f110 52 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
-NULL test tb2 f111 53 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27)
-NULL test tb2 f112 54 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
-NULL test tb2 f113 55 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
-NULL test tb2 f114 56 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
-NULL test tb2 f115 57 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27)
-NULL test tb2 f116 58 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
-NULL test tb2 f117 59 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
-NULL test tb2 f59 1 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
-NULL test tb2 f60 2 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned
-NULL test tb2 f61 3 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb2 f62 4 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
-NULL test tb2 f63 5 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb2 f64 6 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
-NULL test tb2 f65 7 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0)
-NULL test tb2 f66 8 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30)
-NULL test tb2 f67 9 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
-NULL test tb2 f68 10 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned
-NULL test tb2 f69 11 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb2 f70 12 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
-NULL test tb2 f71 13 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb2 f72 14 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
-NULL test tb2 f73 15 NULL YES double NULL NULL 22 NULL NULL NULL double
-NULL test tb2 f74 16 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned
-NULL test tb2 f75 17 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
-NULL test tb2 f76 18 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
-NULL test tb2 f77 19 7.7 YES double NULL NULL 22 NULL NULL NULL double
-NULL test tb2 f78 20 7.7 YES double NULL NULL 22 NULL NULL NULL double unsigned
-NULL test tb2 f79 21 00000000000000000007.7 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
-NULL test tb2 f80 22 00000000000000000008.8 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
-NULL test tb2 f81 23 8.8 NO float NULL NULL 12 NULL NULL NULL float
-NULL test tb2 f82 24 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned
-NULL test tb2 f83 25 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test tb2 f84 26 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test tb2 f85 27 8.8 NO float NULL NULL 12 NULL NULL NULL float
-NULL test tb2 f86 28 8.8 NO float NULL NULL 12 NULL NULL NULL float
-NULL test tb2 f87 29 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned
-NULL test tb2 f88 30 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned
-NULL test tb2 f89 31 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test tb2 f90 32 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test tb2 f91 33 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test tb2 f92 34 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test tb2 f93 35 8.8 NO float NULL NULL 12 NULL NULL NULL float
-NULL test tb2 f94 36 8.8 NO double NULL NULL 22 NULL NULL NULL double
-NULL test tb2 f95 37 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned
-NULL test tb2 f96 38 8.8 NO double NULL NULL 22 NULL NULL NULL double unsigned
-NULL test tb2 f97 39 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test tb2 f98 40 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill
-NULL test tb2 f99 41 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test tb3 f118 1 a NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1)
-NULL test tb3 f119 2  NO char 1 1 NULL NULL latin1 latin1_bin char(1)
-NULL test tb3 f120 3  NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1)
-NULL test tb3 f121 4 NULL YES tinytext 255 255 NULL NULL latin1 latin1_swedish_ci tinytext
-NULL test tb3 f122 5 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text
-NULL test tb3 f123 6 NULL YES mediumtext 16777215 16777215 NULL NULL latin1 latin1_swedish_ci mediumtext
-NULL test tb3 f124 7 NULL YES longtext 4294967295 4294967295 NULL NULL latin1 latin1_swedish_ci longtext
-NULL test tb3 f125 8 NULL YES tinyblob 255 255 NULL NULL NULL NULL tinyblob
-NULL test tb3 f126 9 NULL YES blob 65535 65535 NULL NULL NULL NULL blob
-NULL test tb3 f127 10 NULL YES mediumblob 16777215 16777215 NULL NULL NULL NULL mediumblob
-NULL test tb3 f128 11 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
-NULL test tb3 f129 12  NO binary 1 1 NULL NULL NULL NULL binary(1)
-NULL test tb3 f130 13 99 NO tinyint NULL NULL 3 0 NULL NULL tinyint(4)
-NULL test tb3 f131 14 99 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned
-NULL test tb3 f132 15 099 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill
-NULL test tb3 f133 16 099 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill
-NULL test tb3 f134 17 999 NO smallint NULL NULL 5 0 NULL NULL smallint(6)
-NULL test tb3 f135 18 999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned
-NULL test tb3 f136 19 00999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill
-NULL test tb3 f137 20 00999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill
-NULL test tb3 f138 21 9999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(9)
-NULL test tb3 f139 22 9999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned
-NULL test tb3 f140 23 00009999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill
-NULL test tb3 f141 24 00009999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill
-NULL test tb3 f142 25 99999 NO int NULL NULL 10 0 NULL NULL int(11)
-NULL test tb3 f143 26 99999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned
-NULL test tb3 f144 27 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill
-NULL test tb3 f145 28 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill
-NULL test tb3 f146 29 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20)
-NULL test tb3 f147 30 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned
-NULL test tb3 f148 31 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill
-NULL test tb3 f149 32 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill
-NULL test tb3 f150 33 1000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
-NULL test tb3 f151 34 999 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
-NULL test tb3 f152 35 0000001000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb3 f153 36 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb3 f154 37 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0)
-NULL test tb3 f155 38 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0)
-NULL test tb3 f156 39 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
-NULL test tb3 f157 40 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned
-NULL test tb3 f158 41 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb3 f159 42 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
-NULL test tb3 f160 43 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb3 f161 44 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
-NULL test tb3 f162 45 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0)
-NULL test tb3 f163 46 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30)
-NULL test tb3 f164 47 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
-NULL test tb3 f165 48 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned
-NULL test tb3 f166 49 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb3 f167 50 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
-NULL test tb3 f168 51 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb3 f169 52 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
-NULL test tb3 f170 53 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0)
-NULL test tb3 f171 54 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
-NULL test tb3 f172 55 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb3 f173 56 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb3 f174 57 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0)
-NULL test tb3 f175 58 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0)
-NULL test tb4 f176 1 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
-NULL test tb4 f177 2 9 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned
-NULL test tb4 f178 3 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb4 f179 4 0000000000000000000000000000000000000000000000000000000000000009 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
-NULL test tb4 f180 5 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb4 f181 6 0000000000000000000000000000000000000000000000000000000000000009 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
-NULL test tb4 f182 7 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
-NULL test tb4 f183 8 9.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30)
-NULL test tb4 f184 9 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
-NULL test tb4 f185 10 9.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned
-NULL test tb4 f186 11 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb4 f187 12 000000000000000000000000000000009.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
-NULL test tb4 f188 13 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test tb4 f189 14 000000000000000000000000000000009.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
-NULL test tb4 f190 15 88.8 NO double NULL NULL 22 NULL NULL NULL double
-NULL test tb4 f191 16 88.8 NO double NULL NULL 22 NULL NULL NULL double unsigned
-NULL test tb4 f192 17 00000000000000000088.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill
-NULL test tb4 f193 18 00000000000000000088.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill
-NULL test tb4 f194 19 55.5 NO double NULL NULL 22 NULL NULL NULL double
-NULL test tb4 f195 20 55.5 NO double NULL NULL 22 NULL NULL NULL double unsigned
-NULL test tb4 f196 21 00000000000000000055.5 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill
-NULL test tb4 f197 22 00000000000000000055.5 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill
-NULL test tb4 f198 23 NULL YES float NULL NULL 12 NULL NULL NULL float
-NULL test tb4 f199 24 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned
-NULL test tb4 f200 25 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test tb4 f201 26 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test tb4 f202 27 NULL YES float NULL NULL 12 NULL NULL NULL float
-NULL test tb4 f203 28 NULL YES float NULL NULL 12 NULL NULL NULL float
-NULL test tb4 f204 29 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned
-NULL test tb4 f205 30 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned
-NULL test tb4 f206 31 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test tb4 f207 32 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test tb4 f208 33 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test tb4 f209 34 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test tb4 f210 35 NULL YES float NULL NULL 12 NULL NULL NULL float
-NULL test tb4 f211 36 NULL YES double NULL NULL 22 NULL NULL NULL double
-NULL test tb4 f212 37 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned
-NULL test tb4 f213 38 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned
-NULL test tb4 f214 39 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test tb4 f215 40 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
-NULL test tb4 f216 41 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test tb4 f217 42 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
-NULL test tb4 f218 43 NULL YES date NULL NULL NULL NULL NULL NULL date
-NULL test tb4 f219 44 NULL YES time NULL NULL NULL NULL NULL NULL time
-NULL test tb4 f220 45 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL test tb4 f221 46 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
-NULL test tb4 f222 47 NULL YES year NULL NULL NULL NULL NULL NULL year(4)
-NULL test tb4 f223 48 NULL YES year NULL NULL NULL NULL NULL NULL year(4)
-NULL test tb4 f224 49 NULL YES year NULL NULL NULL NULL NULL NULL year(4)
-NULL test tb4 f225 50 NULL YES enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum')
-NULL test tb4 f226 51 NULL YES set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set')
-NULL test tb4 f227 52 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
-NULL test tb4 f228 53 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27)
-NULL test tb4 f229 54 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
-NULL test tb4 f230 55 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
-NULL test tb4 f231 56 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
-NULL test tb4 f232 57 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27)
-NULL test tb4 f233 58 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
-NULL test tb4 f234 59 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
-NULL test tb4 f235 60 NULL YES char 255 255 NULL NULL latin1 latin1_swedish_ci char(255)
-NULL test tb4 f236 61 NULL YES char 60 60 NULL NULL latin1 latin1_swedish_ci char(60)
-NULL test tb4 f237 62 NULL YES char 255 255 NULL NULL latin1 latin1_bin char(255)
-NULL test tb4 f238 63 NULL YES varchar 0 0 NULL NULL latin1 latin1_bin varchar(0)
-NULL test tb4 f239 64 NULL YES varbinary 1000 1000 NULL NULL NULL NULL varbinary(1000)
-NULL test tb4 f240 65 NULL YES varchar 120 120 NULL NULL latin1 latin1_swedish_ci varchar(120)
-NULL test tb4 f241 66 NULL YES char 100 100 NULL NULL latin1 latin1_swedish_ci char(100)
-NULL test tb4 f242 67 NULL YES bit NULL NULL 30 NULL NULL NULL bit(30)
-NULL test1 tb2 f100 42 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill
-NULL test1 tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date
-NULL test1 tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time
-NULL test1 tb2 f103 45 0002-02-02 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
-NULL test1 tb2 f104 46 2000-12-31 23:59:59 NO timestamp NULL NULL NULL NULL NULL NULL timestamp
-NULL test1 tb2 f105 47 2000 NO year NULL NULL NULL NULL NULL NULL year(4)
-NULL test1 tb2 f106 48 2000 NO year NULL NULL NULL NULL NULL NULL year(4)
-NULL test1 tb2 f107 49 2000 NO year NULL NULL NULL NULL NULL NULL year(4)
-NULL test1 tb2 f108 50 1enum NO enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum')
-NULL test1 tb2 f109 51 1set NO set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set')
-NULL test1 tb2 f110 52 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
-NULL test1 tb2 f111 53 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27)
-NULL test1 tb2 f112 54 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
-NULL test1 tb2 f113 55 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
-NULL test1 tb2 f114 56 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
-NULL test1 tb2 f115 57 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27)
-NULL test1 tb2 f116 58 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
-NULL test1 tb2 f117 59 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
-NULL test1 tb2 f59 1 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
-NULL test1 tb2 f60 2 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned
-NULL test1 tb2 f61 3 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test1 tb2 f62 4 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
-NULL test1 tb2 f63 5 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test1 tb2 f64 6 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
-NULL test1 tb2 f65 7 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0)
-NULL test1 tb2 f66 8 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30)
-NULL test1 tb2 f67 9 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
-NULL test1 tb2 f68 10 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned
-NULL test1 tb2 f69 11 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test1 tb2 f70 12 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
-NULL test1 tb2 f71 13 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
-NULL test1 tb2 f72 14 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
-NULL test1 tb2 f73 15 NULL YES double NULL NULL 22 NULL NULL NULL double
-NULL test1 tb2 f74 16 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned
-NULL test1 tb2 f75 17 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
-NULL test1 tb2 f76 18 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
-NULL test1 tb2 f77 19 7.7 YES double NULL NULL 22 NULL NULL NULL double
-NULL test1 tb2 f78 20 7.7 YES double NULL NULL 22 NULL NULL NULL double unsigned
-NULL test1 tb2 f79 21 00000000000000000007.7 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
-NULL test1 tb2 f80 22 00000000000000000008.8 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
-NULL test1 tb2 f81 23 8.8 NO float NULL NULL 12 NULL NULL NULL float
-NULL test1 tb2 f82 24 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned
-NULL test1 tb2 f83 25 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test1 tb2 f84 26 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test1 tb2 f85 27 8.8 NO float NULL NULL 12 NULL NULL NULL float
-NULL test1 tb2 f86 28 8.8 NO float NULL NULL 12 NULL NULL NULL float
-NULL test1 tb2 f87 29 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned
-NULL test1 tb2 f88 30 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned
-NULL test1 tb2 f89 31 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test1 tb2 f90 32 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test1 tb2 f91 33 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test1 tb2 f92 34 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test1 tb2 f93 35 8.8 NO float NULL NULL 12 NULL NULL NULL float
-NULL test1 tb2 f94 36 8.8 NO double NULL NULL 22 NULL NULL NULL double
-NULL test1 tb2 f95 37 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned
-NULL test1 tb2 f96 38 8.8 NO double NULL NULL 22 NULL NULL NULL double unsigned
-NULL test1 tb2 f97 39 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test1 tb2 f98 40 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill
-NULL test1 tb2 f99 41 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
-NULL test4 t6 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
-NULL test4 t6 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
-NULL test4 t6 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
-NULL test4 t6 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
-NULL test4 t6 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
-NULL test4 t6 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+def test t1 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+def test t1 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+def test t1 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
+def test t1 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+def test t1 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+def test t1 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+def test t10 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+def test t10 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+def test t10 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
+def test t10 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+def test t10 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+def test t10 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+def test t11 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+def test t11 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+def test t11 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
+def test t11 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+def test t11 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+def test t11 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+def test t2 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+def test t2 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+def test t2 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
+def test t2 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+def test t2 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+def test t2 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+def test t3 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+def test t3 f2 2 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+def test t3 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+def test t4 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+def test t4 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+def test t4 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
+def test t4 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+def test t4 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+def test t4 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+def test t7 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+def test t7 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+def test t7 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
+def test t7 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+def test t8 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+def test t8 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+def test t8 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
+def test t8 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+def test t9 f1 1 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+def test t9 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+def test t9 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+def test tb1 f1 1 NULL YES char 1 1 NULL NULL latin1 latin1_swedish_ci char(1)
+def test tb1 f10 10 NULL YES mediumblob 16777215 16777215 NULL NULL NULL NULL mediumblob
+def test tb1 f11 11 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
+def test tb1 f12 12 NULL YES binary 1 1 NULL NULL NULL NULL binary(1)
+def test tb1 f13 13 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(4)
+def test tb1 f14 14 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned
+def test tb1 f15 15 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill
+def test tb1 f16 16 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill
+def test tb1 f17 17 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(6)
+def test tb1 f18 18 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned
+def test tb1 f19 19 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill
+def test tb1 f2 2 NULL YES char 1 1 NULL NULL latin1 latin1_bin char(1)
+def test tb1 f20 20 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill
+def test tb1 f21 21 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(9)
+def test tb1 f22 22 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned
+def test tb1 f23 23 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill
+def test tb1 f24 24 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill
+def test tb1 f25 25 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+def test tb1 f26 26 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned
+def test tb1 f27 27 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill
+def test tb1 f28 28 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill
+def test tb1 f29 29 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20)
+def test tb1 f3 3 NULL YES char 1 1 NULL NULL latin1 latin1_swedish_ci char(1)
+def test tb1 f30 30 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned
+def test tb1 f31 31 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill
+def test tb1 f32 32 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill
+def test tb1 f33 33 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+def test tb1 f34 34 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+def test tb1 f35 35 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb1 f36 36 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb1 f37 37 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+def test tb1 f38 38 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0)
+def test tb1 f39 39 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+def test tb1 f4 4 NULL YES tinytext 255 255 NULL NULL latin1 latin1_swedish_ci tinytext
+def test tb1 f40 40 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned
+def test tb1 f41 41 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb1 f42 42 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+def test tb1 f43 43 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb1 f44 44 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+def test tb1 f45 45 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+def test tb1 f46 46 9.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30)
+def test tb1 f47 47 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+def test tb1 f48 48 9.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned
+def test tb1 f49 49 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb1 f5 5 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text
+def test tb1 f50 50 000000000000000000000000000000009.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+def test tb1 f51 51 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb1 f52 52 000000000000000000000000000000009.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+def test tb1 f53 53 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+def test tb1 f54 54 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+def test tb1 f55 55 0000000099 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb1 f56 56 0000000099 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb1 f57 57 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+def test tb1 f58 58 99 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0)
+def test tb1 f6 6 NULL YES mediumtext 16777215 16777215 NULL NULL latin1 latin1_swedish_ci mediumtext
+def test tb1 f7 7 NULL YES longtext 4294967295 4294967295 NULL NULL latin1 latin1_swedish_ci longtext
+def test tb1 f8 8 NULL YES tinyblob 255 255 NULL NULL NULL NULL tinyblob
+def test tb1 f9 9 NULL YES blob 65535 65535 NULL NULL NULL NULL blob
+def test tb2 f100 42 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill
+def test tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date
+def test tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time
+def test tb2 f103 45 0002-02-02 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
+def test tb2 f104 46 2000-12-31 23:59:59 NO timestamp NULL NULL NULL NULL NULL NULL timestamp
+def test tb2 f105 47 2000 NO year NULL NULL NULL NULL NULL NULL year(4)
+def test tb2 f106 48 2000 NO year NULL NULL NULL NULL NULL NULL year(4)
+def test tb2 f107 49 2000 NO year NULL NULL NULL NULL NULL NULL year(4)
+def test tb2 f108 50 1enum NO enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum')
+def test tb2 f109 51 1set NO set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set')
+def test tb2 f110 52 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
+def test tb2 f111 53 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27)
+def test tb2 f112 54 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
+def test tb2 f113 55 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
+def test tb2 f114 56 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
+def test tb2 f115 57 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27)
+def test tb2 f116 58 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
+def test tb2 f117 59 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
+def test tb2 f59 1 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+def test tb2 f60 2 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned
+def test tb2 f61 3 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb2 f62 4 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+def test tb2 f63 5 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb2 f64 6 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+def test tb2 f65 7 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+def test tb2 f66 8 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30)
+def test tb2 f67 9 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+def test tb2 f68 10 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned
+def test tb2 f69 11 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb2 f70 12 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+def test tb2 f71 13 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb2 f72 14 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+def test tb2 f73 15 NULL YES double NULL NULL 22 NULL NULL NULL double
+def test tb2 f74 16 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned
+def test tb2 f75 17 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
+def test tb2 f76 18 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
+def test tb2 f77 19 7.7 YES double NULL NULL 22 NULL NULL NULL double
+def test tb2 f78 20 7.7 YES double NULL NULL 22 NULL NULL NULL double unsigned
+def test tb2 f79 21 00000000000000000007.7 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
+def test tb2 f80 22 00000000000000000008.8 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
+def test tb2 f81 23 8.8 NO float NULL NULL 12 NULL NULL NULL float
+def test tb2 f82 24 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned
+def test tb2 f83 25 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test tb2 f84 26 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test tb2 f85 27 8.8 NO float NULL NULL 12 NULL NULL NULL float
+def test tb2 f86 28 8.8 NO float NULL NULL 12 NULL NULL NULL float
+def test tb2 f87 29 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned
+def test tb2 f88 30 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned
+def test tb2 f89 31 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test tb2 f90 32 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test tb2 f91 33 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test tb2 f92 34 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test tb2 f93 35 8.8 NO float NULL NULL 12 NULL NULL NULL float
+def test tb2 f94 36 8.8 NO double NULL NULL 22 NULL NULL NULL double
+def test tb2 f95 37 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned
+def test tb2 f96 38 8.8 NO double NULL NULL 22 NULL NULL NULL double unsigned
+def test tb2 f97 39 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test tb2 f98 40 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill
+def test tb2 f99 41 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test tb3 f118 1 a NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1)
+def test tb3 f119 2  NO char 1 1 NULL NULL latin1 latin1_bin char(1)
+def test tb3 f120 3  NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1)
+def test tb3 f121 4 NULL YES tinytext 255 255 NULL NULL latin1 latin1_swedish_ci tinytext
+def test tb3 f122 5 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text
+def test tb3 f123 6 NULL YES mediumtext 16777215 16777215 NULL NULL latin1 latin1_swedish_ci mediumtext
+def test tb3 f124 7 NULL YES longtext 4294967295 4294967295 NULL NULL latin1 latin1_swedish_ci longtext
+def test tb3 f125 8 NULL YES tinyblob 255 255 NULL NULL NULL NULL tinyblob
+def test tb3 f126 9 NULL YES blob 65535 65535 NULL NULL NULL NULL blob
+def test tb3 f127 10 NULL YES mediumblob 16777215 16777215 NULL NULL NULL NULL mediumblob
+def test tb3 f128 11 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
+def test tb3 f129 12  NO binary 1 1 NULL NULL NULL NULL binary(1)
+def test tb3 f130 13 99 NO tinyint NULL NULL 3 0 NULL NULL tinyint(4)
+def test tb3 f131 14 99 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned
+def test tb3 f132 15 099 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill
+def test tb3 f133 16 099 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill
+def test tb3 f134 17 999 NO smallint NULL NULL 5 0 NULL NULL smallint(6)
+def test tb3 f135 18 999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned
+def test tb3 f136 19 00999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill
+def test tb3 f137 20 00999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill
+def test tb3 f138 21 9999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(9)
+def test tb3 f139 22 9999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned
+def test tb3 f140 23 00009999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill
+def test tb3 f141 24 00009999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill
+def test tb3 f142 25 99999 NO int NULL NULL 10 0 NULL NULL int(11)
+def test tb3 f143 26 99999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned
+def test tb3 f144 27 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill
+def test tb3 f145 28 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill
+def test tb3 f146 29 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20)
+def test tb3 f147 30 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned
+def test tb3 f148 31 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill
+def test tb3 f149 32 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill
+def test tb3 f150 33 1000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+def test tb3 f151 34 999 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+def test tb3 f152 35 0000001000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb3 f153 36 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb3 f154 37 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+def test tb3 f155 38 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0)
+def test tb3 f156 39 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+def test tb3 f157 40 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned
+def test tb3 f158 41 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb3 f159 42 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+def test tb3 f160 43 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb3 f161 44 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+def test tb3 f162 45 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+def test tb3 f163 46 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30)
+def test tb3 f164 47 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+def test tb3 f165 48 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned
+def test tb3 f166 49 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb3 f167 50 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+def test tb3 f168 51 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb3 f169 52 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+def test tb3 f170 53 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+def test tb3 f171 54 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+def test tb3 f172 55 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb3 f173 56 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb3 f174 57 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+def test tb3 f175 58 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0)
+def test tb4 f176 1 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+def test tb4 f177 2 9 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned
+def test tb4 f178 3 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb4 f179 4 0000000000000000000000000000000000000000000000000000000000000009 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+def test tb4 f180 5 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb4 f181 6 0000000000000000000000000000000000000000000000000000000000000009 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+def test tb4 f182 7 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+def test tb4 f183 8 9.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30)
+def test tb4 f184 9 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+def test tb4 f185 10 9.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned
+def test tb4 f186 11 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb4 f187 12 000000000000000000000000000000009.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+def test tb4 f188 13 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test tb4 f189 14 000000000000000000000000000000009.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+def test tb4 f190 15 88.8 NO double NULL NULL 22 NULL NULL NULL double
+def test tb4 f191 16 88.8 NO double NULL NULL 22 NULL NULL NULL double unsigned
+def test tb4 f192 17 00000000000000000088.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill
+def test tb4 f193 18 00000000000000000088.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill
+def test tb4 f194 19 55.5 NO double NULL NULL 22 NULL NULL NULL double
+def test tb4 f195 20 55.5 NO double NULL NULL 22 NULL NULL NULL double unsigned
+def test tb4 f196 21 00000000000000000055.5 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill
+def test tb4 f197 22 00000000000000000055.5 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill
+def test tb4 f198 23 NULL YES float NULL NULL 12 NULL NULL NULL float
+def test tb4 f199 24 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned
+def test tb4 f200 25 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test tb4 f201 26 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test tb4 f202 27 NULL YES float NULL NULL 12 NULL NULL NULL float
+def test tb4 f203 28 NULL YES float NULL NULL 12 NULL NULL NULL float
+def test tb4 f204 29 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned
+def test tb4 f205 30 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned
+def test tb4 f206 31 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test tb4 f207 32 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test tb4 f208 33 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test tb4 f209 34 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test tb4 f210 35 NULL YES float NULL NULL 12 NULL NULL NULL float
+def test tb4 f211 36 NULL YES double NULL NULL 22 NULL NULL NULL double
+def test tb4 f212 37 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned
+def test tb4 f213 38 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned
+def test tb4 f214 39 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test tb4 f215 40 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
+def test tb4 f216 41 NULL YES float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test tb4 f217 42 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
+def test tb4 f218 43 NULL YES date NULL NULL NULL NULL NULL NULL date
+def test tb4 f219 44 NULL YES time NULL NULL NULL NULL NULL NULL time
+def test tb4 f220 45 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def test tb4 f221 46 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
+def test tb4 f222 47 NULL YES year NULL NULL NULL NULL NULL NULL year(4)
+def test tb4 f223 48 NULL YES year NULL NULL NULL NULL NULL NULL year(4)
+def test tb4 f224 49 NULL YES year NULL NULL NULL NULL NULL NULL year(4)
+def test tb4 f225 50 NULL YES enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum')
+def test tb4 f226 51 NULL YES set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set')
+def test tb4 f227 52 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
+def test tb4 f228 53 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27)
+def test tb4 f229 54 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
+def test tb4 f230 55 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
+def test tb4 f231 56 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
+def test tb4 f232 57 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27)
+def test tb4 f233 58 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
+def test tb4 f234 59 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
+def test tb4 f235 60 NULL YES char 255 255 NULL NULL latin1 latin1_swedish_ci char(255)
+def test tb4 f236 61 NULL YES char 60 60 NULL NULL latin1 latin1_swedish_ci char(60)
+def test tb4 f237 62 NULL YES char 255 255 NULL NULL latin1 latin1_bin char(255)
+def test tb4 f238 63 NULL YES varchar 0 0 NULL NULL latin1 latin1_bin varchar(0)
+def test tb4 f239 64 NULL YES varbinary 1000 1000 NULL NULL NULL NULL varbinary(1000)
+def test tb4 f240 65 NULL YES varchar 120 120 NULL NULL latin1 latin1_swedish_ci varchar(120)
+def test tb4 f241 66 NULL YES char 100 100 NULL NULL latin1 latin1_swedish_ci char(100)
+def test tb4 f242 67 NULL YES bit NULL NULL 30 NULL NULL NULL bit(30)
+def test1 tb2 f100 42 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill
+def test1 tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date
+def test1 tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time
+def test1 tb2 f103 45 0002-02-02 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
+def test1 tb2 f104 46 2000-12-31 23:59:59 NO timestamp NULL NULL NULL NULL NULL NULL timestamp
+def test1 tb2 f105 47 2000 NO year NULL NULL NULL NULL NULL NULL year(4)
+def test1 tb2 f106 48 2000 NO year NULL NULL NULL NULL NULL NULL year(4)
+def test1 tb2 f107 49 2000 NO year NULL NULL NULL NULL NULL NULL year(4)
+def test1 tb2 f108 50 1enum NO enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum')
+def test1 tb2 f109 51 1set NO set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set')
+def test1 tb2 f110 52 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
+def test1 tb2 f111 53 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27)
+def test1 tb2 f112 54 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
+def test1 tb2 f113 55 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
+def test1 tb2 f114 56 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
+def test1 tb2 f115 57 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27)
+def test1 tb2 f116 58 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
+def test1 tb2 f117 59 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
+def test1 tb2 f59 1 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+def test1 tb2 f60 2 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned
+def test1 tb2 f61 3 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test1 tb2 f62 4 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+def test1 tb2 f63 5 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test1 tb2 f64 6 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+def test1 tb2 f65 7 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+def test1 tb2 f66 8 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30)
+def test1 tb2 f67 9 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+def test1 tb2 f68 10 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned
+def test1 tb2 f69 11 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test1 tb2 f70 12 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+def test1 tb2 f71 13 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+def test1 tb2 f72 14 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+def test1 tb2 f73 15 NULL YES double NULL NULL 22 NULL NULL NULL double
+def test1 tb2 f74 16 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned
+def test1 tb2 f75 17 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
+def test1 tb2 f76 18 NULL YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
+def test1 tb2 f77 19 7.7 YES double NULL NULL 22 NULL NULL NULL double
+def test1 tb2 f78 20 7.7 YES double NULL NULL 22 NULL NULL NULL double unsigned
+def test1 tb2 f79 21 00000000000000000007.7 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
+def test1 tb2 f80 22 00000000000000000008.8 YES double NULL NULL 22 NULL NULL NULL double unsigned zerofill
+def test1 tb2 f81 23 8.8 NO float NULL NULL 12 NULL NULL NULL float
+def test1 tb2 f82 24 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned
+def test1 tb2 f83 25 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test1 tb2 f84 26 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test1 tb2 f85 27 8.8 NO float NULL NULL 12 NULL NULL NULL float
+def test1 tb2 f86 28 8.8 NO float NULL NULL 12 NULL NULL NULL float
+def test1 tb2 f87 29 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned
+def test1 tb2 f88 30 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned
+def test1 tb2 f89 31 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test1 tb2 f90 32 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test1 tb2 f91 33 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test1 tb2 f92 34 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test1 tb2 f93 35 8.8 NO float NULL NULL 12 NULL NULL NULL float
+def test1 tb2 f94 36 8.8 NO double NULL NULL 22 NULL NULL NULL double
+def test1 tb2 f95 37 8.8 NO float NULL NULL 12 NULL NULL NULL float unsigned
+def test1 tb2 f96 38 8.8 NO double NULL NULL 22 NULL NULL NULL double unsigned
+def test1 tb2 f97 39 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test1 tb2 f98 40 00000000000000000008.8 NO double NULL NULL 22 NULL NULL NULL double unsigned zerofill
+def test1 tb2 f99 41 0000000008.8 NO float NULL NULL 12 NULL NULL NULL float unsigned zerofill
+def test4 t6 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+def test4 t6 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+def test4 t6 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
+def test4 t6 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+def test4 t6 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+def test4 t6 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
##########################################################################
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
##########################################################################
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 98eeacdb74c..bd548ac0a25 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_mysql.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_mysql.result
@@ -2,219 +2,220 @@ SELECT * FROM information_schema.columns
WHERE table_schema = 'mysql'
ORDER BY table_schema, table_name, column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
-NULL mysql columns_priv Column_name 5 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
-NULL mysql columns_priv Column_priv 7 NO set 31 93 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','References') select,insert,update,references
-NULL mysql columns_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
-NULL mysql columns_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references
-NULL mysql columns_priv Table_name 4 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
-NULL mysql columns_priv Timestamp 6 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
-NULL mysql columns_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references
-NULL mysql db Alter_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql db Alter_routine_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql db Create_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql db Create_routine_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql db Create_tmp_table_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql db Create_view_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql db Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
-NULL mysql db Delete_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql db Drop_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql db Event_priv 21 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql db Execute_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql db Grant_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql db Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references
-NULL mysql db Index_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql db Insert_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql db Lock_tables_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql db References_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql db Select_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql db Show_view_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql db Trigger_priv 22 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql db Update_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql db User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references
-NULL mysql event body 3 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
-NULL mysql event body_utf8 22 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
-NULL mysql event character_set_client 19 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) select,insert,update,references
-NULL mysql event collation_connection 20 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) select,insert,update,references
-NULL mysql event comment 16 NO char 64 192 NULL NULL utf8 utf8_bin char(64) select,insert,update,references
-NULL mysql event created 8 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
-NULL mysql event db 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
-NULL mysql event db_collation 21 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) select,insert,update,references
-NULL mysql event definer 4 NO char 77 231 NULL NULL utf8 utf8_bin char(77) select,insert,update,references
-NULL mysql event ends 12 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
-NULL mysql event execute_at 5 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
-NULL mysql event interval_field 7 NULL YES enum 18 54 NULL NULL utf8 utf8_general_ci enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') select,insert,update,references
-NULL mysql event interval_value 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL mysql event last_executed 10 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
-NULL mysql event modified 9 0000-00-00 00:00:00 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
-NULL mysql event name 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI select,insert,update,references
-NULL mysql event on_completion 14 DROP NO enum 8 24 NULL NULL utf8 utf8_general_ci enum('DROP','PRESERVE') select,insert,update,references
-NULL mysql event originator 17 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
-NULL mysql event sql_mode 15 NO set 478 1434 NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') select,insert,update,references
-NULL mysql event starts 11 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
-NULL mysql event status 13 ENABLED NO enum 18 54 NULL NULL utf8 utf8_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') select,insert,update,references
-NULL mysql event time_zone 18 SYSTEM NO char 64 64 NULL NULL latin1 latin1_swedish_ci char(64) select,insert,update,references
-NULL mysql func dl 3 NO char 128 384 NULL NULL utf8 utf8_bin char(128) select,insert,update,references
-NULL mysql func name 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
-NULL mysql func ret 2 0 NO tinyint NULL NULL 3 0 NULL NULL tinyint(1) select,insert,update,references
-NULL mysql func type 4 NULL NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('function','aggregate') select,insert,update,references
-NULL mysql general_log argument 6 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
-NULL mysql general_log command_type 5 NULL NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select,insert,update,references
-NULL mysql general_log event_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
-NULL mysql general_log server_id 4 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
-NULL mysql general_log thread_id 3 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL mysql general_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
-NULL mysql help_category help_category_id 1 NULL NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned PRI select,insert,update,references
-NULL mysql help_category name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI select,insert,update,references
-NULL mysql help_category parent_category_id 3 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned select,insert,update,references
-NULL mysql help_category url 4 NULL NO char 128 384 NULL NULL utf8 utf8_general_ci char(128) select,insert,update,references
-NULL mysql help_keyword help_keyword_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
-NULL mysql help_keyword name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI select,insert,update,references
-NULL mysql help_relation help_keyword_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
-NULL mysql help_relation help_topic_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
-NULL mysql help_topic description 4 NULL NO text 65535 65535 NULL NULL utf8 utf8_general_ci text select,insert,update,references
-NULL mysql help_topic example 5 NULL NO text 65535 65535 NULL NULL utf8 utf8_general_ci text select,insert,update,references
-NULL mysql help_topic help_category_id 3 NULL NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned select,insert,update,references
-NULL mysql help_topic help_topic_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
-NULL mysql help_topic name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI select,insert,update,references
-NULL mysql help_topic url 6 NULL NO char 128 384 NULL NULL utf8 utf8_general_ci char(128) select,insert,update,references
-NULL mysql host Alter_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql host Alter_routine_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql host Create_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql host Create_routine_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql host Create_tmp_table_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql host Create_view_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql host Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
-NULL mysql host Delete_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql host Drop_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql host Execute_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql host Grant_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql host Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references
-NULL mysql host Index_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql host Insert_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql host Lock_tables_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql host References_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql host Select_priv 3 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-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 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 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
-NULL mysql proc body_utf8 20 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
-NULL mysql proc character_set_client 17 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) select,insert,update,references
-NULL mysql proc collation_connection 18 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) select,insert,update,references
-NULL mysql proc comment 16 NO char 64 192 NULL NULL utf8 utf8_bin char(64) select,insert,update,references
-NULL mysql proc created 13 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
-NULL mysql proc db 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
-NULL mysql proc db_collation 19 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) select,insert,update,references
-NULL mysql proc definer 12 NO char 77 231 NULL NULL utf8 utf8_bin char(77) select,insert,update,references
-NULL mysql proc is_deterministic 7 NO NO enum 3 9 NULL NULL utf8 utf8_general_ci enum('YES','NO') select,insert,update,references
-NULL mysql proc language 5 SQL NO enum 3 9 NULL NULL utf8 utf8_general_ci enum('SQL') select,insert,update,references
-NULL mysql proc modified 14 0000-00-00 00:00:00 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
-NULL mysql proc name 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI select,insert,update,references
-NULL mysql proc param_list 9 NULL NO blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
-NULL mysql proc returns 10 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
-NULL mysql proc security_type 8 DEFINER NO enum 7 21 NULL NULL utf8 utf8_general_ci enum('INVOKER','DEFINER') select,insert,update,references
-NULL mysql proc specific_name 4 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
-NULL mysql proc sql_data_access 6 CONTAINS_SQL NO enum 17 51 NULL NULL utf8 utf8_general_ci enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA') select,insert,update,references
-NULL mysql proc sql_mode 15 NO set 478 1434 NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') select,insert,update,references
-NULL mysql proc type 3 NULL NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('FUNCTION','PROCEDURE') PRI select,insert,update,references
-NULL mysql procs_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
-NULL mysql procs_priv Grantor 6 NO char 77 231 NULL NULL utf8 utf8_bin char(77) MUL select,insert,update,references
-NULL mysql procs_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references
-NULL mysql procs_priv Proc_priv 7 NO set 27 81 NULL NULL utf8 utf8_general_ci set('Execute','Alter Routine','Grant') select,insert,update,references
-NULL mysql procs_priv Routine_name 4 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI select,insert,update,references
-NULL mysql procs_priv Routine_type 5 NULL NO enum 9 27 NULL NULL utf8 utf8_bin enum('FUNCTION','PROCEDURE') PRI select,insert,update,references
-NULL mysql procs_priv Timestamp 8 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
-NULL mysql procs_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references
-NULL mysql servers Db 3 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
-NULL mysql servers Host 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
-NULL mysql servers Owner 9 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
-NULL mysql servers Password 5 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
-NULL mysql servers Port 6 0 NO int NULL NULL 10 0 NULL NULL int(4) select,insert,update,references
-NULL mysql servers Server_name 1 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI select,insert,update,references
-NULL mysql servers Socket 7 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
-NULL mysql servers Username 4 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
-NULL mysql servers Wrapper 8 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
-NULL mysql slow_log db 7 NULL NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select,insert,update,references
-NULL mysql slow_log insert_id 9 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL mysql slow_log last_insert_id 8 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL mysql slow_log lock_time 4 NULL NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
-NULL mysql slow_log query_time 3 NULL NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
-NULL mysql slow_log rows_examined 6 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL mysql slow_log rows_sent 5 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL mysql slow_log server_id 10 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
-NULL mysql slow_log sql_text 11 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
-NULL mysql slow_log start_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
-NULL mysql slow_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
-NULL mysql tables_priv Column_priv 8 NO set 31 93 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','References') select,insert,update,references
-NULL mysql tables_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
-NULL mysql tables_priv Grantor 5 NO char 77 231 NULL NULL utf8 utf8_bin char(77) MUL select,insert,update,references
-NULL mysql tables_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references
-NULL mysql tables_priv Table_name 4 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
-NULL mysql tables_priv Table_priv 7 NO set 98 294 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') select,insert,update,references
-NULL mysql tables_priv Timestamp 6 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
-NULL mysql tables_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references
-NULL mysql time_zone Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI auto_increment select,insert,update,references
-NULL mysql time_zone Use_leap_seconds 2 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('Y','N') select,insert,update,references
-NULL mysql time_zone_leap_second Correction 2 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL mysql time_zone_leap_second Transition_time 1 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) PRI select,insert,update,references
-NULL mysql time_zone_name Name 1 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI select,insert,update,references
-NULL mysql time_zone_name Time_zone_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
-NULL mysql time_zone_transition Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
-NULL mysql time_zone_transition Transition_time 2 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) PRI select,insert,update,references
-NULL mysql time_zone_transition Transition_type_id 3 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
-NULL mysql time_zone_transition_type Abbreviation 5 NO char 8 24 NULL NULL utf8 utf8_general_ci char(8) select,insert,update,references
-NULL mysql time_zone_transition_type Is_DST 4 0 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned select,insert,update,references
-NULL mysql time_zone_transition_type Offset 3 0 NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL mysql time_zone_transition_type Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
-NULL mysql time_zone_transition_type Transition_type_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
-NULL mysql user Alter_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Alter_routine_priv 28 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Create_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Create_routine_priv 27 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Create_tmp_table_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Create_user_priv 29 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Create_view_priv 25 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Delete_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Drop_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Event_priv 30 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Execute_priv 22 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user File_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Grant_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references
-NULL mysql user Index_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Insert_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Lock_tables_priv 21 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user max_connections 38 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned select,insert,update,references
-NULL mysql user max_questions 36 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned select,insert,update,references
-NULL mysql user max_updates 37 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned select,insert,update,references
-NULL mysql user max_user_connections 39 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned select,insert,update,references
-NULL mysql user Password 3 NO char 41 41 NULL NULL latin1 latin1_bin char(41) select,insert,update,references
-NULL mysql user Process_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user References_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Reload_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Repl_client_priv 24 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Repl_slave_priv 23 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Select_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Show_db_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Show_view_priv 26 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Shutdown_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user ssl_cipher 33 NULL NO blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
-NULL mysql user ssl_type 32 NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED') select,insert,update,references
-NULL mysql user Super_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Trigger_priv 31 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user Update_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql user User 2 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references
-NULL mysql user x509_issuer 34 NULL NO blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
-NULL mysql user x509_subject 35 NULL NO blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
+def mysql columns_priv Column_name 5 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
+def mysql columns_priv Column_priv 7 NO set 31 93 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','References') select,insert,update,references
+def mysql columns_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
+def mysql columns_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references
+def mysql columns_priv Table_name 4 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
+def mysql columns_priv Timestamp 6 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
+def mysql columns_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references
+def mysql db Alter_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql db Alter_routine_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql db Create_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql db Create_routine_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql db Create_tmp_table_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql db Create_view_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql db Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
+def mysql db Delete_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql db Drop_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql db Event_priv 21 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql db Execute_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql db Grant_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql db Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references
+def mysql db Index_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql db Insert_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql db Lock_tables_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql db References_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql db Select_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql db Show_view_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql db Trigger_priv 22 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql db Update_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql db User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references
+def mysql event body 3 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
+def mysql event body_utf8 22 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
+def mysql event character_set_client 19 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) select,insert,update,references
+def mysql event collation_connection 20 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) select,insert,update,references
+def mysql event comment 16 NO char 64 192 NULL NULL utf8 utf8_bin char(64) select,insert,update,references
+def mysql event created 8 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
+def mysql event db 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
+def mysql event db_collation 21 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) select,insert,update,references
+def mysql event definer 4 NO char 77 231 NULL NULL utf8 utf8_bin char(77) select,insert,update,references
+def mysql event ends 12 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
+def mysql event execute_at 5 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
+def mysql event interval_field 7 NULL YES enum 18 54 NULL NULL utf8 utf8_general_ci enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') select,insert,update,references
+def mysql event interval_value 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def mysql event last_executed 10 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
+def mysql event modified 9 0000-00-00 00:00:00 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
+def mysql event name 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI select,insert,update,references
+def mysql event on_completion 14 DROP NO enum 8 24 NULL NULL utf8 utf8_general_ci enum('DROP','PRESERVE') select,insert,update,references
+def mysql event originator 17 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
+def mysql event sql_mode 15 NO set 478 1434 NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') select,insert,update,references
+def mysql event starts 11 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
+def mysql event status 13 ENABLED NO enum 18 54 NULL NULL utf8 utf8_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') select,insert,update,references
+def mysql event time_zone 18 SYSTEM NO char 64 64 NULL NULL latin1 latin1_swedish_ci char(64) select,insert,update,references
+def mysql func dl 3 NO char 128 384 NULL NULL utf8 utf8_bin char(128) select,insert,update,references
+def mysql func name 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
+def mysql func ret 2 0 NO tinyint NULL NULL 3 0 NULL NULL tinyint(1) select,insert,update,references
+def mysql func type 4 NULL NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('function','aggregate') select,insert,update,references
+def mysql general_log argument 6 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
+def mysql general_log command_type 5 NULL NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select,insert,update,references
+def mysql general_log event_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
+def mysql general_log server_id 4 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
+def mysql general_log thread_id 3 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def mysql general_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
+def mysql help_category help_category_id 1 NULL NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned PRI select,insert,update,references
+def mysql help_category name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI select,insert,update,references
+def mysql help_category parent_category_id 3 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned select,insert,update,references
+def mysql help_category url 4 NULL NO char 128 384 NULL NULL utf8 utf8_general_ci char(128) select,insert,update,references
+def mysql help_keyword help_keyword_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
+def mysql help_keyword name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI select,insert,update,references
+def mysql help_relation help_keyword_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
+def mysql help_relation help_topic_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
+def mysql help_topic description 4 NULL NO text 65535 65535 NULL NULL utf8 utf8_general_ci text select,insert,update,references
+def mysql help_topic example 5 NULL NO text 65535 65535 NULL NULL utf8 utf8_general_ci text select,insert,update,references
+def mysql help_topic help_category_id 3 NULL NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned select,insert,update,references
+def mysql help_topic help_topic_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
+def mysql help_topic name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI select,insert,update,references
+def mysql help_topic url 6 NULL NO char 128 384 NULL NULL utf8 utf8_general_ci char(128) select,insert,update,references
+def mysql host Alter_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql host Alter_routine_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql host Create_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql host Create_routine_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql host Create_tmp_table_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql host Create_view_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql host Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
+def mysql host Delete_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql host Drop_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql host Execute_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql host Grant_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql host Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references
+def mysql host Index_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql host Insert_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql host Lock_tables_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql host References_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql host Select_priv 3 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql host Show_view_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql host Trigger_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql host Update_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql ndb_binlog_index deletes 6 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
+def mysql ndb_binlog_index epoch 3 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned PRI select,insert,update,references
+def mysql ndb_binlog_index File 2 NULL NO varchar 255 255 NULL NULL latin1 latin1_swedish_ci varchar(255) select,insert,update,references
+def mysql ndb_binlog_index inserts 4 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
+def mysql ndb_binlog_index Position 1 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
+def mysql ndb_binlog_index schemaops 7 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
+def mysql ndb_binlog_index updates 5 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
+def mysql plugin dl 2 NO varchar 128 384 NULL NULL utf8 utf8_general_ci varchar(128) select,insert,update,references
+def mysql plugin name 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) PRI select,insert,update,references
+def mysql proc body 11 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
+def mysql proc body_utf8 20 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
+def mysql proc character_set_client 17 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) select,insert,update,references
+def mysql proc collation_connection 18 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) select,insert,update,references
+def mysql proc comment 16 NULL NO text 65535 65535 NULL NULL utf8 utf8_bin text select,insert,update,references
+def mysql proc created 13 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
+def mysql proc db 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
+def mysql proc db_collation 19 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) select,insert,update,references
+def mysql proc definer 12 NO char 77 231 NULL NULL utf8 utf8_bin char(77) select,insert,update,references
+def mysql proc is_deterministic 7 NO NO enum 3 9 NULL NULL utf8 utf8_general_ci enum('YES','NO') select,insert,update,references
+def mysql proc language 5 SQL NO enum 3 9 NULL NULL utf8 utf8_general_ci enum('SQL') select,insert,update,references
+def mysql proc modified 14 0000-00-00 00:00:00 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
+def mysql proc name 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI select,insert,update,references
+def mysql proc param_list 9 NULL NO blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
+def mysql proc returns 10 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
+def mysql proc security_type 8 DEFINER NO enum 7 21 NULL NULL utf8 utf8_general_ci enum('INVOKER','DEFINER') select,insert,update,references
+def mysql proc specific_name 4 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
+def mysql proc sql_data_access 6 CONTAINS_SQL NO enum 17 51 NULL NULL utf8 utf8_general_ci enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA') select,insert,update,references
+def mysql proc sql_mode 15 NO set 478 1434 NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') select,insert,update,references
+def mysql proc type 3 NULL NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('FUNCTION','PROCEDURE') PRI select,insert,update,references
+def mysql procs_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
+def mysql procs_priv Grantor 6 NO char 77 231 NULL NULL utf8 utf8_bin char(77) MUL select,insert,update,references
+def mysql procs_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references
+def mysql procs_priv Proc_priv 7 NO set 27 81 NULL NULL utf8 utf8_general_ci set('Execute','Alter Routine','Grant') select,insert,update,references
+def mysql procs_priv Routine_name 4 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI select,insert,update,references
+def mysql procs_priv Routine_type 5 NULL NO enum 9 27 NULL NULL utf8 utf8_bin enum('FUNCTION','PROCEDURE') PRI select,insert,update,references
+def mysql procs_priv Timestamp 8 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
+def mysql procs_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references
+def mysql servers Db 3 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
+def mysql servers Host 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
+def mysql servers Owner 9 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
+def mysql servers Password 5 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
+def mysql servers Port 6 0 NO int NULL NULL 10 0 NULL NULL int(4) select,insert,update,references
+def mysql servers Server_name 1 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI select,insert,update,references
+def mysql servers Socket 7 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
+def mysql servers Username 4 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
+def mysql servers Wrapper 8 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
+def mysql slow_log db 7 NULL NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select,insert,update,references
+def mysql slow_log insert_id 9 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def mysql slow_log last_insert_id 8 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def mysql slow_log lock_time 4 NULL NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
+def mysql slow_log query_time 3 NULL NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
+def mysql slow_log rows_examined 6 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def mysql slow_log rows_sent 5 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def mysql slow_log server_id 10 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
+def mysql slow_log sql_text 11 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
+def mysql slow_log start_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
+def mysql slow_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
+def mysql tables_priv Column_priv 8 NO set 31 93 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','References') select,insert,update,references
+def mysql tables_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
+def mysql tables_priv Grantor 5 NO char 77 231 NULL NULL utf8 utf8_bin char(77) MUL select,insert,update,references
+def mysql tables_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references
+def mysql tables_priv Table_name 4 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
+def mysql tables_priv Table_priv 7 NO set 98 294 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') select,insert,update,references
+def mysql tables_priv Timestamp 6 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
+def mysql tables_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references
+def mysql time_zone Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI auto_increment select,insert,update,references
+def mysql time_zone Use_leap_seconds 2 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('Y','N') select,insert,update,references
+def mysql time_zone_leap_second Correction 2 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def mysql time_zone_leap_second Transition_time 1 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) PRI select,insert,update,references
+def mysql time_zone_name Name 1 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI select,insert,update,references
+def mysql time_zone_name Time_zone_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
+def mysql time_zone_transition Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
+def mysql time_zone_transition Transition_time 2 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) PRI select,insert,update,references
+def mysql time_zone_transition Transition_type_id 3 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
+def mysql time_zone_transition_type Abbreviation 5 NO char 8 24 NULL NULL utf8 utf8_general_ci char(8) select,insert,update,references
+def mysql time_zone_transition_type Is_DST 4 0 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned select,insert,update,references
+def mysql time_zone_transition_type Offset 3 0 NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def mysql time_zone_transition_type Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
+def mysql time_zone_transition_type Transition_type_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
+def mysql user Alter_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Alter_routine_priv 28 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Create_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Create_routine_priv 27 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Create_tablespace_priv 32 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Create_tmp_table_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Create_user_priv 29 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Create_view_priv 25 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Delete_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Drop_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Event_priv 30 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Execute_priv 22 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user File_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Grant_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references
+def mysql user Index_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Insert_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Lock_tables_priv 21 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user max_connections 39 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned select,insert,update,references
+def mysql user max_questions 37 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned select,insert,update,references
+def mysql user max_updates 38 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned select,insert,update,references
+def mysql user max_user_connections 40 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned select,insert,update,references
+def mysql user Password 3 NO char 41 41 NULL NULL latin1 latin1_bin char(41) select,insert,update,references
+def mysql user Process_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user References_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Reload_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Repl_client_priv 24 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Repl_slave_priv 23 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Select_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Show_db_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Show_view_priv 26 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Shutdown_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user ssl_cipher 34 NULL NO blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
+def mysql user ssl_type 33 NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED') select,insert,update,references
+def mysql user Super_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Trigger_priv 31 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user Update_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
+def mysql user User 2 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references
+def mysql user x509_issuer 35 NULL NO blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
+def mysql user x509_subject 36 NULL NO blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
##########################################################################
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
##########################################################################
@@ -233,6 +234,7 @@ COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
1.0000 char latin1 latin1_bin
1.0000 char latin1 latin1_swedish_ci
1.0000 varchar latin1 latin1_swedish_ci
+1.0000 text utf8 utf8_bin
1.0000 mediumtext utf8 utf8_general_ci
1.0000 text utf8 utf8_general_ci
SELECT DISTINCT
@@ -386,8 +388,8 @@ NULL mysql ndb_binlog_index inserts bigint NULL NULL NULL NULL bigint(20) unsign
NULL mysql ndb_binlog_index updates bigint NULL NULL NULL NULL bigint(20) unsigned
NULL mysql ndb_binlog_index deletes bigint NULL NULL NULL NULL bigint(20) unsigned
NULL mysql ndb_binlog_index schemaops bigint NULL NULL NULL NULL bigint(20) unsigned
-3.0000 mysql plugin name char 64 192 utf8 utf8_bin char(64)
-3.0000 mysql plugin dl char 128 384 utf8 utf8_bin char(128)
+3.0000 mysql plugin name varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 mysql plugin dl varchar 128 384 utf8 utf8_general_ci varchar(128)
3.0000 mysql proc db char 64 192 utf8 utf8_bin char(64)
3.0000 mysql proc name char 64 192 utf8 utf8_general_ci char(64)
3.0000 mysql proc type enum 9 27 utf8 utf8_general_ci enum('FUNCTION','PROCEDURE')
@@ -403,7 +405,7 @@ NULL mysql ndb_binlog_index schemaops bigint NULL NULL NULL NULL bigint(20) unsi
NULL mysql proc created timestamp NULL NULL NULL NULL timestamp
NULL mysql proc modified timestamp NULL NULL NULL NULL timestamp
3.0000 mysql proc sql_mode set 478 1434 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH')
-3.0000 mysql proc comment char 64 192 utf8 utf8_bin char(64)
+1.0000 mysql proc comment text 65535 65535 utf8 utf8_bin text
3.0000 mysql proc character_set_client char 32 96 utf8 utf8_bin char(32)
3.0000 mysql proc collation_connection char 32 96 utf8 utf8_bin char(32)
3.0000 mysql proc db_collation char 32 96 utf8 utf8_bin char(32)
@@ -489,6 +491,7 @@ NULL mysql time_zone_transition_type Is_DST tinyint NULL NULL NULL NULL tinyint(
3.0000 mysql user Create_user_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
3.0000 mysql user Event_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
3.0000 mysql user Trigger_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Create_tablespace_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
3.0000 mysql user ssl_type enum 9 27 utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED')
1.0000 mysql user ssl_cipher blob 65535 65535 NULL NULL blob
1.0000 mysql user x509_issuer blob 65535 65535 NULL NULL blob
diff --git a/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result b/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result
index 9c9d3cd26de..7c52358258b 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result
@@ -2,219 +2,220 @@ SELECT * FROM information_schema.columns
WHERE table_schema = 'mysql'
ORDER BY table_schema, table_name, column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
-NULL mysql columns_priv Column_name 5 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
-NULL mysql columns_priv Column_priv 7 NO set 31 93 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','References')
-NULL mysql columns_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
-NULL mysql columns_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
-NULL mysql columns_priv Table_name 4 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
-NULL mysql columns_priv Timestamp 6 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
-NULL mysql columns_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
-NULL mysql db Alter_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql db Alter_routine_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql db Create_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql db Create_routine_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql db Create_tmp_table_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql db Create_view_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql db Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
-NULL mysql db Delete_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql db Drop_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql db Event_priv 21 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql db Execute_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql db Grant_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql db Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
-NULL mysql db Index_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql db Insert_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql db Lock_tables_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql db References_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql db Select_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql db Show_view_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql db Trigger_priv 22 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql db Update_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql db User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
-NULL mysql event body 3 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
-NULL mysql event body_utf8 22 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
-NULL mysql event character_set_client 19 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32)
-NULL mysql event collation_connection 20 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32)
-NULL mysql event comment 16 NO char 64 192 NULL NULL utf8 utf8_bin char(64)
-NULL mysql event created 8 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
-NULL mysql event db 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
-NULL mysql event db_collation 21 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32)
-NULL mysql event definer 4 NO char 77 231 NULL NULL utf8 utf8_bin char(77)
-NULL mysql event ends 12 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL mysql event execute_at 5 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL mysql event interval_field 7 NULL YES enum 18 54 NULL NULL utf8 utf8_general_ci enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND')
-NULL mysql event interval_value 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
-NULL mysql event last_executed 10 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL mysql event modified 9 0000-00-00 00:00:00 NO timestamp NULL NULL NULL NULL NULL NULL timestamp
-NULL mysql event name 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI
-NULL mysql event on_completion 14 DROP NO enum 8 24 NULL NULL utf8 utf8_general_ci enum('DROP','PRESERVE')
-NULL mysql event originator 17 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned
-NULL mysql event sql_mode 15 NO set 478 1434 NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH')
-NULL mysql event starts 11 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
-NULL mysql event status 13 ENABLED NO enum 18 54 NULL NULL utf8 utf8_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED')
-NULL mysql event time_zone 18 SYSTEM NO char 64 64 NULL NULL latin1 latin1_swedish_ci char(64)
-NULL mysql func dl 3 NO char 128 384 NULL NULL utf8 utf8_bin char(128)
-NULL mysql func name 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
-NULL mysql func ret 2 0 NO tinyint NULL NULL 3 0 NULL NULL tinyint(1)
-NULL mysql func type 4 NULL NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('function','aggregate')
-NULL mysql general_log argument 6 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext
-NULL mysql general_log command_type 5 NULL NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
-NULL mysql general_log event_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
-NULL mysql general_log server_id 4 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned
-NULL mysql general_log thread_id 3 NULL NO int NULL NULL 10 0 NULL NULL int(11)
-NULL mysql general_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext
-NULL mysql help_category help_category_id 1 NULL NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned PRI
-NULL mysql help_category name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI
-NULL mysql help_category parent_category_id 3 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned
-NULL mysql help_category url 4 NULL NO char 128 384 NULL NULL utf8 utf8_general_ci char(128)
-NULL mysql help_keyword help_keyword_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
-NULL mysql help_keyword name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI
-NULL mysql help_relation help_keyword_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
-NULL mysql help_relation help_topic_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
-NULL mysql help_topic description 4 NULL NO text 65535 65535 NULL NULL utf8 utf8_general_ci text
-NULL mysql help_topic example 5 NULL NO text 65535 65535 NULL NULL utf8 utf8_general_ci text
-NULL mysql help_topic help_category_id 3 NULL NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned
-NULL mysql help_topic help_topic_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
-NULL mysql help_topic name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI
-NULL mysql help_topic url 6 NULL NO char 128 384 NULL NULL utf8 utf8_general_ci char(128)
-NULL mysql host Alter_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql host Alter_routine_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql host Create_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql host Create_routine_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql host Create_tmp_table_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql host Create_view_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql host Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
-NULL mysql host Delete_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql host Drop_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql host Execute_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql host Grant_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql host Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
-NULL mysql host Index_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql host Insert_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql host Lock_tables_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql host References_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql host Select_priv 3 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql host Show_view_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql host Trigger_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql host Update_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql ndb_binlog_index deletes 6 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned
-NULL mysql ndb_binlog_index epoch 3 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned PRI
-NULL mysql ndb_binlog_index File 2 NULL NO varchar 255 255 NULL NULL latin1 latin1_swedish_ci varchar(255)
-NULL mysql ndb_binlog_index inserts 4 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned
-NULL mysql ndb_binlog_index Position 1 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned
-NULL mysql ndb_binlog_index schemaops 7 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned
-NULL mysql ndb_binlog_index updates 5 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned
-NULL mysql plugin dl 2 NO char 128 384 NULL NULL utf8 utf8_bin char(128)
-NULL mysql plugin name 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
-NULL mysql proc body 11 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
-NULL mysql proc body_utf8 20 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
-NULL mysql proc character_set_client 17 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32)
-NULL mysql proc collation_connection 18 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32)
-NULL mysql proc comment 16 NO char 64 192 NULL NULL utf8 utf8_bin char(64)
-NULL mysql proc created 13 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
-NULL mysql proc db 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
-NULL mysql proc db_collation 19 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32)
-NULL mysql proc definer 12 NO char 77 231 NULL NULL utf8 utf8_bin char(77)
-NULL mysql proc is_deterministic 7 NO NO enum 3 9 NULL NULL utf8 utf8_general_ci enum('YES','NO')
-NULL mysql proc language 5 SQL NO enum 3 9 NULL NULL utf8 utf8_general_ci enum('SQL')
-NULL mysql proc modified 14 0000-00-00 00:00:00 NO timestamp NULL NULL NULL NULL NULL NULL timestamp
-NULL mysql proc name 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI
-NULL mysql proc param_list 9 NULL NO blob 65535 65535 NULL NULL NULL NULL blob
-NULL mysql proc returns 10 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
-NULL mysql proc security_type 8 DEFINER NO enum 7 21 NULL NULL utf8 utf8_general_ci enum('INVOKER','DEFINER')
-NULL mysql proc specific_name 4 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
-NULL mysql proc sql_data_access 6 CONTAINS_SQL NO enum 17 51 NULL NULL utf8 utf8_general_ci enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA')
-NULL mysql proc sql_mode 15 NO set 478 1434 NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH')
-NULL mysql proc type 3 NULL NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('FUNCTION','PROCEDURE') PRI
-NULL mysql procs_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
-NULL mysql procs_priv Grantor 6 NO char 77 231 NULL NULL utf8 utf8_bin char(77) MUL
-NULL mysql procs_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
-NULL mysql procs_priv Proc_priv 7 NO set 27 81 NULL NULL utf8 utf8_general_ci set('Execute','Alter Routine','Grant')
-NULL mysql procs_priv Routine_name 4 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
-NULL mysql procs_priv Routine_type 5 NULL NO enum 9 27 NULL NULL utf8 utf8_bin enum('FUNCTION','PROCEDURE') PRI
-NULL mysql procs_priv Timestamp 8 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
-NULL mysql procs_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
-NULL mysql servers Db 3 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
-NULL mysql servers Host 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
-NULL mysql servers Owner 9 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
-NULL mysql servers Password 5 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
-NULL mysql servers Port 6 0 NO int NULL NULL 10 0 NULL NULL int(4)
-NULL mysql servers Server_name 1 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI
-NULL mysql servers Socket 7 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
-NULL mysql servers Username 4 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
-NULL mysql servers Wrapper 8 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
-NULL mysql slow_log db 7 NULL NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
-NULL mysql slow_log insert_id 9 NULL NO int NULL NULL 10 0 NULL NULL int(11)
-NULL mysql slow_log last_insert_id 8 NULL NO int NULL NULL 10 0 NULL NULL int(11)
-NULL mysql slow_log lock_time 4 NULL NO time NULL NULL NULL NULL NULL NULL time
-NULL mysql slow_log query_time 3 NULL NO time NULL NULL NULL NULL NULL NULL time
-NULL mysql slow_log rows_examined 6 NULL NO int NULL NULL 10 0 NULL NULL int(11)
-NULL mysql slow_log rows_sent 5 NULL NO int NULL NULL 10 0 NULL NULL int(11)
-NULL mysql slow_log server_id 10 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned
-NULL mysql slow_log sql_text 11 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext
-NULL mysql slow_log start_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
-NULL mysql slow_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext
-NULL mysql tables_priv Column_priv 8 NO set 31 93 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','References')
-NULL mysql tables_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
-NULL mysql tables_priv Grantor 5 NO char 77 231 NULL NULL utf8 utf8_bin char(77) MUL
-NULL mysql tables_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
-NULL mysql tables_priv Table_name 4 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
-NULL mysql tables_priv Table_priv 7 NO set 98 294 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger')
-NULL mysql tables_priv Timestamp 6 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
-NULL mysql tables_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
-NULL mysql time_zone Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI auto_increment
-NULL mysql time_zone Use_leap_seconds 2 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('Y','N')
-NULL mysql time_zone_leap_second Correction 2 NULL NO int NULL NULL 10 0 NULL NULL int(11)
-NULL mysql time_zone_leap_second Transition_time 1 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) PRI
-NULL mysql time_zone_name Name 1 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI
-NULL mysql time_zone_name Time_zone_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned
-NULL mysql time_zone_transition Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
-NULL mysql time_zone_transition Transition_time 2 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) PRI
-NULL mysql time_zone_transition Transition_type_id 3 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned
-NULL mysql time_zone_transition_type Abbreviation 5 NO char 8 24 NULL NULL utf8 utf8_general_ci char(8)
-NULL mysql time_zone_transition_type Is_DST 4 0 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned
-NULL mysql time_zone_transition_type Offset 3 0 NO int NULL NULL 10 0 NULL NULL int(11)
-NULL mysql time_zone_transition_type Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
-NULL mysql time_zone_transition_type Transition_type_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
-NULL mysql user Alter_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Alter_routine_priv 28 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Create_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Create_routine_priv 27 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Create_tmp_table_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Create_user_priv 29 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Create_view_priv 25 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Delete_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Drop_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Event_priv 30 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Execute_priv 22 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user File_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Grant_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
-NULL mysql user Index_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Insert_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Lock_tables_priv 21 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user max_connections 38 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned
-NULL mysql user max_questions 36 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned
-NULL mysql user max_updates 37 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned
-NULL mysql user max_user_connections 39 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned
-NULL mysql user Password 3 NO char 41 41 NULL NULL latin1 latin1_bin char(41)
-NULL mysql user Process_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user References_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Reload_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Repl_client_priv 24 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Repl_slave_priv 23 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Select_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Show_db_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Show_view_priv 26 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Shutdown_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user ssl_cipher 33 NULL NO blob 65535 65535 NULL NULL NULL NULL blob
-NULL mysql user ssl_type 32 NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED')
-NULL mysql user Super_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Trigger_priv 31 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user Update_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
-NULL mysql user User 2 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
-NULL mysql user x509_issuer 34 NULL NO blob 65535 65535 NULL NULL NULL NULL blob
-NULL mysql user x509_subject 35 NULL NO blob 65535 65535 NULL NULL NULL NULL blob
+def mysql columns_priv Column_name 5 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+def mysql columns_priv Column_priv 7 NO set 31 93 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','References')
+def mysql columns_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+def mysql columns_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
+def mysql columns_priv Table_name 4 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+def mysql columns_priv Timestamp 6 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
+def mysql columns_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
+def mysql db Alter_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql db Alter_routine_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql db Create_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql db Create_routine_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql db Create_tmp_table_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql db Create_view_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql db Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+def mysql db Delete_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql db Drop_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql db Event_priv 21 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql db Execute_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql db Grant_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql db Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
+def mysql db Index_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql db Insert_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql db Lock_tables_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql db References_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql db Select_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql db Show_view_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql db Trigger_priv 22 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql db Update_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql db User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
+def mysql event body 3 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
+def mysql event body_utf8 22 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
+def mysql event character_set_client 19 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32)
+def mysql event collation_connection 20 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32)
+def mysql event comment 16 NO char 64 192 NULL NULL utf8 utf8_bin char(64)
+def mysql event created 8 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
+def mysql event db 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+def mysql event db_collation 21 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32)
+def mysql event definer 4 NO char 77 231 NULL NULL utf8 utf8_bin char(77)
+def mysql event ends 12 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def mysql event execute_at 5 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def mysql event interval_field 7 NULL YES enum 18 54 NULL NULL utf8 utf8_general_ci enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND')
+def mysql event interval_value 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+def mysql event last_executed 10 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def mysql event modified 9 0000-00-00 00:00:00 NO timestamp NULL NULL NULL NULL NULL NULL timestamp
+def mysql event name 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI
+def mysql event on_completion 14 DROP NO enum 8 24 NULL NULL utf8 utf8_general_ci enum('DROP','PRESERVE')
+def mysql event originator 17 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned
+def mysql event sql_mode 15 NO set 478 1434 NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH')
+def mysql event starts 11 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+def mysql event status 13 ENABLED NO enum 18 54 NULL NULL utf8 utf8_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED')
+def mysql event time_zone 18 SYSTEM NO char 64 64 NULL NULL latin1 latin1_swedish_ci char(64)
+def mysql func dl 3 NO char 128 384 NULL NULL utf8 utf8_bin char(128)
+def mysql func name 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+def mysql func ret 2 0 NO tinyint NULL NULL 3 0 NULL NULL tinyint(1)
+def mysql func type 4 NULL NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('function','aggregate')
+def mysql general_log argument 6 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext
+def mysql general_log command_type 5 NULL NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+def mysql general_log event_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
+def mysql general_log server_id 4 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned
+def mysql general_log thread_id 3 NULL NO int NULL NULL 10 0 NULL NULL int(11)
+def mysql general_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext
+def mysql help_category help_category_id 1 NULL NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned PRI
+def mysql help_category name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI
+def mysql help_category parent_category_id 3 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned
+def mysql help_category url 4 NULL NO char 128 384 NULL NULL utf8 utf8_general_ci char(128)
+def mysql help_keyword help_keyword_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
+def mysql help_keyword name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI
+def mysql help_relation help_keyword_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
+def mysql help_relation help_topic_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
+def mysql help_topic description 4 NULL NO text 65535 65535 NULL NULL utf8 utf8_general_ci text
+def mysql help_topic example 5 NULL NO text 65535 65535 NULL NULL utf8 utf8_general_ci text
+def mysql help_topic help_category_id 3 NULL NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned
+def mysql help_topic help_topic_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
+def mysql help_topic name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI
+def mysql help_topic url 6 NULL NO char 128 384 NULL NULL utf8 utf8_general_ci char(128)
+def mysql host Alter_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql host Alter_routine_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql host Create_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql host Create_routine_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql host Create_tmp_table_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql host Create_view_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql host Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+def mysql host Delete_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql host Drop_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql host Execute_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql host Grant_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql host Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
+def mysql host Index_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql host Insert_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql host Lock_tables_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql host References_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql host Select_priv 3 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql host Show_view_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql host Trigger_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql host Update_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql ndb_binlog_index deletes 6 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned
+def mysql ndb_binlog_index epoch 3 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned PRI
+def mysql ndb_binlog_index File 2 NULL NO varchar 255 255 NULL NULL latin1 latin1_swedish_ci varchar(255)
+def mysql ndb_binlog_index inserts 4 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned
+def mysql ndb_binlog_index Position 1 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned
+def mysql ndb_binlog_index schemaops 7 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned
+def mysql ndb_binlog_index updates 5 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned
+def mysql plugin dl 2 NO varchar 128 384 NULL NULL utf8 utf8_general_ci varchar(128)
+def mysql plugin name 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) PRI
+def mysql proc body 11 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
+def mysql proc body_utf8 20 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
+def mysql proc character_set_client 17 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32)
+def mysql proc collation_connection 18 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32)
+def mysql proc comment 16 NULL NO text 65535 65535 NULL NULL utf8 utf8_bin text
+def mysql proc created 13 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
+def mysql proc db 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+def mysql proc db_collation 19 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32)
+def mysql proc definer 12 NO char 77 231 NULL NULL utf8 utf8_bin char(77)
+def mysql proc is_deterministic 7 NO NO enum 3 9 NULL NULL utf8 utf8_general_ci enum('YES','NO')
+def mysql proc language 5 SQL NO enum 3 9 NULL NULL utf8 utf8_general_ci enum('SQL')
+def mysql proc modified 14 0000-00-00 00:00:00 NO timestamp NULL NULL NULL NULL NULL NULL timestamp
+def mysql proc name 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI
+def mysql proc param_list 9 NULL NO blob 65535 65535 NULL NULL NULL NULL blob
+def mysql proc returns 10 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
+def mysql proc security_type 8 DEFINER NO enum 7 21 NULL NULL utf8 utf8_general_ci enum('INVOKER','DEFINER')
+def mysql proc specific_name 4 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
+def mysql proc sql_data_access 6 CONTAINS_SQL NO enum 17 51 NULL NULL utf8 utf8_general_ci enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA')
+def mysql proc sql_mode 15 NO set 478 1434 NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH')
+def mysql proc type 3 NULL NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('FUNCTION','PROCEDURE') PRI
+def mysql procs_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+def mysql procs_priv Grantor 6 NO char 77 231 NULL NULL utf8 utf8_bin char(77) MUL
+def mysql procs_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
+def mysql procs_priv Proc_priv 7 NO set 27 81 NULL NULL utf8 utf8_general_ci set('Execute','Alter Routine','Grant')
+def mysql procs_priv Routine_name 4 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI
+def mysql procs_priv Routine_type 5 NULL NO enum 9 27 NULL NULL utf8 utf8_bin enum('FUNCTION','PROCEDURE') PRI
+def mysql procs_priv Timestamp 8 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
+def mysql procs_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
+def mysql servers Db 3 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
+def mysql servers Host 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
+def mysql servers Owner 9 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
+def mysql servers Password 5 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
+def mysql servers Port 6 0 NO int NULL NULL 10 0 NULL NULL int(4)
+def mysql servers Server_name 1 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI
+def mysql servers Socket 7 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
+def mysql servers Username 4 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
+def mysql servers Wrapper 8 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
+def mysql slow_log db 7 NULL NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+def mysql slow_log insert_id 9 NULL NO int NULL NULL 10 0 NULL NULL int(11)
+def mysql slow_log last_insert_id 8 NULL NO int NULL NULL 10 0 NULL NULL int(11)
+def mysql slow_log lock_time 4 NULL NO time NULL NULL NULL NULL NULL NULL time
+def mysql slow_log query_time 3 NULL NO time NULL NULL NULL NULL NULL NULL time
+def mysql slow_log rows_examined 6 NULL NO int NULL NULL 10 0 NULL NULL int(11)
+def mysql slow_log rows_sent 5 NULL NO int NULL NULL 10 0 NULL NULL int(11)
+def mysql slow_log server_id 10 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned
+def mysql slow_log sql_text 11 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext
+def mysql slow_log start_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
+def mysql slow_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext
+def mysql tables_priv Column_priv 8 NO set 31 93 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','References')
+def mysql tables_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+def mysql tables_priv Grantor 5 NO char 77 231 NULL NULL utf8 utf8_bin char(77) MUL
+def mysql tables_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
+def mysql tables_priv Table_name 4 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+def mysql tables_priv Table_priv 7 NO set 98 294 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger')
+def mysql tables_priv Timestamp 6 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
+def mysql tables_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
+def mysql time_zone Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI auto_increment
+def mysql time_zone Use_leap_seconds 2 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('Y','N')
+def mysql time_zone_leap_second Correction 2 NULL NO int NULL NULL 10 0 NULL NULL int(11)
+def mysql time_zone_leap_second Transition_time 1 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) PRI
+def mysql time_zone_name Name 1 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI
+def mysql time_zone_name Time_zone_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned
+def mysql time_zone_transition Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
+def mysql time_zone_transition Transition_time 2 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) PRI
+def mysql time_zone_transition Transition_type_id 3 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned
+def mysql time_zone_transition_type Abbreviation 5 NO char 8 24 NULL NULL utf8 utf8_general_ci char(8)
+def mysql time_zone_transition_type Is_DST 4 0 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned
+def mysql time_zone_transition_type Offset 3 0 NO int NULL NULL 10 0 NULL NULL int(11)
+def mysql time_zone_transition_type Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
+def mysql time_zone_transition_type Transition_type_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
+def mysql user Alter_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Alter_routine_priv 28 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Create_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Create_routine_priv 27 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Create_tablespace_priv 32 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Create_tmp_table_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Create_user_priv 29 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Create_view_priv 25 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Delete_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Drop_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Event_priv 30 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Execute_priv 22 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user File_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Grant_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
+def mysql user Index_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Insert_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Lock_tables_priv 21 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user max_connections 39 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned
+def mysql user max_questions 37 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned
+def mysql user max_updates 38 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned
+def mysql user max_user_connections 40 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned
+def mysql user Password 3 NO char 41 41 NULL NULL latin1 latin1_bin char(41)
+def mysql user Process_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user References_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Reload_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Repl_client_priv 24 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Repl_slave_priv 23 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Select_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Show_db_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Show_view_priv 26 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Shutdown_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user ssl_cipher 34 NULL NO blob 65535 65535 NULL NULL NULL NULL blob
+def mysql user ssl_type 33 NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED')
+def mysql user Super_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Trigger_priv 31 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user Update_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+def mysql user User 2 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
+def mysql user x509_issuer 35 NULL NO blob 65535 65535 NULL NULL NULL NULL blob
+def mysql user x509_subject 36 NULL NO blob 65535 65535 NULL NULL NULL NULL blob
##########################################################################
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
##########################################################################
@@ -233,6 +234,7 @@ COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
1.0000 char latin1 latin1_bin
1.0000 char latin1 latin1_swedish_ci
1.0000 varchar latin1 latin1_swedish_ci
+1.0000 text utf8 utf8_bin
1.0000 mediumtext utf8 utf8_general_ci
1.0000 text utf8 utf8_general_ci
SELECT DISTINCT
@@ -386,8 +388,8 @@ NULL mysql ndb_binlog_index inserts bigint NULL NULL NULL NULL bigint(20) unsign
NULL mysql ndb_binlog_index updates bigint NULL NULL NULL NULL bigint(20) unsigned
NULL mysql ndb_binlog_index deletes bigint NULL NULL NULL NULL bigint(20) unsigned
NULL mysql ndb_binlog_index schemaops bigint NULL NULL NULL NULL bigint(20) unsigned
-3.0000 mysql plugin name char 64 192 utf8 utf8_bin char(64)
-3.0000 mysql plugin dl char 128 384 utf8 utf8_bin char(128)
+3.0000 mysql plugin name varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 mysql plugin dl varchar 128 384 utf8 utf8_general_ci varchar(128)
3.0000 mysql proc db char 64 192 utf8 utf8_bin char(64)
3.0000 mysql proc name char 64 192 utf8 utf8_general_ci char(64)
3.0000 mysql proc type enum 9 27 utf8 utf8_general_ci enum('FUNCTION','PROCEDURE')
@@ -403,7 +405,7 @@ NULL mysql ndb_binlog_index schemaops bigint NULL NULL NULL NULL bigint(20) unsi
NULL mysql proc created timestamp NULL NULL NULL NULL timestamp
NULL mysql proc modified timestamp NULL NULL NULL NULL timestamp
3.0000 mysql proc sql_mode set 478 1434 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH')
-3.0000 mysql proc comment char 64 192 utf8 utf8_bin char(64)
+1.0000 mysql proc comment text 65535 65535 utf8 utf8_bin text
3.0000 mysql proc character_set_client char 32 96 utf8 utf8_bin char(32)
3.0000 mysql proc collation_connection char 32 96 utf8 utf8_bin char(32)
3.0000 mysql proc db_collation char 32 96 utf8 utf8_bin char(32)
@@ -411,7 +413,7 @@ NULL mysql proc modified timestamp NULL NULL NULL NULL timestamp
3.0000 mysql procs_priv Host char 60 180 utf8 utf8_bin char(60)
3.0000 mysql procs_priv Db char 64 192 utf8 utf8_bin char(64)
3.0000 mysql procs_priv User char 16 48 utf8 utf8_bin char(16)
-3.0000 mysql procs_priv Routine_name char 64 192 utf8 utf8_bin char(64)
+3.0000 mysql procs_priv Routine_name char 64 192 utf8 utf8_general_ci char(64)
3.0000 mysql procs_priv Routine_type enum 9 27 utf8 utf8_bin enum('FUNCTION','PROCEDURE')
3.0000 mysql procs_priv Grantor char 77 231 utf8 utf8_bin char(77)
3.0000 mysql procs_priv Proc_priv set 27 81 utf8 utf8_general_ci set('Execute','Alter Routine','Grant')
@@ -489,6 +491,7 @@ NULL mysql time_zone_transition_type Is_DST tinyint NULL NULL NULL NULL tinyint(
3.0000 mysql user Create_user_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
3.0000 mysql user Event_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
3.0000 mysql user Trigger_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Create_tablespace_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
3.0000 mysql user ssl_type enum 9 27 utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED')
1.0000 mysql user ssl_cipher blob 65535 65535 NULL NULL blob
1.0000 mysql user x509_issuer blob 65535 65535 NULL NULL blob
diff --git a/mysql-test/suite/funcs_1/r/is_columns_ndb.result b/mysql-test/suite/funcs_1/r/is_columns_ndb.result
index dcaceec337e..8a1691ec7d2 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_ndb.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_ndb.result
@@ -63,56 +63,56 @@ SELECT * FROM information_schema.columns
WHERE table_schema LIKE 'test%'
ORDER BY table_schema, table_name, column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
-NULL test t1 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t1 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t1 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t1 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t1 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t1 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t10 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t10 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t10 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t10 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t10 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t10 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t11 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t11 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t11 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t11 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t11 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t11 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t2 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t2 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t2 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t2 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t2 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t2 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t3 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t3 f2 2 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t3 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t4 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t4 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t4 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t4 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t4 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t4 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t7 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t7 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t7 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t7 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t8 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test t8 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t8 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test t8 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t9 f1 1 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test t9 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test t9 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test4 t6 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
-NULL test4 t6 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test4 t6 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
-NULL test4 t6 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
-NULL test4 t6 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
-NULL test4 t6 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t1 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t1 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t1 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t1 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t1 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t1 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t10 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t10 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t10 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t10 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t10 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t10 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t11 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t11 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t11 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t11 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t11 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t11 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t2 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t2 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t2 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t2 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t2 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t2 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t3 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t3 f2 2 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t3 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t4 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t4 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t4 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t4 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t4 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t4 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t7 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t7 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t7 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t7 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t8 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test t8 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t8 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test t8 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t9 f1 1 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test t9 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test t9 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test4 t6 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
+def test4 t6 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test4 t6 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
+def test4 t6 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
+def test4 t6 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
+def test4 t6 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
##########################################################################
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
##########################################################################
diff --git a/mysql-test/suite/funcs_1/r/is_events.result b/mysql-test/suite/funcs_1/r/is_events.result
index 6dfe5899bf4..1efab272919 100644
--- a/mysql-test/suite/funcs_1/r/is_events.result
+++ b/mysql-test/suite/funcs_1/r/is_events.result
@@ -28,7 +28,7 @@ DROP FUNCTION test.f1;
#########################################################################
DESCRIBE information_schema.EVENTS;
Field Type Null Key Default Extra
-EVENT_CATALOG varchar(64) YES NULL
+EVENT_CATALOG varchar(64) NO
EVENT_SCHEMA varchar(64) NO
EVENT_NAME varchar(64) NO
DEFINER varchar(77) NO
@@ -55,7 +55,7 @@ DATABASE_COLLATION varchar(32) NO
SHOW CREATE TABLE information_schema.EVENTS;
Table Create Table
EVENTS CREATE TEMPORARY TABLE `EVENTS` (
- `EVENT_CATALOG` varchar(64) DEFAULT NULL,
+ `EVENT_CATALOG` varchar(64) NOT NULL DEFAULT '',
`EVENT_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`EVENT_NAME` varchar(64) NOT NULL DEFAULT '',
`DEFINER` varchar(77) NOT NULL DEFAULT '',
@@ -82,7 +82,7 @@ EVENTS CREATE TEMPORARY TABLE `EVENTS` (
) ENGINE=MyISAM DEFAULT CHARSET=utf8
SHOW COLUMNS FROM information_schema.EVENTS;
Field Type Null Key Default Extra
-EVENT_CATALOG varchar(64) YES NULL
+EVENT_CATALOG varchar(64) NO
EVENT_SCHEMA varchar(64) NO
EVENT_NAME varchar(64) NO
DEFINER varchar(77) NO
diff --git a/mysql-test/suite/funcs_1/r/is_key_column_usage.result b/mysql-test/suite/funcs_1/r/is_key_column_usage.result
index 2b223d9b34f..a81452b7927 100644
--- a/mysql-test/suite/funcs_1/r/is_key_column_usage.result
+++ b/mysql-test/suite/funcs_1/r/is_key_column_usage.result
@@ -28,10 +28,10 @@ DROP FUNCTION test.f1;
#########################################################################
DESCRIBE information_schema.KEY_COLUMN_USAGE;
Field Type Null Key Default Extra
-CONSTRAINT_CATALOG varchar(512) YES NULL
+CONSTRAINT_CATALOG varchar(512) NO
CONSTRAINT_SCHEMA varchar(64) NO
CONSTRAINT_NAME varchar(64) NO
-TABLE_CATALOG varchar(512) YES NULL
+TABLE_CATALOG varchar(512) NO
TABLE_SCHEMA varchar(64) NO
TABLE_NAME varchar(64) NO
COLUMN_NAME varchar(64) NO
@@ -43,10 +43,10 @@ REFERENCED_COLUMN_NAME varchar(64) YES NULL
SHOW CREATE TABLE information_schema.KEY_COLUMN_USAGE;
Table Create Table
KEY_COLUMN_USAGE CREATE TEMPORARY TABLE `KEY_COLUMN_USAGE` (
- `CONSTRAINT_CATALOG` varchar(512) DEFAULT NULL,
+ `CONSTRAINT_CATALOG` varchar(512) NOT NULL DEFAULT '',
`CONSTRAINT_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`CONSTRAINT_NAME` varchar(64) NOT NULL DEFAULT '',
- `TABLE_CATALOG` varchar(512) DEFAULT NULL,
+ `TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
`COLUMN_NAME` varchar(64) NOT NULL DEFAULT '',
@@ -58,10 +58,10 @@ KEY_COLUMN_USAGE CREATE TEMPORARY TABLE `KEY_COLUMN_USAGE` (
) ENGINE=MEMORY DEFAULT CHARSET=utf8
SHOW COLUMNS FROM information_schema.KEY_COLUMN_USAGE;
Field Type Null Key Default Extra
-CONSTRAINT_CATALOG varchar(512) YES NULL
+CONSTRAINT_CATALOG varchar(512) NO
CONSTRAINT_SCHEMA varchar(64) NO
CONSTRAINT_NAME varchar(64) NO
-TABLE_CATALOG varchar(512) YES NULL
+TABLE_CATALOG varchar(512) NO
TABLE_SCHEMA varchar(64) NO
TABLE_NAME varchar(64) NO
COLUMN_NAME varchar(64) NO
@@ -75,6 +75,51 @@ table_schema, table_name, column_name
FROM information_schema.key_column_usage
WHERE constraint_catalog IS NOT NULL OR table_catalog IS NOT NULL;
constraint_catalog constraint_schema constraint_name table_catalog table_schema table_name column_name
+def mysql PRIMARY def mysql columns_priv Host
+def mysql PRIMARY def mysql columns_priv Db
+def mysql PRIMARY def mysql columns_priv User
+def mysql PRIMARY def mysql columns_priv Table_name
+def mysql PRIMARY def mysql columns_priv Column_name
+def mysql PRIMARY def mysql db Host
+def mysql PRIMARY def mysql db Db
+def mysql PRIMARY def mysql db User
+def mysql PRIMARY def mysql event db
+def mysql PRIMARY def mysql event name
+def mysql PRIMARY def mysql func name
+def mysql PRIMARY def mysql help_category help_category_id
+def mysql name def mysql help_category name
+def mysql PRIMARY def mysql help_keyword help_keyword_id
+def mysql name def mysql help_keyword name
+def mysql PRIMARY def mysql help_relation help_keyword_id
+def mysql PRIMARY def mysql help_relation help_topic_id
+def mysql PRIMARY def mysql help_topic help_topic_id
+def mysql name def mysql help_topic name
+def mysql PRIMARY def mysql host Host
+def mysql PRIMARY def mysql host Db
+def mysql PRIMARY def mysql ndb_binlog_index epoch
+def mysql PRIMARY def mysql plugin name
+def mysql PRIMARY def mysql proc db
+def mysql PRIMARY def mysql proc name
+def mysql PRIMARY def mysql proc type
+def mysql PRIMARY def mysql procs_priv Host
+def mysql PRIMARY def mysql procs_priv Db
+def mysql PRIMARY def mysql procs_priv User
+def mysql PRIMARY def mysql procs_priv Routine_name
+def mysql PRIMARY def mysql procs_priv Routine_type
+def mysql PRIMARY def mysql servers Server_name
+def mysql PRIMARY def mysql tables_priv Host
+def mysql PRIMARY def mysql tables_priv Db
+def mysql PRIMARY def mysql tables_priv User
+def mysql PRIMARY def mysql tables_priv Table_name
+def mysql PRIMARY def mysql time_zone Time_zone_id
+def mysql PRIMARY def mysql time_zone_leap_second Transition_time
+def mysql PRIMARY def mysql time_zone_name Name
+def mysql PRIMARY def mysql time_zone_transition Time_zone_id
+def mysql PRIMARY def mysql time_zone_transition Transition_time
+def mysql PRIMARY def mysql time_zone_transition_type Time_zone_id
+def mysql PRIMARY def mysql time_zone_transition_type Transition_type_id
+def mysql PRIMARY def mysql user Host
+def mysql PRIMARY def mysql user User
########################################################################################
# Testcase 3.2.7.2 + 3.2.7.3: INFORMATION_SCHEMA.KEY_COLUMN_USAGE accessible information
########################################################################################
@@ -100,22 +145,22 @@ WHERE table_name LIKE 't1_%'
ORDER BY constraint_catalog, constraint_schema, constraint_name,
table_catalog, table_schema, table_name, ordinal_position;
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
-NULL db_datadict PRIMARY NULL db_datadict t1_1 f1 1 NULL NULL NULL NULL
-NULL db_datadict PRIMARY NULL db_datadict t1_2 f1 1 NULL NULL NULL NULL
+def db_datadict PRIMARY def db_datadict t1_1 f1 1 NULL NULL NULL NULL
+def db_datadict PRIMARY def db_datadict t1_2 f1 1 NULL NULL NULL NULL
# Establish connection testuser1 (user=testuser1)
SELECT * FROM information_schema.key_column_usage
WHERE table_name LIKE 't1_%'
ORDER BY constraint_catalog, constraint_schema, constraint_name,
table_catalog, table_schema, table_name, ordinal_position;
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
-NULL db_datadict PRIMARY NULL db_datadict t1_1 f1 1 NULL NULL NULL NULL
+def db_datadict PRIMARY def db_datadict t1_1 f1 1 NULL NULL NULL NULL
# Establish connection testuser2 (user=testuser2)
SELECT * FROM information_schema.key_column_usage
WHERE table_name LIKE 't1_%'
ORDER BY constraint_catalog, constraint_schema, constraint_name,
table_catalog, table_schema, table_name, ordinal_position;
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
-NULL db_datadict PRIMARY NULL db_datadict t1_2 f1 1 NULL NULL NULL NULL
+def db_datadict PRIMARY def db_datadict t1_2 f1 1 NULL NULL NULL NULL
# Switch to connection default and close connections testuser1, testuser2
DROP USER 'testuser1'@'localhost';
DROP USER 'testuser2'@'localhost';
@@ -137,10 +182,10 @@ DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
ENGINE = <engine_type>;
SELECT * FROM information_schema.key_column_usage
WHERE table_name = 't1_my_table';
-CONSTRAINT_CATALOG NULL
+CONSTRAINT_CATALOG def
CONSTRAINT_SCHEMA test
CONSTRAINT_NAME PRIMARY
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test
TABLE_NAME t1_my_table
COLUMN_NAME f1
@@ -149,10 +194,10 @@ POSITION_IN_UNIQUE_CONSTRAINT NULL
REFERENCED_TABLE_SCHEMA NULL
REFERENCED_TABLE_NAME NULL
REFERENCED_COLUMN_NAME NULL
-CONSTRAINT_CATALOG NULL
+CONSTRAINT_CATALOG def
CONSTRAINT_SCHEMA test
CONSTRAINT_NAME PRIMARY
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test
TABLE_NAME t1_my_table
COLUMN_NAME f2
diff --git a/mysql-test/suite/funcs_1/r/is_routines.result b/mysql-test/suite/funcs_1/r/is_routines.result
index 14a7107778c..6f07f2efd1b 100644
--- a/mysql-test/suite/funcs_1/r/is_routines.result
+++ b/mysql-test/suite/funcs_1/r/is_routines.result
@@ -29,11 +29,18 @@ DROP FUNCTION test.f1;
DESCRIBE information_schema.ROUTINES;
Field Type Null Key Default Extra
SPECIFIC_NAME varchar(64) NO
-ROUTINE_CATALOG varchar(512) YES NULL
+ROUTINE_CATALOG varchar(512) NO
ROUTINE_SCHEMA varchar(64) NO
ROUTINE_NAME varchar(64) NO
ROUTINE_TYPE varchar(9) NO
-DTD_IDENTIFIER varchar(64) YES NULL
+DATA_TYPE varchar(64) NO
+CHARACTER_MAXIMUM_LENGTH int(21) YES NULL
+CHARACTER_OCTET_LENGTH int(21) YES NULL
+NUMERIC_PRECISION int(21) YES NULL
+NUMERIC_SCALE int(21) YES NULL
+CHARACTER_SET_NAME varchar(64) YES NULL
+COLLATION_NAME varchar(64) YES NULL
+DTD_IDENTIFIER longtext YES NULL
ROUTINE_BODY varchar(8) NO
ROUTINE_DEFINITION longtext YES NULL
EXTERNAL_NAME varchar(64) YES NULL
@@ -46,7 +53,7 @@ SECURITY_TYPE varchar(7) NO
CREATED datetime NO 0000-00-00 00:00:00
LAST_ALTERED datetime NO 0000-00-00 00:00:00
SQL_MODE varchar(8192) NO
-ROUTINE_COMMENT varchar(64) NO
+ROUTINE_COMMENT longtext NO NULL
DEFINER varchar(77) NO
CHARACTER_SET_CLIENT varchar(32) NO
COLLATION_CONNECTION varchar(32) NO
@@ -55,11 +62,18 @@ SHOW CREATE TABLE information_schema.ROUTINES;
Table Create Table
ROUTINES CREATE TEMPORARY TABLE `ROUTINES` (
`SPECIFIC_NAME` varchar(64) NOT NULL DEFAULT '',
- `ROUTINE_CATALOG` varchar(512) DEFAULT NULL,
+ `ROUTINE_CATALOG` varchar(512) NOT NULL DEFAULT '',
`ROUTINE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`ROUTINE_NAME` varchar(64) NOT NULL DEFAULT '',
`ROUTINE_TYPE` varchar(9) NOT NULL DEFAULT '',
- `DTD_IDENTIFIER` varchar(64) DEFAULT NULL,
+ `DATA_TYPE` varchar(64) NOT NULL DEFAULT '',
+ `CHARACTER_MAXIMUM_LENGTH` int(21) DEFAULT NULL,
+ `CHARACTER_OCTET_LENGTH` int(21) DEFAULT NULL,
+ `NUMERIC_PRECISION` int(21) DEFAULT NULL,
+ `NUMERIC_SCALE` int(21) DEFAULT NULL,
+ `CHARACTER_SET_NAME` varchar(64) DEFAULT NULL,
+ `COLLATION_NAME` varchar(64) DEFAULT NULL,
+ `DTD_IDENTIFIER` longtext,
`ROUTINE_BODY` varchar(8) NOT NULL DEFAULT '',
`ROUTINE_DEFINITION` longtext,
`EXTERNAL_NAME` varchar(64) DEFAULT NULL,
@@ -72,7 +86,7 @@ ROUTINES CREATE TEMPORARY TABLE `ROUTINES` (
`CREATED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`LAST_ALTERED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`SQL_MODE` varchar(8192) NOT NULL DEFAULT '',
- `ROUTINE_COMMENT` varchar(64) NOT NULL DEFAULT '',
+ `ROUTINE_COMMENT` longtext NOT NULL,
`DEFINER` varchar(77) NOT NULL DEFAULT '',
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL DEFAULT '',
`COLLATION_CONNECTION` varchar(32) NOT NULL DEFAULT '',
@@ -81,11 +95,18 @@ ROUTINES CREATE TEMPORARY TABLE `ROUTINES` (
SHOW COLUMNS FROM information_schema.ROUTINES;
Field Type Null Key Default Extra
SPECIFIC_NAME varchar(64) NO
-ROUTINE_CATALOG varchar(512) YES NULL
+ROUTINE_CATALOG varchar(512) NO
ROUTINE_SCHEMA varchar(64) NO
ROUTINE_NAME varchar(64) NO
ROUTINE_TYPE varchar(9) NO
-DTD_IDENTIFIER varchar(64) YES NULL
+DATA_TYPE varchar(64) NO
+CHARACTER_MAXIMUM_LENGTH int(21) YES NULL
+CHARACTER_OCTET_LENGTH int(21) YES NULL
+NUMERIC_PRECISION int(21) YES NULL
+NUMERIC_SCALE int(21) YES NULL
+CHARACTER_SET_NAME varchar(64) YES NULL
+COLLATION_NAME varchar(64) YES NULL
+DTD_IDENTIFIER longtext YES NULL
ROUTINE_BODY varchar(8) NO
ROUTINE_DEFINITION longtext YES NULL
EXTERNAL_NAME varchar(64) YES NULL
@@ -98,7 +119,7 @@ SECURITY_TYPE varchar(7) NO
CREATED datetime NO 0000-00-00 00:00:00
LAST_ALTERED datetime NO 0000-00-00 00:00:00
SQL_MODE varchar(8192) NO
-ROUTINE_COMMENT varchar(64) NO
+ROUTINE_COMMENT longtext NO NULL
DEFINER varchar(77) NO
CHARACTER_SET_CLIENT varchar(32) NO
COLLATION_CONNECTION varchar(32) NO
@@ -117,6 +138,8 @@ OR external_language IS NOT NULL OR sql_path IS NOT NULL
OR routine_body <> 'SQL' OR parameter_style <> 'SQL'
OR specific_name <> routine_name);
specific_name routine_catalog routine_schema routine_name routine_type routine_body external_name external_language parameter_style sql_path
+function_for_routines def test function_for_routines FUNCTION SQL NULL NULL SQL NULL
+sp_for_routines def test sp_for_routines PROCEDURE SQL NULL NULL SQL NULL
DROP PROCEDURE sp_for_routines;
DROP FUNCTION function_for_routines;
################################################################################
@@ -162,16 +185,16 @@ GRANT EXECUTE ON db_datadict_2.* TO 'testuser2'@'localhost';
FLUSH PRIVILEGES;
# Establish connection testuser1 (user=testuser1)
SELECT * FROM information_schema.routines;
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-sp_6_408002_1 NULL db_datadict sp_6_408002_1 PROCEDURE NULL SQL NULL NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
-sp_6_408002_2 NULL db_datadict_2 sp_6_408002_2 PROCEDURE NULL SQL NULL NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+sp_6_408002_1 def db_datadict sp_6_408002_1 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL NULL NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+sp_6_408002_2 def db_datadict_2 sp_6_408002_2 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL NULL NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
# Establish connection testuser2 (user=testuser2)
SELECT * FROM information_schema.routines;
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-sp_6_408002_2 NULL db_datadict_2 sp_6_408002_2 PROCEDURE NULL SQL NULL NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+sp_6_408002_2 def db_datadict_2 sp_6_408002_2 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL NULL NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
# Establish connection testuser3 (user=testuser3)
SELECT * FROM information_schema.routines;
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
# Switch to connection default and close connections testuser1,testuser2,testuser3
DROP USER 'testuser1'@'localhost';
DROP USER 'testuser2'@'localhost';
@@ -185,17 +208,24 @@ DROP DATABASE db_datadict_2;
DROP DATABASE IF EXISTS db_datadict;
CREATE DATABASE db_datadict;
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
USE db_datadict;
CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
ORDER BY routine_name;
SPECIFIC_NAME function_for_routines
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_datadict
ROUTINE_NAME function_for_routines
ROUTINE_TYPE FUNCTION
+DATA_TYPE int
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION 10
+NUMERIC_SCALE 0
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER int(11)
ROUTINE_BODY SQL
ROUTINE_DEFINITION RETURN 0
@@ -215,10 +245,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_for_routines
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_datadict
ROUTINE_NAME sp_for_routines
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION SELECT 'db_datadict'
@@ -242,10 +279,17 @@ ALTER FUNCTION function_for_routines COMMENT 'updated comments';
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
ORDER BY routine_name;
SPECIFIC_NAME function_for_routines
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_datadict
ROUTINE_NAME function_for_routines
ROUTINE_TYPE FUNCTION
+DATA_TYPE int
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION 10
+NUMERIC_SCALE 0
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER int(11)
ROUTINE_BODY SQL
ROUTINE_DEFINITION RETURN 0
@@ -265,10 +309,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_for_routines
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_datadict
ROUTINE_NAME sp_for_routines
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION SELECT 'db_datadict'
@@ -290,16 +341,23 @@ DATABASE_COLLATION latin1_swedish_ci
DROP PROCEDURE sp_for_routines;
DROP FUNCTION function_for_routines;
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
ORDER BY routine_name;
SPECIFIC_NAME function_for_routines
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_datadict
ROUTINE_NAME function_for_routines
ROUTINE_TYPE FUNCTION
+DATA_TYPE int
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION 10
+NUMERIC_SCALE 0
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER int(11)
ROUTINE_BODY SQL
ROUTINE_DEFINITION RETURN 0
@@ -319,10 +377,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_for_routines
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_datadict
ROUTINE_NAME sp_for_routines
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION SELECT 'db_datadict'
@@ -344,7 +409,7 @@ DATABASE_COLLATION latin1_swedish_ci
use test;
DROP DATABASE db_datadict;
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
-SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
#########################################################################
# 3.2.8.4: INFORMATION_SCHEMA.ROUTINES routine body too big for
# ROUTINE_DEFINITION column
@@ -484,10 +549,17 @@ abc 98765 99999999 98765 2010
SELECT *, LENGTH(routine_definition) FROM information_schema.routines
WHERE routine_schema = 'db_datadict';
SPECIFIC_NAME sp_6_408004
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_datadict
ROUTINE_NAME sp_6_408004
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
diff --git a/mysql-test/suite/funcs_1/r/is_schema_privileges.result b/mysql-test/suite/funcs_1/r/is_schema_privileges.result
index 64cc887f18f..40e9b8d8bd7 100644
--- a/mysql-test/suite/funcs_1/r/is_schema_privileges.result
+++ b/mysql-test/suite/funcs_1/r/is_schema_privileges.result
@@ -29,7 +29,7 @@ DROP FUNCTION test.f1;
DESCRIBE information_schema.SCHEMA_PRIVILEGES;
Field Type Null Key Default Extra
GRANTEE varchar(81) NO
-TABLE_CATALOG varchar(512) YES NULL
+TABLE_CATALOG varchar(512) NO
TABLE_SCHEMA varchar(64) NO
PRIVILEGE_TYPE varchar(64) NO
IS_GRANTABLE varchar(3) NO
@@ -37,7 +37,7 @@ SHOW CREATE TABLE information_schema.SCHEMA_PRIVILEGES;
Table Create Table
SCHEMA_PRIVILEGES CREATE TEMPORARY TABLE `SCHEMA_PRIVILEGES` (
`GRANTEE` varchar(81) NOT NULL DEFAULT '',
- `TABLE_CATALOG` varchar(512) DEFAULT NULL,
+ `TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`PRIVILEGE_TYPE` varchar(64) NOT NULL DEFAULT '',
`IS_GRANTABLE` varchar(3) NOT NULL DEFAULT ''
@@ -45,13 +45,45 @@ SCHEMA_PRIVILEGES CREATE TEMPORARY TABLE `SCHEMA_PRIVILEGES` (
SHOW COLUMNS FROM information_schema.SCHEMA_PRIVILEGES;
Field Type Null Key Default Extra
GRANTEE varchar(81) NO
-TABLE_CATALOG varchar(512) YES NULL
+TABLE_CATALOG varchar(512) NO
TABLE_SCHEMA varchar(64) NO
PRIVILEGE_TYPE varchar(64) NO
IS_GRANTABLE varchar(3) NO
SELECT GRANTEE, TABLE_CATALOG, TABLE_SCHEMA, PRIVILEGE_TYPE
FROM information_schema.schema_privileges WHERE table_catalog IS NOT NULL;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE
+''@'%' def test SELECT
+''@'%' def test INSERT
+''@'%' def test UPDATE
+''@'%' def test DELETE
+''@'%' def test CREATE
+''@'%' def test DROP
+''@'%' def test REFERENCES
+''@'%' def test INDEX
+''@'%' def test ALTER
+''@'%' def test CREATE TEMPORARY TABLES
+''@'%' def test LOCK TABLES
+''@'%' def test CREATE VIEW
+''@'%' def test SHOW VIEW
+''@'%' def test CREATE ROUTINE
+''@'%' def test EVENT
+''@'%' def test TRIGGER
+''@'%' def test\_% SELECT
+''@'%' def test\_% INSERT
+''@'%' def test\_% UPDATE
+''@'%' def test\_% DELETE
+''@'%' def test\_% CREATE
+''@'%' def test\_% DROP
+''@'%' def test\_% REFERENCES
+''@'%' def test\_% INDEX
+''@'%' def test\_% ALTER
+''@'%' def test\_% CREATE TEMPORARY TABLES
+''@'%' def test\_% LOCK TABLES
+''@'%' def test\_% CREATE VIEW
+''@'%' def test\_% SHOW VIEW
+''@'%' def test\_% CREATE ROUTINE
+''@'%' def test\_% EVENT
+''@'%' def test\_% TRIGGER
###############################################################################
# Testcase 3.2.15.2-3.2.15.4 INFORMATION_SCHEMA.SCHEMA_PRIVILEGES accessibility
###############################################################################
@@ -86,8 +118,8 @@ SELECT * FROM information_schema.schema_privileges
WHERE table_schema LIKE 'db_datadict%'
ORDER BY grantee,table_schema,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict_1 INSERT NO
-'testuser1'@'localhost' NULL db_datadict_4 SELECT YES
+'testuser1'@'localhost' def db_datadict_1 INSERT NO
+'testuser1'@'localhost' def db_datadict_4 SELECT YES
SHOW GRANTS FOR 'testuser1'@'localhost';
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -106,9 +138,9 @@ SELECT * FROM information_schema.schema_privileges
WHERE table_schema LIKE 'db_datadict%'
ORDER BY grantee,table_schema,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'testuser2'@'localhost' NULL db_datadict_1 SELECT NO
-'testuser2'@'localhost' NULL db_datadict_3 SELECT NO
-'testuser2'@'localhost' NULL db_datadict_4 SELECT NO
+'testuser2'@'localhost' def db_datadict_1 SELECT NO
+'testuser2'@'localhost' def db_datadict_3 SELECT NO
+'testuser2'@'localhost' def db_datadict_4 SELECT NO
SHOW GRANTS FOR 'testuser1'@'localhost';
ERROR 42000: Access denied for user 'testuser2'@'localhost' to database 'mysql'
SHOW GRANTS FOR 'testuser2'@'localhost';
@@ -122,11 +154,11 @@ SELECT * FROM information_schema.schema_privileges
WHERE table_schema LIKE 'db_datadict%'
ORDER BY grantee,table_schema,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict_1 INSERT NO
-'testuser1'@'localhost' NULL db_datadict_4 SELECT YES
-'testuser2'@'localhost' NULL db_datadict_1 SELECT NO
-'testuser2'@'localhost' NULL db_datadict_3 SELECT NO
-'testuser2'@'localhost' NULL db_datadict_4 SELECT NO
+'testuser1'@'localhost' def db_datadict_1 INSERT NO
+'testuser1'@'localhost' def db_datadict_4 SELECT YES
+'testuser2'@'localhost' def db_datadict_1 SELECT NO
+'testuser2'@'localhost' def db_datadict_3 SELECT NO
+'testuser2'@'localhost' def db_datadict_4 SELECT NO
SHOW GRANTS FOR 'testuser1'@'localhost';
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -168,98 +200,98 @@ SELECT * FROM information_schema.schema_privileges
WHERE table_schema = 'db_datadict'
ORDER BY grantee,table_schema,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict UPDATE NO
+'testuser1'@'localhost' def db_datadict UPDATE NO
# Switch to connection testuser1
SELECT * FROM information_schema.schema_privileges
WHERE table_schema = 'db_datadict'
ORDER BY grantee,table_schema,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict UPDATE NO
+'testuser1'@'localhost' def db_datadict UPDATE NO
# Switch to connection default
GRANT SELECT ON db_datadict.* TO 'testuser1'@'localhost';
SELECT * FROM information_schema.schema_privileges
WHERE table_schema = 'db_datadict'
ORDER BY grantee,table_schema,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict SELECT NO
-'testuser1'@'localhost' NULL db_datadict UPDATE NO
+'testuser1'@'localhost' def db_datadict SELECT NO
+'testuser1'@'localhost' def db_datadict UPDATE NO
# Switch to connection testuser1
SELECT * FROM information_schema.schema_privileges
WHERE table_schema = 'db_datadict'
ORDER BY grantee,table_schema,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict SELECT NO
-'testuser1'@'localhost' NULL db_datadict UPDATE NO
+'testuser1'@'localhost' def db_datadict SELECT NO
+'testuser1'@'localhost' def db_datadict UPDATE NO
# Switch to connection default
GRANT SELECT ON db_datadict.* TO 'testuser1'@'localhost' WITH GRANT OPTION;
SELECT * FROM information_schema.schema_privileges
WHERE table_schema = 'db_datadict'
ORDER BY grantee,table_schema,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict SELECT YES
-'testuser1'@'localhost' NULL db_datadict UPDATE YES
+'testuser1'@'localhost' def db_datadict SELECT YES
+'testuser1'@'localhost' def db_datadict UPDATE YES
# Switch to connection testuser1
SELECT * FROM information_schema.schema_privileges
WHERE table_schema = 'db_datadict'
ORDER BY grantee,table_schema,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict SELECT YES
-'testuser1'@'localhost' NULL db_datadict UPDATE YES
+'testuser1'@'localhost' def db_datadict SELECT YES
+'testuser1'@'localhost' def db_datadict UPDATE YES
# Switch to connection default
DROP SCHEMA db_datadict;
SELECT * FROM information_schema.schema_privileges
WHERE table_schema = 'db_datadict'
ORDER BY grantee,table_schema,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict SELECT YES
-'testuser1'@'localhost' NULL db_datadict UPDATE YES
+'testuser1'@'localhost' def db_datadict SELECT YES
+'testuser1'@'localhost' def db_datadict UPDATE YES
# Switch to connection testuser1
SELECT * FROM information_schema.schema_privileges
WHERE table_schema = 'db_datadict'
ORDER BY grantee,table_schema,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict SELECT YES
-'testuser1'@'localhost' NULL db_datadict UPDATE YES
+'testuser1'@'localhost' def db_datadict SELECT YES
+'testuser1'@'localhost' def db_datadict UPDATE YES
# Switch to connection default
REVOKE UPDATE ON db_datadict.* FROM 'testuser1'@'localhost';
SELECT * FROM information_schema.schema_privileges
WHERE table_schema = 'db_datadict'
ORDER BY grantee,table_schema,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict SELECT YES
+'testuser1'@'localhost' def db_datadict SELECT YES
# Switch to connection testuser1
SELECT * FROM information_schema.schema_privileges
WHERE table_schema = 'db_datadict'
ORDER BY grantee,table_schema,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict SELECT YES
+'testuser1'@'localhost' def db_datadict SELECT YES
# Switch to connection default
RENAME USER 'testuser1'@'localhost' TO 'the_user'@'localhost';
SELECT * FROM information_schema.schema_privileges
WHERE table_schema = 'db_datadict'
ORDER BY grantee,table_schema,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'the_user'@'localhost' NULL db_datadict SELECT YES
+'the_user'@'localhost' def db_datadict SELECT YES
# Switch to connection testuser1
SELECT * FROM information_schema.schema_privileges
WHERE table_schema = 'db_datadict'
ORDER BY grantee,table_schema,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'the_user'@'localhost' NULL db_datadict SELECT YES
+'the_user'@'localhost' def db_datadict SELECT YES
# Close connection testuser1
# Establish connection the_user (user=the_user)
SELECT * FROM information_schema.schema_privileges
WHERE table_schema = 'db_datadict'
ORDER BY grantee,table_schema,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'the_user'@'localhost' NULL db_datadict SELECT YES
+'the_user'@'localhost' def db_datadict SELECT YES
# Close connection the_user
# Switch to connection default
SELECT * FROM information_schema.schema_privileges
WHERE table_schema = 'db_datadict'
ORDER BY grantee,table_schema,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-'the_user'@'localhost' NULL db_datadict SELECT YES
+'the_user'@'localhost' def db_datadict SELECT YES
DROP USER 'the_user'@'localhost';
SELECT * FROM information_schema.schema_privileges
WHERE table_schema = 'db_datadict'
diff --git a/mysql-test/suite/funcs_1/r/is_schema_privileges_is_mysql_test.result b/mysql-test/suite/funcs_1/r/is_schema_privileges_is_mysql_test.result
index 9e2a835d45b..a55d3ea8e4d 100644
--- a/mysql-test/suite/funcs_1/r/is_schema_privileges_is_mysql_test.result
+++ b/mysql-test/suite/funcs_1/r/is_schema_privileges_is_mysql_test.result
@@ -10,22 +10,22 @@ SELECT * FROM information_schema.schema_privileges
WHERE table_schema IN ('information_schema','mysql','test')
ORDER BY grantee, table_schema, privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
-''@'%' NULL test ALTER NO
-''@'%' NULL test CREATE NO
-''@'%' NULL test CREATE ROUTINE NO
-''@'%' NULL test CREATE TEMPORARY TABLES NO
-''@'%' NULL test CREATE VIEW NO
-''@'%' NULL test DELETE NO
-''@'%' NULL test DROP NO
-''@'%' NULL test EVENT NO
-''@'%' NULL test INDEX NO
-''@'%' NULL test INSERT NO
-''@'%' NULL test LOCK TABLES NO
-''@'%' NULL test REFERENCES NO
-''@'%' NULL test SELECT NO
-''@'%' NULL test SHOW VIEW NO
-''@'%' NULL test TRIGGER NO
-''@'%' NULL test UPDATE NO
+''@'%' def test ALTER NO
+''@'%' def test CREATE NO
+''@'%' def test CREATE ROUTINE NO
+''@'%' def test CREATE TEMPORARY TABLES NO
+''@'%' def test CREATE VIEW NO
+''@'%' def test DELETE NO
+''@'%' def test DROP NO
+''@'%' def test EVENT NO
+''@'%' def test INDEX NO
+''@'%' def test INSERT NO
+''@'%' def test LOCK TABLES NO
+''@'%' def test REFERENCES NO
+''@'%' def test SELECT NO
+''@'%' def test SHOW VIEW NO
+''@'%' def test TRIGGER NO
+''@'%' def test UPDATE NO
SHOW DATABASES LIKE 'information_schema';
Database (information_schema)
information_schema
diff --git a/mysql-test/suite/funcs_1/r/is_schemata.result b/mysql-test/suite/funcs_1/r/is_schemata.result
index 2850655148e..92e01814b0e 100644
--- a/mysql-test/suite/funcs_1/r/is_schemata.result
+++ b/mysql-test/suite/funcs_1/r/is_schemata.result
@@ -28,7 +28,7 @@ DROP FUNCTION test.f1;
#########################################################################
DESCRIBE information_schema.SCHEMATA;
Field Type Null Key Default Extra
-CATALOG_NAME varchar(512) YES NULL
+CATALOG_NAME varchar(512) NO
SCHEMA_NAME varchar(64) NO
DEFAULT_CHARACTER_SET_NAME varchar(32) NO
DEFAULT_COLLATION_NAME varchar(32) NO
@@ -36,7 +36,7 @@ SQL_PATH varchar(512) YES NULL
SHOW CREATE TABLE information_schema.SCHEMATA;
Table Create Table
SCHEMATA CREATE TEMPORARY TABLE `SCHEMATA` (
- `CATALOG_NAME` varchar(512) DEFAULT NULL,
+ `CATALOG_NAME` varchar(512) NOT NULL DEFAULT '',
`SCHEMA_NAME` varchar(64) NOT NULL DEFAULT '',
`DEFAULT_CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
`DEFAULT_COLLATION_NAME` varchar(32) NOT NULL DEFAULT '',
@@ -44,7 +44,7 @@ SCHEMATA CREATE TEMPORARY TABLE `SCHEMATA` (
) ENGINE=MEMORY DEFAULT CHARSET=utf8
SHOW COLUMNS FROM information_schema.SCHEMATA;
Field Type Null Key Default Extra
-CATALOG_NAME varchar(512) YES NULL
+CATALOG_NAME varchar(512) NO
SCHEMA_NAME varchar(64) NO
DEFAULT_CHARACTER_SET_NAME varchar(32) NO
DEFAULT_COLLATION_NAME varchar(32) NO
@@ -53,6 +53,11 @@ SELECT catalog_name, schema_name, sql_path
FROM information_schema.schemata
WHERE catalog_name IS NOT NULL or sql_path IS NOT NULL;
catalog_name schema_name sql_path
+def information_schema NULL
+def mtr NULL
+def mysql NULL
+def performance_schema NULL
+def test NULL
###############################################################################
# Testcases 3.2.9.2+3.2.9.3: INFORMATION_SCHEMA.SCHEMATA accessible information
###############################################################################
@@ -72,8 +77,8 @@ GRANT SELECT ON db_datadict_2.* to 'testuser2'@'localhost';
SELECT * FROM information_schema.schemata
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
-NULL db_datadict_1 latin1 latin1_swedish_ci NULL
-NULL db_datadict_2 latin1 latin1_swedish_ci NULL
+def db_datadict_1 latin1 latin1_swedish_ci NULL
+def db_datadict_2 latin1 latin1_swedish_ci NULL
SHOW DATABASES LIKE 'db_datadict_%';
Database (db_datadict_%)
db_datadict_1
@@ -82,7 +87,7 @@ db_datadict_2
SELECT * FROM information_schema.schemata
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
-NULL db_datadict_1 latin1 latin1_swedish_ci NULL
+def db_datadict_1 latin1 latin1_swedish_ci NULL
SHOW DATABASES LIKE 'db_datadict_%';
Database (db_datadict_%)
db_datadict_1
@@ -90,8 +95,8 @@ db_datadict_1
SELECT * FROM information_schema.schemata
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
-NULL db_datadict_1 latin1 latin1_swedish_ci NULL
-NULL db_datadict_2 latin1 latin1_swedish_ci NULL
+def db_datadict_1 latin1 latin1_swedish_ci NULL
+def db_datadict_2 latin1 latin1_swedish_ci NULL
SHOW DATABASES LIKE 'db_datadict_%';
Database (db_datadict_%)
db_datadict_1
@@ -117,7 +122,7 @@ CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_P
CREATE DATABASE db_datadict CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci';
SELECT * FROM information_schema.schemata WHERE schema_name = 'db_datadict';
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
-NULL db_datadict latin1 latin1_swedish_ci NULL
+def db_datadict latin1 latin1_swedish_ci NULL
SELECT schema_name, default_character_set_name
FROM information_schema.schemata WHERE schema_name = 'db_datadict';
schema_name default_character_set_name
diff --git a/mysql-test/suite/funcs_1/r/is_schemata_is_mysql_test.result b/mysql-test/suite/funcs_1/r/is_schemata_is_mysql_test.result
index 05ea3a79aa3..b4c8e465c71 100644
--- a/mysql-test/suite/funcs_1/r/is_schemata_is_mysql_test.result
+++ b/mysql-test/suite/funcs_1/r/is_schemata_is_mysql_test.result
@@ -10,9 +10,9 @@ SELECT * FROM information_schema.schemata
WHERE schema_name IN ('information_schema','mysql','test')
ORDER BY schema_name;
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
-NULL information_schema utf8 utf8_general_ci NULL
-NULL mysql latin1 latin1_swedish_ci NULL
-NULL test latin1 latin1_swedish_ci NULL
+def information_schema utf8 utf8_general_ci NULL
+def mysql latin1 latin1_swedish_ci NULL
+def test latin1 latin1_swedish_ci NULL
SHOW DATABASES LIKE 'information_schema';
Database (information_schema)
information_schema
@@ -27,8 +27,8 @@ SELECT * FROM information_schema.schemata
WHERE schema_name IN ('information_schema','mysql','test')
ORDER BY schema_name;
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
-NULL information_schema utf8 utf8_general_ci NULL
-NULL test latin1 latin1_swedish_ci NULL
+def information_schema utf8 utf8_general_ci NULL
+def test latin1 latin1_swedish_ci NULL
SHOW DATABASES LIKE 'information_schema';
Database (information_schema)
information_schema
diff --git a/mysql-test/suite/funcs_1/r/is_statistics.result b/mysql-test/suite/funcs_1/r/is_statistics.result
index 8452536d4ed..cbb794a9a91 100644
--- a/mysql-test/suite/funcs_1/r/is_statistics.result
+++ b/mysql-test/suite/funcs_1/r/is_statistics.result
@@ -28,7 +28,7 @@ DROP FUNCTION test.f1;
#########################################################################
DESCRIBE information_schema.STATISTICS;
Field Type Null Key Default Extra
-TABLE_CATALOG varchar(512) YES NULL
+TABLE_CATALOG varchar(512) NO
TABLE_SCHEMA varchar(64) NO
TABLE_NAME varchar(64) NO
NON_UNIQUE bigint(1) NO 0
@@ -46,7 +46,7 @@ COMMENT varchar(16) YES NULL
SHOW CREATE TABLE information_schema.STATISTICS;
Table Create Table
STATISTICS CREATE TEMPORARY TABLE `STATISTICS` (
- `TABLE_CATALOG` varchar(512) DEFAULT NULL,
+ `TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
`NON_UNIQUE` bigint(1) NOT NULL DEFAULT '0',
@@ -64,7 +64,7 @@ STATISTICS CREATE TEMPORARY TABLE `STATISTICS` (
) ENGINE=MEMORY DEFAULT CHARSET=utf8
SHOW COLUMNS FROM information_schema.STATISTICS;
Field Type Null Key Default Extra
-TABLE_CATALOG varchar(512) YES NULL
+TABLE_CATALOG varchar(512) NO
TABLE_SCHEMA varchar(64) NO
TABLE_NAME varchar(64) NO
NON_UNIQUE bigint(1) NO 0
@@ -82,6 +82,54 @@ COMMENT varchar(16) YES NULL
SELECT table_catalog, table_schema, table_name, index_schema, index_name
FROM information_schema.statistics WHERE table_catalog IS NOT NULL;
table_catalog table_schema table_name index_schema index_name
+def mysql columns_priv mysql PRIMARY
+def mysql columns_priv mysql PRIMARY
+def mysql columns_priv mysql PRIMARY
+def mysql columns_priv mysql PRIMARY
+def mysql columns_priv mysql PRIMARY
+def mysql db mysql PRIMARY
+def mysql db mysql PRIMARY
+def mysql db mysql PRIMARY
+def mysql db mysql User
+def mysql event mysql PRIMARY
+def mysql event mysql PRIMARY
+def mysql func mysql PRIMARY
+def mysql help_category mysql PRIMARY
+def mysql help_category mysql name
+def mysql help_keyword mysql PRIMARY
+def mysql help_keyword mysql name
+def mysql help_relation mysql PRIMARY
+def mysql help_relation mysql PRIMARY
+def mysql help_topic mysql PRIMARY
+def mysql help_topic mysql name
+def mysql host mysql PRIMARY
+def mysql host mysql PRIMARY
+def mysql ndb_binlog_index mysql PRIMARY
+def mysql plugin mysql PRIMARY
+def mysql proc mysql PRIMARY
+def mysql proc mysql PRIMARY
+def mysql proc mysql PRIMARY
+def mysql procs_priv mysql PRIMARY
+def mysql procs_priv mysql PRIMARY
+def mysql procs_priv mysql PRIMARY
+def mysql procs_priv mysql PRIMARY
+def mysql procs_priv mysql PRIMARY
+def mysql procs_priv mysql Grantor
+def mysql servers mysql PRIMARY
+def mysql tables_priv mysql PRIMARY
+def mysql tables_priv mysql PRIMARY
+def mysql tables_priv mysql PRIMARY
+def mysql tables_priv mysql PRIMARY
+def mysql tables_priv mysql Grantor
+def mysql time_zone mysql PRIMARY
+def mysql time_zone_leap_second mysql PRIMARY
+def mysql time_zone_name mysql PRIMARY
+def mysql time_zone_transition mysql PRIMARY
+def mysql time_zone_transition mysql PRIMARY
+def mysql time_zone_transition_type mysql PRIMARY
+def mysql time_zone_transition_type mysql PRIMARY
+def mysql user mysql PRIMARY
+def mysql user mysql PRIMARY
####################################################################################
# Testcase 3.2.14.2 + 3.2.14.3: INFORMATION_SCHEMA.STATISTICS accessible information
####################################################################################
@@ -110,16 +158,16 @@ SELECT * FROM information_schema.statistics
WHERE table_schema LIKE 'db_datadict%'
ORDER BY table_schema,table_name,index_name,seq_in_index,column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT
-NULL db_datadict t1 1 db_datadict f2_ind 1 f2 NULL 0 NULL NULL YES HASH
-NULL db_datadict t1 0 db_datadict PRIMARY 1 f1 NULL 0 NULL NULL HASH
-NULL db_datadict t2 1 db_datadict f2_ind 1 f2 NULL 0 NULL NULL YES HASH
-NULL db_datadict t2 0 db_datadict PRIMARY 1 f1 NULL 0 NULL NULL HASH
-NULL db_datadict_2 t3 1 db_datadict_2 f2f1_ind 1 f2 NULL NULL NULL NULL YES HASH
-NULL db_datadict_2 t3 1 db_datadict_2 f2f1_ind 2 f1 NULL 0 NULL NULL HASH
-NULL db_datadict_2 t3 0 db_datadict_2 f5 1 f5 NULL 0 NULL NULL YES HASH
-NULL db_datadict_2 t3 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
-NULL db_datadict_2 t4 1 db_datadict_2 f2_ind 1 f2 NULL 0 NULL NULL YES HASH
-NULL db_datadict_2 t4 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
+def db_datadict t1 1 db_datadict f2_ind 1 f2 NULL 0 NULL NULL YES HASH
+def db_datadict t1 0 db_datadict PRIMARY 1 f1 NULL 0 NULL NULL HASH
+def db_datadict t2 1 db_datadict f2_ind 1 f2 NULL 0 NULL NULL YES HASH
+def db_datadict t2 0 db_datadict PRIMARY 1 f1 NULL 0 NULL NULL HASH
+def db_datadict_2 t3 1 db_datadict_2 f2f1_ind 1 f2 NULL NULL NULL NULL YES HASH
+def db_datadict_2 t3 1 db_datadict_2 f2f1_ind 2 f1 NULL 0 NULL NULL HASH
+def db_datadict_2 t3 0 db_datadict_2 f5 1 f5 NULL 0 NULL NULL YES HASH
+def db_datadict_2 t3 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
+def db_datadict_2 t4 1 db_datadict_2 f2_ind 1 f2 NULL 0 NULL NULL YES HASH
+def db_datadict_2 t4 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
SHOW GRANTS FOR 'testuser1'@'localhost';
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -153,16 +201,16 @@ SELECT * FROM information_schema.statistics
WHERE table_schema LIKE 'db_datadict%'
ORDER BY table_schema,table_name,index_name,seq_in_index,column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT
-NULL db_datadict t1 1 db_datadict f2_ind 1 f2 NULL 0 NULL NULL YES HASH
-NULL db_datadict t1 0 db_datadict PRIMARY 1 f1 NULL 0 NULL NULL HASH
-NULL db_datadict t2 1 db_datadict f2_ind 1 f2 NULL 0 NULL NULL YES HASH
-NULL db_datadict t2 0 db_datadict PRIMARY 1 f1 NULL 0 NULL NULL HASH
-NULL db_datadict_2 t3 1 db_datadict_2 f2f1_ind 1 f2 NULL NULL NULL NULL YES HASH
-NULL db_datadict_2 t3 1 db_datadict_2 f2f1_ind 2 f1 NULL 0 NULL NULL HASH
-NULL db_datadict_2 t3 0 db_datadict_2 f5 1 f5 NULL 0 NULL NULL YES HASH
-NULL db_datadict_2 t3 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
-NULL db_datadict_2 t4 1 db_datadict_2 f2_ind 1 f2 NULL 0 NULL NULL YES HASH
-NULL db_datadict_2 t4 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
+def db_datadict t1 1 db_datadict f2_ind 1 f2 NULL 0 NULL NULL YES HASH
+def db_datadict t1 0 db_datadict PRIMARY 1 f1 NULL 0 NULL NULL HASH
+def db_datadict t2 1 db_datadict f2_ind 1 f2 NULL 0 NULL NULL YES HASH
+def db_datadict t2 0 db_datadict PRIMARY 1 f1 NULL 0 NULL NULL HASH
+def db_datadict_2 t3 1 db_datadict_2 f2f1_ind 1 f2 NULL NULL NULL NULL YES HASH
+def db_datadict_2 t3 1 db_datadict_2 f2f1_ind 2 f1 NULL 0 NULL NULL HASH
+def db_datadict_2 t3 0 db_datadict_2 f5 1 f5 NULL 0 NULL NULL YES HASH
+def db_datadict_2 t3 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
+def db_datadict_2 t4 1 db_datadict_2 f2_ind 1 f2 NULL 0 NULL NULL YES HASH
+def db_datadict_2 t4 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
SHOW GRANTS FOR 'testuser1'@'localhost';
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -176,12 +224,12 @@ SELECT * FROM information_schema.statistics
WHERE table_schema LIKE 'db_datadict%'
ORDER BY table_schema,table_name,index_name,seq_in_index,column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT
-NULL db_datadict t1 1 db_datadict f2_ind 1 f2 NULL 0 NULL NULL YES HASH
-NULL db_datadict t1 0 db_datadict PRIMARY 1 f1 NULL 0 NULL NULL HASH
-NULL db_datadict_2 t3 1 db_datadict_2 f2f1_ind 1 f2 NULL NULL NULL NULL YES HASH
-NULL db_datadict_2 t3 1 db_datadict_2 f2f1_ind 2 f1 NULL 0 NULL NULL HASH
-NULL db_datadict_2 t3 0 db_datadict_2 f5 1 f5 NULL 0 NULL NULL YES HASH
-NULL db_datadict_2 t3 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
+def db_datadict t1 1 db_datadict f2_ind 1 f2 NULL 0 NULL NULL YES HASH
+def db_datadict t1 0 db_datadict PRIMARY 1 f1 NULL 0 NULL NULL HASH
+def db_datadict_2 t3 1 db_datadict_2 f2f1_ind 1 f2 NULL NULL NULL NULL YES HASH
+def db_datadict_2 t3 1 db_datadict_2 f2f1_ind 2 f1 NULL 0 NULL NULL HASH
+def db_datadict_2 t3 0 db_datadict_2 f5 1 f5 NULL 0 NULL NULL YES HASH
+def db_datadict_2 t3 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
SHOW GRANTS FOR 'testuser1'@'localhost';
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -210,10 +258,10 @@ SELECT * FROM information_schema.statistics
WHERE table_schema LIKE 'db_datadict%'
ORDER BY table_schema,table_name,index_name,seq_in_index,column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT
-NULL db_datadict_2 t3 1 db_datadict_2 f2f1_ind 1 f2 NULL NULL NULL NULL YES HASH
-NULL db_datadict_2 t3 1 db_datadict_2 f2f1_ind 2 f1 NULL 0 NULL NULL HASH
-NULL db_datadict_2 t3 0 db_datadict_2 f5 1 f5 NULL 0 NULL NULL YES HASH
-NULL db_datadict_2 t3 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
+def db_datadict_2 t3 1 db_datadict_2 f2f1_ind 1 f2 NULL NULL NULL NULL YES HASH
+def db_datadict_2 t3 1 db_datadict_2 f2f1_ind 2 f1 NULL 0 NULL NULL HASH
+def db_datadict_2 t3 0 db_datadict_2 f5 1 f5 NULL 0 NULL NULL YES HASH
+def db_datadict_2 t3 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
SHOW GRANTS FOR 'testuser1'@'localhost';
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -244,8 +292,8 @@ SELECT * FROM information_schema.statistics
WHERE table_name LIKE 't1_%'
ORDER BY table_schema,table_name,index_name,seq_in_index,column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT
-NULL test t1_1 0 test PRIMARY 1 f1 A NULL NULL NULL BTREE
-NULL test t1_1 0 test PRIMARY 2 f3 A 0 NULL NULL BTREE
+def test t1_1 0 test PRIMARY 1 f1 A NULL NULL NULL BTREE
+def test t1_1 0 test PRIMARY 2 f3 A 0 NULL NULL BTREE
ALTER TABLE test.t1_1 DROP PRIMARY KEY;
SELECT table_name FROM information_schema.statistics
WHERE table_name LIKE 't1_%';
@@ -254,7 +302,7 @@ ALTER TABLE test.t1_1 ADD PRIMARY KEY (f1);
SELECT * FROM information_schema.statistics
WHERE table_name LIKE 't1_%';
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT
-NULL test t1_1 0 test PRIMARY 1 f1 A 0 NULL NULL BTREE
+def test t1_1 0 test PRIMARY 1 f1 A 0 NULL NULL BTREE
ALTER TABLE test.t1_1 ADD INDEX (f4);
CREATE INDEX f3_f1 ON test.t1_1 (f3,f1);
CREATE UNIQUE INDEX f4x_uni ON test.t1_1 (f4x);
@@ -267,13 +315,13 @@ SELECT * FROM information_schema.statistics
WHERE table_name LIKE 't1_%' AND index_name <> 'PRIMARY'
ORDER BY table_schema,table_name,index_name,seq_in_index,column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT
-NULL test t1_1 1 test f2_prefix 1 f2 A NULL 20 NULL YES BTREE
-NULL test t1_1 1 test f3_f1 1 f3 A NULL NULL NULL BTREE
-NULL test t1_1 1 test f3_f1 2 f1 A NULL NULL NULL BTREE
-NULL test t1_1 1 test f4 1 f4 A NULL NULL NULL YES BTREE
-NULL test t1_1 0 test f4x_uni 1 f4x A NULL NULL NULL YES BTREE
-NULL test t1_1 1 test not_null 1 f3x A NULL NULL NULL YES BTREE
-NULL test t1_2 1 test f2_hash 1 f2 NULL 0 NULL NULL YES HASH
+def test t1_1 1 test f2_prefix 1 f2 A NULL 20 NULL YES BTREE
+def test t1_1 1 test f3_f1 1 f3 A NULL NULL NULL BTREE
+def test t1_1 1 test f3_f1 2 f1 A NULL NULL NULL BTREE
+def test t1_1 1 test f4 1 f4 A NULL NULL NULL YES BTREE
+def test t1_1 0 test f4x_uni 1 f4x A NULL NULL NULL YES BTREE
+def test t1_1 1 test not_null 1 f3x A NULL NULL NULL YES BTREE
+def test t1_2 1 test f2_hash 1 f2 NULL 0 NULL NULL YES HASH
DROP TABLE test.t1_2;
SELECT DISTINCT table_name FROM information_schema.statistics
WHERE table_name = 't1_1';
diff --git a/mysql-test/suite/funcs_1/r/is_statistics_mysql.result b/mysql-test/suite/funcs_1/r/is_statistics_mysql.result
index ee37f6ef222..24cf07939b5 100644
--- a/mysql-test/suite/funcs_1/r/is_statistics_mysql.result
+++ b/mysql-test/suite/funcs_1/r/is_statistics_mysql.result
@@ -7,54 +7,54 @@ SELECT * FROM information_schema.statistics
WHERE table_schema = 'mysql'
ORDER BY table_schema, table_name, index_name, seq_in_index, column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT
-NULL mysql columns_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
-NULL mysql columns_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
-NULL mysql columns_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
-NULL mysql columns_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
-NULL mysql columns_priv 0 mysql PRIMARY 5 Column_name A #CARD# NULL NULL BTREE
-NULL mysql db 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
-NULL mysql db 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
-NULL mysql db 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
-NULL mysql db 1 mysql User 1 User A #CARD# NULL NULL BTREE
-NULL mysql event 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
-NULL mysql event 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
-NULL mysql func 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
-NULL mysql help_category 0 mysql name 1 name A #CARD# NULL NULL BTREE
-NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A #CARD# NULL NULL BTREE
-NULL mysql help_keyword 0 mysql name 1 name A #CARD# NULL NULL BTREE
-NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
-NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
-NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A #CARD# NULL NULL BTREE
-NULL mysql help_topic 0 mysql name 1 name A #CARD# NULL NULL BTREE
-NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A #CARD# NULL NULL BTREE
-NULL mysql host 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
-NULL mysql host 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
-NULL mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A #CARD# NULL NULL BTREE
-NULL mysql plugin 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
-NULL mysql proc 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
-NULL mysql proc 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
-NULL mysql proc 0 mysql PRIMARY 3 type A #CARD# NULL NULL BTREE
-NULL mysql procs_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
-NULL mysql procs_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
-NULL mysql procs_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
-NULL mysql procs_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
-NULL mysql procs_priv 0 mysql PRIMARY 4 Routine_name A #CARD# NULL NULL BTREE
-NULL mysql procs_priv 0 mysql PRIMARY 5 Routine_type A #CARD# NULL NULL BTREE
-NULL mysql servers 0 mysql PRIMARY 1 Server_name A #CARD# NULL NULL BTREE
-NULL mysql tables_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
-NULL mysql tables_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
-NULL mysql tables_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
-NULL mysql tables_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
-NULL mysql tables_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
-NULL mysql time_zone 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
-NULL mysql time_zone_leap_second 0 mysql PRIMARY 1 Transition_time A #CARD# NULL NULL BTREE
-NULL mysql time_zone_name 0 mysql PRIMARY 1 Name A #CARD# NULL NULL BTREE
-NULL mysql time_zone_transition 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
-NULL mysql time_zone_transition 0 mysql PRIMARY 2 Transition_time A #CARD# NULL NULL BTREE
-NULL mysql time_zone_transition_type 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
-NULL mysql time_zone_transition_type 0 mysql PRIMARY 2 Transition_type_id A #CARD# NULL NULL BTREE
-NULL mysql user 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
-NULL mysql user 0 mysql PRIMARY 2 User A #CARD# NULL NULL BTREE
+def mysql columns_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+def mysql columns_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+def mysql columns_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+def mysql columns_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
+def mysql columns_priv 0 mysql PRIMARY 5 Column_name A #CARD# NULL NULL BTREE
+def mysql db 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+def mysql db 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+def mysql db 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+def mysql db 1 mysql User 1 User A #CARD# NULL NULL BTREE
+def mysql event 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
+def mysql event 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
+def mysql func 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
+def mysql help_category 0 mysql name 1 name A #CARD# NULL NULL BTREE
+def mysql help_category 0 mysql PRIMARY 1 help_category_id A #CARD# NULL NULL BTREE
+def mysql help_keyword 0 mysql name 1 name A #CARD# NULL NULL BTREE
+def mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
+def mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
+def mysql help_relation 0 mysql PRIMARY 2 help_topic_id A #CARD# NULL NULL BTREE
+def mysql help_topic 0 mysql name 1 name A #CARD# NULL NULL BTREE
+def mysql help_topic 0 mysql PRIMARY 1 help_topic_id A #CARD# NULL NULL BTREE
+def mysql host 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+def mysql host 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+def mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A #CARD# NULL NULL BTREE
+def mysql plugin 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
+def mysql proc 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
+def mysql proc 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
+def mysql proc 0 mysql PRIMARY 3 type A #CARD# NULL NULL BTREE
+def mysql procs_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
+def mysql procs_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+def mysql procs_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+def mysql procs_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+def mysql procs_priv 0 mysql PRIMARY 4 Routine_name A #CARD# NULL NULL BTREE
+def mysql procs_priv 0 mysql PRIMARY 5 Routine_type A #CARD# NULL NULL BTREE
+def mysql servers 0 mysql PRIMARY 1 Server_name A #CARD# NULL NULL BTREE
+def mysql tables_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
+def mysql tables_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+def mysql tables_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+def mysql tables_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+def mysql tables_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
+def mysql time_zone 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
+def mysql time_zone_leap_second 0 mysql PRIMARY 1 Transition_time A #CARD# NULL NULL BTREE
+def mysql time_zone_name 0 mysql PRIMARY 1 Name A #CARD# NULL NULL BTREE
+def mysql time_zone_transition 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
+def mysql time_zone_transition 0 mysql PRIMARY 2 Transition_time A #CARD# NULL NULL BTREE
+def mysql time_zone_transition_type 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
+def mysql time_zone_transition_type 0 mysql PRIMARY 2 Transition_type_id A #CARD# NULL NULL BTREE
+def mysql user 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+def mysql user 0 mysql PRIMARY 2 User A #CARD# NULL NULL BTREE
# Establish connection testuser1 (user=testuser1)
SELECT * FROM information_schema.statistics
WHERE table_schema = 'mysql'
diff --git a/mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result b/mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result
index 5b363cebd0b..ea28427d0f5 100644
--- a/mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result
@@ -7,107 +7,107 @@ SELECT * FROM information_schema.statistics
WHERE table_schema = 'mysql'
ORDER BY table_schema, table_name, index_name, seq_in_index, column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT
-NULL mysql columns_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
-NULL mysql columns_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
-NULL mysql columns_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
-NULL mysql columns_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
-NULL mysql columns_priv 0 mysql PRIMARY 5 Column_name A #CARD# NULL NULL BTREE
-NULL mysql db 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
-NULL mysql db 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
-NULL mysql db 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
-NULL mysql db 1 mysql User 1 User A #CARD# NULL NULL BTREE
-NULL mysql event 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
-NULL mysql event 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
-NULL mysql func 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
-NULL mysql help_category 0 mysql name 1 name A #CARD# NULL NULL BTREE
-NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A #CARD# NULL NULL BTREE
-NULL mysql help_keyword 0 mysql name 1 name A #CARD# NULL NULL BTREE
-NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
-NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
-NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A #CARD# NULL NULL BTREE
-NULL mysql help_topic 0 mysql name 1 name A #CARD# NULL NULL BTREE
-NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A #CARD# NULL NULL BTREE
-NULL mysql host 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
-NULL mysql host 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
-NULL mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A #CARD# NULL NULL BTREE
-NULL mysql plugin 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
-NULL mysql proc 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
-NULL mysql proc 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
-NULL mysql proc 0 mysql PRIMARY 3 type A #CARD# NULL NULL BTREE
-NULL mysql procs_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
-NULL mysql procs_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
-NULL mysql procs_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
-NULL mysql procs_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
-NULL mysql procs_priv 0 mysql PRIMARY 4 Routine_name A #CARD# NULL NULL BTREE
-NULL mysql procs_priv 0 mysql PRIMARY 5 Routine_type A #CARD# NULL NULL BTREE
-NULL mysql servers 0 mysql PRIMARY 1 Server_name A #CARD# NULL NULL BTREE
-NULL mysql tables_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
-NULL mysql tables_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
-NULL mysql tables_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
-NULL mysql tables_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
-NULL mysql tables_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
-NULL mysql time_zone 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
-NULL mysql time_zone_leap_second 0 mysql PRIMARY 1 Transition_time A #CARD# NULL NULL BTREE
-NULL mysql time_zone_name 0 mysql PRIMARY 1 Name A #CARD# NULL NULL BTREE
-NULL mysql time_zone_transition 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
-NULL mysql time_zone_transition 0 mysql PRIMARY 2 Transition_time A #CARD# NULL NULL BTREE
-NULL mysql time_zone_transition_type 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
-NULL mysql time_zone_transition_type 0 mysql PRIMARY 2 Transition_type_id A #CARD# NULL NULL BTREE
-NULL mysql user 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
-NULL mysql user 0 mysql PRIMARY 2 User A #CARD# NULL NULL BTREE
+def mysql columns_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+def mysql columns_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+def mysql columns_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+def mysql columns_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
+def mysql columns_priv 0 mysql PRIMARY 5 Column_name A #CARD# NULL NULL BTREE
+def mysql db 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+def mysql db 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+def mysql db 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+def mysql db 1 mysql User 1 User A #CARD# NULL NULL BTREE
+def mysql event 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
+def mysql event 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
+def mysql func 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
+def mysql help_category 0 mysql name 1 name A #CARD# NULL NULL BTREE
+def mysql help_category 0 mysql PRIMARY 1 help_category_id A #CARD# NULL NULL BTREE
+def mysql help_keyword 0 mysql name 1 name A #CARD# NULL NULL BTREE
+def mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
+def mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
+def mysql help_relation 0 mysql PRIMARY 2 help_topic_id A #CARD# NULL NULL BTREE
+def mysql help_topic 0 mysql name 1 name A #CARD# NULL NULL BTREE
+def mysql help_topic 0 mysql PRIMARY 1 help_topic_id A #CARD# NULL NULL BTREE
+def mysql host 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+def mysql host 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+def mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A #CARD# NULL NULL BTREE
+def mysql plugin 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
+def mysql proc 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
+def mysql proc 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
+def mysql proc 0 mysql PRIMARY 3 type A #CARD# NULL NULL BTREE
+def mysql procs_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
+def mysql procs_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+def mysql procs_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+def mysql procs_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+def mysql procs_priv 0 mysql PRIMARY 4 Routine_name A #CARD# NULL NULL BTREE
+def mysql procs_priv 0 mysql PRIMARY 5 Routine_type A #CARD# NULL NULL BTREE
+def mysql servers 0 mysql PRIMARY 1 Server_name A #CARD# NULL NULL BTREE
+def mysql tables_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
+def mysql tables_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+def mysql tables_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+def mysql tables_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+def mysql tables_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
+def mysql time_zone 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
+def mysql time_zone_leap_second 0 mysql PRIMARY 1 Transition_time A #CARD# NULL NULL BTREE
+def mysql time_zone_name 0 mysql PRIMARY 1 Name A #CARD# NULL NULL BTREE
+def mysql time_zone_transition 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
+def mysql time_zone_transition 0 mysql PRIMARY 2 Transition_time A #CARD# NULL NULL BTREE
+def mysql time_zone_transition_type 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
+def mysql time_zone_transition_type 0 mysql PRIMARY 2 Transition_type_id A #CARD# NULL NULL BTREE
+def mysql user 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+def mysql user 0 mysql PRIMARY 2 User A #CARD# NULL NULL BTREE
# Establish connection testuser1 (user=testuser1)
SELECT * FROM information_schema.statistics
WHERE table_schema = 'mysql'
ORDER BY table_schema, table_name, index_name, seq_in_index, column_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT
-NULL mysql columns_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
-NULL mysql columns_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
-NULL mysql columns_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
-NULL mysql columns_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
-NULL mysql columns_priv 0 mysql PRIMARY 5 Column_name A #CARD# NULL NULL BTREE
-NULL mysql db 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
-NULL mysql db 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
-NULL mysql db 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
-NULL mysql db 1 mysql User 1 User A #CARD# NULL NULL BTREE
-NULL mysql event 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
-NULL mysql event 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
-NULL mysql func 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
-NULL mysql help_category 0 mysql name 1 name A #CARD# NULL NULL BTREE
-NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A #CARD# NULL NULL BTREE
-NULL mysql help_keyword 0 mysql name 1 name A #CARD# NULL NULL BTREE
-NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
-NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
-NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A #CARD# NULL NULL BTREE
-NULL mysql help_topic 0 mysql name 1 name A #CARD# NULL NULL BTREE
-NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A #CARD# NULL NULL BTREE
-NULL mysql host 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
-NULL mysql host 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
-NULL mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A #CARD# NULL NULL BTREE
-NULL mysql plugin 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
-NULL mysql proc 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
-NULL mysql proc 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
-NULL mysql proc 0 mysql PRIMARY 3 type A #CARD# NULL NULL BTREE
-NULL mysql procs_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
-NULL mysql procs_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
-NULL mysql procs_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
-NULL mysql procs_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
-NULL mysql procs_priv 0 mysql PRIMARY 4 Routine_name A #CARD# NULL NULL BTREE
-NULL mysql procs_priv 0 mysql PRIMARY 5 Routine_type A #CARD# NULL NULL BTREE
-NULL mysql servers 0 mysql PRIMARY 1 Server_name A #CARD# NULL NULL BTREE
-NULL mysql tables_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
-NULL mysql tables_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
-NULL mysql tables_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
-NULL mysql tables_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
-NULL mysql tables_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
-NULL mysql time_zone 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
-NULL mysql time_zone_leap_second 0 mysql PRIMARY 1 Transition_time A #CARD# NULL NULL BTREE
-NULL mysql time_zone_name 0 mysql PRIMARY 1 Name A #CARD# NULL NULL BTREE
-NULL mysql time_zone_transition 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
-NULL mysql time_zone_transition 0 mysql PRIMARY 2 Transition_time A #CARD# NULL NULL BTREE
-NULL mysql time_zone_transition_type 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
-NULL mysql time_zone_transition_type 0 mysql PRIMARY 2 Transition_type_id A #CARD# NULL NULL BTREE
-NULL mysql user 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
-NULL mysql user 0 mysql PRIMARY 2 User A #CARD# NULL NULL BTREE
+def mysql columns_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+def mysql columns_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+def mysql columns_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+def mysql columns_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
+def mysql columns_priv 0 mysql PRIMARY 5 Column_name A #CARD# NULL NULL BTREE
+def mysql db 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+def mysql db 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+def mysql db 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+def mysql db 1 mysql User 1 User A #CARD# NULL NULL BTREE
+def mysql event 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
+def mysql event 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
+def mysql func 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
+def mysql help_category 0 mysql name 1 name A #CARD# NULL NULL BTREE
+def mysql help_category 0 mysql PRIMARY 1 help_category_id A #CARD# NULL NULL BTREE
+def mysql help_keyword 0 mysql name 1 name A #CARD# NULL NULL BTREE
+def mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
+def mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
+def mysql help_relation 0 mysql PRIMARY 2 help_topic_id A #CARD# NULL NULL BTREE
+def mysql help_topic 0 mysql name 1 name A #CARD# NULL NULL BTREE
+def mysql help_topic 0 mysql PRIMARY 1 help_topic_id A #CARD# NULL NULL BTREE
+def mysql host 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+def mysql host 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+def mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A #CARD# NULL NULL BTREE
+def mysql plugin 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
+def mysql proc 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
+def mysql proc 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
+def mysql proc 0 mysql PRIMARY 3 type A #CARD# NULL NULL BTREE
+def mysql procs_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
+def mysql procs_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+def mysql procs_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+def mysql procs_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+def mysql procs_priv 0 mysql PRIMARY 4 Routine_name A #CARD# NULL NULL BTREE
+def mysql procs_priv 0 mysql PRIMARY 5 Routine_type A #CARD# NULL NULL BTREE
+def mysql servers 0 mysql PRIMARY 1 Server_name A #CARD# NULL NULL BTREE
+def mysql tables_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
+def mysql tables_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+def mysql tables_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+def mysql tables_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+def mysql tables_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
+def mysql time_zone 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
+def mysql time_zone_leap_second 0 mysql PRIMARY 1 Transition_time A #CARD# NULL NULL BTREE
+def mysql time_zone_name 0 mysql PRIMARY 1 Name A #CARD# NULL NULL BTREE
+def mysql time_zone_transition 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
+def mysql time_zone_transition 0 mysql PRIMARY 2 Transition_time A #CARD# NULL NULL BTREE
+def mysql time_zone_transition_type 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
+def mysql time_zone_transition_type 0 mysql PRIMARY 2 Transition_type_id A #CARD# NULL NULL BTREE
+def mysql user 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+def mysql user 0 mysql PRIMARY 2 User A #CARD# NULL NULL BTREE
# Switch to connection default and close connection testuser1
DROP USER testuser1@localhost;
DROP DATABASE db_datadict;
diff --git a/mysql-test/suite/funcs_1/r/is_table_constraints.result b/mysql-test/suite/funcs_1/r/is_table_constraints.result
index 56c2f6ff076..154b72cb862 100644
--- a/mysql-test/suite/funcs_1/r/is_table_constraints.result
+++ b/mysql-test/suite/funcs_1/r/is_table_constraints.result
@@ -28,7 +28,7 @@ DROP FUNCTION test.f1;
#########################################################################
DESCRIBE information_schema.TABLE_CONSTRAINTS;
Field Type Null Key Default Extra
-CONSTRAINT_CATALOG varchar(512) YES NULL
+CONSTRAINT_CATALOG varchar(512) NO
CONSTRAINT_SCHEMA varchar(64) NO
CONSTRAINT_NAME varchar(64) NO
TABLE_SCHEMA varchar(64) NO
@@ -37,7 +37,7 @@ CONSTRAINT_TYPE varchar(64) NO
SHOW CREATE TABLE information_schema.TABLE_CONSTRAINTS;
Table Create Table
TABLE_CONSTRAINTS CREATE TEMPORARY TABLE `TABLE_CONSTRAINTS` (
- `CONSTRAINT_CATALOG` varchar(512) DEFAULT NULL,
+ `CONSTRAINT_CATALOG` varchar(512) NOT NULL DEFAULT '',
`CONSTRAINT_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`CONSTRAINT_NAME` varchar(64) NOT NULL DEFAULT '',
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
@@ -46,7 +46,7 @@ TABLE_CONSTRAINTS CREATE TEMPORARY TABLE `TABLE_CONSTRAINTS` (
) ENGINE=MEMORY DEFAULT CHARSET=utf8
SHOW COLUMNS FROM information_schema.TABLE_CONSTRAINTS;
Field Type Null Key Default Extra
-CONSTRAINT_CATALOG varchar(512) YES NULL
+CONSTRAINT_CATALOG varchar(512) NO
CONSTRAINT_SCHEMA varchar(64) NO
CONSTRAINT_NAME varchar(64) NO
TABLE_SCHEMA varchar(64) NO
@@ -57,6 +57,30 @@ table_schema, table_name
FROM information_schema.table_constraints
WHERE constraint_catalog IS NOT NULL;
constraint_catalog constraint_schema constraint_name table_schema table_name
+def mysql PRIMARY mysql columns_priv
+def mysql PRIMARY mysql db
+def mysql PRIMARY mysql event
+def mysql PRIMARY mysql func
+def mysql PRIMARY mysql help_category
+def mysql name mysql help_category
+def mysql PRIMARY mysql help_keyword
+def mysql name mysql help_keyword
+def mysql PRIMARY mysql help_relation
+def mysql PRIMARY mysql help_topic
+def mysql name mysql help_topic
+def mysql PRIMARY mysql host
+def mysql PRIMARY mysql ndb_binlog_index
+def mysql PRIMARY mysql plugin
+def mysql PRIMARY mysql proc
+def mysql PRIMARY mysql procs_priv
+def mysql PRIMARY mysql servers
+def mysql PRIMARY mysql tables_priv
+def mysql PRIMARY mysql time_zone
+def mysql PRIMARY mysql time_zone_leap_second
+def mysql PRIMARY mysql time_zone_name
+def mysql PRIMARY mysql time_zone_transition
+def mysql PRIMARY mysql time_zone_transition_type
+def mysql PRIMARY mysql user
#########################################################################################
# Testcase 3.2.7.2 + 3.2.7.3: INFORMATION_SCHEMA.TABLE_CONSTRAINTS accessible information
#########################################################################################
@@ -81,10 +105,10 @@ SELECT * FROM information_schema.table_constraints
WHERE table_schema = 'db_datadict'
ORDER BY table_schema,table_name, constraint_name;
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE
-NULL db_datadict my_idx1 db_datadict t1 UNIQUE
-NULL db_datadict my_idx2 db_datadict t1 UNIQUE
-NULL db_datadict PRIMARY db_datadict t1 PRIMARY KEY
-NULL db_datadict PRIMARY db_datadict t2 PRIMARY KEY
+def db_datadict my_idx1 db_datadict t1 UNIQUE
+def db_datadict my_idx2 db_datadict t1 UNIQUE
+def db_datadict PRIMARY db_datadict t1 PRIMARY KEY
+def db_datadict PRIMARY db_datadict t2 PRIMARY KEY
SHOW INDEXES FROM db_datadict.t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 0 PRIMARY 1 f1 ### ### ### ### ### ### ###
@@ -105,9 +129,9 @@ SELECT * FROM information_schema.table_constraints
WHERE table_schema = 'db_datadict'
ORDER BY table_schema,table_name, constraint_name;
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE
-NULL db_datadict my_idx1 db_datadict t1 UNIQUE
-NULL db_datadict my_idx2 db_datadict t1 UNIQUE
-NULL db_datadict PRIMARY db_datadict t1 PRIMARY KEY
+def db_datadict my_idx1 db_datadict t1 UNIQUE
+def db_datadict my_idx2 db_datadict t1 UNIQUE
+def db_datadict PRIMARY db_datadict t1 PRIMARY KEY
SHOW INDEXES FROM db_datadict.t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 0 PRIMARY 1 f1 ### ### ### ### ### ### ###
diff --git a/mysql-test/suite/funcs_1/r/is_table_constraints_mysql.result b/mysql-test/suite/funcs_1/r/is_table_constraints_mysql.result
index ba5da23f069..8b7ac6994c1 100644
--- a/mysql-test/suite/funcs_1/r/is_table_constraints_mysql.result
+++ b/mysql-test/suite/funcs_1/r/is_table_constraints_mysql.result
@@ -7,30 +7,30 @@ SELECT * FROM information_schema.table_constraints
WHERE table_schema = 'mysql'
ORDER BY table_schema,table_name,constraint_name;
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE
-NULL mysql PRIMARY mysql columns_priv PRIMARY KEY
-NULL mysql PRIMARY mysql db PRIMARY KEY
-NULL mysql PRIMARY mysql event PRIMARY KEY
-NULL mysql PRIMARY mysql func PRIMARY KEY
-NULL mysql name mysql help_category UNIQUE
-NULL mysql PRIMARY mysql help_category PRIMARY KEY
-NULL mysql name mysql help_keyword UNIQUE
-NULL mysql PRIMARY mysql help_keyword PRIMARY KEY
-NULL mysql PRIMARY mysql help_relation PRIMARY KEY
-NULL mysql name mysql help_topic UNIQUE
-NULL mysql PRIMARY mysql help_topic PRIMARY KEY
-NULL mysql PRIMARY mysql host PRIMARY KEY
-NULL mysql PRIMARY mysql ndb_binlog_index PRIMARY KEY
-NULL mysql PRIMARY mysql plugin PRIMARY KEY
-NULL mysql PRIMARY mysql proc PRIMARY KEY
-NULL mysql PRIMARY mysql procs_priv PRIMARY KEY
-NULL mysql PRIMARY mysql servers PRIMARY KEY
-NULL mysql PRIMARY mysql tables_priv PRIMARY KEY
-NULL mysql PRIMARY mysql time_zone PRIMARY KEY
-NULL mysql PRIMARY mysql time_zone_leap_second PRIMARY KEY
-NULL mysql PRIMARY mysql time_zone_name PRIMARY KEY
-NULL mysql PRIMARY mysql time_zone_transition PRIMARY KEY
-NULL mysql PRIMARY mysql time_zone_transition_type PRIMARY KEY
-NULL mysql PRIMARY mysql user PRIMARY KEY
+def mysql PRIMARY mysql columns_priv PRIMARY KEY
+def mysql PRIMARY mysql db PRIMARY KEY
+def mysql PRIMARY mysql event PRIMARY KEY
+def mysql PRIMARY mysql func PRIMARY KEY
+def mysql name mysql help_category UNIQUE
+def mysql PRIMARY mysql help_category PRIMARY KEY
+def mysql name mysql help_keyword UNIQUE
+def mysql PRIMARY mysql help_keyword PRIMARY KEY
+def mysql PRIMARY mysql help_relation PRIMARY KEY
+def mysql name mysql help_topic UNIQUE
+def mysql PRIMARY mysql help_topic PRIMARY KEY
+def mysql PRIMARY mysql host PRIMARY KEY
+def mysql PRIMARY mysql ndb_binlog_index PRIMARY KEY
+def mysql PRIMARY mysql plugin PRIMARY KEY
+def mysql PRIMARY mysql proc PRIMARY KEY
+def mysql PRIMARY mysql procs_priv PRIMARY KEY
+def mysql PRIMARY mysql servers PRIMARY KEY
+def mysql PRIMARY mysql tables_priv PRIMARY KEY
+def mysql PRIMARY mysql time_zone PRIMARY KEY
+def mysql PRIMARY mysql time_zone_leap_second PRIMARY KEY
+def mysql PRIMARY mysql time_zone_name PRIMARY KEY
+def mysql PRIMARY mysql time_zone_transition PRIMARY KEY
+def mysql PRIMARY mysql time_zone_transition_type PRIMARY KEY
+def mysql PRIMARY mysql user PRIMARY KEY
# Establish connection testuser1 (user=testuser1)
SELECT * FROM information_schema.table_constraints
WHERE table_schema = 'mysql'
diff --git a/mysql-test/suite/funcs_1/r/is_table_constraints_mysql_embedded.result b/mysql-test/suite/funcs_1/r/is_table_constraints_mysql_embedded.result
index 6e31953d297..e0ea412e83a 100644
--- a/mysql-test/suite/funcs_1/r/is_table_constraints_mysql_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_table_constraints_mysql_embedded.result
@@ -7,59 +7,59 @@ SELECT * FROM information_schema.table_constraints
WHERE table_schema = 'mysql'
ORDER BY table_schema,table_name,constraint_name;
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE
-NULL mysql PRIMARY mysql columns_priv PRIMARY KEY
-NULL mysql PRIMARY mysql db PRIMARY KEY
-NULL mysql PRIMARY mysql event PRIMARY KEY
-NULL mysql PRIMARY mysql func PRIMARY KEY
-NULL mysql name mysql help_category UNIQUE
-NULL mysql PRIMARY mysql help_category PRIMARY KEY
-NULL mysql name mysql help_keyword UNIQUE
-NULL mysql PRIMARY mysql help_keyword PRIMARY KEY
-NULL mysql PRIMARY mysql help_relation PRIMARY KEY
-NULL mysql name mysql help_topic UNIQUE
-NULL mysql PRIMARY mysql help_topic PRIMARY KEY
-NULL mysql PRIMARY mysql host PRIMARY KEY
-NULL mysql PRIMARY mysql ndb_binlog_index PRIMARY KEY
-NULL mysql PRIMARY mysql plugin PRIMARY KEY
-NULL mysql PRIMARY mysql proc PRIMARY KEY
-NULL mysql PRIMARY mysql procs_priv PRIMARY KEY
-NULL mysql PRIMARY mysql servers PRIMARY KEY
-NULL mysql PRIMARY mysql tables_priv PRIMARY KEY
-NULL mysql PRIMARY mysql time_zone PRIMARY KEY
-NULL mysql PRIMARY mysql time_zone_leap_second PRIMARY KEY
-NULL mysql PRIMARY mysql time_zone_name PRIMARY KEY
-NULL mysql PRIMARY mysql time_zone_transition PRIMARY KEY
-NULL mysql PRIMARY mysql time_zone_transition_type PRIMARY KEY
-NULL mysql PRIMARY mysql user PRIMARY KEY
+def mysql PRIMARY mysql columns_priv PRIMARY KEY
+def mysql PRIMARY mysql db PRIMARY KEY
+def mysql PRIMARY mysql event PRIMARY KEY
+def mysql PRIMARY mysql func PRIMARY KEY
+def mysql name mysql help_category UNIQUE
+def mysql PRIMARY mysql help_category PRIMARY KEY
+def mysql name mysql help_keyword UNIQUE
+def mysql PRIMARY mysql help_keyword PRIMARY KEY
+def mysql PRIMARY mysql help_relation PRIMARY KEY
+def mysql name mysql help_topic UNIQUE
+def mysql PRIMARY mysql help_topic PRIMARY KEY
+def mysql PRIMARY mysql host PRIMARY KEY
+def mysql PRIMARY mysql ndb_binlog_index PRIMARY KEY
+def mysql PRIMARY mysql plugin PRIMARY KEY
+def mysql PRIMARY mysql proc PRIMARY KEY
+def mysql PRIMARY mysql procs_priv PRIMARY KEY
+def mysql PRIMARY mysql servers PRIMARY KEY
+def mysql PRIMARY mysql tables_priv PRIMARY KEY
+def mysql PRIMARY mysql time_zone PRIMARY KEY
+def mysql PRIMARY mysql time_zone_leap_second PRIMARY KEY
+def mysql PRIMARY mysql time_zone_name PRIMARY KEY
+def mysql PRIMARY mysql time_zone_transition PRIMARY KEY
+def mysql PRIMARY mysql time_zone_transition_type PRIMARY KEY
+def mysql PRIMARY mysql user PRIMARY KEY
# Establish connection testuser1 (user=testuser1)
SELECT * FROM information_schema.table_constraints
WHERE table_schema = 'mysql'
ORDER BY table_schema,table_name,constraint_name;
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE
-NULL mysql PRIMARY mysql columns_priv PRIMARY KEY
-NULL mysql PRIMARY mysql db PRIMARY KEY
-NULL mysql PRIMARY mysql event PRIMARY KEY
-NULL mysql PRIMARY mysql func PRIMARY KEY
-NULL mysql name mysql help_category UNIQUE
-NULL mysql PRIMARY mysql help_category PRIMARY KEY
-NULL mysql name mysql help_keyword UNIQUE
-NULL mysql PRIMARY mysql help_keyword PRIMARY KEY
-NULL mysql PRIMARY mysql help_relation PRIMARY KEY
-NULL mysql name mysql help_topic UNIQUE
-NULL mysql PRIMARY mysql help_topic PRIMARY KEY
-NULL mysql PRIMARY mysql host PRIMARY KEY
-NULL mysql PRIMARY mysql ndb_binlog_index PRIMARY KEY
-NULL mysql PRIMARY mysql plugin PRIMARY KEY
-NULL mysql PRIMARY mysql proc PRIMARY KEY
-NULL mysql PRIMARY mysql procs_priv PRIMARY KEY
-NULL mysql PRIMARY mysql servers PRIMARY KEY
-NULL mysql PRIMARY mysql tables_priv PRIMARY KEY
-NULL mysql PRIMARY mysql time_zone PRIMARY KEY
-NULL mysql PRIMARY mysql time_zone_leap_second PRIMARY KEY
-NULL mysql PRIMARY mysql time_zone_name PRIMARY KEY
-NULL mysql PRIMARY mysql time_zone_transition PRIMARY KEY
-NULL mysql PRIMARY mysql time_zone_transition_type PRIMARY KEY
-NULL mysql PRIMARY mysql user PRIMARY KEY
+def mysql PRIMARY mysql columns_priv PRIMARY KEY
+def mysql PRIMARY mysql db PRIMARY KEY
+def mysql PRIMARY mysql event PRIMARY KEY
+def mysql PRIMARY mysql func PRIMARY KEY
+def mysql name mysql help_category UNIQUE
+def mysql PRIMARY mysql help_category PRIMARY KEY
+def mysql name mysql help_keyword UNIQUE
+def mysql PRIMARY mysql help_keyword PRIMARY KEY
+def mysql PRIMARY mysql help_relation PRIMARY KEY
+def mysql name mysql help_topic UNIQUE
+def mysql PRIMARY mysql help_topic PRIMARY KEY
+def mysql PRIMARY mysql host PRIMARY KEY
+def mysql PRIMARY mysql ndb_binlog_index PRIMARY KEY
+def mysql PRIMARY mysql plugin PRIMARY KEY
+def mysql PRIMARY mysql proc PRIMARY KEY
+def mysql PRIMARY mysql procs_priv PRIMARY KEY
+def mysql PRIMARY mysql servers PRIMARY KEY
+def mysql PRIMARY mysql tables_priv PRIMARY KEY
+def mysql PRIMARY mysql time_zone PRIMARY KEY
+def mysql PRIMARY mysql time_zone_leap_second PRIMARY KEY
+def mysql PRIMARY mysql time_zone_name PRIMARY KEY
+def mysql PRIMARY mysql time_zone_transition PRIMARY KEY
+def mysql PRIMARY mysql time_zone_transition_type PRIMARY KEY
+def mysql PRIMARY mysql user PRIMARY KEY
# Switch to connection default and close connection testuser1
DROP USER testuser1@localhost;
DROP DATABASE db_datadict;
diff --git a/mysql-test/suite/funcs_1/r/is_table_privileges.result b/mysql-test/suite/funcs_1/r/is_table_privileges.result
index c7b8e2630aa..8f51d99b6db 100644
--- a/mysql-test/suite/funcs_1/r/is_table_privileges.result
+++ b/mysql-test/suite/funcs_1/r/is_table_privileges.result
@@ -29,7 +29,7 @@ DROP FUNCTION test.f1;
DESCRIBE information_schema.TABLE_PRIVILEGES;
Field Type Null Key Default Extra
GRANTEE varchar(81) NO
-TABLE_CATALOG varchar(512) YES NULL
+TABLE_CATALOG varchar(512) NO
TABLE_SCHEMA varchar(64) NO
TABLE_NAME varchar(64) NO
PRIVILEGE_TYPE varchar(64) NO
@@ -38,7 +38,7 @@ SHOW CREATE TABLE information_schema.TABLE_PRIVILEGES;
Table Create Table
TABLE_PRIVILEGES CREATE TEMPORARY TABLE `TABLE_PRIVILEGES` (
`GRANTEE` varchar(81) NOT NULL DEFAULT '',
- `TABLE_CATALOG` varchar(512) DEFAULT NULL,
+ `TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
`PRIVILEGE_TYPE` varchar(64) NOT NULL DEFAULT '',
@@ -47,7 +47,7 @@ TABLE_PRIVILEGES CREATE TEMPORARY TABLE `TABLE_PRIVILEGES` (
SHOW COLUMNS FROM information_schema.TABLE_PRIVILEGES;
Field Type Null Key Default Extra
GRANTEE varchar(81) NO
-TABLE_CATALOG varchar(512) YES NULL
+TABLE_CATALOG varchar(512) NO
TABLE_SCHEMA varchar(64) NO
TABLE_NAME varchar(64) NO
PRIVILEGE_TYPE varchar(64) NO
@@ -81,7 +81,7 @@ SELECT * FROM information_schema.table_privileges
WHERE table_name LIKE 'tb%'
ORDER BY grantee,table_schema,table_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict tb1 SELECT NO
+'testuser1'@'localhost' def db_datadict tb1 SELECT NO
SHOW GRANTS FOR 'testuser1'@'localhost';
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -92,18 +92,18 @@ SELECT * FROM information_schema.table_privileges
WHERE table_name LIKE 'tb%'
ORDER BY grantee,table_schema,table_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser2'@'localhost' NULL db_datadict tb1 ALTER YES
-'testuser2'@'localhost' NULL db_datadict tb1 CREATE YES
-'testuser2'@'localhost' NULL db_datadict tb1 CREATE VIEW YES
-'testuser2'@'localhost' NULL db_datadict tb1 DELETE YES
-'testuser2'@'localhost' NULL db_datadict tb1 DROP YES
-'testuser2'@'localhost' NULL db_datadict tb1 INDEX YES
-'testuser2'@'localhost' NULL db_datadict tb1 INSERT YES
-'testuser2'@'localhost' NULL db_datadict tb1 REFERENCES YES
-'testuser2'@'localhost' NULL db_datadict tb1 SELECT YES
-'testuser2'@'localhost' NULL db_datadict tb1 SHOW VIEW YES
-'testuser2'@'localhost' NULL db_datadict tb1 TRIGGER YES
-'testuser2'@'localhost' NULL db_datadict tb1 UPDATE YES
+'testuser2'@'localhost' def db_datadict tb1 ALTER YES
+'testuser2'@'localhost' def db_datadict tb1 CREATE YES
+'testuser2'@'localhost' def db_datadict tb1 CREATE VIEW YES
+'testuser2'@'localhost' def db_datadict tb1 DELETE YES
+'testuser2'@'localhost' def db_datadict tb1 DROP YES
+'testuser2'@'localhost' def db_datadict tb1 INDEX YES
+'testuser2'@'localhost' def db_datadict tb1 INSERT YES
+'testuser2'@'localhost' def db_datadict tb1 REFERENCES YES
+'testuser2'@'localhost' def db_datadict tb1 SELECT YES
+'testuser2'@'localhost' def db_datadict tb1 SHOW VIEW YES
+'testuser2'@'localhost' def db_datadict tb1 TRIGGER YES
+'testuser2'@'localhost' def db_datadict tb1 UPDATE YES
SHOW GRANTS FOR 'testuser2'@'localhost';
Grants for testuser2@localhost
GRANT USAGE ON *.* TO 'testuser2'@'localhost'
@@ -113,7 +113,7 @@ SELECT * FROM information_schema.table_privileges
WHERE table_name LIKE 'tb%'
ORDER BY grantee,table_schema,table_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser3'@'localhost' NULL db_datadict tb3 SELECT NO
+'testuser3'@'localhost' def db_datadict tb3 SELECT NO
SHOW GRANTS FOR 'testuser3'@'localhost';
Grants for testuser3@localhost
GRANT USAGE ON *.* TO 'testuser3'@'localhost'
@@ -123,20 +123,20 @@ SELECT * FROM information_schema.table_privileges
WHERE table_name LIKE 'tb%'
ORDER BY grantee,table_schema,table_name,privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL db_datadict tb1 SELECT NO
-'testuser2'@'localhost' NULL db_datadict tb1 ALTER YES
-'testuser2'@'localhost' NULL db_datadict tb1 CREATE YES
-'testuser2'@'localhost' NULL db_datadict tb1 CREATE VIEW YES
-'testuser2'@'localhost' NULL db_datadict tb1 DELETE YES
-'testuser2'@'localhost' NULL db_datadict tb1 DROP YES
-'testuser2'@'localhost' NULL db_datadict tb1 INDEX YES
-'testuser2'@'localhost' NULL db_datadict tb1 INSERT YES
-'testuser2'@'localhost' NULL db_datadict tb1 REFERENCES YES
-'testuser2'@'localhost' NULL db_datadict tb1 SELECT YES
-'testuser2'@'localhost' NULL db_datadict tb1 SHOW VIEW YES
-'testuser2'@'localhost' NULL db_datadict tb1 TRIGGER YES
-'testuser2'@'localhost' NULL db_datadict tb1 UPDATE YES
-'testuser3'@'localhost' NULL db_datadict tb3 SELECT NO
+'testuser1'@'localhost' def db_datadict tb1 SELECT NO
+'testuser2'@'localhost' def db_datadict tb1 ALTER YES
+'testuser2'@'localhost' def db_datadict tb1 CREATE YES
+'testuser2'@'localhost' def db_datadict tb1 CREATE VIEW YES
+'testuser2'@'localhost' def db_datadict tb1 DELETE YES
+'testuser2'@'localhost' def db_datadict tb1 DROP YES
+'testuser2'@'localhost' def db_datadict tb1 INDEX YES
+'testuser2'@'localhost' def db_datadict tb1 INSERT YES
+'testuser2'@'localhost' def db_datadict tb1 REFERENCES YES
+'testuser2'@'localhost' def db_datadict tb1 SELECT YES
+'testuser2'@'localhost' def db_datadict tb1 SHOW VIEW YES
+'testuser2'@'localhost' def db_datadict tb1 TRIGGER YES
+'testuser2'@'localhost' def db_datadict tb1 UPDATE YES
+'testuser3'@'localhost' def db_datadict tb3 SELECT NO
SHOW GRANTS FOR 'testuser1'@'localhost';
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -177,30 +177,30 @@ SELECT * FROM information_schema.table_privileges
WHERE table_name LIKE 't1_%'
ORDER BY grantee, table_schema, table_name, privilege_type;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL test t1_table ALTER NO
-'testuser1'@'localhost' NULL test t1_table CREATE NO
-'testuser1'@'localhost' NULL test t1_table CREATE VIEW NO
-'testuser1'@'localhost' NULL test t1_table DELETE NO
-'testuser1'@'localhost' NULL test t1_table DROP NO
-'testuser1'@'localhost' NULL test t1_table INDEX NO
-'testuser1'@'localhost' NULL test t1_table INSERT NO
-'testuser1'@'localhost' NULL test t1_table REFERENCES NO
-'testuser1'@'localhost' NULL test t1_table SELECT NO
-'testuser1'@'localhost' NULL test t1_table SHOW VIEW NO
-'testuser1'@'localhost' NULL test t1_table TRIGGER NO
-'testuser1'@'localhost' NULL test t1_table UPDATE NO
-'testuser1'@'localhost' NULL test t1_view ALTER NO
-'testuser1'@'localhost' NULL test t1_view CREATE NO
-'testuser1'@'localhost' NULL test t1_view CREATE VIEW NO
-'testuser1'@'localhost' NULL test t1_view DELETE NO
-'testuser1'@'localhost' NULL test t1_view DROP NO
-'testuser1'@'localhost' NULL test t1_view INDEX NO
-'testuser1'@'localhost' NULL test t1_view INSERT NO
-'testuser1'@'localhost' NULL test t1_view REFERENCES NO
-'testuser1'@'localhost' NULL test t1_view SELECT NO
-'testuser1'@'localhost' NULL test t1_view SHOW VIEW NO
-'testuser1'@'localhost' NULL test t1_view TRIGGER NO
-'testuser1'@'localhost' NULL test t1_view UPDATE NO
+'testuser1'@'localhost' def test t1_table ALTER NO
+'testuser1'@'localhost' def test t1_table CREATE NO
+'testuser1'@'localhost' def test t1_table CREATE VIEW NO
+'testuser1'@'localhost' def test t1_table DELETE NO
+'testuser1'@'localhost' def test t1_table DROP NO
+'testuser1'@'localhost' def test t1_table INDEX NO
+'testuser1'@'localhost' def test t1_table INSERT NO
+'testuser1'@'localhost' def test t1_table REFERENCES NO
+'testuser1'@'localhost' def test t1_table SELECT NO
+'testuser1'@'localhost' def test t1_table SHOW VIEW NO
+'testuser1'@'localhost' def test t1_table TRIGGER NO
+'testuser1'@'localhost' def test t1_table UPDATE NO
+'testuser1'@'localhost' def test t1_view ALTER NO
+'testuser1'@'localhost' def test t1_view CREATE NO
+'testuser1'@'localhost' def test t1_view CREATE VIEW NO
+'testuser1'@'localhost' def test t1_view DELETE NO
+'testuser1'@'localhost' def test t1_view DROP NO
+'testuser1'@'localhost' def test t1_view INDEX NO
+'testuser1'@'localhost' def test t1_view INSERT NO
+'testuser1'@'localhost' def test t1_view REFERENCES NO
+'testuser1'@'localhost' def test t1_view SELECT NO
+'testuser1'@'localhost' def test t1_view SHOW VIEW NO
+'testuser1'@'localhost' def test t1_view TRIGGER NO
+'testuser1'@'localhost' def test t1_view UPDATE NO
SELECT DISTINCT grantee, table_name FROM information_schema.table_privileges
WHERE table_name LIKE 't1_%'
ORDER BY grantee, table_name;
diff --git a/mysql-test/suite/funcs_1/r/is_tables.result b/mysql-test/suite/funcs_1/r/is_tables.result
index 1ab863b9b7d..3974d684942 100644
--- a/mysql-test/suite/funcs_1/r/is_tables.result
+++ b/mysql-test/suite/funcs_1/r/is_tables.result
@@ -28,7 +28,7 @@ DROP FUNCTION test.f1;
#########################################################################
DESCRIBE information_schema.TABLES;
Field Type Null Key Default Extra
-TABLE_CATALOG varchar(512) YES NULL
+TABLE_CATALOG varchar(512) NO
TABLE_SCHEMA varchar(64) NO
TABLE_NAME varchar(64) NO
TABLE_TYPE varchar(64) NO
@@ -52,7 +52,7 @@ TABLE_COMMENT varchar(80) NO
SHOW CREATE TABLE information_schema.TABLES;
Table Create Table
TABLES CREATE TEMPORARY TABLE `TABLES` (
- `TABLE_CATALOG` varchar(512) DEFAULT NULL,
+ `TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
`TABLE_TYPE` varchar(64) NOT NULL DEFAULT '',
@@ -76,7 +76,7 @@ TABLES CREATE TEMPORARY TABLE `TABLES` (
) ENGINE=MEMORY DEFAULT CHARSET=utf8
SHOW COLUMNS FROM information_schema.TABLES;
Field Type Null Key Default Extra
-TABLE_CATALOG varchar(512) YES NULL
+TABLE_CATALOG varchar(512) NO
TABLE_SCHEMA varchar(64) NO
TABLE_NAME varchar(64) NO
TABLE_TYPE varchar(64) NO
@@ -98,7 +98,7 @@ CHECKSUM bigint(21) unsigned YES NULL
CREATE_OPTIONS varchar(255) YES NULL
TABLE_COMMENT varchar(80) NO
SELECT table_catalog, table_schema, table_name
-FROM information_schema.tables WHERE table_catalog IS NOT NULL;
+FROM information_schema.tables WHERE table_catalog IS NULL OR table_catalog <> 'def';
table_catalog table_schema table_name
################################################################################
# Testcase 3.2.12.2 + 3.2.12.3: INFORMATION_SCHEMA.TABLES accessible information
@@ -129,10 +129,10 @@ GRANT SELECT ON db_datadict.v3 to 'testuser3'@'localhost';
SELECT * FROM information_schema.tables
WHERE table_schema = 'db_datadict' ORDER BY table_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
-NULL db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
-NULL db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
-NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
-NULL db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
+def db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+def db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+def db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+def db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
SHOW TABLES FROM db_datadict;
Tables_in_db_datadict
tb1
@@ -143,8 +143,8 @@ v3
SELECT * FROM information_schema.tables
WHERE table_schema = 'db_datadict' ORDER BY table_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
-NULL db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
-NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+def db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+def db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
SHOW TABLES FROM db_datadict;
Tables_in_db_datadict
tb1
@@ -153,8 +153,8 @@ tb3
SELECT * FROM information_schema.tables
WHERE table_schema = 'db_datadict' ORDER BY table_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
-NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
-NULL db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
+def db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+def db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
SHOW TABLES FROM db_datadict;
Tables_in_db_datadict
tb3
@@ -163,10 +163,10 @@ v3
SELECT * FROM information_schema.tables
WHERE table_schema = 'db_datadict' ORDER BY table_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
-NULL db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
-NULL db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
-NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
-NULL db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
+def db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+def db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+def db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+def db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
SHOW TABLES FROM db_datadict;
Tables_in_db_datadict
tb1
@@ -192,7 +192,7 @@ DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
COMMENT = 'Initial Comment' ENGINE = <engine_type>;
SELECT * FROM information_schema.tables
WHERE table_name = 't1_my_table';
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test
TABLE_NAME t1_my_table
TABLE_TYPE BASE TABLE
@@ -345,7 +345,7 @@ DROP TABLE test.t1_my_tablex;
CREATE VIEW test.t1_my_tablex AS SELECT 1;
SELECT * FROM information_schema.tables
WHERE table_name = 't1_my_tablex';
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test
TABLE_NAME t1_my_tablex
TABLE_TYPE VIEW
diff --git a/mysql-test/suite/funcs_1/r/is_tables_innodb.result b/mysql-test/suite/funcs_1/r/is_tables_innodb.result
index f2d2e0a912a..bc984b1b6fe 100644
--- a/mysql-test/suite/funcs_1/r/is_tables_innodb.result
+++ b/mysql-test/suite/funcs_1/r/is_tables_innodb.result
@@ -17,7 +17,7 @@ AS "user_comment",
FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
@@ -40,7 +40,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t2
TABLE_TYPE BASE TABLE
@@ -63,7 +63,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test2
TABLE_NAME t1
TABLE_TYPE BASE TABLE
@@ -109,7 +109,7 @@ AS "user_comment",
FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
@@ -132,7 +132,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t2
TABLE_TYPE BASE TABLE
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 83eaef22e0c..ff00acb0c18 100644
--- a/mysql-test/suite/funcs_1/r/is_tables_is.result
+++ b/mysql-test/suite/funcs_1/r/is_tables_is.result
@@ -11,9 +11,9 @@ AS "user_comment",
'-----------------------------------------------------' AS "Separator"
FROM information_schema.tables
WHERE table_schema = 'information_schema'
-AND table_name <> 'profiling'
+AND table_name <> 'profiling' AND table_name not like 'innodb_%'
ORDER BY table_schema,table_name;
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME CHARACTER_SETS
TABLE_TYPE SYSTEM VIEW
@@ -36,7 +36,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME COLLATIONS
TABLE_TYPE SYSTEM VIEW
@@ -59,7 +59,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME COLLATION_CHARACTER_SET_APPLICABILITY
TABLE_TYPE SYSTEM VIEW
@@ -82,7 +82,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME COLUMNS
TABLE_TYPE SYSTEM VIEW
@@ -105,7 +105,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME COLUMN_PRIVILEGES
TABLE_TYPE SYSTEM VIEW
@@ -128,7 +128,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME ENGINES
TABLE_TYPE SYSTEM VIEW
@@ -151,7 +151,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME EVENTS
TABLE_TYPE SYSTEM VIEW
@@ -174,7 +174,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME FILES
TABLE_TYPE SYSTEM VIEW
@@ -197,7 +197,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME GLOBAL_STATUS
TABLE_TYPE SYSTEM VIEW
@@ -220,7 +220,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME GLOBAL_VARIABLES
TABLE_TYPE SYSTEM VIEW
@@ -243,7 +243,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME KEY_COLUMN_USAGE
TABLE_TYPE SYSTEM VIEW
@@ -266,7 +266,30 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME PARAMETERS
+TABLE_TYPE SYSTEM VIEW
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Dynamic
+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 def
TABLE_SCHEMA information_schema
TABLE_NAME PARTITIONS
TABLE_TYPE SYSTEM VIEW
@@ -289,7 +312,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME PLUGINS
TABLE_TYPE SYSTEM VIEW
@@ -312,7 +335,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME PROCESSLIST
TABLE_TYPE SYSTEM VIEW
@@ -335,7 +358,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME REFERENTIAL_CONSTRAINTS
TABLE_TYPE SYSTEM VIEW
@@ -358,7 +381,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
TABLE_TYPE SYSTEM VIEW
@@ -381,7 +404,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME SCHEMATA
TABLE_TYPE SYSTEM VIEW
@@ -404,7 +427,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME SCHEMA_PRIVILEGES
TABLE_TYPE SYSTEM VIEW
@@ -427,7 +450,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME SESSION_STATUS
TABLE_TYPE SYSTEM VIEW
@@ -450,7 +473,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME SESSION_VARIABLES
TABLE_TYPE SYSTEM VIEW
@@ -473,7 +496,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME STATISTICS
TABLE_TYPE SYSTEM VIEW
@@ -496,7 +519,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME TABLES
TABLE_TYPE SYSTEM VIEW
@@ -519,7 +542,30 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME TABLESPACES
+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 def
TABLE_SCHEMA information_schema
TABLE_NAME TABLE_CONSTRAINTS
TABLE_TYPE SYSTEM VIEW
@@ -542,7 +588,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME TABLE_PRIVILEGES
TABLE_TYPE SYSTEM VIEW
@@ -565,7 +611,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME TRIGGERS
TABLE_TYPE SYSTEM VIEW
@@ -588,7 +634,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME USER_PRIVILEGES
TABLE_TYPE SYSTEM VIEW
@@ -611,7 +657,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME VIEWS
TABLE_TYPE SYSTEM VIEW
@@ -649,9 +695,9 @@ AS "user_comment",
'-----------------------------------------------------' AS "Separator"
FROM information_schema.tables
WHERE table_schema = 'information_schema'
-AND table_name <> 'profiling'
+AND table_name <> 'profiling' AND table_name not like 'innodb_%'
ORDER BY table_schema,table_name;
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME CHARACTER_SETS
TABLE_TYPE SYSTEM VIEW
@@ -674,7 +720,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME COLLATIONS
TABLE_TYPE SYSTEM VIEW
@@ -697,7 +743,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME COLLATION_CHARACTER_SET_APPLICABILITY
TABLE_TYPE SYSTEM VIEW
@@ -720,7 +766,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME COLUMNS
TABLE_TYPE SYSTEM VIEW
@@ -743,7 +789,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME COLUMN_PRIVILEGES
TABLE_TYPE SYSTEM VIEW
@@ -766,7 +812,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME ENGINES
TABLE_TYPE SYSTEM VIEW
@@ -789,7 +835,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME EVENTS
TABLE_TYPE SYSTEM VIEW
@@ -812,7 +858,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME FILES
TABLE_TYPE SYSTEM VIEW
@@ -835,7 +881,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME GLOBAL_STATUS
TABLE_TYPE SYSTEM VIEW
@@ -858,7 +904,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME GLOBAL_VARIABLES
TABLE_TYPE SYSTEM VIEW
@@ -881,7 +927,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME KEY_COLUMN_USAGE
TABLE_TYPE SYSTEM VIEW
@@ -904,7 +950,30 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME PARAMETERS
+TABLE_TYPE SYSTEM VIEW
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Dynamic
+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 def
TABLE_SCHEMA information_schema
TABLE_NAME PARTITIONS
TABLE_TYPE SYSTEM VIEW
@@ -927,7 +996,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME PLUGINS
TABLE_TYPE SYSTEM VIEW
@@ -950,7 +1019,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME PROCESSLIST
TABLE_TYPE SYSTEM VIEW
@@ -973,7 +1042,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME REFERENTIAL_CONSTRAINTS
TABLE_TYPE SYSTEM VIEW
@@ -996,7 +1065,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
TABLE_TYPE SYSTEM VIEW
@@ -1019,7 +1088,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME SCHEMATA
TABLE_TYPE SYSTEM VIEW
@@ -1042,7 +1111,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME SCHEMA_PRIVILEGES
TABLE_TYPE SYSTEM VIEW
@@ -1065,7 +1134,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME SESSION_STATUS
TABLE_TYPE SYSTEM VIEW
@@ -1088,7 +1157,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME SESSION_VARIABLES
TABLE_TYPE SYSTEM VIEW
@@ -1111,7 +1180,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME STATISTICS
TABLE_TYPE SYSTEM VIEW
@@ -1134,7 +1203,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME TABLES
TABLE_TYPE SYSTEM VIEW
@@ -1157,7 +1226,30 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
+TABLE_SCHEMA information_schema
+TABLE_NAME TABLESPACES
+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 def
TABLE_SCHEMA information_schema
TABLE_NAME TABLE_CONSTRAINTS
TABLE_TYPE SYSTEM VIEW
@@ -1180,7 +1272,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME TABLE_PRIVILEGES
TABLE_TYPE SYSTEM VIEW
@@ -1203,7 +1295,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME TRIGGERS
TABLE_TYPE SYSTEM VIEW
@@ -1226,7 +1318,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME USER_PRIVILEGES
TABLE_TYPE SYSTEM VIEW
@@ -1249,7 +1341,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME VIEWS
TABLE_TYPE SYSTEM VIEW
diff --git a/mysql-test/suite/funcs_1/r/is_tables_memory.result b/mysql-test/suite/funcs_1/r/is_tables_memory.result
index 561bf6e569f..961fb98d573 100644
--- a/mysql-test/suite/funcs_1/r/is_tables_memory.result
+++ b/mysql-test/suite/funcs_1/r/is_tables_memory.result
@@ -18,7 +18,7 @@ AS "user_comment",
FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
@@ -41,7 +41,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t2
TABLE_TYPE BASE TABLE
@@ -64,7 +64,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test2
TABLE_NAME t1
TABLE_TYPE BASE TABLE
@@ -110,7 +110,7 @@ AS "user_comment",
FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
@@ -133,7 +133,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t2
TABLE_TYPE BASE TABLE
diff --git a/mysql-test/suite/funcs_1/r/is_tables_myisam.result b/mysql-test/suite/funcs_1/r/is_tables_myisam.result
index 0f476309303..ab49a05321f 100644
--- a/mysql-test/suite/funcs_1/r/is_tables_myisam.result
+++ b/mysql-test/suite/funcs_1/r/is_tables_myisam.result
@@ -18,7 +18,7 @@ AS "user_comment",
FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
@@ -41,7 +41,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t2
TABLE_TYPE BASE TABLE
@@ -64,7 +64,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test2
TABLE_NAME t1
TABLE_TYPE BASE TABLE
@@ -110,7 +110,7 @@ AS "user_comment",
FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
@@ -133,7 +133,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t2
TABLE_TYPE BASE TABLE
diff --git a/mysql-test/suite/funcs_1/r/is_tables_myisam_embedded.result b/mysql-test/suite/funcs_1/r/is_tables_myisam_embedded.result
index 25c482bb73c..7da84788559 100644
--- a/mysql-test/suite/funcs_1/r/is_tables_myisam_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_tables_myisam_embedded.result
@@ -18,7 +18,7 @@ AS "user_comment",
FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
@@ -41,7 +41,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t2
TABLE_TYPE BASE TABLE
@@ -64,7 +64,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test2
TABLE_NAME t1
TABLE_TYPE BASE TABLE
@@ -110,7 +110,7 @@ AS "user_comment",
FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
@@ -133,7 +133,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t2
TABLE_TYPE BASE TABLE
@@ -156,7 +156,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test2
TABLE_NAME t1
TABLE_TYPE BASE TABLE
diff --git a/mysql-test/suite/funcs_1/r/is_tables_mysql.result b/mysql-test/suite/funcs_1/r/is_tables_mysql.result
index 4b33009904f..0945401ba43 100644
--- a/mysql-test/suite/funcs_1/r/is_tables_mysql.result
+++ b/mysql-test/suite/funcs_1/r/is_tables_mysql.result
@@ -12,7 +12,7 @@ AS "user_comment",
FROM information_schema.tables
WHERE table_schema = 'mysql'
ORDER BY table_schema,table_name;
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME columns_priv
TABLE_TYPE BASE TABLE
@@ -35,7 +35,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Column privileges
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME db
TABLE_TYPE BASE TABLE
@@ -58,7 +58,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Database privileges
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME event
TABLE_TYPE BASE TABLE
@@ -81,7 +81,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Events
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME func
TABLE_TYPE BASE TABLE
@@ -104,7 +104,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment User defined functions
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME general_log
TABLE_TYPE BASE TABLE
@@ -127,7 +127,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment General log
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME help_category
TABLE_TYPE BASE TABLE
@@ -150,7 +150,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment help categories
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME help_keyword
TABLE_TYPE BASE TABLE
@@ -173,7 +173,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment help keywords
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME help_relation
TABLE_TYPE BASE TABLE
@@ -196,7 +196,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment keyword-topic relation
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME help_topic
TABLE_TYPE BASE TABLE
@@ -219,7 +219,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment help topics
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME host
TABLE_TYPE BASE TABLE
@@ -242,7 +242,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Host privileges; Merged with database privileges
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME ndb_binlog_index
TABLE_TYPE BASE TABLE
@@ -265,13 +265,13 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME plugin
TABLE_TYPE BASE TABLE
ENGINE MyISAM
VERSION 10
-ROW_FORMAT Fixed
+ROW_FORMAT Dynamic
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
@@ -282,13 +282,13 @@ AUTO_INCREMENT NULL
CREATE_TIME #CRT#
UPDATE_TIME #UT#
CHECK_TIME #CT#
-TABLE_COLLATION utf8_bin
+TABLE_COLLATION utf8_general_ci
CHECKSUM NULL
CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment MySQL plugins
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME proc
TABLE_TYPE BASE TABLE
@@ -311,7 +311,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Stored Procedures
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME procs_priv
TABLE_TYPE BASE TABLE
@@ -334,7 +334,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Procedure privileges
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME servers
TABLE_TYPE BASE TABLE
@@ -357,7 +357,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment MySQL Foreign Servers table
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME slow_log
TABLE_TYPE BASE TABLE
@@ -380,7 +380,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Slow log
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME tables_priv
TABLE_TYPE BASE TABLE
@@ -403,7 +403,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Table privileges
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME time_zone
TABLE_TYPE BASE TABLE
@@ -426,7 +426,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Time zones
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME time_zone_leap_second
TABLE_TYPE BASE TABLE
@@ -449,7 +449,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Leap seconds information for time zones
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME time_zone_name
TABLE_TYPE BASE TABLE
@@ -472,7 +472,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Time zone names
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME time_zone_transition
TABLE_TYPE BASE TABLE
@@ -495,7 +495,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Time zone transitions
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME time_zone_transition_type
TABLE_TYPE BASE TABLE
@@ -518,7 +518,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Time zone transition types
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME user
TABLE_TYPE BASE TABLE
diff --git a/mysql-test/suite/funcs_1/r/is_tables_mysql_embedded.result b/mysql-test/suite/funcs_1/r/is_tables_mysql_embedded.result
index 393a588288d..ba30f6415bb 100644
--- a/mysql-test/suite/funcs_1/r/is_tables_mysql_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_tables_mysql_embedded.result
@@ -12,7 +12,7 @@ AS "user_comment",
FROM information_schema.tables
WHERE table_schema = 'mysql'
ORDER BY table_schema,table_name;
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME columns_priv
TABLE_TYPE BASE TABLE
@@ -35,7 +35,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Column privileges
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME db
TABLE_TYPE BASE TABLE
@@ -58,7 +58,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Database privileges
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME event
TABLE_TYPE BASE TABLE
@@ -81,7 +81,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Events
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME func
TABLE_TYPE BASE TABLE
@@ -104,7 +104,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment User defined functions
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME general_log
TABLE_TYPE BASE TABLE
@@ -127,7 +127,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment General log
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME help_category
TABLE_TYPE BASE TABLE
@@ -150,7 +150,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment help categories
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME help_keyword
TABLE_TYPE BASE TABLE
@@ -173,7 +173,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment help keywords
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME help_relation
TABLE_TYPE BASE TABLE
@@ -196,7 +196,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment keyword-topic relation
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME help_topic
TABLE_TYPE BASE TABLE
@@ -219,7 +219,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment help topics
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME host
TABLE_TYPE BASE TABLE
@@ -242,7 +242,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Host privileges; Merged with database privileges
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME ndb_binlog_index
TABLE_TYPE BASE TABLE
@@ -265,13 +265,13 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME plugin
TABLE_TYPE BASE TABLE
ENGINE MyISAM
VERSION 10
-ROW_FORMAT Fixed
+ROW_FORMAT Dynamic
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
@@ -282,13 +282,13 @@ AUTO_INCREMENT NULL
CREATE_TIME #CRT#
UPDATE_TIME #UT#
CHECK_TIME #CT#
-TABLE_COLLATION utf8_bin
+TABLE_COLLATION utf8_general_ci
CHECKSUM NULL
CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment MySQL plugins
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME proc
TABLE_TYPE BASE TABLE
@@ -311,7 +311,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Stored Procedures
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME procs_priv
TABLE_TYPE BASE TABLE
@@ -334,7 +334,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Procedure privileges
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME servers
TABLE_TYPE BASE TABLE
@@ -357,7 +357,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment MySQL Foreign Servers table
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME slow_log
TABLE_TYPE BASE TABLE
@@ -380,7 +380,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Slow log
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME tables_priv
TABLE_TYPE BASE TABLE
@@ -403,7 +403,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Table privileges
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME time_zone
TABLE_TYPE BASE TABLE
@@ -426,7 +426,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Time zones
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME time_zone_leap_second
TABLE_TYPE BASE TABLE
@@ -449,7 +449,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Leap seconds information for time zones
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME time_zone_name
TABLE_TYPE BASE TABLE
@@ -472,7 +472,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Time zone names
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME time_zone_transition
TABLE_TYPE BASE TABLE
@@ -495,7 +495,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Time zone transitions
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME time_zone_transition_type
TABLE_TYPE BASE TABLE
@@ -518,7 +518,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Time zone transition types
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME user
TABLE_TYPE BASE TABLE
@@ -557,7 +557,7 @@ AS "user_comment",
FROM information_schema.tables
WHERE table_schema = 'mysql'
ORDER BY table_schema,table_name;
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME columns_priv
TABLE_TYPE BASE TABLE
@@ -580,7 +580,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Column privileges
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME db
TABLE_TYPE BASE TABLE
@@ -603,7 +603,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Database privileges
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME event
TABLE_TYPE BASE TABLE
@@ -626,7 +626,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Events
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME func
TABLE_TYPE BASE TABLE
@@ -649,7 +649,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment User defined functions
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME general_log
TABLE_TYPE BASE TABLE
@@ -672,7 +672,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment General log
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME help_category
TABLE_TYPE BASE TABLE
@@ -695,7 +695,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment help categories
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME help_keyword
TABLE_TYPE BASE TABLE
@@ -718,7 +718,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment help keywords
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME help_relation
TABLE_TYPE BASE TABLE
@@ -741,7 +741,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment keyword-topic relation
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME help_topic
TABLE_TYPE BASE TABLE
@@ -764,7 +764,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment help topics
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME host
TABLE_TYPE BASE TABLE
@@ -787,7 +787,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Host privileges; Merged with database privileges
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME ndb_binlog_index
TABLE_TYPE BASE TABLE
@@ -810,13 +810,13 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME plugin
TABLE_TYPE BASE TABLE
ENGINE MyISAM
VERSION 10
-ROW_FORMAT Fixed
+ROW_FORMAT Dynamic
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
@@ -827,13 +827,13 @@ AUTO_INCREMENT NULL
CREATE_TIME #CRT#
UPDATE_TIME #UT#
CHECK_TIME #CT#
-TABLE_COLLATION utf8_bin
+TABLE_COLLATION utf8_general_ci
CHECKSUM NULL
CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment MySQL plugins
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME proc
TABLE_TYPE BASE TABLE
@@ -856,7 +856,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Stored Procedures
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME procs_priv
TABLE_TYPE BASE TABLE
@@ -879,7 +879,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Procedure privileges
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME servers
TABLE_TYPE BASE TABLE
@@ -902,7 +902,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment MySQL Foreign Servers table
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME slow_log
TABLE_TYPE BASE TABLE
@@ -925,7 +925,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Slow log
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME tables_priv
TABLE_TYPE BASE TABLE
@@ -948,7 +948,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Table privileges
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME time_zone
TABLE_TYPE BASE TABLE
@@ -971,7 +971,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Time zones
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME time_zone_leap_second
TABLE_TYPE BASE TABLE
@@ -994,7 +994,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Leap seconds information for time zones
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME time_zone_name
TABLE_TYPE BASE TABLE
@@ -1017,7 +1017,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Time zone names
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME time_zone_transition
TABLE_TYPE BASE TABLE
@@ -1040,7 +1040,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Time zone transitions
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME time_zone_transition_type
TABLE_TYPE BASE TABLE
@@ -1063,7 +1063,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment Time zone transition types
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA mysql
TABLE_NAME user
TABLE_TYPE BASE TABLE
diff --git a/mysql-test/suite/funcs_1/r/is_tables_ndb.result b/mysql-test/suite/funcs_1/r/is_tables_ndb.result
index 4ce150353c1..fe737a676ad 100644
--- a/mysql-test/suite/funcs_1/r/is_tables_ndb.result
+++ b/mysql-test/suite/funcs_1/r/is_tables_ndb.result
@@ -17,7 +17,7 @@ AS "user_comment",
FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
@@ -40,7 +40,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t2
TABLE_TYPE BASE TABLE
@@ -63,7 +63,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test2
TABLE_NAME t1
TABLE_TYPE BASE TABLE
@@ -109,7 +109,7 @@ AS "user_comment",
FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
@@ -132,7 +132,7 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
+TABLE_CATALOG def
TABLE_SCHEMA test1
TABLE_NAME t2
TABLE_TYPE BASE TABLE
diff --git a/mysql-test/suite/funcs_1/r/is_triggers.result b/mysql-test/suite/funcs_1/r/is_triggers.result
index edf4a9e5032..7d84f786db5 100644
--- a/mysql-test/suite/funcs_1/r/is_triggers.result
+++ b/mysql-test/suite/funcs_1/r/is_triggers.result
@@ -28,11 +28,11 @@ DROP FUNCTION test.f1;
#########################################################################
DESCRIBE information_schema.TRIGGERS;
Field Type Null Key Default Extra
-TRIGGER_CATALOG varchar(512) YES NULL
+TRIGGER_CATALOG varchar(512) NO
TRIGGER_SCHEMA varchar(64) NO
TRIGGER_NAME varchar(64) NO
EVENT_MANIPULATION varchar(6) NO
-EVENT_OBJECT_CATALOG varchar(512) YES NULL
+EVENT_OBJECT_CATALOG varchar(512) NO
EVENT_OBJECT_SCHEMA varchar(64) NO
EVENT_OBJECT_TABLE varchar(64) NO
ACTION_ORDER bigint(4) NO 0
@@ -53,11 +53,11 @@ DATABASE_COLLATION varchar(32) NO
SHOW CREATE TABLE information_schema.TRIGGERS;
Table Create Table
TRIGGERS CREATE TEMPORARY TABLE `TRIGGERS` (
- `TRIGGER_CATALOG` varchar(512) DEFAULT NULL,
+ `TRIGGER_CATALOG` varchar(512) NOT NULL DEFAULT '',
`TRIGGER_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`TRIGGER_NAME` varchar(64) NOT NULL DEFAULT '',
`EVENT_MANIPULATION` varchar(6) NOT NULL DEFAULT '',
- `EVENT_OBJECT_CATALOG` varchar(512) DEFAULT NULL,
+ `EVENT_OBJECT_CATALOG` varchar(512) NOT NULL DEFAULT '',
`EVENT_OBJECT_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`EVENT_OBJECT_TABLE` varchar(64) NOT NULL DEFAULT '',
`ACTION_ORDER` bigint(4) NOT NULL DEFAULT '0',
@@ -78,11 +78,11 @@ TRIGGERS CREATE TEMPORARY TABLE `TRIGGERS` (
) ENGINE=MyISAM DEFAULT CHARSET=utf8
SHOW COLUMNS FROM information_schema.TRIGGERS;
Field Type Null Key Default Extra
-TRIGGER_CATALOG varchar(512) YES NULL
+TRIGGER_CATALOG varchar(512) NO
TRIGGER_SCHEMA varchar(64) NO
TRIGGER_NAME varchar(64) NO
EVENT_MANIPULATION varchar(6) NO
-EVENT_OBJECT_CATALOG varchar(512) YES NULL
+EVENT_OBJECT_CATALOG varchar(512) NO
EVENT_OBJECT_SCHEMA varchar(64) NO
EVENT_OBJECT_TABLE varchar(64) NO
ACTION_ORDER bigint(4) NO 0
@@ -105,6 +105,8 @@ WHERE trigger_catalog IS NOT NULL OR event_object_catalog IS NOT NULL
OR action_condition IS NOT NULL OR action_reference_old_table IS NOT NULL
OR action_reference_new_table IS NOT NULL;
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
+def mtr gs_insert INSERT def mtr global_suppressions 0 NULL BEGIN DECLARE dummy INT; SELECT "" REGEXP NEW.pattern INTO dummy; END ROW BEFORE NULL NULL OLD NEW NULL root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+def mtr ts_insert INSERT def mtr test_suppressions 0 NULL BEGIN DECLARE dummy INT; SELECT "" REGEXP NEW.pattern INTO dummy; END ROW BEFORE NULL NULL OLD NEW NULL root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
##################################################################################
# Testcase 3.2.18.2 + 3.2.18.3: INFORMATION_SCHEMA.TRIGGERS accessible information
##################################################################################
@@ -133,7 +135,7 @@ GRANT SELECT ON db_datadict.t1 TO 'testuser3'@'localhost';
SELECT * FROM information_schema.triggers
WHERE trigger_name = 'trg1';
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+def db_datadict trg1 INSERT def db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
SHOW TRIGGERS FROM db_datadict;
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
@@ -157,7 +159,7 @@ GRANT SELECT ON `db_datadict`.`t1` TO 'testuser3'@'localhost'
SELECT * FROM information_schema.triggers
WHERE trigger_name = 'trg1';
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+def db_datadict trg1 INSERT def db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
SHOW TRIGGERS FROM db_datadict;
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
@@ -173,7 +175,7 @@ ERROR 42000: SELECT command denied to user 'testuser4'@'localhost' for table 't1
SELECT * FROM information_schema.triggers
WHERE trigger_name = 'trg1';
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+def db_datadict trg1 INSERT def db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
SHOW TRIGGERS FROM db_datadict;
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
@@ -181,7 +183,7 @@ trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser
SELECT * FROM information_schema.triggers
WHERE trigger_name = 'trg1';
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
-NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
+def db_datadict trg1 INSERT def db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
SHOW TRIGGERS FROM db_datadict;
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
diff --git a/mysql-test/suite/funcs_1/r/is_user_privileges.result b/mysql-test/suite/funcs_1/r/is_user_privileges.result
index 03865f59c2c..8f68f8c802d 100644
--- a/mysql-test/suite/funcs_1/r/is_user_privileges.result
+++ b/mysql-test/suite/funcs_1/r/is_user_privileges.result
@@ -29,26 +29,26 @@ DROP FUNCTION test.f1;
DESCRIBE information_schema.USER_PRIVILEGES;
Field Type Null Key Default Extra
GRANTEE varchar(81) NO
-TABLE_CATALOG varchar(512) YES NULL
+TABLE_CATALOG varchar(512) NO
PRIVILEGE_TYPE varchar(64) NO
IS_GRANTABLE varchar(3) NO
SHOW CREATE TABLE information_schema.USER_PRIVILEGES;
Table Create Table
USER_PRIVILEGES CREATE TEMPORARY TABLE `USER_PRIVILEGES` (
`GRANTEE` varchar(81) NOT NULL DEFAULT '',
- `TABLE_CATALOG` varchar(512) DEFAULT NULL,
+ `TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
`PRIVILEGE_TYPE` varchar(64) NOT NULL DEFAULT '',
`IS_GRANTABLE` varchar(3) NOT NULL DEFAULT ''
) ENGINE=MEMORY DEFAULT CHARSET=utf8
SHOW COLUMNS FROM information_schema.USER_PRIVILEGES;
Field Type Null Key Default Extra
GRANTEE varchar(81) NO
-TABLE_CATALOG varchar(512) YES NULL
+TABLE_CATALOG varchar(512) NO
PRIVILEGE_TYPE varchar(64) NO
IS_GRANTABLE varchar(3) NO
SELECT grantee, table_catalog, privilege_type
FROM information_schema.user_privileges
-WHERE table_catalog IS NOT NULL;
+WHERE table_catalog IS NULL OR table_catalog <> 'def';
grantee table_catalog privilege_type
##########################################################################
# Testcases 3.2.16.2+3.2.16.3+3.2.16.4: INFORMATION_SCHEMA.USER_PRIVILEGES
@@ -70,16 +70,16 @@ SELECT * FROM information_schema.user_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_catalog, privilege_type;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL USAGE NO
-'testuser2'@'localhost' NULL INSERT NO
-'testuser2'@'localhost' NULL UPDATE NO
-'testuser3'@'localhost' NULL USAGE NO
+'testuser1'@'localhost' def USAGE NO
+'testuser2'@'localhost' def INSERT NO
+'testuser2'@'localhost' def UPDATE NO
+'testuser3'@'localhost' def USAGE NO
SELECT * FROM mysql.user
WHERE user LIKE 'testuser%' ORDER BY host, user;
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
-localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
+localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
#
# Add GRANT OPTION db_datadict.* to testuser1;
GRANT UPDATE ON db_datadict.* TO 'testuser1'@'localhost' WITH GRANT OPTION;
@@ -87,28 +87,28 @@ SELECT * FROM information_schema.user_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_catalog, privilege_type;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL USAGE NO
-'testuser2'@'localhost' NULL INSERT NO
-'testuser2'@'localhost' NULL UPDATE NO
-'testuser3'@'localhost' NULL USAGE NO
+'testuser1'@'localhost' def USAGE NO
+'testuser2'@'localhost' def INSERT NO
+'testuser2'@'localhost' def UPDATE NO
+'testuser3'@'localhost' def USAGE NO
SELECT * FROM mysql.user
WHERE user LIKE 'testuser%' ORDER BY host, user;
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
-localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
+localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
# Establish connection testuser1 (user=testuser1)
SELECT * FROM information_schema.user_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_catalog, privilege_type;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL USAGE NO
+'testuser1'@'localhost' def USAGE NO
SELECT * FROM mysql.user
WHERE user LIKE 'testuser%' ORDER BY host, user;
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
-localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
+localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
SHOW GRANTS;
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -124,16 +124,16 @@ SELECT * FROM information_schema.user_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_catalog, privilege_type;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL SELECT NO
-'testuser2'@'localhost' NULL INSERT NO
-'testuser2'@'localhost' NULL UPDATE NO
-'testuser3'@'localhost' NULL USAGE NO
+'testuser1'@'localhost' def SELECT NO
+'testuser2'@'localhost' def INSERT NO
+'testuser2'@'localhost' def UPDATE NO
+'testuser3'@'localhost' def USAGE NO
SELECT * FROM mysql.user
WHERE user LIKE 'testuser%' ORDER BY host, user;
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
-localhost testuser1 Y N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
+localhost testuser1 Y N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
GRANT SELECT ON *.* TO 'testuser1'@'localhost' WITH GRANT OPTION;
#
# Here <SELECT YES> is shown correctly for testuser1;
@@ -141,28 +141,28 @@ SELECT * FROM information_schema.user_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_catalog, privilege_type;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL SELECT YES
-'testuser2'@'localhost' NULL INSERT NO
-'testuser2'@'localhost' NULL UPDATE NO
-'testuser3'@'localhost' NULL USAGE NO
+'testuser1'@'localhost' def SELECT YES
+'testuser2'@'localhost' def INSERT NO
+'testuser2'@'localhost' def UPDATE NO
+'testuser3'@'localhost' def USAGE NO
SELECT * FROM mysql.user
WHERE user LIKE 'testuser%' ORDER BY host, user;
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
-localhost testuser1 Y N N N N N N N N N Y N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
+localhost testuser1 Y N N N N N N N N N Y N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
# Switch to connection testuser1
SELECT * FROM information_schema.user_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_catalog, privilege_type;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL SELECT YES
+'testuser1'@'localhost' def SELECT YES
SELECT * FROM mysql.user
WHERE user LIKE 'testuser%' ORDER BY host, user;
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
-localhost testuser1 Y N N N N N N N N N Y N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
+localhost testuser1 Y N N N N N N N N N Y N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
SHOW GRANTS;
Grants for testuser1@localhost
GRANT SELECT ON *.* TO 'testuser1'@'localhost' WITH GRANT OPTION
@@ -173,8 +173,8 @@ SELECT * FROM information_schema.user_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_catalog, privilege_type;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'testuser2'@'localhost' NULL INSERT NO
-'testuser2'@'localhost' NULL UPDATE NO
+'testuser2'@'localhost' def INSERT NO
+'testuser2'@'localhost' def UPDATE NO
SELECT * FROM mysql.user
WHERE user LIKE 'testuser%' ORDER BY host, user;
ERROR 42000: SELECT command denied to user 'testuser2'@'localhost' for table 'user'
@@ -186,7 +186,7 @@ SELECT * FROM information_schema.user_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_catalog, privilege_type;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'testuser3'@'localhost' NULL USAGE NO
+'testuser3'@'localhost' def USAGE NO
SELECT * FROM mysql.user
WHERE user LIKE 'testuser%' ORDER BY host, user;
ERROR 42000: SELECT command denied to user 'testuser3'@'localhost' for table 'user'
@@ -201,22 +201,22 @@ SELECT * FROM information_schema.user_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_catalog, privilege_type;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL USAGE NO
-'testuser2'@'localhost' NULL INSERT NO
-'testuser2'@'localhost' NULL UPDATE NO
-'testuser3'@'localhost' NULL USAGE NO
+'testuser1'@'localhost' def USAGE NO
+'testuser2'@'localhost' def INSERT NO
+'testuser2'@'localhost' def UPDATE NO
+'testuser3'@'localhost' def USAGE NO
SELECT * FROM mysql.user
WHERE user LIKE 'testuser%' ORDER BY host, user;
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
-localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
+localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
# Switch to connection testuser1
SELECT * FROM information_schema.user_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_catalog, privilege_type;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL USAGE NO
+'testuser1'@'localhost' def USAGE NO
SELECT * FROM mysql.user
WHERE user LIKE 'testuser%' ORDER BY host, user;
ERROR 42000: SELECT command denied to user 'testuser1'@'localhost' for table 'user'
@@ -229,7 +229,7 @@ SELECT * FROM information_schema.user_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_catalog, privilege_type;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL USAGE NO
+'testuser1'@'localhost' def USAGE NO
SELECT * FROM mysql.user
WHERE user LIKE 'testuser%' ORDER BY host, user;
ERROR 42000: SELECT command denied to user 'testuser1'@'localhost' for table 'user'
@@ -247,28 +247,28 @@ SELECT * FROM information_schema.user_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_catalog, privilege_type;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL USAGE NO
-'testuser2'@'localhost' NULL INSERT NO
-'testuser2'@'localhost' NULL UPDATE NO
-'testuser3'@'localhost' NULL USAGE NO
+'testuser1'@'localhost' def USAGE NO
+'testuser2'@'localhost' def INSERT NO
+'testuser2'@'localhost' def UPDATE NO
+'testuser3'@'localhost' def USAGE NO
SELECT * FROM mysql.user
WHERE user LIKE 'testuser%' ORDER BY host, user;
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
-localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
+localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
# Switch to connection testuser1
SELECT * FROM information_schema.user_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_catalog, privilege_type;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL USAGE NO
+'testuser1'@'localhost' def USAGE NO
SELECT * FROM mysql.user
WHERE user LIKE 'testuser%' ORDER BY host, user;
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
-localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
+localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
SHOW GRANTS;
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -281,13 +281,13 @@ SELECT * FROM information_schema.user_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_catalog, privilege_type;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL USAGE NO
+'testuser1'@'localhost' def USAGE NO
SELECT * FROM mysql.user
WHERE user LIKE 'testuser%' ORDER BY host, user;
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
-localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
+localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
SHOW GRANTS;
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -303,22 +303,22 @@ SELECT * FROM information_schema.user_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_catalog, privilege_type;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL USAGE NO
-'testuser2'@'localhost' NULL INSERT NO
-'testuser2'@'localhost' NULL UPDATE NO
-'testuser3'@'localhost' NULL USAGE NO
+'testuser1'@'localhost' def USAGE NO
+'testuser2'@'localhost' def INSERT NO
+'testuser2'@'localhost' def UPDATE NO
+'testuser3'@'localhost' def USAGE NO
SELECT * FROM mysql.user
WHERE user LIKE 'testuser%' ORDER BY host, user;
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
-localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
-localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
+localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
+localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
# Switch to connection testuser1
SELECT * FROM information_schema.user_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_catalog, privilege_type;
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL USAGE NO
+'testuser1'@'localhost' def USAGE NO
SELECT * FROM mysql.user
WHERE user LIKE 'testuser%' ORDER BY host, user;
ERROR 42000: SELECT command denied to user 'testuser1'@'localhost' for table 'user'
@@ -349,7 +349,7 @@ CREATE USER 'testuser1'@'localhost';
SELECT * FROM information_schema.user_privileges
WHERE grantee = '''testuser1''@''localhost''';
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL USAGE NO
+'testuser1'@'localhost' def USAGE NO
SHOW GRANTS FOR 'testuser1'@'localhost';
Grants for testuser1@localhost
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -357,8 +357,8 @@ GRANT SELECT, FILE ON *.* TO 'testuser1'@'localhost';
SELECT * FROM information_schema.user_privileges
WHERE grantee = '''testuser1''@''localhost''';
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
-'testuser1'@'localhost' NULL SELECT NO
-'testuser1'@'localhost' NULL FILE NO
+'testuser1'@'localhost' def SELECT NO
+'testuser1'@'localhost' def FILE NO
SHOW GRANTS FOR 'testuser1'@'localhost';
Grants for testuser1@localhost
GRANT SELECT, FILE ON *.* TO 'testuser1'@'localhost'
diff --git a/mysql-test/suite/funcs_1/r/is_views.result b/mysql-test/suite/funcs_1/r/is_views.result
index f960c26b21d..59597fbc3b9 100644
--- a/mysql-test/suite/funcs_1/r/is_views.result
+++ b/mysql-test/suite/funcs_1/r/is_views.result
@@ -28,7 +28,7 @@ DROP FUNCTION test.f1;
#########################################################################
DESCRIBE information_schema.VIEWS;
Field Type Null Key Default Extra
-TABLE_CATALOG varchar(512) YES NULL
+TABLE_CATALOG varchar(512) NO
TABLE_SCHEMA varchar(64) NO
TABLE_NAME varchar(64) NO
VIEW_DEFINITION longtext NO NULL
@@ -41,7 +41,7 @@ COLLATION_CONNECTION varchar(32) NO
SHOW CREATE TABLE information_schema.VIEWS;
Table Create Table
VIEWS CREATE TEMPORARY TABLE `VIEWS` (
- `TABLE_CATALOG` varchar(512) DEFAULT NULL,
+ `TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
`VIEW_DEFINITION` longtext NOT NULL,
@@ -54,7 +54,7 @@ VIEWS CREATE TEMPORARY TABLE `VIEWS` (
) ENGINE=MyISAM DEFAULT CHARSET=utf8
SHOW COLUMNS FROM information_schema.VIEWS;
Field Type Null Key Default Extra
-TABLE_CATALOG varchar(512) YES NULL
+TABLE_CATALOG varchar(512) NO
TABLE_SCHEMA varchar(64) NO
TABLE_NAME varchar(64) NO
VIEW_DEFINITION longtext NO NULL
@@ -88,19 +88,19 @@ GRANT SHOW VIEW, CREATE VIEW ON db_datadict.* TO 'testuser2'@'localhost';
SELECT * FROM information_schema.views
WHERE table_schema = 'db_datadict' ORDER BY table_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL db_datadict v_granted_glob select `db_datadict`.`t1`.`f2` AS `f2`,`db_datadict`.`t1`.`f3` AS `f3` from `db_datadict`.`t1` NONE YES root@localhost DEFINER latin1 latin1_swedish_ci
-NULL db_datadict v_granted_to_1 select `db_datadict`.`t1`.`f1` AS `f1`,`db_datadict`.`t1`.`f2` AS `f2`,`db_datadict`.`t1`.`f3` AS `f3` from `db_datadict`.`t1` NONE YES root@localhost DEFINER latin1 latin1_swedish_ci
+def db_datadict v_granted_glob select `db_datadict`.`t1`.`f2` AS `f2`,`db_datadict`.`t1`.`f3` AS `f3` from `db_datadict`.`t1` NONE YES root@localhost DEFINER latin1 latin1_swedish_ci
+def db_datadict v_granted_to_1 select `db_datadict`.`t1`.`f1` AS `f1`,`db_datadict`.`t1`.`f2` AS `f2`,`db_datadict`.`t1`.`f3` AS `f3` from `db_datadict`.`t1` NONE YES root@localhost DEFINER latin1 latin1_swedish_ci
# Establish connection testuser1 (user=testuser1)
SELECT * FROM information_schema.views
WHERE table_schema = 'db_datadict' ORDER BY table_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL db_datadict v_granted_to_1 NONE YES root@localhost DEFINER latin1 latin1_swedish_ci
+def db_datadict v_granted_to_1 NONE YES root@localhost DEFINER latin1 latin1_swedish_ci
# Establish connection testuser2 (user=testuser2)
SELECT * FROM information_schema.views
WHERE table_schema = 'db_datadict' ORDER BY table_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL db_datadict v_granted_glob NONE YES root@localhost DEFINER latin1 latin1_swedish_ci
-NULL db_datadict v_granted_to_1 NONE YES root@localhost DEFINER latin1 latin1_swedish_ci
+def db_datadict v_granted_glob NONE YES root@localhost DEFINER latin1 latin1_swedish_ci
+def db_datadict v_granted_to_1 NONE YES root@localhost DEFINER latin1 latin1_swedish_ci
# Establish connection test_no_views (user=test_no_views)
SELECT * FROM information_schema.views
WHERE table_schema = 'db_datadict' ORDER BY table_name;
@@ -128,7 +128,7 @@ CREATE VIEW test.t1_view AS SELECT DISTINCT f1 FROM test.t1_table;
SELECT * FROM information_schema.views
WHERE table_name LIKE 't1_%';
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
-NULL test t1_view select distinct `test`.`t1_table`.`f1` AS `f1` from `test`.`t1_table` NONE NO root@localhost DEFINER latin1 latin1_swedish_ci
+def test t1_view select distinct `test`.`t1_table`.`f1` AS `f1` from `test`.`t1_table` NONE NO root@localhost DEFINER latin1 latin1_swedish_ci
SELECT table_name,definer FROM information_schema.views
WHERE table_name = 't1_view';
table_name definer
diff --git a/mysql-test/suite/funcs_1/r/memory_func_view.result b/mysql-test/suite/funcs_1/r/memory_func_view.result
index 4e48d9412d1..3b1f1b03728 100644
--- a/mysql-test/suite/funcs_1/r/memory_func_view.result
+++ b/mysql-test/suite/funcs_1/r/memory_func_view.result
@@ -911,13 +911,13 @@ SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double), my_double, id FROM t
WHERE select_id = 151 OR select_id IS NULL order by id;
LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id
NULL NULL 1
- -1.7976931348623e+308 2
-AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3
+ -1.7976931348623e308 2
+AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e308 3
0 4
-1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö',`t1_values`.`my_double`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -926,13 +926,13 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 151 OR select_id IS NULL) order by id;
LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id
NULL NULL 1
- -1.7976931348623e+308 2
-AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3
+ -1.7976931348623e308 2
+AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e308 3
0 4
-1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
DROP VIEW v1;
@@ -946,8 +946,8 @@ AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9999999999999999999999999999999999.999999999999
0.000000000000000000000000000000 4
-1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö',`t1_values`.`my_decimal`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -961,8 +961,8 @@ AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9999999999999999999999999999999999.999999999999
0.000000000000000000000000000000 4
-1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
DROP VIEW v1;
@@ -1355,8 +1355,8 @@ my_double, id FROM t1_values
WHERE select_id = 133 OR select_id IS NULL order by id;
IFNULL(my_double,'IS_NULL') my_double id
IS_NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
SHOW CREATE VIEW v1;
@@ -1367,8 +1367,8 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 133 OR select_id IS NULL) order by id;
IFNULL(my_double,'IS_NULL') my_double id
IS_NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
DROP VIEW v1;
@@ -1683,8 +1683,8 @@ WHERE select_id = 121 OR select_id IS NULL order by id;
IF(my_double IS NULL, 'IS NULL',
'IS NOT NULL') my_double id
IS NULL NULL 1
-IS NOT NULL -1.7976931348623e+308 2
-IS NOT NULL 1.7976931348623e+308 3
+IS NOT NULL -1.7976931348623e308 2
+IS NOT NULL 1.7976931348623e308 3
IS NOT NULL 0 4
IS NOT NULL -1 5
SHOW CREATE VIEW v1;
@@ -1697,8 +1697,8 @@ WHERE select_id = 121 OR select_id IS NULL) order by id;
IF(my_double IS NULL, 'IS NULL',
'IS NOT NULL') my_double id
IS NULL NULL 1
-IS NOT NULL -1.7976931348623e+308 2
-IS NOT NULL 1.7976931348623e+308 3
+IS NOT NULL -1.7976931348623e308 2
+IS NOT NULL 1.7976931348623e308 3
IS NOT NULL 0 4
IS NOT NULL -1 5
DROP VIEW v1;
@@ -2015,8 +2015,8 @@ my_double, id FROM t1_values
WHERE select_id = 109 OR select_id IS NULL order by id;
IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id
IS NOT TRUE NULL 1
-IS TRUE -1.7976931348623e+308 2
-IS TRUE 1.7976931348623e+308 3
+IS TRUE -1.7976931348623e308 2
+IS TRUE 1.7976931348623e308 3
IS NOT TRUE 0 4
IS TRUE -1 5
SHOW CREATE VIEW v1;
@@ -2027,8 +2027,8 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 109 OR select_id IS NULL) order by id;
IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id
IS NOT TRUE NULL 1
-IS TRUE -1.7976931348623e+308 2
-IS TRUE 1.7976931348623e+308 3
+IS TRUE -1.7976931348623e308 2
+IS TRUE 1.7976931348623e308 3
IS NOT TRUE 0 4
IS TRUE -1 5
DROP VIEW v1;
@@ -2097,6 +2097,9 @@ IS NOT TRUE 2
IS NOT TRUE <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varbinary_1000`,'IS TRUE','IS NOT TRUE') AS `IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2109,6 +2112,9 @@ IS NOT TRUE 2
IS NOT TRUE <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -2124,10 +2130,10 @@ IS NOT TRUE <--------30 characters-------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
Warnings:
-Warning 1292 Truncated incorrect DOUBLE value: ''
+Warning 1292 Truncated incorrect DOUBLE value: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->'
-Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
-Warning 1292 Truncated incorrect DOUBLE value: '-1'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---\xC3\xA4\xC3\x96\xC3\xBC\xC3\x9F@\xC2\xB5*$-- \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DOUBLE value: '-1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_binary_30`,'IS TRUE','IS NOT TRUE') AS `IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2141,10 +2147,10 @@ IS NOT TRUE <--------30 characters-------> 3
IS NOT TRUE ---äÖüß@µ*$--
IS TRUE -1
Warnings:
-Warning 1292 Truncated incorrect DOUBLE value: ''
+Warning 1292 Truncated incorrect DOUBLE value: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->'
-Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
-Warning 1292 Truncated incorrect DOUBLE value: '-1'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---\xC3\xA4\xC3\x96\xC3\xBC\xC3\x9F@\xC2\xB5*$-- \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DOUBLE value: '-1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
DROP VIEW v1;
@@ -2159,6 +2165,9 @@ IS NOT TRUE 2
IS NOT TRUE <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varchar_1000`,'IS TRUE','IS NOT TRUE') AS `IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2171,6 +2180,9 @@ IS NOT TRUE 2
IS NOT TRUE <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -2187,7 +2199,7 @@ IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->'
-Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_char_30`,'IS TRUE','IS NOT TRUE') AS `IF(my_char_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2202,7 +2214,7 @@ IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->'
-Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -2551,13 +2563,13 @@ my_double, id FROM t1_values
WHERE select_id = 89 OR select_id IS NULL order by id;
CAST(my_double AS UNSIGNED INTEGER) my_double id
NULL NULL 1
-9223372036854775808 -1.7976931348623e+308 2
-9223372036854775807 1.7976931348623e+308 3
+9223372036854775808 -1.7976931348623e308 2
+9223372036854775807 1.7976931348623e308 3
0 0 4
18446744073709551615 -1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as unsigned) AS `CAST(my_double AS UNSIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2566,13 +2578,13 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 89 OR select_id IS NULL) order by id;
CAST(my_double AS UNSIGNED INTEGER) my_double id
NULL NULL 1
-9223372036854775808 -1.7976931348623e+308 2
-9223372036854775807 1.7976931348623e+308 3
+9223372036854775808 -1.7976931348623e308 2
+9223372036854775807 1.7976931348623e308 3
0 0 4
18446744073709551615 -1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
DROP VIEW v1;
@@ -2588,9 +2600,9 @@ NULL NULL 1
0 0.000000000000000000000000000000 4
0 -1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as unsigned) AS `CAST(my_decimal AS UNSIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2604,9 +2616,9 @@ NULL NULL 1
0 0.000000000000000000000000000000 4
0 -1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
DROP VIEW v1;
@@ -2919,13 +2931,13 @@ my_double, id FROM t1_values
WHERE select_id = 77 OR select_id IS NULL order by id;
CAST(my_double AS SIGNED INTEGER) my_double id
NULL NULL 1
--9223372036854775808 -1.7976931348623e+308 2
-9223372036854775807 1.7976931348623e+308 3
+-9223372036854775808 -1.7976931348623e308 2
+9223372036854775807 1.7976931348623e308 3
0 0 4
-1 -1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as signed) AS `CAST(my_double AS SIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2934,13 +2946,13 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 77 OR select_id IS NULL) order by id;
CAST(my_double AS SIGNED INTEGER) my_double id
NULL NULL 1
--9223372036854775808 -1.7976931348623e+308 2
-9223372036854775807 1.7976931348623e+308 3
+-9223372036854775808 -1.7976931348623e308 2
+9223372036854775807 1.7976931348623e308 3
0 0 4
-1 -1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
DROP VIEW v1;
@@ -2956,8 +2968,8 @@ NULL NULL 1
0 0.000000000000000000000000000000 4
-1 -1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as signed) AS `CAST(my_decimal AS SIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2971,8 +2983,8 @@ NULL NULL 1
0 0.000000000000000000000000000000 4
-1 -1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
DROP VIEW v1;
@@ -3277,16 +3289,16 @@ my_double, id FROM t1_values
WHERE select_id = 65 OR select_id IS NULL order by id;
CAST(my_double AS DECIMAL(37,2)) my_double id
NULL NULL 1
--99999999999999999999999999999999999.99 -1.7976931348623e+308 2
-99999999999999999999999999999999999.99 1.7976931348623e+308 3
+-99999999999999999999999999999999999.99 -1.7976931348623e308 2
+99999999999999999999999999999999999.99 1.7976931348623e308 3
0.00 0 4
-1.00 -1 5
-3333.33 -3333.3333 30
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as decimal(37,2)) AS `CAST(my_double AS DECIMAL(37,2))`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3295,16 +3307,16 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 65 OR select_id IS NULL) order by id;
CAST(my_double AS DECIMAL(37,2)) my_double id
NULL NULL 1
--99999999999999999999999999999999999.99 -1.7976931348623e+308 2
-99999999999999999999999999999999999.99 1.7976931348623e+308 3
+-99999999999999999999999999999999999.99 -1.7976931348623e308 2
+99999999999999999999999999999999999.99 1.7976931348623e308 3
0.00 0 4
-1.00 -1 5
-3333.33 -3333.3333 30
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
DROP VIEW v1;
@@ -3373,9 +3385,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 29
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as decimal(37,2)) AS `CAST(my_varbinary_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3390,9 +3405,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 29
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -3409,14 +3427,14 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 28
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ''
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: '<--------30 characters------->'
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
-Warning 1292 Truncated incorrect DECIMAL value: '-1'
-Warning 1292 Truncated incorrect DECIMAL value: '-3333.3333'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---\xC3\xA4\xC3\x96\xC3\xBC\xC3\x9F@\xC2\xB5*$-- \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DECIMAL value: '-1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DECIMAL value: '-3333.3333\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as decimal(37,2)) AS `CAST(my_binary_30 AS DECIMAL(37,2))`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3431,14 +3449,14 @@ NULL NULL 1
-1.00 -1
-3333.33 -3333.3333
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ''
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: '<--------30 characters------->'
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
-Warning 1292 Truncated incorrect DECIMAL value: '-1'
-Warning 1292 Truncated incorrect DECIMAL value: '-3333.3333'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---\xC3\xA4\xC3\x96\xC3\xBC\xC3\x9F@\xC2\xB5*$-- \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DECIMAL value: '-1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DECIMAL value: '-3333.3333\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
DROP VIEW v1;
@@ -3455,9 +3473,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 27
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as decimal(37,2)) AS `CAST(my_varchar_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3472,9 +3493,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 27
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -3491,12 +3515,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 26
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: ' '
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: '<--------30 characters------->'
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as decimal(37,2)) AS `CAST(my_char_30 AS DECIMAL(37,2))`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3511,12 +3535,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 26
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: ' '
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: '<--------30 characters------->'
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -3657,14 +3681,14 @@ my_double, id FROM t1_values
WHERE select_id = 53 OR select_id IS NULL order by id;
CAST(my_double AS TIME) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
00:00:00 0 4
-00:00:01 -1 5
00:17:58 1758 25
Warnings:
-Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect time value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect time value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect time value: '1.7976931348623e308'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as time) AS `CAST(my_double AS TIME)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3673,14 +3697,14 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 53 OR select_id IS NULL) order by id;
CAST(my_double AS TIME) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
00:00:00 0 4
-00:00:01 -1 5
00:17:58 1758 25
Warnings:
-Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect time value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect time value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect time value: '1.7976931348623e308'
DROP VIEW v1;
@@ -4019,14 +4043,14 @@ my_double, id FROM t1_values
WHERE select_id = 42 OR select_id IS NULL order by id;
CAST(my_double AS DATETIME) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
NULL 0 4
NULL -1 5
NULL 200506271758 19
Warnings:
-Warning 1292 Incorrect datetime value: '-1.7976931348623e+308'
-Warning 1292 Incorrect datetime value: '1.7976931348623e+308'
+Warning 1292 Incorrect datetime value: '-1.7976931348623e308'
+Warning 1292 Incorrect datetime value: '1.7976931348623e308'
Warning 1292 Incorrect datetime value: '0'
Warning 1292 Incorrect datetime value: '-1'
Warning 1292 Incorrect datetime value: '200506271758'
@@ -4038,14 +4062,14 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 42 OR select_id IS NULL) order by id;
CAST(my_double AS DATETIME) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
NULL 0 4
NULL -1 5
NULL 200506271758 19
Warnings:
-Warning 1292 Incorrect datetime value: '-1.7976931348623e+308'
-Warning 1292 Incorrect datetime value: '1.7976931348623e+308'
+Warning 1292 Incorrect datetime value: '-1.7976931348623e308'
+Warning 1292 Incorrect datetime value: '1.7976931348623e308'
Warning 1292 Incorrect datetime value: '0'
Warning 1292 Incorrect datetime value: '-1'
Warning 1292 Incorrect datetime value: '200506271758'
@@ -4393,14 +4417,14 @@ my_double, id FROM t1_values
WHERE select_id = 31 OR select_id IS NULL order by id;
CAST(my_double AS DATE) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
NULL 0 4
NULL -1 5
2005-06-27 20050627 13
Warnings:
-Warning 1292 Incorrect datetime value: '-1.7976931348623e+308'
-Warning 1292 Incorrect datetime value: '1.7976931348623e+308'
+Warning 1292 Incorrect datetime value: '-1.7976931348623e308'
+Warning 1292 Incorrect datetime value: '1.7976931348623e308'
Warning 1292 Incorrect datetime value: '0'
Warning 1292 Incorrect datetime value: '-1'
SHOW CREATE VIEW v1;
@@ -4411,14 +4435,14 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 31 OR select_id IS NULL) order by id;
CAST(my_double AS DATE) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
NULL 0 4
NULL -1 5
2005-06-27 20050627 13
Warnings:
-Warning 1292 Incorrect datetime value: '-1.7976931348623e+308'
-Warning 1292 Incorrect datetime value: '1.7976931348623e+308'
+Warning 1292 Incorrect datetime value: '-1.7976931348623e308'
+Warning 1292 Incorrect datetime value: '1.7976931348623e308'
Warning 1292 Incorrect datetime value: '0'
Warning 1292 Incorrect datetime value: '-1'
DROP VIEW v1;
@@ -4753,8 +4777,8 @@ my_double, id FROM t1_values
WHERE select_id = 20 OR select_id IS NULL order by id;
CAST(my_double AS CHAR) my_double id
NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
SHOW CREATE VIEW v1;
@@ -4765,8 +4789,8 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 20 OR select_id IS NULL) order by id;
CAST(my_double AS CHAR) my_double id
NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
DROP VIEW v1;
@@ -5065,8 +5089,8 @@ my_double, id FROM t1_values
WHERE select_id = 8 OR select_id IS NULL order by id;
CAST(my_double AS BINARY) my_double id
NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
SHOW CREATE VIEW v1;
@@ -5077,8 +5101,8 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 8 OR select_id IS NULL) order by id;
CAST(my_double AS BINARY) my_double id
NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
DROP VIEW v1;
diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc_02.result b/mysql-test/suite/funcs_1/r/memory_storedproc_02.result
index 6b474621685..16dde71400e 100644
--- a/mysql-test/suite/funcs_1/r/memory_storedproc_02.result
+++ b/mysql-test/suite/funcs_1/r/memory_storedproc_02.result
@@ -551,9 +551,6 @@ exit handler 2
exit handler 2
exit handler 1
exit handler 1
-Warnings:
-Note 1051 Unknown table 'tqq'
-Note 1051 Unknown table 'tqq'
create table res_t1(w char unique, x char);
insert into res_t1 values ('a', 'b');
CREATE PROCEDURE h1 ()
diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc_07.result b/mysql-test/suite/funcs_1/r/memory_storedproc_07.result
index 596b63316ce..2b8d41f963e 100644
--- a/mysql-test/suite/funcs_1/r/memory_storedproc_07.result
+++ b/mysql-test/suite/funcs_1/r/memory_storedproc_07.result
@@ -81,7 +81,7 @@ CREATE TABLE result (f1 text(200), f2 char(20));
set @@sql_mode='traditional';
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
CREATE PROCEDURE sp1()
BEGIN
declare a tinyint;
@@ -98,7 +98,7 @@ END if;
END//
SHOW CREATE PROCEDURE sp1;
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
-sp1 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`()
+sp1 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`()
BEGIN
declare a tinyint;
declare count_ int default 1;
@@ -118,10 +118,10 @@ Variable_name Value
sql_mode
CALL sp1();
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
SELECT * from result;
f1 f2
-STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER value restored
+STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION value restored
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
sql_mode
@@ -143,7 +143,7 @@ DROP PROCEDURE IF EXISTS sp2;
... show initial value
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
CREATE PROCEDURE sp2()
BEGIN
SET @@sql_mode='MAXDB';
@@ -151,7 +151,7 @@ SHOW VARIABLES LIKE 'sql_mode';
END//
SHOW CREATE PROCEDURE sp2;
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
-sp2 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER CREATE DEFINER=`root`@`localhost` PROCEDURE `sp2`()
+sp2 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `sp2`()
BEGIN
SET @@sql_mode='MAXDB';
SHOW VARIABLES LIKE 'sql_mode';
@@ -159,7 +159,7 @@ END latin1 latin1_swedish_ci latin1_swedish_ci
... show value prior calling procedure
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
... call procedure that changes sql_mode
CALL sp2();
Variable_name Value
@@ -167,7 +167,7 @@ sql_mode PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_
... check whether old value is re-set
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
DROP PROCEDURE sp2;
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc_08.result b/mysql-test/suite/funcs_1/r/memory_storedproc_08.result
index 7f08a77ef09..9a7063b4e7e 100644
--- a/mysql-test/suite/funcs_1/r/memory_storedproc_08.result
+++ b/mysql-test/suite/funcs_1/r/memory_storedproc_08.result
@@ -106,10 +106,17 @@ END//
-----------------------------
SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
SPECIFIC_NAME fn_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_1
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -133,10 +140,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME fn_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_2
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -160,10 +174,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_1
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -185,10 +206,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_2
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -324,10 +352,17 @@ ALTER FUNCTION fn_2 MODIFIES SQL DATA;
-----------------------------
SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
SPECIFIC_NAME fn_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_1
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -351,10 +386,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME fn_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_2
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -378,10 +420,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_1
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -403,10 +452,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_2
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -535,10 +591,17 @@ ALTER FUNCTION fn_2 CONTAINS SQL;
-----------------------------
SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
SPECIFIC_NAME fn_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_1
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -562,10 +625,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME fn_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_2
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -589,10 +659,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_1
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -614,10 +691,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_2
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
diff --git a/mysql-test/suite/funcs_1/r/memory_trig_03.result b/mysql-test/suite/funcs_1/r/memory_trig_03.result
index 7f38fd1f182..65bc7deef8c 100644
--- a/mysql-test/suite/funcs_1/r/memory_trig_03.result
+++ b/mysql-test/suite/funcs_1/r/memory_trig_03.result
@@ -78,7 +78,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke TRIGGER on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER on *.* to test_yesprivs@localhost;
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
@@ -156,7 +156,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke UPDATE on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER, UPDATE on *.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
@@ -170,7 +170,7 @@ test_noprivs@localhost
use priv_db;
show grants;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
select f1 from t1 order by f1;
f1
insert 3.5.3.2-no
@@ -402,7 +402,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke SELECT on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER, SELECT on *.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
@@ -416,7 +416,7 @@ test_noprivs@localhost
use priv_db;
show grants;
Grants for test_noprivs@localhost
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
create trigger trg5a_1 before INSERT on t1 for each row
set @test_var = new.f1;
set @test_var = 'before trig 3.5.3.8-1a';
diff --git a/mysql-test/suite/funcs_1/r/memory_trig_03e.result b/mysql-test/suite/funcs_1/r/memory_trig_03e.result
index bbee7d47e7e..cfbee5f27b7 100644
--- a/mysql-test/suite/funcs_1/r/memory_trig_03e.result
+++ b/mysql-test/suite/funcs_1/r/memory_trig_03e.result
@@ -563,7 +563,7 @@ trig 1_1-yes
revoke TRIGGER on *.* from test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
Grants for test_yesprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
select current_user;
current_user
@@ -610,7 +610,7 @@ root@localhost
grant TRIGGER on priv_db.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
Grants for test_yesprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
GRANT TRIGGER ON `priv_db`.* TO 'test_yesprivs'@'localhost'
trigger privilege on db level for create:
@@ -1252,7 +1252,7 @@ drop trigger trg1_0;
create definer=not_ex_user@localhost trigger trg1_0
before INSERT on t1 for each row
set new.f1 = 'trig 1_0-yes';
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
create definer=current_user trigger trg1_1
before INSERT on t1 for each row
set new.f1 = 'trig 1_1-yes';
@@ -1285,7 +1285,7 @@ GRANT SELECT, INSERT, UPDATE, TRIGGER ON `priv_db`.`t1` TO 'test_yesprivs'@'loca
create definer=not_ex_user@localhost trigger trg1_3
after UPDATE on t1 for each row
set @var1 = 'trig 1_3-yes';
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
select current_user;
current_user
root@localhost
diff --git a/mysql-test/suite/funcs_1/r/memory_views.result b/mysql-test/suite/funcs_1/r/memory_views.result
index ccbd086b71f..2f7342088f8 100644
--- a/mysql-test/suite/funcs_1/r/memory_views.result
+++ b/mysql-test/suite/funcs_1/r/memory_views.result
@@ -3547,11 +3547,11 @@ CREATE VIEW v1 or REPLACE AS Select * from tb2 my_table;
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 'or REPLACE AS Select * from tb2 my_table' at line 1
CREATE VIEW v1 WITH CASCADED CHECK OPTION AS Select *
from tb2 my_table limit 50;
-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 'WITH CASCADED CHECK OPTION AS Select *
+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 'CASCADED CHECK OPTION AS Select *
from tb2 my_table limit 50' at line 1
CREATE VIEW v1 WITH LOCAL CHECK OPTION AS Select *
from tb2 my_table limit 50;
-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 'WITH LOCAL CHECK OPTION AS Select *
+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 'LOCAL CHECK OPTION AS Select *
from tb2 my_table limit 50' at line 1
SELECT * FROM tb2 my_table CREATE VIEW As v1;
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 'CREATE VIEW As v1' at line 1
@@ -3581,7 +3581,7 @@ FROM test.tb2 my_table CHECK OPTION WITH CASCADED;
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 'CHECK OPTION WITH CASCADED' at line 2
CREATE OR REPLACE VIEW v1 WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table;
-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 'WITH CASCADED CHECK OPTION
+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 'CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table' at line 1
CREATE OR REPLACE AS SELECT F59, F60
FROM test.tb2 my_table VIEW v1 WITH CASCADED CHECK OPTION;
@@ -3610,7 +3610,7 @@ FROM test.tb2 my_table CHECK OPTION WITH LOCAL;
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 'CHECK OPTION WITH LOCAL' at line 2
CREATE OR REPLACE VIEW v1 WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table;
-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 'WITH CASCADED CHECK OPTION
+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 'CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table' at line 1
CREATE OR REPLACE AS SELECT F59, F60
FROM test.tb2 my_table VIEW v1 WITH LOCAL CHECK OPTION;
@@ -22826,7 +22826,7 @@ f1 f2
ABC 3
SELECT * FROM v1 order by 2;
f1 my_sqrt
-ABC 1.73205080756888
+ABC 1.7320508075688772
ALTER TABLE t1 CHANGE COLUMN f2 f2 VARCHAR(30);
INSERT INTO t1 SET f1 = 'ABC', f2 = 'DEF';
DESCRIBE t1;
@@ -22844,7 +22844,10 @@ ABC DEF
SELECT * FROM v1 order by 2;
f1 my_sqrt
ABC 0
-ABC 1.73205080756888
+ABC 1.7320508075688772
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
SELECT SQRT('DEF');
SQRT('DEF')
0
@@ -22864,27 +22867,36 @@ my_sqrt double YES NULL
SELECT * FROM v2 order by 2;
f1 my_sqrt
ABC 0
-ABC 1.73205080756888
+ABC 1.7320508075688772
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
CREATE TABLE t2 AS SELECT f1, SQRT(f2) my_sqrt FROM t1;
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
SELECT * FROM t2 order by 2;
f1 ABC
my_sqrt 0
f1 ABC
-my_sqrt 1.73205080756888
+my_sqrt 1.7320508075688772
DROP TABLE t2;
CREATE TABLE t2 AS SELECT * FROM v1;
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
SELECT * FROM t2 order by 2;
f1 ABC
my_sqrt 0
f1 ABC
-my_sqrt 1.73205080756888
+my_sqrt 1.7320508075688772
DROP TABLE t2;
CREATE TABLE t2 AS SELECT * FROM v2;
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
SELECT * FROM t2 order by 2;
f1 ABC
my_sqrt 0
f1 ABC
-my_sqrt 1.73205080756888
+my_sqrt 1.7320508075688772
DROP TABLE t1;
DROP TABLE t2;
DROP VIEW v1;
diff --git a/mysql-test/suite/funcs_1/r/myisam_func_view.result b/mysql-test/suite/funcs_1/r/myisam_func_view.result
index 4e48d9412d1..3b1f1b03728 100644
--- a/mysql-test/suite/funcs_1/r/myisam_func_view.result
+++ b/mysql-test/suite/funcs_1/r/myisam_func_view.result
@@ -911,13 +911,13 @@ SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double), my_double, id FROM t
WHERE select_id = 151 OR select_id IS NULL order by id;
LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id
NULL NULL 1
- -1.7976931348623e+308 2
-AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3
+ -1.7976931348623e308 2
+AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e308 3
0 4
-1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö',`t1_values`.`my_double`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -926,13 +926,13 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 151 OR select_id IS NULL) order by id;
LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id
NULL NULL 1
- -1.7976931348623e+308 2
-AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3
+ -1.7976931348623e308 2
+AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e308 3
0 4
-1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
DROP VIEW v1;
@@ -946,8 +946,8 @@ AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9999999999999999999999999999999999.999999999999
0.000000000000000000000000000000 4
-1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö',`t1_values`.`my_decimal`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -961,8 +961,8 @@ AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9999999999999999999999999999999999.999999999999
0.000000000000000000000000000000 4
-1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
DROP VIEW v1;
@@ -1355,8 +1355,8 @@ my_double, id FROM t1_values
WHERE select_id = 133 OR select_id IS NULL order by id;
IFNULL(my_double,'IS_NULL') my_double id
IS_NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
SHOW CREATE VIEW v1;
@@ -1367,8 +1367,8 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 133 OR select_id IS NULL) order by id;
IFNULL(my_double,'IS_NULL') my_double id
IS_NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
DROP VIEW v1;
@@ -1683,8 +1683,8 @@ WHERE select_id = 121 OR select_id IS NULL order by id;
IF(my_double IS NULL, 'IS NULL',
'IS NOT NULL') my_double id
IS NULL NULL 1
-IS NOT NULL -1.7976931348623e+308 2
-IS NOT NULL 1.7976931348623e+308 3
+IS NOT NULL -1.7976931348623e308 2
+IS NOT NULL 1.7976931348623e308 3
IS NOT NULL 0 4
IS NOT NULL -1 5
SHOW CREATE VIEW v1;
@@ -1697,8 +1697,8 @@ WHERE select_id = 121 OR select_id IS NULL) order by id;
IF(my_double IS NULL, 'IS NULL',
'IS NOT NULL') my_double id
IS NULL NULL 1
-IS NOT NULL -1.7976931348623e+308 2
-IS NOT NULL 1.7976931348623e+308 3
+IS NOT NULL -1.7976931348623e308 2
+IS NOT NULL 1.7976931348623e308 3
IS NOT NULL 0 4
IS NOT NULL -1 5
DROP VIEW v1;
@@ -2015,8 +2015,8 @@ my_double, id FROM t1_values
WHERE select_id = 109 OR select_id IS NULL order by id;
IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id
IS NOT TRUE NULL 1
-IS TRUE -1.7976931348623e+308 2
-IS TRUE 1.7976931348623e+308 3
+IS TRUE -1.7976931348623e308 2
+IS TRUE 1.7976931348623e308 3
IS NOT TRUE 0 4
IS TRUE -1 5
SHOW CREATE VIEW v1;
@@ -2027,8 +2027,8 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 109 OR select_id IS NULL) order by id;
IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id
IS NOT TRUE NULL 1
-IS TRUE -1.7976931348623e+308 2
-IS TRUE 1.7976931348623e+308 3
+IS TRUE -1.7976931348623e308 2
+IS TRUE 1.7976931348623e308 3
IS NOT TRUE 0 4
IS TRUE -1 5
DROP VIEW v1;
@@ -2097,6 +2097,9 @@ IS NOT TRUE 2
IS NOT TRUE <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varbinary_1000`,'IS TRUE','IS NOT TRUE') AS `IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2109,6 +2112,9 @@ IS NOT TRUE 2
IS NOT TRUE <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -2124,10 +2130,10 @@ IS NOT TRUE <--------30 characters-------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
Warnings:
-Warning 1292 Truncated incorrect DOUBLE value: ''
+Warning 1292 Truncated incorrect DOUBLE value: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->'
-Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
-Warning 1292 Truncated incorrect DOUBLE value: '-1'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---\xC3\xA4\xC3\x96\xC3\xBC\xC3\x9F@\xC2\xB5*$-- \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DOUBLE value: '-1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_binary_30`,'IS TRUE','IS NOT TRUE') AS `IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2141,10 +2147,10 @@ IS NOT TRUE <--------30 characters-------> 3
IS NOT TRUE ---äÖüß@µ*$--
IS TRUE -1
Warnings:
-Warning 1292 Truncated incorrect DOUBLE value: ''
+Warning 1292 Truncated incorrect DOUBLE value: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->'
-Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
-Warning 1292 Truncated incorrect DOUBLE value: '-1'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---\xC3\xA4\xC3\x96\xC3\xBC\xC3\x9F@\xC2\xB5*$-- \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DOUBLE value: '-1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
DROP VIEW v1;
@@ -2159,6 +2165,9 @@ IS NOT TRUE 2
IS NOT TRUE <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varchar_1000`,'IS TRUE','IS NOT TRUE') AS `IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2171,6 +2180,9 @@ IS NOT TRUE 2
IS NOT TRUE <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -2187,7 +2199,7 @@ IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->'
-Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_char_30`,'IS TRUE','IS NOT TRUE') AS `IF(my_char_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2202,7 +2214,7 @@ IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->'
-Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -2551,13 +2563,13 @@ my_double, id FROM t1_values
WHERE select_id = 89 OR select_id IS NULL order by id;
CAST(my_double AS UNSIGNED INTEGER) my_double id
NULL NULL 1
-9223372036854775808 -1.7976931348623e+308 2
-9223372036854775807 1.7976931348623e+308 3
+9223372036854775808 -1.7976931348623e308 2
+9223372036854775807 1.7976931348623e308 3
0 0 4
18446744073709551615 -1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as unsigned) AS `CAST(my_double AS UNSIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2566,13 +2578,13 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 89 OR select_id IS NULL) order by id;
CAST(my_double AS UNSIGNED INTEGER) my_double id
NULL NULL 1
-9223372036854775808 -1.7976931348623e+308 2
-9223372036854775807 1.7976931348623e+308 3
+9223372036854775808 -1.7976931348623e308 2
+9223372036854775807 1.7976931348623e308 3
0 0 4
18446744073709551615 -1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
DROP VIEW v1;
@@ -2588,9 +2600,9 @@ NULL NULL 1
0 0.000000000000000000000000000000 4
0 -1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as unsigned) AS `CAST(my_decimal AS UNSIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2604,9 +2616,9 @@ NULL NULL 1
0 0.000000000000000000000000000000 4
0 -1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
DROP VIEW v1;
@@ -2919,13 +2931,13 @@ my_double, id FROM t1_values
WHERE select_id = 77 OR select_id IS NULL order by id;
CAST(my_double AS SIGNED INTEGER) my_double id
NULL NULL 1
--9223372036854775808 -1.7976931348623e+308 2
-9223372036854775807 1.7976931348623e+308 3
+-9223372036854775808 -1.7976931348623e308 2
+9223372036854775807 1.7976931348623e308 3
0 0 4
-1 -1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as signed) AS `CAST(my_double AS SIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2934,13 +2946,13 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 77 OR select_id IS NULL) order by id;
CAST(my_double AS SIGNED INTEGER) my_double id
NULL NULL 1
--9223372036854775808 -1.7976931348623e+308 2
-9223372036854775807 1.7976931348623e+308 3
+-9223372036854775808 -1.7976931348623e308 2
+9223372036854775807 1.7976931348623e308 3
0 0 4
-1 -1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
DROP VIEW v1;
@@ -2956,8 +2968,8 @@ NULL NULL 1
0 0.000000000000000000000000000000 4
-1 -1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as signed) AS `CAST(my_decimal AS SIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2971,8 +2983,8 @@ NULL NULL 1
0 0.000000000000000000000000000000 4
-1 -1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
DROP VIEW v1;
@@ -3277,16 +3289,16 @@ my_double, id FROM t1_values
WHERE select_id = 65 OR select_id IS NULL order by id;
CAST(my_double AS DECIMAL(37,2)) my_double id
NULL NULL 1
--99999999999999999999999999999999999.99 -1.7976931348623e+308 2
-99999999999999999999999999999999999.99 1.7976931348623e+308 3
+-99999999999999999999999999999999999.99 -1.7976931348623e308 2
+99999999999999999999999999999999999.99 1.7976931348623e308 3
0.00 0 4
-1.00 -1 5
-3333.33 -3333.3333 30
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as decimal(37,2)) AS `CAST(my_double AS DECIMAL(37,2))`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3295,16 +3307,16 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 65 OR select_id IS NULL) order by id;
CAST(my_double AS DECIMAL(37,2)) my_double id
NULL NULL 1
--99999999999999999999999999999999999.99 -1.7976931348623e+308 2
-99999999999999999999999999999999999.99 1.7976931348623e+308 3
+-99999999999999999999999999999999999.99 -1.7976931348623e308 2
+99999999999999999999999999999999999.99 1.7976931348623e308 3
0.00 0 4
-1.00 -1 5
-3333.33 -3333.3333 30
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
DROP VIEW v1;
@@ -3373,9 +3385,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 29
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as decimal(37,2)) AS `CAST(my_varbinary_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3390,9 +3405,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 29
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -3409,14 +3427,14 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 28
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ''
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: '<--------30 characters------->'
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
-Warning 1292 Truncated incorrect DECIMAL value: '-1'
-Warning 1292 Truncated incorrect DECIMAL value: '-3333.3333'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---\xC3\xA4\xC3\x96\xC3\xBC\xC3\x9F@\xC2\xB5*$-- \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DECIMAL value: '-1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DECIMAL value: '-3333.3333\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as decimal(37,2)) AS `CAST(my_binary_30 AS DECIMAL(37,2))`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3431,14 +3449,14 @@ NULL NULL 1
-1.00 -1
-3333.33 -3333.3333
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ''
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: '<--------30 characters------->'
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
-Warning 1292 Truncated incorrect DECIMAL value: '-1'
-Warning 1292 Truncated incorrect DECIMAL value: '-3333.3333'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---\xC3\xA4\xC3\x96\xC3\xBC\xC3\x9F@\xC2\xB5*$-- \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DECIMAL value: '-1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DECIMAL value: '-3333.3333\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
DROP VIEW v1;
@@ -3455,9 +3473,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 27
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as decimal(37,2)) AS `CAST(my_varchar_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3472,9 +3493,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 27
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -3491,12 +3515,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 26
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: ' '
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: '<--------30 characters------->'
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as decimal(37,2)) AS `CAST(my_char_30 AS DECIMAL(37,2))`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3511,12 +3535,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 26
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: ' '
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: '<--------30 characters------->'
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -3657,14 +3681,14 @@ my_double, id FROM t1_values
WHERE select_id = 53 OR select_id IS NULL order by id;
CAST(my_double AS TIME) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
00:00:00 0 4
-00:00:01 -1 5
00:17:58 1758 25
Warnings:
-Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect time value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect time value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect time value: '1.7976931348623e308'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as time) AS `CAST(my_double AS TIME)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3673,14 +3697,14 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 53 OR select_id IS NULL) order by id;
CAST(my_double AS TIME) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
00:00:00 0 4
-00:00:01 -1 5
00:17:58 1758 25
Warnings:
-Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect time value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect time value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect time value: '1.7976931348623e308'
DROP VIEW v1;
@@ -4019,14 +4043,14 @@ my_double, id FROM t1_values
WHERE select_id = 42 OR select_id IS NULL order by id;
CAST(my_double AS DATETIME) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
NULL 0 4
NULL -1 5
NULL 200506271758 19
Warnings:
-Warning 1292 Incorrect datetime value: '-1.7976931348623e+308'
-Warning 1292 Incorrect datetime value: '1.7976931348623e+308'
+Warning 1292 Incorrect datetime value: '-1.7976931348623e308'
+Warning 1292 Incorrect datetime value: '1.7976931348623e308'
Warning 1292 Incorrect datetime value: '0'
Warning 1292 Incorrect datetime value: '-1'
Warning 1292 Incorrect datetime value: '200506271758'
@@ -4038,14 +4062,14 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 42 OR select_id IS NULL) order by id;
CAST(my_double AS DATETIME) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
NULL 0 4
NULL -1 5
NULL 200506271758 19
Warnings:
-Warning 1292 Incorrect datetime value: '-1.7976931348623e+308'
-Warning 1292 Incorrect datetime value: '1.7976931348623e+308'
+Warning 1292 Incorrect datetime value: '-1.7976931348623e308'
+Warning 1292 Incorrect datetime value: '1.7976931348623e308'
Warning 1292 Incorrect datetime value: '0'
Warning 1292 Incorrect datetime value: '-1'
Warning 1292 Incorrect datetime value: '200506271758'
@@ -4393,14 +4417,14 @@ my_double, id FROM t1_values
WHERE select_id = 31 OR select_id IS NULL order by id;
CAST(my_double AS DATE) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
NULL 0 4
NULL -1 5
2005-06-27 20050627 13
Warnings:
-Warning 1292 Incorrect datetime value: '-1.7976931348623e+308'
-Warning 1292 Incorrect datetime value: '1.7976931348623e+308'
+Warning 1292 Incorrect datetime value: '-1.7976931348623e308'
+Warning 1292 Incorrect datetime value: '1.7976931348623e308'
Warning 1292 Incorrect datetime value: '0'
Warning 1292 Incorrect datetime value: '-1'
SHOW CREATE VIEW v1;
@@ -4411,14 +4435,14 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 31 OR select_id IS NULL) order by id;
CAST(my_double AS DATE) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
NULL 0 4
NULL -1 5
2005-06-27 20050627 13
Warnings:
-Warning 1292 Incorrect datetime value: '-1.7976931348623e+308'
-Warning 1292 Incorrect datetime value: '1.7976931348623e+308'
+Warning 1292 Incorrect datetime value: '-1.7976931348623e308'
+Warning 1292 Incorrect datetime value: '1.7976931348623e308'
Warning 1292 Incorrect datetime value: '0'
Warning 1292 Incorrect datetime value: '-1'
DROP VIEW v1;
@@ -4753,8 +4777,8 @@ my_double, id FROM t1_values
WHERE select_id = 20 OR select_id IS NULL order by id;
CAST(my_double AS CHAR) my_double id
NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
SHOW CREATE VIEW v1;
@@ -4765,8 +4789,8 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 20 OR select_id IS NULL) order by id;
CAST(my_double AS CHAR) my_double id
NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
DROP VIEW v1;
@@ -5065,8 +5089,8 @@ my_double, id FROM t1_values
WHERE select_id = 8 OR select_id IS NULL order by id;
CAST(my_double AS BINARY) my_double id
NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
SHOW CREATE VIEW v1;
@@ -5077,8 +5101,8 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 8 OR select_id IS NULL) order by id;
CAST(my_double AS BINARY) my_double id
NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
DROP VIEW v1;
diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result b/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result
index 6b474621685..16dde71400e 100644
--- a/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result
+++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result
@@ -551,9 +551,6 @@ exit handler 2
exit handler 2
exit handler 1
exit handler 1
-Warnings:
-Note 1051 Unknown table 'tqq'
-Note 1051 Unknown table 'tqq'
create table res_t1(w char unique, x char);
insert into res_t1 values ('a', 'b');
CREATE PROCEDURE h1 ()
diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc_07.result b/mysql-test/suite/funcs_1/r/myisam_storedproc_07.result
index 596b63316ce..2b8d41f963e 100644
--- a/mysql-test/suite/funcs_1/r/myisam_storedproc_07.result
+++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_07.result
@@ -81,7 +81,7 @@ CREATE TABLE result (f1 text(200), f2 char(20));
set @@sql_mode='traditional';
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
CREATE PROCEDURE sp1()
BEGIN
declare a tinyint;
@@ -98,7 +98,7 @@ END if;
END//
SHOW CREATE PROCEDURE sp1;
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
-sp1 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`()
+sp1 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`()
BEGIN
declare a tinyint;
declare count_ int default 1;
@@ -118,10 +118,10 @@ Variable_name Value
sql_mode
CALL sp1();
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
SELECT * from result;
f1 f2
-STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER value restored
+STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION value restored
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
sql_mode
@@ -143,7 +143,7 @@ DROP PROCEDURE IF EXISTS sp2;
... show initial value
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
CREATE PROCEDURE sp2()
BEGIN
SET @@sql_mode='MAXDB';
@@ -151,7 +151,7 @@ SHOW VARIABLES LIKE 'sql_mode';
END//
SHOW CREATE PROCEDURE sp2;
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
-sp2 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER CREATE DEFINER=`root`@`localhost` PROCEDURE `sp2`()
+sp2 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `sp2`()
BEGIN
SET @@sql_mode='MAXDB';
SHOW VARIABLES LIKE 'sql_mode';
@@ -159,7 +159,7 @@ END latin1 latin1_swedish_ci latin1_swedish_ci
... show value prior calling procedure
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
... call procedure that changes sql_mode
CALL sp2();
Variable_name Value
@@ -167,7 +167,7 @@ sql_mode PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_
... check whether old value is re-set
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
DROP PROCEDURE sp2;
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc_08.result b/mysql-test/suite/funcs_1/r/myisam_storedproc_08.result
index 7f08a77ef09..9a7063b4e7e 100644
--- a/mysql-test/suite/funcs_1/r/myisam_storedproc_08.result
+++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_08.result
@@ -106,10 +106,17 @@ END//
-----------------------------
SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
SPECIFIC_NAME fn_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_1
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -133,10 +140,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME fn_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_2
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -160,10 +174,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_1
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -185,10 +206,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_2
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -324,10 +352,17 @@ ALTER FUNCTION fn_2 MODIFIES SQL DATA;
-----------------------------
SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
SPECIFIC_NAME fn_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_1
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -351,10 +386,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME fn_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_2
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -378,10 +420,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_1
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -403,10 +452,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_2
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -535,10 +591,17 @@ ALTER FUNCTION fn_2 CONTAINS SQL;
-----------------------------
SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
SPECIFIC_NAME fn_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_1
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -562,10 +625,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME fn_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_2
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -589,10 +659,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_1
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -614,10 +691,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_2
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_03.result b/mysql-test/suite/funcs_1/r/myisam_trig_03.result
index 7f38fd1f182..65bc7deef8c 100644
--- a/mysql-test/suite/funcs_1/r/myisam_trig_03.result
+++ b/mysql-test/suite/funcs_1/r/myisam_trig_03.result
@@ -78,7 +78,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke TRIGGER on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER on *.* to test_yesprivs@localhost;
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
@@ -156,7 +156,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke UPDATE on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER, UPDATE on *.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
@@ -170,7 +170,7 @@ test_noprivs@localhost
use priv_db;
show grants;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
select f1 from t1 order by f1;
f1
insert 3.5.3.2-no
@@ -402,7 +402,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke SELECT on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER, SELECT on *.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
@@ -416,7 +416,7 @@ test_noprivs@localhost
use priv_db;
show grants;
Grants for test_noprivs@localhost
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
create trigger trg5a_1 before INSERT on t1 for each row
set @test_var = new.f1;
set @test_var = 'before trig 3.5.3.8-1a';
diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_03e.result b/mysql-test/suite/funcs_1/r/myisam_trig_03e.result
index e4dc67098ad..d21bd176810 100644
--- a/mysql-test/suite/funcs_1/r/myisam_trig_03e.result
+++ b/mysql-test/suite/funcs_1/r/myisam_trig_03e.result
@@ -563,7 +563,7 @@ trig 1_1-yes
revoke TRIGGER on *.* from test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
Grants for test_yesprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
select current_user;
current_user
@@ -610,7 +610,7 @@ root@localhost
grant TRIGGER on priv_db.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
Grants for test_yesprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
GRANT TRIGGER ON `priv_db`.* TO 'test_yesprivs'@'localhost'
trigger privilege on db level for create:
@@ -1252,7 +1252,7 @@ drop trigger trg1_0;
create definer=not_ex_user@localhost trigger trg1_0
before INSERT on t1 for each row
set new.f1 = 'trig 1_0-yes';
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
create definer=current_user trigger trg1_1
before INSERT on t1 for each row
set new.f1 = 'trig 1_1-yes';
@@ -1285,7 +1285,7 @@ GRANT SELECT, INSERT, UPDATE, TRIGGER ON `priv_db`.`t1` TO 'test_yesprivs'@'loca
create definer=not_ex_user@localhost trigger trg1_3
after UPDATE on t1 for each row
set @var1 = 'trig 1_3-yes';
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
select current_user;
current_user
root@localhost
diff --git a/mysql-test/suite/funcs_1/r/myisam_views.result b/mysql-test/suite/funcs_1/r/myisam_views.result
index 9b07a0ae45b..b77ea8a4bd9 100644
--- a/mysql-test/suite/funcs_1/r/myisam_views.result
+++ b/mysql-test/suite/funcs_1/r/myisam_views.result
@@ -4049,11 +4049,11 @@ CREATE VIEW v1 or REPLACE AS Select * from tb2 my_table;
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 'or REPLACE AS Select * from tb2 my_table' at line 1
CREATE VIEW v1 WITH CASCADED CHECK OPTION AS Select *
from tb2 my_table limit 50;
-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 'WITH CASCADED CHECK OPTION AS Select *
+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 'CASCADED CHECK OPTION AS Select *
from tb2 my_table limit 50' at line 1
CREATE VIEW v1 WITH LOCAL CHECK OPTION AS Select *
from tb2 my_table limit 50;
-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 'WITH LOCAL CHECK OPTION AS Select *
+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 'LOCAL CHECK OPTION AS Select *
from tb2 my_table limit 50' at line 1
SELECT * FROM tb2 my_table CREATE VIEW As v1;
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 'CREATE VIEW As v1' at line 1
@@ -4083,7 +4083,7 @@ FROM test.tb2 my_table CHECK OPTION WITH CASCADED;
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 'CHECK OPTION WITH CASCADED' at line 2
CREATE OR REPLACE VIEW v1 WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table;
-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 'WITH CASCADED CHECK OPTION
+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 'CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table' at line 1
CREATE OR REPLACE AS SELECT F59, F60
FROM test.tb2 my_table VIEW v1 WITH CASCADED CHECK OPTION;
@@ -4112,7 +4112,7 @@ FROM test.tb2 my_table CHECK OPTION WITH LOCAL;
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 'CHECK OPTION WITH LOCAL' at line 2
CREATE OR REPLACE VIEW v1 WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table;
-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 'WITH CASCADED CHECK OPTION
+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 'CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table' at line 1
CREATE OR REPLACE AS SELECT F59, F60
FROM test.tb2 my_table VIEW v1 WITH LOCAL CHECK OPTION;
@@ -24528,7 +24528,7 @@ f1 f2
ABC 3
SELECT * FROM v1 order by 2;
f1 my_sqrt
-ABC 1.73205080756888
+ABC 1.7320508075688772
ALTER TABLE t1 CHANGE COLUMN f2 f2 VARCHAR(30);
INSERT INTO t1 SET f1 = 'ABC', f2 = 'DEF';
DESCRIBE t1;
@@ -24546,7 +24546,10 @@ ABC DEF
SELECT * FROM v1 order by 2;
f1 my_sqrt
ABC 0
-ABC 1.73205080756888
+ABC 1.7320508075688772
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
SELECT SQRT('DEF');
SQRT('DEF')
0
@@ -24566,27 +24569,36 @@ my_sqrt double YES NULL
SELECT * FROM v2 order by 2;
f1 my_sqrt
ABC 0
-ABC 1.73205080756888
+ABC 1.7320508075688772
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
CREATE TABLE t2 AS SELECT f1, SQRT(f2) my_sqrt FROM t1;
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
SELECT * FROM t2 order by 2;
f1 ABC
my_sqrt 0
f1 ABC
-my_sqrt 1.73205080756888
+my_sqrt 1.7320508075688772
DROP TABLE t2;
CREATE TABLE t2 AS SELECT * FROM v1;
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
SELECT * FROM t2 order by 2;
f1 ABC
my_sqrt 0
f1 ABC
-my_sqrt 1.73205080756888
+my_sqrt 1.7320508075688772
DROP TABLE t2;
CREATE TABLE t2 AS SELECT * FROM v2;
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
SELECT * FROM t2 order by 2;
f1 ABC
my_sqrt 0
f1 ABC
-my_sqrt 1.73205080756888
+my_sqrt 1.7320508075688772
DROP TABLE t1;
DROP TABLE t2;
DROP VIEW v1;
diff --git a/mysql-test/suite/funcs_1/r/ndb_func_view.result b/mysql-test/suite/funcs_1/r/ndb_func_view.result
index 4beb0c8aaf2..e788dfd9fc1 100644
--- a/mysql-test/suite/funcs_1/r/ndb_func_view.result
+++ b/mysql-test/suite/funcs_1/r/ndb_func_view.result
@@ -910,13 +910,13 @@ SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double), my_double, id FROM t
WHERE select_id = 151 OR select_id IS NULL order by id;
LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id
NULL NULL 1
- -1.7976931348623e+308 2
-AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3
+ -1.7976931348623e308 2
+AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e308 3
0 4
-1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö',`t1_values`.`my_double`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -925,13 +925,13 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 151 OR select_id IS NULL) order by id;
LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id
NULL NULL 1
- -1.7976931348623e+308 2
-AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3
+ -1.7976931348623e308 2
+AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e308 3
0 4
-1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
DROP VIEW v1;
@@ -945,8 +945,8 @@ AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9999999999999999999999999999999999.999999999999
0.000000000000000000000000000000 4
-1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö',`t1_values`.`my_decimal`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -960,8 +960,8 @@ AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9999999999999999999999999999999999.999999999999
0.000000000000000000000000000000 4
-1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
DROP VIEW v1;
@@ -1354,8 +1354,8 @@ my_double, id FROM t1_values
WHERE select_id = 133 OR select_id IS NULL order by id;
IFNULL(my_double,'IS_NULL') my_double id
IS_NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
SHOW CREATE VIEW v1;
@@ -1366,8 +1366,8 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 133 OR select_id IS NULL) order by id;
IFNULL(my_double,'IS_NULL') my_double id
IS_NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
DROP VIEW v1;
@@ -1682,8 +1682,8 @@ WHERE select_id = 121 OR select_id IS NULL order by id;
IF(my_double IS NULL, 'IS NULL',
'IS NOT NULL') my_double id
IS NULL NULL 1
-IS NOT NULL -1.7976931348623e+308 2
-IS NOT NULL 1.7976931348623e+308 3
+IS NOT NULL -1.7976931348623e308 2
+IS NOT NULL 1.7976931348623e308 3
IS NOT NULL 0 4
IS NOT NULL -1 5
SHOW CREATE VIEW v1;
@@ -1696,8 +1696,8 @@ WHERE select_id = 121 OR select_id IS NULL) order by id;
IF(my_double IS NULL, 'IS NULL',
'IS NOT NULL') my_double id
IS NULL NULL 1
-IS NOT NULL -1.7976931348623e+308 2
-IS NOT NULL 1.7976931348623e+308 3
+IS NOT NULL -1.7976931348623e308 2
+IS NOT NULL 1.7976931348623e308 3
IS NOT NULL 0 4
IS NOT NULL -1 5
DROP VIEW v1;
@@ -2014,8 +2014,8 @@ my_double, id FROM t1_values
WHERE select_id = 109 OR select_id IS NULL order by id;
IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id
IS NOT TRUE NULL 1
-IS TRUE -1.7976931348623e+308 2
-IS TRUE 1.7976931348623e+308 3
+IS TRUE -1.7976931348623e308 2
+IS TRUE 1.7976931348623e308 3
IS NOT TRUE 0 4
IS TRUE -1 5
SHOW CREATE VIEW v1;
@@ -2026,8 +2026,8 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 109 OR select_id IS NULL) order by id;
IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id
IS NOT TRUE NULL 1
-IS TRUE -1.7976931348623e+308 2
-IS TRUE 1.7976931348623e+308 3
+IS TRUE -1.7976931348623e308 2
+IS TRUE 1.7976931348623e308 3
IS NOT TRUE 0 4
IS TRUE -1 5
DROP VIEW v1;
@@ -2096,6 +2096,9 @@ IS NOT TRUE 2
IS NOT TRUE <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varbinary_1000`,'IS TRUE','IS NOT TRUE') AS `IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2108,6 +2111,9 @@ IS NOT TRUE 2
IS NOT TRUE <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -2123,10 +2129,10 @@ IS NOT TRUE <--------30 characters-------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
Warnings:
-Warning 1292 Truncated incorrect DOUBLE value: ''
+Warning 1292 Truncated incorrect DOUBLE value: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->'
-Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
-Warning 1292 Truncated incorrect DOUBLE value: '-1'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---\xC3\xA4\xC3\x96\xC3\xBC\xC3\x9F@\xC2\xB5*$-- \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DOUBLE value: '-1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_binary_30`,'IS TRUE','IS NOT TRUE') AS `IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2140,10 +2146,10 @@ IS NOT TRUE <--------30 characters-------> 3
IS NOT TRUE ---äÖüß@µ*$--
IS TRUE -1
Warnings:
-Warning 1292 Truncated incorrect DOUBLE value: ''
+Warning 1292 Truncated incorrect DOUBLE value: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->'
-Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
-Warning 1292 Truncated incorrect DOUBLE value: '-1'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---\xC3\xA4\xC3\x96\xC3\xBC\xC3\x9F@\xC2\xB5*$-- \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DOUBLE value: '-1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
DROP VIEW v1;
@@ -2158,6 +2164,9 @@ IS NOT TRUE 2
IS NOT TRUE <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varchar_1000`,'IS TRUE','IS NOT TRUE') AS `IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2170,6 +2179,9 @@ IS NOT TRUE 2
IS NOT TRUE <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3
IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -2186,7 +2198,7 @@ IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->'
-Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_char_30`,'IS TRUE','IS NOT TRUE') AS `IF(my_char_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2201,7 +2213,7 @@ IS NOT TRUE ---äÖüß@µ*$-- 4
IS TRUE -1 5
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->'
-Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
+Warning 1292 Truncated incorrect DOUBLE value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -2550,13 +2562,13 @@ my_double, id FROM t1_values
WHERE select_id = 89 OR select_id IS NULL order by id;
CAST(my_double AS UNSIGNED INTEGER) my_double id
NULL NULL 1
-9223372036854775808 -1.7976931348623e+308 2
-9223372036854775807 1.7976931348623e+308 3
+9223372036854775808 -1.7976931348623e308 2
+9223372036854775807 1.7976931348623e308 3
0 0 4
18446744073709551615 -1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as unsigned) AS `CAST(my_double AS UNSIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2565,13 +2577,13 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 89 OR select_id IS NULL) order by id;
CAST(my_double AS UNSIGNED INTEGER) my_double id
NULL NULL 1
-9223372036854775808 -1.7976931348623e+308 2
-9223372036854775807 1.7976931348623e+308 3
+9223372036854775808 -1.7976931348623e308 2
+9223372036854775807 1.7976931348623e308 3
0 0 4
18446744073709551615 -1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
DROP VIEW v1;
@@ -2587,9 +2599,9 @@ NULL NULL 1
0 0.000000000000000000000000000000 4
0 -1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as unsigned) AS `CAST(my_decimal AS UNSIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2603,9 +2615,9 @@ NULL NULL 1
0 0.000000000000000000000000000000 4
0 -1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
DROP VIEW v1;
@@ -2918,13 +2930,13 @@ my_double, id FROM t1_values
WHERE select_id = 77 OR select_id IS NULL order by id;
CAST(my_double AS SIGNED INTEGER) my_double id
NULL NULL 1
--9223372036854775808 -1.7976931348623e+308 2
-9223372036854775807 1.7976931348623e+308 3
+-9223372036854775808 -1.7976931348623e308 2
+9223372036854775807 1.7976931348623e308 3
0 0 4
-1 -1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as signed) AS `CAST(my_double AS SIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2933,13 +2945,13 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 77 OR select_id IS NULL) order by id;
CAST(my_double AS SIGNED INTEGER) my_double id
NULL NULL 1
--9223372036854775808 -1.7976931348623e+308 2
-9223372036854775807 1.7976931348623e+308 3
+-9223372036854775808 -1.7976931348623e308 2
+9223372036854775807 1.7976931348623e308 3
0 0 4
-1 -1 5
Warnings:
-Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e308'
DROP VIEW v1;
@@ -2955,8 +2967,8 @@ NULL NULL 1
0 0.000000000000000000000000000000 4
-1 -1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as signed) AS `CAST(my_decimal AS SIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -2970,8 +2982,8 @@ NULL NULL 1
0 0.000000000000000000000000000000 4
-1 -1.000000000000000000000000000000 5
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1292 Truncated incorrect DECIMAL value: ''
DROP VIEW v1;
@@ -3276,16 +3288,16 @@ my_double, id FROM t1_values
WHERE select_id = 65 OR select_id IS NULL order by id;
CAST(my_double AS DECIMAL(37,2)) my_double id
NULL NULL 1
--99999999999999999999999999999999999.99 -1.7976931348623e+308 2
-99999999999999999999999999999999999.99 1.7976931348623e+308 3
+-99999999999999999999999999999999999.99 -1.7976931348623e308 2
+99999999999999999999999999999999999.99 1.7976931348623e308 3
0.00 0 4
-1.00 -1 5
-3333.33 -3333.3333 30
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as decimal(37,2)) AS `CAST(my_double AS DECIMAL(37,2))`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3294,16 +3306,16 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 65 OR select_id IS NULL) order by id;
CAST(my_double AS DECIMAL(37,2)) my_double id
NULL NULL 1
--99999999999999999999999999999999999.99 -1.7976931348623e+308 2
-99999999999999999999999999999999999.99 1.7976931348623e+308 3
+-99999999999999999999999999999999999.99 -1.7976931348623e308 2
+99999999999999999999999999999999999.99 1.7976931348623e308 3
0.00 0 4
-1.00 -1 5
-3333.33 -3333.3333 30
Warnings:
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
-Error 1292 Truncated incorrect DECIMAL value: ''
-Error 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1264 Out of range value for column 'CAST(my_double AS DECIMAL(37,2))' at row 1
DROP VIEW v1;
@@ -3372,9 +3384,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 29
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as decimal(37,2)) AS `CAST(my_varbinary_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3389,9 +3404,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 29
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -3408,14 +3426,14 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 28
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ''
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: '<--------30 characters------->'
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
-Warning 1292 Truncated incorrect DECIMAL value: '-1'
-Warning 1292 Truncated incorrect DECIMAL value: '-3333.3333'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---\xC3\xA4\xC3\x96\xC3\xBC\xC3\x9F@\xC2\xB5*$-- \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DECIMAL value: '-1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DECIMAL value: '-3333.3333\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as decimal(37,2)) AS `CAST(my_binary_30 AS DECIMAL(37,2))`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3430,14 +3448,14 @@ NULL NULL 1
-1.00 -1
-3333.33 -3333.3333
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ''
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: '<--------30 characters------->'
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
-Warning 1292 Truncated incorrect DECIMAL value: '-1'
-Warning 1292 Truncated incorrect DECIMAL value: '-3333.3333'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---\xC3\xA4\xC3\x96\xC3\xBC\xC3\x9F@\xC2\xB5*$-- \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DECIMAL value: '-1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+Warning 1292 Truncated incorrect DECIMAL value: '-3333.3333\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
DROP VIEW v1;
@@ -3454,9 +3472,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 27
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as decimal(37,2)) AS `CAST(my_varchar_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3471,9 +3492,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 27
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ''
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: '<---------1000 characters-------------------------------------------------------------------------------------------------------'
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -3490,12 +3514,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 26
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: ' '
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: '<--------30 characters------->'
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as decimal(37,2)) AS `CAST(my_char_30 AS DECIMAL(37,2))`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3510,12 +3534,12 @@ NULL NULL 1
-1.00 -1 5
-3333.33 -3333.3333 26
Warnings:
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: ' '
-Error 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
Warning 1292 Truncated incorrect DECIMAL value: '<--------30 characters------->'
-Error 1366 Incorrect decimal value: '' for column '' at row -1
-Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
+Warning 1366 Incorrect decimal value: '' for column '' at row -1
+Warning 1292 Truncated incorrect DECIMAL value: ' ---äÖüß@µ*$-- '
DROP VIEW v1;
@@ -3656,14 +3680,14 @@ my_double, id FROM t1_values
WHERE select_id = 53 OR select_id IS NULL order by id;
CAST(my_double AS TIME) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
00:00:00 0 4
-00:00:01 -1 5
00:17:58 1758 25
Warnings:
-Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect time value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect time value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect time value: '1.7976931348623e308'
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as time) AS `CAST(my_double AS TIME)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci
@@ -3672,14 +3696,14 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 53 OR select_id IS NULL) order by id;
CAST(my_double AS TIME) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
00:00:00 0 4
-00:00:01 -1 5
00:17:58 1758 25
Warnings:
-Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308'
-Warning 1292 Truncated incorrect time value: '1.7976931348623e+308'
+Warning 1292 Truncated incorrect time value: '-1.7976931348623e308'
+Warning 1292 Truncated incorrect time value: '1.7976931348623e308'
DROP VIEW v1;
@@ -4018,14 +4042,14 @@ my_double, id FROM t1_values
WHERE select_id = 42 OR select_id IS NULL order by id;
CAST(my_double AS DATETIME) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
NULL 0 4
NULL -1 5
NULL 200506271758 19
Warnings:
-Warning 1292 Incorrect datetime value: '-1.7976931348623e+308'
-Warning 1292 Incorrect datetime value: '1.7976931348623e+308'
+Warning 1292 Incorrect datetime value: '-1.7976931348623e308'
+Warning 1292 Incorrect datetime value: '1.7976931348623e308'
Warning 1292 Incorrect datetime value: '0'
Warning 1292 Incorrect datetime value: '-1'
Warning 1292 Incorrect datetime value: '200506271758'
@@ -4037,14 +4061,14 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 42 OR select_id IS NULL) order by id;
CAST(my_double AS DATETIME) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
NULL 0 4
NULL -1 5
NULL 200506271758 19
Warnings:
-Warning 1292 Incorrect datetime value: '-1.7976931348623e+308'
-Warning 1292 Incorrect datetime value: '1.7976931348623e+308'
+Warning 1292 Incorrect datetime value: '-1.7976931348623e308'
+Warning 1292 Incorrect datetime value: '1.7976931348623e308'
Warning 1292 Incorrect datetime value: '0'
Warning 1292 Incorrect datetime value: '-1'
Warning 1292 Incorrect datetime value: '200506271758'
@@ -4392,14 +4416,14 @@ my_double, id FROM t1_values
WHERE select_id = 31 OR select_id IS NULL order by id;
CAST(my_double AS DATE) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
NULL 0 4
NULL -1 5
2005-06-27 20050627 13
Warnings:
-Warning 1292 Incorrect datetime value: '-1.7976931348623e+308'
-Warning 1292 Incorrect datetime value: '1.7976931348623e+308'
+Warning 1292 Incorrect datetime value: '-1.7976931348623e308'
+Warning 1292 Incorrect datetime value: '1.7976931348623e308'
Warning 1292 Incorrect datetime value: '0'
Warning 1292 Incorrect datetime value: '-1'
SHOW CREATE VIEW v1;
@@ -4410,14 +4434,14 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 31 OR select_id IS NULL) order by id;
CAST(my_double AS DATE) my_double id
NULL NULL 1
-NULL -1.7976931348623e+308 2
-NULL 1.7976931348623e+308 3
+NULL -1.7976931348623e308 2
+NULL 1.7976931348623e308 3
NULL 0 4
NULL -1 5
2005-06-27 20050627 13
Warnings:
-Warning 1292 Incorrect datetime value: '-1.7976931348623e+308'
-Warning 1292 Incorrect datetime value: '1.7976931348623e+308'
+Warning 1292 Incorrect datetime value: '-1.7976931348623e308'
+Warning 1292 Incorrect datetime value: '1.7976931348623e308'
Warning 1292 Incorrect datetime value: '0'
Warning 1292 Incorrect datetime value: '-1'
DROP VIEW v1;
@@ -4752,8 +4776,8 @@ my_double, id FROM t1_values
WHERE select_id = 20 OR select_id IS NULL order by id;
CAST(my_double AS CHAR) my_double id
NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
SHOW CREATE VIEW v1;
@@ -4764,8 +4788,8 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 20 OR select_id IS NULL) order by id;
CAST(my_double AS CHAR) my_double id
NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
DROP VIEW v1;
@@ -5064,8 +5088,8 @@ my_double, id FROM t1_values
WHERE select_id = 8 OR select_id IS NULL order by id;
CAST(my_double AS BINARY) my_double id
NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
SHOW CREATE VIEW v1;
@@ -5076,8 +5100,8 @@ WHERE v1.id IN (SELECT id FROM t1_values
WHERE select_id = 8 OR select_id IS NULL) order by id;
CAST(my_double AS BINARY) my_double id
NULL NULL 1
--1.7976931348623e+308 -1.7976931348623e+308 2
-1.7976931348623e+308 1.7976931348623e+308 3
+-1.7976931348623e308 -1.7976931348623e308 2
+1.7976931348623e308 1.7976931348623e308 3
0 0 4
-1 -1 5
DROP VIEW v1;
diff --git a/mysql-test/suite/funcs_1/r/ndb_storedproc_02.result b/mysql-test/suite/funcs_1/r/ndb_storedproc_02.result
index 65fc5b5afc9..3e2d084aa0c 100644
--- a/mysql-test/suite/funcs_1/r/ndb_storedproc_02.result
+++ b/mysql-test/suite/funcs_1/r/ndb_storedproc_02.result
@@ -550,9 +550,6 @@ exit handler 2
exit handler 2
exit handler 1
exit handler 1
-Warnings:
-Note 1051 Unknown table 'tqq'
-Note 1051 Unknown table 'tqq'
create table res_t1(w char unique, x char);
insert into res_t1 values ('a', 'b');
CREATE PROCEDURE h1 ()
diff --git a/mysql-test/suite/funcs_1/r/ndb_storedproc_07.result b/mysql-test/suite/funcs_1/r/ndb_storedproc_07.result
index 5a2c0bb6bdf..a520bdfac36 100644
--- a/mysql-test/suite/funcs_1/r/ndb_storedproc_07.result
+++ b/mysql-test/suite/funcs_1/r/ndb_storedproc_07.result
@@ -80,7 +80,7 @@ CREATE TABLE result (f1 text(200), f2 char(20));
set @@sql_mode='traditional';
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
CREATE PROCEDURE sp1()
BEGIN
declare a tinyint;
@@ -97,7 +97,7 @@ END if;
END//
SHOW CREATE PROCEDURE sp1;
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
-sp1 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`()
+sp1 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`()
BEGIN
declare a tinyint;
declare count_ int default 1;
@@ -117,10 +117,10 @@ Variable_name Value
sql_mode
CALL sp1();
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
SELECT * from result;
f1 f2
-STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER value restored
+STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION value restored
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
sql_mode
@@ -142,7 +142,7 @@ DROP PROCEDURE IF EXISTS sp2;
... show initial value
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
CREATE PROCEDURE sp2()
BEGIN
SET @@sql_mode='MAXDB';
@@ -150,7 +150,7 @@ SHOW VARIABLES LIKE 'sql_mode';
END//
SHOW CREATE PROCEDURE sp2;
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
-sp2 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER CREATE DEFINER=`root`@`localhost` PROCEDURE `sp2`()
+sp2 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `sp2`()
BEGIN
SET @@sql_mode='MAXDB';
SHOW VARIABLES LIKE 'sql_mode';
@@ -158,7 +158,7 @@ END latin1 latin1_swedish_ci latin1_swedish_ci
... show value prior calling procedure
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
... call procedure that changes sql_mode
CALL sp2();
Variable_name Value
@@ -166,7 +166,7 @@ sql_mode PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_
... check whether old value is re-set
SHOW VARIABLES LIKE 'sql_mode';
Variable_name Value
-sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
DROP PROCEDURE sp2;
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
diff --git a/mysql-test/suite/funcs_1/r/ndb_storedproc_08.result b/mysql-test/suite/funcs_1/r/ndb_storedproc_08.result
index 2e504af6ed4..4d85b97369c 100644
--- a/mysql-test/suite/funcs_1/r/ndb_storedproc_08.result
+++ b/mysql-test/suite/funcs_1/r/ndb_storedproc_08.result
@@ -105,10 +105,17 @@ END//
-----------------------------
SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
SPECIFIC_NAME fn_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_1
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -132,10 +139,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME fn_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_2
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -159,10 +173,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_1
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -184,10 +205,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_2
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -323,10 +351,17 @@ ALTER FUNCTION fn_2 MODIFIES SQL DATA;
-----------------------------
SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
SPECIFIC_NAME fn_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_1
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -350,10 +385,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME fn_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_2
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -377,10 +419,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_1
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -402,10 +451,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_2
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -534,10 +590,17 @@ ALTER FUNCTION fn_2 CONTAINS SQL;
-----------------------------
SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
SPECIFIC_NAME fn_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_1
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -561,10 +624,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME fn_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME fn_2
ROUTINE_TYPE FUNCTION
+DATA_TYPE year
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER year(4)
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -588,10 +658,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_1
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_1
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
@@ -613,10 +690,17 @@ CHARACTER_SET_CLIENT latin1
COLLATION_CONNECTION latin1_swedish_ci
DATABASE_COLLATION latin1_swedish_ci
SPECIFIC_NAME sp_2
-ROUTINE_CATALOG NULL
+ROUTINE_CATALOG def
ROUTINE_SCHEMA db_storedproc
ROUTINE_NAME sp_2
ROUTINE_TYPE PROCEDURE
+DATA_TYPE
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
DTD_IDENTIFIER NULL
ROUTINE_BODY SQL
ROUTINE_DEFINITION BEGIN
diff --git a/mysql-test/suite/funcs_1/r/ndb_trig_03.result b/mysql-test/suite/funcs_1/r/ndb_trig_03.result
index b02fba0f38d..012977ae4a3 100644
--- a/mysql-test/suite/funcs_1/r/ndb_trig_03.result
+++ b/mysql-test/suite/funcs_1/r/ndb_trig_03.result
@@ -77,7 +77,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke TRIGGER on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER on *.* to test_yesprivs@localhost;
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
@@ -155,7 +155,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke UPDATE on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER, UPDATE on *.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
@@ -169,7 +169,7 @@ test_noprivs@localhost
use priv_db;
show grants;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
select f1 from t1 order by f1;
f1
insert 3.5.3.2-no
@@ -401,7 +401,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke SELECT on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER, SELECT on *.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
@@ -415,7 +415,7 @@ test_noprivs@localhost
use priv_db;
show grants;
Grants for test_noprivs@localhost
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
create trigger trg5a_1 before INSERT on t1 for each row
set @test_var = new.f1;
set @test_var = 'before trig 3.5.3.8-1a';
diff --git a/mysql-test/suite/funcs_1/r/ndb_trig_03e.result b/mysql-test/suite/funcs_1/r/ndb_trig_03e.result
index 84260822edf..eea8df9a1fd 100644
--- a/mysql-test/suite/funcs_1/r/ndb_trig_03e.result
+++ b/mysql-test/suite/funcs_1/r/ndb_trig_03e.result
@@ -562,7 +562,7 @@ trig 1_1-yes
revoke TRIGGER on *.* from test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
Grants for test_yesprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
select current_user;
current_user
@@ -609,7 +609,7 @@ root@localhost
grant TRIGGER on priv_db.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
Grants for test_yesprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
GRANT TRIGGER ON `priv_db`.* TO 'test_yesprivs'@'localhost'
trigger privilege on db level for create:
@@ -1251,7 +1251,7 @@ drop trigger trg1_0;
create definer=not_ex_user@localhost trigger trg1_0
before INSERT on t1 for each row
set new.f1 = 'trig 1_0-yes';
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
create definer=current_user trigger trg1_1
before INSERT on t1 for each row
set new.f1 = 'trig 1_1-yes';
@@ -1284,7 +1284,7 @@ GRANT SELECT, INSERT, UPDATE, TRIGGER ON `priv_db`.`t1` TO 'test_yesprivs'@'loca
create definer=not_ex_user@localhost trigger trg1_3
after UPDATE on t1 for each row
set @var1 = 'trig 1_3-yes';
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
select current_user;
current_user
root@localhost
diff --git a/mysql-test/suite/funcs_1/r/ndb_views.result b/mysql-test/suite/funcs_1/r/ndb_views.result
index b75f4955986..10cb7613f47 100644
--- a/mysql-test/suite/funcs_1/r/ndb_views.result
+++ b/mysql-test/suite/funcs_1/r/ndb_views.result
@@ -3546,11 +3546,11 @@ CREATE VIEW v1 or REPLACE AS Select * from tb2 my_table;
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 'or REPLACE AS Select * from tb2 my_table' at line 1
CREATE VIEW v1 WITH CASCADED CHECK OPTION AS Select *
from tb2 my_table limit 50;
-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 'WITH CASCADED CHECK OPTION AS Select *
+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 'CASCADED CHECK OPTION AS Select *
from tb2 my_table limit 50' at line 1
CREATE VIEW v1 WITH LOCAL CHECK OPTION AS Select *
from tb2 my_table limit 50;
-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 'WITH LOCAL CHECK OPTION AS Select *
+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 'LOCAL CHECK OPTION AS Select *
from tb2 my_table limit 50' at line 1
SELECT * FROM tb2 my_table CREATE VIEW As v1;
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 'CREATE VIEW As v1' at line 1
@@ -3580,7 +3580,7 @@ FROM test.tb2 my_table CHECK OPTION WITH CASCADED;
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 'CHECK OPTION WITH CASCADED' at line 2
CREATE OR REPLACE VIEW v1 WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table;
-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 'WITH CASCADED CHECK OPTION
+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 'CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table' at line 1
CREATE OR REPLACE AS SELECT F59, F60
FROM test.tb2 my_table VIEW v1 WITH CASCADED CHECK OPTION;
@@ -3609,7 +3609,7 @@ FROM test.tb2 my_table CHECK OPTION WITH LOCAL;
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 'CHECK OPTION WITH LOCAL' at line 2
CREATE OR REPLACE VIEW v1 WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table;
-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 'WITH CASCADED CHECK OPTION
+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 'CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table' at line 1
CREATE OR REPLACE AS SELECT F59, F60
FROM test.tb2 my_table VIEW v1 WITH LOCAL CHECK OPTION;
@@ -22824,7 +22824,7 @@ f1 f2
ABC 3
SELECT * FROM v1 order by 2;
f1 my_sqrt
-ABC 1.73205080756888
+ABC 1.7320508075688772
ALTER TABLE t1 CHANGE COLUMN f2 f2 VARCHAR(30);
INSERT INTO t1 SET f1 = 'ABC', f2 = 'DEF';
DESCRIBE t1;
@@ -22842,7 +22842,10 @@ ABC DEF
SELECT * FROM v1 order by 2;
f1 my_sqrt
ABC 0
-ABC 1.73205080756888
+ABC 1.7320508075688772
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
SELECT SQRT('DEF');
SQRT('DEF')
0
@@ -22862,27 +22865,36 @@ my_sqrt double YES NULL
SELECT * FROM v2 order by 2;
f1 my_sqrt
ABC 0
-ABC 1.73205080756888
+ABC 1.7320508075688772
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
CREATE TABLE t2 AS SELECT f1, SQRT(f2) my_sqrt FROM t1;
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
SELECT * FROM t2 order by 2;
f1 ABC
my_sqrt 0
f1 ABC
-my_sqrt 1.73205080756888
+my_sqrt 1.7320508075688772
DROP TABLE t2;
CREATE TABLE t2 AS SELECT * FROM v1;
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
SELECT * FROM t2 order by 2;
f1 ABC
my_sqrt 0
f1 ABC
-my_sqrt 1.73205080756888
+my_sqrt 1.7320508075688772
DROP TABLE t2;
CREATE TABLE t2 AS SELECT * FROM v2;
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'DEF'
SELECT * FROM t2 order by 2;
f1 ABC
my_sqrt 0
f1 ABC
-my_sqrt 1.73205080756888
+my_sqrt 1.7320508075688772
DROP TABLE t1;
DROP TABLE t2;
DROP VIEW v1;
diff --git a/mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result b/mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result
index 3d341292be1..ed9e9cce054 100644
--- a/mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result
+++ b/mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result
@@ -74,11 +74,11 @@ ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_
ALTER TABLE processlist ADD COLUMN (my_column INT);
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
RENAME TABLE processlist TO new_processlist;
-ERROR 42S02: Unknown table 'new_processlist' in information_schema
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
RENAME TABLE processlist TO files;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
CREATE TABLE new_processlist AS SELECT * FROM processlist;
-ERROR 42S02: Unknown table 'new_processlist' in information_schema
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
DROP DATABASE information_schema;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
RENAME DATABASE information_schema TO info_schema;
@@ -141,11 +141,11 @@ ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'in
ALTER TABLE processlist ADD COLUMN (my_column INT);
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
RENAME TABLE processlist TO new_processlist;
-ERROR 42S02: Unknown table 'new_processlist' in information_schema
+ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
RENAME TABLE processlist TO files;
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
CREATE TABLE new_processlist AS SELECT * FROM processlist;
-ERROR 42S02: Unknown table 'new_processlist' in information_schema
+ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
DROP DATABASE information_schema;
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
RENAME DATABASE information_schema TO info_schema;
diff --git a/mysql-test/suite/funcs_1/r/processlist_priv_ps.result b/mysql-test/suite/funcs_1/r/processlist_priv_ps.result
index 2932467be2a..db1b385513c 100644
--- a/mysql-test/suite/funcs_1/r/processlist_priv_ps.result
+++ b/mysql-test/suite/funcs_1/r/processlist_priv_ps.result
@@ -74,11 +74,11 @@ ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_
ALTER TABLE processlist ADD COLUMN (my_column INT);
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
RENAME TABLE processlist TO new_processlist;
-ERROR 42S02: Unknown table 'new_processlist' in information_schema
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
RENAME TABLE processlist TO files;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
CREATE TABLE new_processlist AS SELECT * FROM processlist;
-ERROR 42S02: Unknown table 'new_processlist' in information_schema
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
DROP DATABASE information_schema;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
RENAME DATABASE information_schema TO info_schema;
@@ -141,11 +141,11 @@ ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'in
ALTER TABLE processlist ADD COLUMN (my_column INT);
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
RENAME TABLE processlist TO new_processlist;
-ERROR 42S02: Unknown table 'new_processlist' in information_schema
+ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
RENAME TABLE processlist TO files;
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
CREATE TABLE new_processlist AS SELECT * FROM processlist;
-ERROR 42S02: Unknown table 'new_processlist' in information_schema
+ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
DROP DATABASE information_schema;
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
RENAME DATABASE information_schema TO info_schema;
diff --git a/mysql-test/suite/funcs_1/r/storedproc.result b/mysql-test/suite/funcs_1/r/storedproc.result
index 3efb361dc82..f08c52322f3 100644
--- a/mysql-test/suite/funcs_1/r/storedproc.result
+++ b/mysql-test/suite/funcs_1/r/storedproc.result
@@ -182,12 +182,9 @@ db_storedproc func_1 FUNCTION root@localhost <modified> <created> INVOKER this i
UPDATE t1_aux SET f1 = NULL;
SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux;
UPDATE t1_aux SET f1 = 1.7976931348623157493578e+308;
-ERROR 22007: Illegal double '1.7976931348623157493578e+308' value found during parsing
SELECT f1 INTO @v1_tab FROM t1_aux;
CALL sproc_1(1.7976931348623157493578e+308, @v1_proc);
-ERROR 22007: Illegal double '1.7976931348623157493578e+308' value found during parsing
SET @v1_func = func_1(1.7976931348623157493578e+308);
-ERROR 22007: Illegal double '1.7976931348623157493578e+308' value found during parsing
UPDATE t1_aux SET f1 = NULL;
SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux;
UPDATE t1_aux SET f1 = 0.1234567890987654321e+100;
@@ -2806,7 +2803,7 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp
SELECT * from t1 where f2=f1' at line 1
CREATE PROCEDURE with()
SELECT * from t1 where f2=f1;
-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 'with()
+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 * from t1 where f2=f1' at line 1
CREATE PROCEDURE write()
SELECT * from t1 where f2=f1;
@@ -5660,7 +5657,7 @@ CREATE PROCEDURE sp1()
with:BEGIN
SELECT @x;
END//
-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 'with:BEGIN
+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 ':BEGIN
SELECT @x;
END' at line 2
DROP PROCEDURE IF EXISTS sp1;
@@ -7128,8 +7125,6 @@ CALL sp1();
x y z
000 000 000
Warnings:
-Warning 1264 Out of range value for column 'x' at row 1
-Warning 1264 Out of range value for column 'y' at row 1
Warning 1264 Out of range value for column 'z' at row 1
DROP PROCEDURE IF EXISTS sp1;
CREATE PROCEDURE sp1( )
@@ -7168,8 +7163,6 @@ CALL sp1();
x y z
00000 00000 00000
Warnings:
-Warning 1264 Out of range value for column 'x' at row 1
-Warning 1264 Out of range value for column 'y' at row 1
Warning 1264 Out of range value for column 'z' at row 1
DROP PROCEDURE IF EXISTS sp1;
CREATE PROCEDURE sp1( )
@@ -7208,8 +7201,6 @@ CALL sp1();
x y z
00000000 00000000 00000000
Warnings:
-Warning 1264 Out of range value for column 'x' at row 1
-Warning 1264 Out of range value for column 'y' at row 1
Warning 1264 Out of range value for column 'z' at row 1
DROP PROCEDURE IF EXISTS sp1;
CREATE PROCEDURE sp1( )
@@ -7248,8 +7239,6 @@ CALL sp1();
x y z
0000000000 0000000000 0000000000
Warnings:
-Warning 1264 Out of range value for column 'x' at row 1
-Warning 1264 Out of range value for column 'y' at row 1
Warning 1264 Out of range value for column 'z' at row 1
DROP PROCEDURE IF EXISTS sp1;
CREATE PROCEDURE sp1( )
@@ -7288,8 +7277,6 @@ CALL sp1();
x y z
00000000000000000000 00000000000000000000 00000000000000000000
Warnings:
-Warning 1264 Out of range value for column 'x' at row 1
-Warning 1264 Out of range value for column 'y' at row 1
Warning 1264 Out of range value for column 'z' at row 1
DROP PROCEDURE IF EXISTS sp1;
CREATE PROCEDURE sp1( )
@@ -7310,8 +7297,6 @@ CALL sp1();
x y z
-9999999999 -9999999999 -9999999999
Warnings:
-Warning 1264 Out of range value for column 'x' at row 1
-Warning 1264 Out of range value for column 'y' at row 1
Warning 1264 Out of range value for column 'z' at row 1
DROP PROCEDURE IF EXISTS sp1;
CREATE PROCEDURE sp1( )
@@ -7323,8 +7308,6 @@ CALL sp1();
x y z
0 0 0
Warnings:
-Note 1265 Data truncated for column 'x' at row 1
-Note 1265 Data truncated for column 'y' at row 1
Note 1265 Data truncated for column 'z' at row 1
DROP PROCEDURE IF EXISTS sp1;
CREATE PROCEDURE sp1( )
@@ -7336,8 +7319,6 @@ CALL sp1();
x y z
0000000000 0000000000 0000000000
Warnings:
-Warning 1264 Out of range value for column 'x' at row 1
-Warning 1264 Out of range value for column 'y' at row 1
Warning 1264 Out of range value for column 'z' at row 1
DROP PROCEDURE IF EXISTS sp1;
CREATE PROCEDURE sp1( )
@@ -7349,8 +7330,6 @@ CALL sp1();
x y z
0000000000 0000000000 0000000000
Warnings:
-Note 1265 Data truncated for column 'x' at row 1
-Note 1265 Data truncated for column 'y' at row 1
Note 1265 Data truncated for column 'z' at row 1
DROP PROCEDURE IF EXISTS sp1;
CREATE PROCEDURE sp1( )
@@ -7362,8 +7341,6 @@ CALL sp1();
x y z
0 0 0
Warnings:
-Note 1265 Data truncated for column 'x' at row 1
-Note 1265 Data truncated for column 'y' at row 1
Note 1265 Data truncated for column 'z' at row 1
DROP PROCEDURE IF EXISTS sp1;
CREATE PROCEDURE sp1( )
@@ -7375,8 +7352,6 @@ CALL sp1();
x y z
0 0 0
Warnings:
-Note 1265 Data truncated for column 'x' at row 1
-Note 1265 Data truncated for column 'y' at row 1
Note 1265 Data truncated for column 'z' at row 1
DROP PROCEDURE IF EXISTS sp1;
CREATE PROCEDURE sp1( )
@@ -7388,8 +7363,6 @@ CALL sp1();
x y z
0000000000 0000000000 0000000000
Warnings:
-Note 1265 Data truncated for column 'x' at row 1
-Note 1265 Data truncated for column 'y' at row 1
Note 1265 Data truncated for column 'z' at row 1
DROP PROCEDURE IF EXISTS sp1;
CREATE PROCEDURE sp1( )
@@ -7401,8 +7374,6 @@ CALL sp1();
x y z
0000000000 0000000000 0000000000
Warnings:
-Note 1265 Data truncated for column 'x' at row 1
-Note 1265 Data truncated for column 'y' at row 1
Note 1265 Data truncated for column 'z' at row 1
DROP PROCEDURE IF EXISTS sp1;
CREATE PROCEDURE sp1( )
@@ -9246,7 +9217,7 @@ CREATE PROCEDURE sp1()
BEGIN
declare with char;
END//
-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 'with char;
+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 'char;
END' at line 3
DROP PROCEDURE IF EXISTS sp1;
Warnings:
@@ -11602,8 +11573,9 @@ BEGIN
declare with condition for sqlstate '02000';
declare exit handler for with set @var2 = 1;
END//
-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 'with condition for sqlstate '02000';
-declare exit handler for with set @var2 = 1' at line 3
+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 'condition for sqlstate '02000';
+declare exit handler for with set @var2 = 1;
+END' at line 3
DROP PROCEDURE IF EXISTS sp1;
Warnings:
Note 1305 PROCEDURE sp1 does not exist
@@ -13707,7 +13679,7 @@ CREATE PROCEDURE sp1( )
BEGIN
declare with handler for sqlstate '02000' set @var2 = 1;
END//
-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 'with handler for sqlstate '02000' set @var2 = 1;
+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 'handler for sqlstate '02000' set @var2 = 1;
END' at line 3
DROP PROCEDURE IF EXISTS sp1;
Warnings:
@@ -13782,9 +13754,6 @@ END//
CALL sp1();
x y @x
NULL a 3
-Warnings:
-Warning 1265 Data truncated for column 'y' at row 3
-Warning 1265 Data truncated for column 'y' at row 1
SELECT @v1, @v2;
@v1 @v2
4 a
@@ -15465,14 +15434,6 @@ count done
10 1
Warnings:
Warning 1265 Data truncated for column 'name' at row 1
-Warning 1265 Data truncated for column 'name' at row 2
-Warning 1265 Data truncated for column 'name' at row 3
-Warning 1265 Data truncated for column 'name' at row 4
-Warning 1265 Data truncated for column 'name' at row 5
-Warning 1265 Data truncated for column 'name' at row 6
-Warning 1265 Data truncated for column 'name' at row 7
-Warning 1265 Data truncated for column 'name' at row 8
-Warning 1265 Data truncated for column 'name' at row 9
DROP PROCEDURE sp3;
drop table res_t3_itisalongname_1381742_itsaverylongname_1381742;
@@ -16387,7 +16348,6 @@ fn7(99999999999)
9999999999
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP FUNCTION IF EXISTS fn8;
CREATE FUNCTION fn8( f1 decimal (0) unsigned zerofill) returns decimal (0) unsigned zerofill
@@ -16432,7 +16392,6 @@ fn11(99999999999)
9999999999
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP FUNCTION IF EXISTS fn12;
CREATE FUNCTION fn12( f1 decimal (0, 0) unsigned zerofill) returns decimal (0, 0) unsigned zerofill
@@ -16533,7 +16492,6 @@ SELECT fn21_d_z(1.00e+00);
fn21_d_z(1.00e+00)
0000000000000000000000000000000000000000000000000000000000000010
Warnings:
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP FUNCTION IF EXISTS fn22;
CREATE FUNCTION fn22( f1 decimal unsigned) returns decimal unsigned
@@ -16545,7 +16503,6 @@ SELECT fn22(1.00e+00);
fn22(1.00e+00)
10
Warnings:
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP FUNCTION IF EXISTS fn23;
CREATE FUNCTION fn23( f1 decimal unsigned zerofill) returns decimal unsigned zerofill
@@ -16557,7 +16514,6 @@ SELECT fn23(1.00e+00);
fn23(1.00e+00)
0000000010
Warnings:
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP FUNCTION IF EXISTS fn24;
CREATE FUNCTION fn24( f1 decimal zerofill) returns decimal zerofill
@@ -16903,7 +16859,6 @@ fn56(-8388601)
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
-Warning 1264 Out of range value for column 'f1' at row 1
DROP FUNCTION IF EXISTS fn57;
CREATE FUNCTION fn57( f1 numeric) returns numeric
BEGIN
@@ -16936,7 +16891,6 @@ SELECT fn59(9999999999);
fn59(9999999999)
9999999999
Warnings:
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP FUNCTION IF EXISTS fn60;
CREATE FUNCTION fn60( f1 numeric (0) unsigned zerofill) returns numeric (0) unsigned zerofill
@@ -16982,7 +16936,6 @@ SELECT fn63(9999999999);
fn63(9999999999)
9999999999
Warnings:
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP FUNCTION IF EXISTS fn64;
CREATE FUNCTION fn64( f1 numeric (0, 0) unsigned zerofill) returns numeric (0, 0) unsigned zerofill
@@ -17018,8 +16971,6 @@ fn66(-1e+36)
-999999999999999999999999999999989.999999999999999999999999999999
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
-Note 1265 Data truncated for column 'f1' at row 1
-Warning 1264 Out of range value for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP FUNCTION IF EXISTS fn67;
CREATE FUNCTION fn67( f1 numeric (63, 30) unsigned) returns numeric (63, 30) unsigned
@@ -17032,7 +16983,6 @@ fn67(1e+36)
999999999999999999999999999999999.999999999999999999999999999999
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP FUNCTION IF EXISTS fn68;
CREATE FUNCTION fn68( f1 numeric (63, 30) unsigned zerofill) returns numeric (63, 30) unsigned zerofill
@@ -17045,7 +16995,6 @@ fn68(1e+36)
999999999999999999999999999999999.999999999999999999999999999999
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP FUNCTION IF EXISTS fn69;
CREATE FUNCTION fn69( f1 numeric (63, 30) zerofill) returns numeric (63, 30) zerofill
@@ -17140,7 +17089,7 @@ return f1;
END//
SELECT fn77(1.1);
fn77(1.1)
-1.1
+1.0999999999999996
DROP FUNCTION IF EXISTS fn78;
CREATE FUNCTION fn78( f1 real unsigned) returns real unsigned
BEGIN
@@ -17213,7 +17162,6 @@ fn84(-32601)
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
-Warning 1264 Out of range value for column 'f1' at row 1
DROP FUNCTION IF EXISTS fn85;
CREATE FUNCTION fn85( f1 tinyint) returns tinyint
BEGIN
@@ -17253,7 +17201,6 @@ fn88(-101)
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
-Warning 1264 Out of range value for column 'f1' at row 1
DROP FUNCTION IF EXISTS fn89;
CREATE FUNCTION fn89( f1 enum('1enum', '2enum')) returns enum('1enum', '2enum')
BEGIN
@@ -17511,7 +17458,6 @@ f1
9999999999
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP PROCEDURE IF EXISTS sp8;
CREATE PROCEDURE sp8( f1 decimal (0) unsigned zerofill)
@@ -17556,7 +17502,6 @@ f1
9999999999
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP PROCEDURE IF EXISTS sp12;
CREATE PROCEDURE sp12( f1 decimal (0, 0) unsigned zerofill)
@@ -17678,7 +17623,6 @@ CALL sp21(1.00e+00);
f1
0000000000000000000000000000000000000000000000000000000000000010
Warnings:
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP PROCEDURE IF EXISTS sp22;
CREATE PROCEDURE sp22( f1 decimal unsigned)
@@ -17690,7 +17634,6 @@ CALL sp22(1.00e+00);
f1
10
Warnings:
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP PROCEDURE IF EXISTS sp23;
CREATE PROCEDURE sp23( f1 decimal unsigned zerofill)
@@ -17702,7 +17645,6 @@ CALL sp23(1.00e+00);
f1
0000000010
Warnings:
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP PROCEDURE IF EXISTS sp24;
CREATE PROCEDURE sp24( f1 decimal zerofill)
@@ -18048,7 +17990,6 @@ f1
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
-Warning 1264 Out of range value for column 'f1' at row 1
DROP PROCEDURE IF EXISTS sp57;
CREATE PROCEDURE sp57( f1 numeric)
BEGIN
@@ -18081,7 +18022,6 @@ CALL sp59(9999999999);
f1
9999999999
Warnings:
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP PROCEDURE IF EXISTS sp60;
CREATE PROCEDURE sp60( f1 numeric (0) unsigned zerofill)
@@ -18127,7 +18067,6 @@ CALL sp63(9999999999);
f1
9999999999
Warnings:
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP PROCEDURE IF EXISTS sp64;
CREATE PROCEDURE sp64( f1 numeric (0, 0) unsigned zerofill)
@@ -18163,16 +18102,12 @@ f1
-999999999999999999999999999999989.999999999999999999999999999999
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
-Note 1265 Data truncated for column 'f1' at row 1
-Warning 1264 Out of range value for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
CALL sp66_n( -1000000000000000000000000000000000000 );
f1
-999999999999999999999999999999989.999999999999999999999999999999
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
-Note 1265 Data truncated for column 'f1' at row 1
-Warning 1264 Out of range value for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP PROCEDURE IF EXISTS sp67_nu;
CREATE PROCEDURE sp67_nu( f1 numeric (63, 30) unsigned)
@@ -18185,14 +18120,12 @@ f1
999999999999999999999999999999999.999999999999999999999999999999
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
CALL sp67_nu( 1000000000000000000000000000000000000 );
f1
999999999999999999999999999999999.999999999999999999999999999999
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP PROCEDURE IF EXISTS sp68_nuz;
CREATE PROCEDURE sp68_nuz( f1 numeric (63, 30) unsigned zerofill)
@@ -18205,14 +18138,12 @@ f1
999999999999999999999999999999999.999999999999999999999999999999
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
CALL sp68_nuz( 1000000000000000000000000000000000000 );
f1
999999999999999999999999999999999.999999999999999999999999999999
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
-Note 1265 Data truncated for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
DROP PROCEDURE IF EXISTS sp69_n_z;
CREATE PROCEDURE sp69_n_z( f1 numeric (63, 30) zerofill)
@@ -18322,7 +18253,7 @@ SELECT f1;
END//
CALL sp77(1.1);
f1
-1.1
+1.0999999999999996
DROP PROCEDURE IF EXISTS sp78;
CREATE PROCEDURE sp78( f1 real unsigned)
BEGIN
@@ -18395,7 +18326,6 @@ f1
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
-Warning 1264 Out of range value for column 'f1' at row 1
DROP PROCEDURE IF EXISTS sp85;
CREATE PROCEDURE sp85( f1 tinyint)
BEGIN
@@ -18435,7 +18365,6 @@ f1
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
Warning 1264 Out of range value for column 'f1' at row 1
-Warning 1264 Out of range value for column 'f1' at row 1
DROP PROCEDURE IF EXISTS sp89;
CREATE PROCEDURE sp89( f1 enum('1enum', '2enum'))
BEGIN
@@ -19525,9 +19454,9 @@ SELECT var1, var2, var3, var4, var5, var6, var7, var8;
END//
CALL spexecute24();
f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12
-1.1 1.1 11.1 -9220000000000000000 6744073709551616 6744073709551616 -9220000000000000000 6744073709551616 6744073709551616 -9220000000000000000 6744073709551616 6744073709551616
+1.0999999999999996 1.0999999999999996 11.1 -9220000000000000000 6744073709551616 6744073709551616 -9220000000000000000 6744073709551616 6744073709551616 -9220000000000000000 6744073709551616 6744073709551616
var1 var2 var3 var4 var5 var6 var7 var8
-1.1 11.1 6744073709551616 6744073709551616 6744073709551616 6744073709551616 6744073709551616 6744073709551616
+1.0999999999999996 11.1 6744073709551616 6744073709551616 6744073709551616 6744073709551616 6744073709551616 6744073709551616
DROP PROCEDURE spexecute24;
DROP PROCEDURE sp24;
DROP PROCEDURE IF EXISTS sp25;
@@ -22184,7 +22113,7 @@ f1
2005-03-14 01:01:02
SELECT @@sql_mode;
@@sql_mode
-STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
DROP PROCEDURE sp2;
drop table temp_table;
@@ -22263,9 +22192,9 @@ END latin1 latin1_swedish_ci latin1_swedish_ci
set @@sql_mode='';
CALL sp4();
Level Code Message
-Error 1365 Division by 0
+Warning 1365 Division by 0
Warnings:
-Error 1365 Division by 0
+Warning 1365 Division by 0
DROP PROCEDURE sp4;
set @@sql_mode='';
diff --git a/mysql-test/suite/funcs_1/storedproc/storedproc_08_show.inc b/mysql-test/suite/funcs_1/storedproc/storedproc_08_show.inc
index d6fd397561c..2102377f907 100644
--- a/mysql-test/suite/funcs_1/storedproc/storedproc_08_show.inc
+++ b/mysql-test/suite/funcs_1/storedproc/storedproc_08_show.inc
@@ -8,7 +8,7 @@
--vertical_results
---replace_column 16 <modified> 17 <created>
+--replace_column 23 <modified> 24 <created>
SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
diff --git a/mysql-test/suite/funcs_1/t/disabled.def b/mysql-test/suite/funcs_1/t/disabled.def
index 3f260ca49ba..23f15b78103 100644
--- a/mysql-test/suite/funcs_1/t/disabled.def
+++ b/mysql-test/suite/funcs_1/t/disabled.def
@@ -10,4 +10,4 @@
#
##############################################################################
-ndb_trig_1011ext: Bug#32656 NDB: Duplicate key error aborts transaction in handler. Doesn't talk back to SQL
+ndb_trig_1011ext: Bug#47564
diff --git a/mysql-test/suite/funcs_1/t/is_basics_mixed.test b/mysql-test/suite/funcs_1/t/is_basics_mixed.test
index 235b91c67d0..ee4e009ab0d 100644
--- a/mysql-test/suite/funcs_1/t/is_basics_mixed.test
+++ b/mysql-test/suite/funcs_1/t/is_basics_mixed.test
@@ -468,25 +468,20 @@ DROP DATABASE db_datadict;
--disable_warnings
DROP PROCEDURE IF EXISTS test.p1;
--enable_warnings
+--error ER_DBACCESS_DENIED_ERROR
CREATE PROCEDURE test.p1()
INSERT INTO information_schema.tables
SELECT * FROM information_schema.tables LIMIT 1;
---error ER_DBACCESS_DENIED_ERROR
-CALL test.p1();
-DROP PROCEDURE test.p1;
CREATE PROCEDURE test.p1()
UPDATE information_schema.columns SET table_schema = 'garbage';
--error ER_DBACCESS_DENIED_ERROR
CALL test.p1();
DROP PROCEDURE test.p1;
+--error ER_DBACCESS_DENIED_ERROR
CREATE PROCEDURE test.p1()
DELETE FROM information_schema.schemata;
---error ER_DBACCESS_DENIED_ERROR
-CALL test.p1();
-
-DROP PROCEDURE test.p1;
--echo #########################################################################
diff --git a/mysql-test/suite/funcs_1/t/is_columns.test b/mysql-test/suite/funcs_1/t/is_columns.test
index efb52acd48c..efac7494e58 100644
--- a/mysql-test/suite/funcs_1/t/is_columns.test
+++ b/mysql-test/suite/funcs_1/t/is_columns.test
@@ -85,9 +85,9 @@ eval SHOW COLUMNS FROM information_schema.$is_table;
# Note: Retrieval of information within information_schema.columns about
# information_schema.columns is in is_columns_is.test.
-# Show that TABLE_CATALOG is always NULL.
+# Show that TABLE_CATALOG is always 'def'.
SELECT table_catalog, table_schema, table_name, column_name
-FROM information_schema.columns WHERE table_catalog IS NOT NULL;
+FROM information_schema.columns WHERE table_catalog IS NULL OR table_catalog <> 'def';
--echo ###############################################################################
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 743b11d7bff..2bc0248b2bd 100644
--- a/mysql-test/suite/funcs_1/t/is_columns_is.test
+++ b/mysql-test/suite/funcs_1/t/is_columns_is.test
@@ -18,5 +18,5 @@
--source include/not_embedded.inc
let $my_where = WHERE table_schema = 'information_schema'
-AND table_name <> 'profiling';
+AND table_name <> 'profiling' AND table_name not like 'innodb_%';
--source suite/funcs_1/datadict/columns.inc
diff --git a/mysql-test/suite/funcs_1/t/is_columns_is_embedded.test b/mysql-test/suite/funcs_1/t/is_columns_is_embedded.test
index 7bc29624f1d..9c41aaa123b 100644
--- a/mysql-test/suite/funcs_1/t/is_columns_is_embedded.test
+++ b/mysql-test/suite/funcs_1/t/is_columns_is_embedded.test
@@ -19,5 +19,5 @@ if (`SELECT VERSION() NOT LIKE '%embedded%'`)
}
let $my_where = WHERE table_schema = 'information_schema'
-AND table_name <> 'profiling';
+AND table_name <> 'profiling' AND table_name not like 'innodb_%';
--source suite/funcs_1/datadict/columns.inc
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 66ad94f774b..bc10eaae94c 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,6 @@
#
let $my_where = WHERE table_schema = 'information_schema'
-AND table_name <> 'profiling';
+AND table_name <> 'profiling' AND table_name not like 'innodb_%';
--source suite/funcs_1/datadict/tables1.inc
diff --git a/mysql-test/suite/funcs_1/t/is_user_privileges.test b/mysql-test/suite/funcs_1/t/is_user_privileges.test
index 1d0d3e51aae..253323af9a7 100644
--- a/mysql-test/suite/funcs_1/t/is_user_privileges.test
+++ b/mysql-test/suite/funcs_1/t/is_user_privileges.test
@@ -58,10 +58,10 @@ eval SHOW COLUMNS FROM information_schema.$is_table;
# Note: Retrieval of information within information_schema.columns about
# information_schema.user_privileges is in is_columns_is.test.
-# Show that TABLE_CATALOG is always NULL.
+# Show that TABLE_CATALOG is always 'def'.
SELECT grantee, table_catalog, privilege_type
FROM information_schema.user_privileges
-WHERE table_catalog IS NOT NULL;
+WHERE table_catalog IS NULL OR table_catalog <> 'def';
--echo ##########################################################################
diff --git a/mysql-test/suite/im/r/im_cmd_line.result b/mysql-test/suite/im/r/im_cmd_line.result
deleted file mode 100644
index a862d465904..00000000000
--- a/mysql-test/suite/im/r/im_cmd_line.result
+++ /dev/null
@@ -1,47 +0,0 @@
-SHOW VARIABLES LIKE 'server_id';
-Variable_name Value
-server_id 1
-SHOW INSTANCES;
-instance_name state
-mysqld1 XXXXX
-mysqld2 offline
---> Listing users...
-im_admin
-
-==> Adding user 'testuser'...
-
---> IM password file:
-testuser:*0D3CED9BEC10A777AEC23CCC353A8C08A633045E
-im_admin:*598D51AD2DFF7792045D6DF3DDF9AA1AF737B295
---> EOF
-
---> Printing out line for 'testuser'...
-testuser:*0D3CED9BEC10A777AEC23CCC353A8C08A633045E
-
---> Listing users...
-im_admin
-testuser
-
-==> Changing the password of 'testuser'...
-
---> IM password file:
-im_admin:*598D51AD2DFF7792045D6DF3DDF9AA1AF737B295
-testuser:*39C549BDECFBA8AFC3CE6B948C9359A0ECE08DE2
---> EOF
-
---> Printing out line for 'testuser'...
-testuser:*39C549BDECFBA8AFC3CE6B948C9359A0ECE08DE2
-
---> Listing users...
-testuser
-im_admin
-
-==> Dropping user 'testuser'...
-
---> IM password file:
-im_admin:*598D51AD2DFF7792045D6DF3DDF9AA1AF737B295
---> EOF
-
---> Listing users...
-im_admin
-
diff --git a/mysql-test/suite/im/r/im_daemon_life_cycle.result b/mysql-test/suite/im/r/im_daemon_life_cycle.result
deleted file mode 100644
index b3afb15f207..00000000000
--- a/mysql-test/suite/im/r/im_daemon_life_cycle.result
+++ /dev/null
@@ -1,26 +0,0 @@
-SHOW VARIABLES LIKE 'server_id';
-Variable_name Value
-server_id 1
-SHOW INSTANCES;
-instance_name state
-mysqld1 XXXXX
-mysqld2 offline
-Killing the process...
-Waiting...
-Success: the process was restarted.
-Success: server is ready to accept connection on socket.
-
---------------------------------------------------------------------
--- Test for BUG#12751
---------------------------------------------------------------------
-START INSTANCE mysqld2;
-Success: the process has been started.
-Killing the process...
-Waiting...
-Success: the process was restarted.
-Success: server is ready to accept connection on socket.
-SHOW INSTANCE STATUS mysqld1;
-instance_name state version_number version mysqld_compatible
-mysqld1 STATE VERSION_NUMBER VERSION no
-STOP INSTANCE mysqld2;
-Success: the process has been stopped.
diff --git a/mysql-test/suite/im/r/im_instance_conf.result b/mysql-test/suite/im/r/im_instance_conf.result
deleted file mode 100644
index d04ae0270ab..00000000000
--- a/mysql-test/suite/im/r/im_instance_conf.result
+++ /dev/null
@@ -1,225 +0,0 @@
-SHOW VARIABLES LIKE 'server_id';
-Variable_name Value
-server_id 1
-SHOW INSTANCES;
-instance_name state
-mysqld1 XXXXX
-mysqld2 offline
---------------------------------------------------------------------
-server_id = 1
-server_id = 2
---------------------------------------------------------------------
-CREATE INSTANCE mysqld3
-server_id = 3,
-socket = "$MYSQL_TMP_DIR/mysqld_3.sock";
-SHOW INSTANCES;
-instance_name state
-mysqld3 offline
-mysqld2 offline
-mysqld1 online
---------------------------------------------------------------------
-server_id = 1
-server_id = 2
-server_id=3
---------------------------------------------------------------------
-CREATE INSTANCE mysqld1;
-ERROR HY000: Instance already exists
-CREATE INSTANCE mysqld2;
-ERROR HY000: Instance already exists
-CREATE INSTANCE mysqld3;
-ERROR HY000: Instance already exists
---------------------------------------------------------------------
-nonguarded
---------------------------------------------------------------------
-CREATE INSTANCE mysqld4
-nonguarded,
-server_id = 4,
-socket = "$MYSQL_TMP_DIR/mysqld_4.sock";
-SHOW INSTANCES;
-instance_name state
-mysqld3 offline
-mysqld4 offline
-mysqld1 online
-mysqld2 offline
---------------------------------------------------------------------
-nonguarded
-nonguarded
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
-CREATE INSTANCE mysqld5
-test-A = 000,
-test-B = test,
-server_id = 5,
-socket = "$MYSQL_TMP_DIR/mysqld_5.sock";
-SHOW INSTANCES;
-instance_name state
-mysqld1 online
-mysqld4 offline
-mysqld5 offline
-mysqld2 offline
-mysqld3 offline
---------------------------------------------------------------------
-test-A=000
---------------------------------------------------------------------
-test-B=test
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
-CREATE INSTANCE mysqld6
-test-C1 = 10 ,
-test-C2 = 02 ,
-server_id = 6,
-socket = "$MYSQL_TMP_DIR/mysqld_6.sock";
-SHOW INSTANCES;
-instance_name state
-mysqld1 online
-mysqld2 offline
-mysqld5 offline
-mysqld6 offline
-mysqld3 offline
-mysqld4 offline
---------------------------------------------------------------------
-test-C1=10
---------------------------------------------------------------------
-test-C2=02
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
-CREATE INSTANCE mysqld7 test-D = test-D-value ;
-ERROR 42000: You have an error in your command syntax. Check the manual that corresponds to your MySQL Instance Manager version for the right syntax to use
-SHOW INSTANCES;
-instance_name state
-mysqld1 online
-mysqld2 offline
-mysqld5 offline
-mysqld6 offline
-mysqld3 offline
-mysqld4 offline
-CREATE INSTANCE mysqld8 test-E 0 ;
-ERROR 42000: You have an error in your command syntax. Check the manual that corresponds to your MySQL Instance Manager version for the right syntax to use
-SHOW INSTANCES;
-instance_name state
-mysqld1 online
-mysqld2 offline
-mysqld5 offline
-mysqld6 offline
-mysqld3 offline
-mysqld4 offline
-CREATE INSTANCE mysqld8 test-F = ;
-ERROR 42000: You have an error in your command syntax. Check the manual that corresponds to your MySQL Instance Manager version for the right syntax to use
-SHOW INSTANCES;
-instance_name state
-mysqld1 online
-mysqld2 offline
-mysqld5 offline
-mysqld6 offline
-mysqld3 offline
-mysqld4 offline
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
-CREATE INSTANCE mysqld9
-test-1=" hello world ",
-test-2=' ',
-server_id = 9,
-socket = "$MYSQL_TMP_DIR/mysqld_9.sock";
-SHOW INSTANCES;
-instance_name state
-mysqld1 online
-mysqld2 offline
-mysqld5 offline
-mysqld6 offline
-mysqld3 offline
-mysqld4 offline
-mysqld9 offline
-CREATE INSTANCE mysqld10
-test-3='\b\babc\sdef',
-server_id = 10,
-socket = "$MYSQL_TMP_DIR/mysqld_10.sock";
-SHOW INSTANCES;
-instance_name state
-mysqld1 online
-mysqld9 offline
-mysqld5 offline
-mysqld6 offline
-mysqld3 offline
-mysqld4 offline
-mysqld10 offline
-mysqld2 offline
-CREATE INSTANCE mysqld11
-test-4='abc\tdef',
-test-5='abc\ndef',
-server_id = 11,
-socket = "$MYSQL_TMP_DIR/mysqld_11.sock";
-SHOW INSTANCES;
-instance_name state
-mysqld1 online
-mysqld11 offline
-mysqld5 offline
-mysqld6 offline
-mysqld3 offline
-mysqld4 offline
-mysqld10 offline
-mysqld2 offline
-mysqld9 offline
-CREATE INSTANCE mysqld12
-test-6="abc\rdef",
-test-7="abc\\def",
-server_id = 12,
-socket = "$MYSQL_TMP_DIR/mysqld_12.sock";
-SHOW INSTANCES;
-instance_name state
-mysqld1 online
-mysqld9 offline
-mysqld5 offline
-mysqld6 offline
-mysqld3 offline
-mysqld4 offline
-mysqld10 offline
-mysqld2 offline
-mysqld12 offline
-mysqld11 offline
-CREATE INSTANCE mysqld13 test-bad=' \ ';
-ERROR 42000: You have an error in your command syntax. Check the manual that corresponds to your MySQL Instance Manager version for the right syntax to use
-SHOW INSTANCES;
-instance_name state
-mysqld1 online
-mysqld9 offline
-mysqld5 offline
-mysqld6 offline
-mysqld3 offline
-mysqld4 offline
-mysqld10 offline
-mysqld2 offline
-mysqld12 offline
-mysqld11 offline
---------------------------------------------------------------------
-test-1= hello world
---------------------------------------------------------------------
-test-2=
---------------------------------------------------------------------
-test-3=abc def
---------------------------------------------------------------------
-test-4=abc def
---------------------------------------------------------------------
-test-5=abc
---------------------------------------------------------------------
-test-6=abc def
---------------------------------------------------------------------
-test-7=abc\def
---------------------------------------------------------------------
---------------------------------------------------------------------
-CREATE INSTANCE qqq1;
-ERROR HY000: Malformed instance name.
diff --git a/mysql-test/suite/im/r/im_life_cycle.result b/mysql-test/suite/im/r/im_life_cycle.result
deleted file mode 100644
index dcabc8cf4f3..00000000000
--- a/mysql-test/suite/im/r/im_life_cycle.result
+++ /dev/null
@@ -1,73 +0,0 @@
-SHOW VARIABLES LIKE 'server_id';
-Variable_name Value
-server_id 1
-SHOW INSTANCES;
-instance_name state
-mysqld1 XXXXX
-mysqld2 offline
-
---------------------------------------------------------------------
--- 1.1.2.
---------------------------------------------------------------------
-START INSTANCE mysqld2;
-Success: the process has been started.
-SHOW VARIABLES LIKE 'port';
-Variable_name Value
-port IM_MYSQLD2_PORT
-
---------------------------------------------------------------------
--- 1.1.3.
---------------------------------------------------------------------
-STOP INSTANCE mysqld2;
-Success: the process has been stopped.
-
---------------------------------------------------------------------
--- 1.1.4.
---------------------------------------------------------------------
-START INSTANCE mysqld3;
-ERROR HY000: Unknown instance name
-START INSTANCE mysqld1;
-ERROR HY000: The instance is already started
-
---------------------------------------------------------------------
--- 1.1.5.
---------------------------------------------------------------------
-STOP INSTANCE mysqld3;
-ERROR HY000: Unknown instance name
-
---------------------------------------------------------------------
--- 1.1.6.
---------------------------------------------------------------------
-Killing the process...
-Waiting...
-Success: the process was restarted.
-SHOW INSTANCES;
-instance_name state
-mysqld1 online
-mysqld2 offline
-
---------------------------------------------------------------------
--- 1.1.7.
---------------------------------------------------------------------
-START INSTANCE mysqld2;
-Success: the process has been started.
-Killing the process...
-Waiting...
-Success: the process was killed.
-
---------------------------------------------------------------------
--- 1.1.8.
---------------------------------------------------------------------
-SHOW INSTANCE STATUS;
-ERROR 42000: You have an error in your command syntax. Check the manual that corresponds to your MySQL Instance Manager version for the right syntax to use
-
---------------------------------------------------------------------
--- BUG#12813
---------------------------------------------------------------------
-START INSTANCE mysqld1,mysqld2,mysqld3;
-ERROR 42000: You have an error in your command syntax. Check the manual that corresponds to your MySQL Instance Manager version for the right syntax to use
-STOP INSTANCE mysqld1,mysqld2,mysqld3;
-ERROR 42000: You have an error in your command syntax. Check the manual that corresponds to your MySQL Instance Manager version for the right syntax to use
-STOP INSTANCE mysqld2;
-ERROR HY000: Cannot stop instance. Perhaps the instance is not started, or was started manually, so IM cannot find the pidfile.
-End of 5.0 tests
diff --git a/mysql-test/suite/im/r/im_options.result b/mysql-test/suite/im/r/im_options.result
deleted file mode 100644
index 22bd5d5bdf6..00000000000
--- a/mysql-test/suite/im/r/im_options.result
+++ /dev/null
@@ -1,151 +0,0 @@
-SHOW VARIABLES LIKE 'server_id';
-Variable_name Value
-server_id 1
-SHOW INSTANCES;
-instance_name state
-mysqld1 XXXXX
-mysqld2 offline
-UNSET mysqld1.server_id;
-ERROR HY000: The instance is active. Stop the instance first
-SET mysqld1.server_id = 11;
-ERROR HY000: The instance is active. Stop the instance first
-CREATE INSTANCE mysqld3
-datadir = '/',
-server_id = 3,
-socket = "$MYSQL_TMP_DIR/mysqld_3.sock";
-START INSTANCE mysqld3;
-UNSET mysqld3.server_id;
-ERROR HY000: The instance is active. Stop the instance first
-SET mysqld3.server_id = 11;
-ERROR HY000: The instance is active. Stop the instance first
-STOP INSTANCE mysqld3;
-SHOW INSTANCE STATUS mysqld3;
-instance_name state version_number version mysqld_compatible
-mysqld3 offline VERSION_NUMBER VERSION no
-UNSET mysqld2.server_id;
-UNSET mysqld2.server_id;
-SHOW INSTANCE OPTIONS mysqld2;
-option_name value
-instance_name option_value
-socket option_value
-pid-file option_value
-port option_value
-datadir option_value
-log option_value
-log-error option_value
-log-slow-queries option_value
-language option_value
-character-sets-dir option_value
-basedir option_value
-shutdown-delay option_value
-skip-stack-trace option_value
-loose-skip-innodb option_value
-loose-skip-ndbcluster option_value
-nonguarded option_value
-log-output option_value
-SET mysqld2.server_id = 2;
-SET mysqld2.server_id = 2;
-SHOW INSTANCE OPTIONS mysqld2;
-option_name value
-instance_name option_value
-socket option_value
-pid-file option_value
-port option_value
-datadir option_value
-log option_value
-log-error option_value
-log-slow-queries option_value
-language option_value
-character-sets-dir option_value
-basedir option_value
-shutdown-delay option_value
-skip-stack-trace option_value
-loose-skip-innodb option_value
-loose-skip-ndbcluster option_value
-nonguarded option_value
-log-output option_value
-server_id option_value
-UNSET mysqld2.server_id = 11;
-ERROR 42000: You have an error in your command syntax. Check the manual that corresponds to your MySQL Instance Manager version for the right syntax to use
-SET mysqld2.aaa, mysqld3.bbb, mysqld2.ccc = 0010, mysqld3.ddd = 0020;
---------------------------------------------------------------------
-aaa
---------------------------------------------------------------------
-bbb
---------------------------------------------------------------------
-ccc=0010
---------------------------------------------------------------------
-ddd=0020
---------------------------------------------------------------------
-UNSET mysqld2.aaa, mysqld3.bbb, mysqld2.ccc, mysqld3.ddd;
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
-SET mysqld2.aaa, mysqld3.bbb, mysqld.ccc = 0010;
-ERROR HY000: Unknown instance name
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
-SET mysqld2.aaa, mysqld3.bbb, mysqld1.ccc = 0010;
-ERROR HY000: The instance is active. Stop the instance first
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
-UNSET mysqld2.server_id, mysqld3.server_id, mysqld.ccc;
-ERROR HY000: Unknown instance name
---------------------------------------------------------------------
-server_id = 1
-server_id=2
-server_id=3
---------------------------------------------------------------------
-UNSET mysqld2.server_id, mysqld3.server_id, mysqld1.ccc;
-ERROR HY000: The instance is active. Stop the instance first
---------------------------------------------------------------------
-server_id = 1
-server_id=2
-server_id=3
---------------------------------------------------------------------
-DROP INSTANCE mysqld3;
-SET mysqld2.server_id=222;
-SET mysqld2.server_id = 222;
-SET mysqld2.server_id = 222 ;
-SET mysqld2 . server_id = 222 ;
-SET mysqld2 . server_id = 222 , mysqld2 . aaa , mysqld2 . bbb ;
---------------------------------------------------------------------
-server_id = 1
-server_id=222
---------------------------------------------------------------------
-aaa
---------------------------------------------------------------------
-bbb
---------------------------------------------------------------------
-UNSET mysqld2 . aaa , mysqld2 . bbb ;
---------------------------------------------------------------------
-server_id = 1
-server_id=222
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
-server_id = 1
-server_id=222
---------------------------------------------------------------------
-SHOW VARIABLES LIKE 'server_id';
-Variable_name Value
-server_id 1
-SHOW INSTANCES;
-instance_name state
-mysqld1 online
-mysqld2 offline
-FLUSH INSTANCES;
-ERROR HY000: At least one instance is active. Stop all instances first
-STOP INSTANCE mysqld1;
-SHOW INSTANCES;
-instance_name state
-mysqld1 offline
-mysqld2 offline
-FLUSH INSTANCES;
diff --git a/mysql-test/suite/im/r/im_utils.result b/mysql-test/suite/im/r/im_utils.result
deleted file mode 100644
index 586a5ab6a8d..00000000000
--- a/mysql-test/suite/im/r/im_utils.result
+++ /dev/null
@@ -1,96 +0,0 @@
-SHOW VARIABLES LIKE 'server_id';
-Variable_name Value
-server_id 1
-SHOW INSTANCES;
-instance_name state
-mysqld1 XXXXX
-mysqld2 offline
-SHOW INSTANCE OPTIONS mysqld1;
-option_name value
-instance_name VALUE
-socket VALUE
-pid-file VALUE
-port VALUE
-datadir VALUE
-log VALUE
-log-error VALUE
-log-slow-queries VALUE
-language VALUE
-character-sets-dir VALUE
-basedir VALUE
-server_id VALUE
-shutdown-delay VALUE
-skip-stack-trace VALUE
-loose-skip-innodb VALUE
-loose-skip-ndbcluster VALUE
-log-output VALUE
-SHOW INSTANCE OPTIONS mysqld2;
-option_name value
-instance_name VALUE
-socket VALUE
-pid-file VALUE
-port VALUE
-datadir VALUE
-log VALUE
-log-error VALUE
-log-slow-queries VALUE
-language VALUE
-character-sets-dir VALUE
-basedir VALUE
-server_id VALUE
-shutdown-delay VALUE
-skip-stack-trace VALUE
-loose-skip-innodb VALUE
-loose-skip-ndbcluster VALUE
-nonguarded VALUE
-log-output VALUE
-START INSTANCE mysqld2;
-Success: the process has been started.
-STOP INSTANCE mysqld2;
-Success: the process has been stopped.
-SHOW mysqld1 LOG FILES;
-Logfile Path File size
-ERROR LOG PATH FILE_SIZE
-GENERAL LOG PATH FILE_SIZE
-SLOW LOG PATH FILE_SIZE
-SHOW mysqld2 LOG FILES;
-Logfile Path File size
-ERROR LOG PATH FILE_SIZE
-GENERAL LOG PATH FILE_SIZE
-SLOW LOG PATH FILE_SIZE
-SHOW mysqld1 LOG ERROR 10;
-Log
-LOG_DATA
-SHOW mysqld1 LOG SLOW 10;
-Log
-LOG_DATA
-SHOW mysqld1 LOG GENERAL 10;
-Log
-LOG_DATA
-SHOW mysqld1 LOG ERROR 10, 2;
-Log
-LOG_DATA
-SHOW mysqld1 LOG SLOW 10, 2;
-Log
-LOG_DATA
-SHOW mysqld1 LOG GENERAL 10, 2;
-Log
-LOG_DATA
-SHOW mysqld2 LOG ERROR 10;
-Log
-LOG_DATA
-SHOW mysqld2 LOG SLOW 10;
-Log
-LOG_DATA
-SHOW mysqld2 LOG GENERAL 10;
-Log
-LOG_DATA
-SHOW mysqld2 LOG ERROR 10, 2;
-Log
-LOG_DATA
-SHOW mysqld2 LOG SLOW 10, 2;
-Log
-LOG_DATA
-SHOW mysqld2 LOG GENERAL 10, 2;
-Log
-LOG_DATA
diff --git a/mysql-test/suite/im/t/disabled.def b/mysql-test/suite/im/t/disabled.def
deleted file mode 100644
index 56828810bf1..00000000000
--- a/mysql-test/suite/im/t/disabled.def
+++ /dev/null
@@ -1,20 +0,0 @@
-##############################################################################
-#
-# 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.
-#
-##############################################################################
-im_options : Bug#20294 2006-07-24 stewart Instance manager test im_options fails randomly
-im_daemon_life_cycle : Bug#20294 2007-05-14 alik Instance manager tests fail randomly
-im_cmd_line : Bug#20294 2007-05-14 alik Instance manager tests fail randomly
-im_utils : Bug#20294 2007-05-30 alik Instance manager tests fail randomly
-im_instance_conf : Bug#20294 2007-05-30 alik Instance manager tests fail randomly
-im_life_cycle : BUG#27851 Instance manager dies on ASSERT in ~Thread_registry() or from not being able to close a mysqld instance.
-im_instance_conf : BUG#28743 Instance manager generates warnings in test suite
-im_utils : BUG#28743 Instance manager generates warnings in test suite
-
diff --git a/mysql-test/suite/im/t/im_check_env.inc b/mysql-test/suite/im/t/im_check_env.inc
deleted file mode 100644
index 883e5d00fe4..00000000000
--- a/mysql-test/suite/im/t/im_check_env.inc
+++ /dev/null
@@ -1,26 +0,0 @@
-# This file is intended to be used in each IM-test. It contains stamements,
-# that ensure that starting conditions (environment) for the IM-test are as
-# expected.
-
-# Check the running instances.
-
---connect (mysql1_con,localhost,root,,mysql,$IM_MYSQLD1_PORT,$IM_MYSQLD1_SOCK)
-
---connection mysql1_con
-
-SHOW VARIABLES LIKE 'server_id';
-
---source include/not_windows.inc
-
---connection default
-
-# Let IM detect that mysqld1 is online. This delay should be longer than
-# monitoring interval.
-
---sleep 2
-
-# Check that IM understands that mysqld1 is online, while mysqld2 is
-# offline.
-
---replace_result starting XXXXX online XXXXX
-SHOW INSTANCES;
diff --git a/mysql-test/suite/im/t/im_cmd_line.imtest b/mysql-test/suite/im/t/im_cmd_line.imtest
deleted file mode 100644
index e8264b5bb8a..00000000000
--- a/mysql-test/suite/im/t/im_cmd_line.imtest
+++ /dev/null
@@ -1,68 +0,0 @@
-###########################################################################
-#
-# Tests for user-management command-line options.
-#
-###########################################################################
-
---source suite/im/t/im_check_env.inc
-
-###########################################################################
-
-# List users so we are sure about starting conditions.
-
---echo --> Listing users...
---exec $IM_EXE --defaults-file="$IM_DEFAULTS_PATH" --list-users 2>&1 >/dev/null
---echo
-
-# Add a new user.
-
---echo ==> Adding user 'testuser'...
---exec $IM_EXE --defaults-file="$IM_DEFAULTS_PATH" --add-user --username=testuser --password=abc 2>&1 >/dev/null
---echo
-
---echo --> IM password file:
---exec cat $IM_PASSWORD_PATH
---echo --> EOF
---echo
-
---echo --> Printing out line for 'testuser'...
---exec $IM_EXE --defaults-file="$IM_DEFAULTS_PATH" --print-password-line --username=testuser --password=abc | tail -2 | head -1
---echo
-
---echo --> Listing users...
---exec $IM_EXE --defaults-file="$IM_DEFAULTS_PATH" --list-users 2>&1 >/dev/null
---echo
-
-# Edit user's attributes.
-
---echo ==> Changing the password of 'testuser'...
---exec $IM_EXE --defaults-file="$IM_DEFAULTS_PATH" --edit-user --username=testuser --password=xyz 2>&1 >/dev/null
---echo
-
---echo --> IM password file:
---exec cat $IM_PASSWORD_PATH
---echo --> EOF
---echo
-
---echo --> Printing out line for 'testuser'...
---exec $IM_EXE --defaults-file="$IM_DEFAULTS_PATH" --print-password-line --username=testuser --password=xyz | tail -2 | head -1
---echo
-
---echo --> Listing users...
---exec $IM_EXE --defaults-file="$IM_DEFAULTS_PATH" --list-users 2>&1 >/dev/null
---echo
-
-# Drop user.
-
---echo ==> Dropping user 'testuser'...
---exec $IM_EXE --defaults-file="$IM_DEFAULTS_PATH" --drop-user --username=testuser 2>&1 >/dev/null
---echo
-
---echo --> IM password file:
---exec cat $IM_PASSWORD_PATH
---echo --> EOF
---echo
-
---echo --> Listing users...
---exec $IM_EXE --defaults-file="$IM_DEFAULTS_PATH" --list-users 2>&1 >/dev/null
---echo
diff --git a/mysql-test/suite/im/t/im_daemon_life_cycle-im.opt b/mysql-test/suite/im/t/im_daemon_life_cycle-im.opt
deleted file mode 100644
index 3a45c7a41f7..00000000000
--- a/mysql-test/suite/im/t/im_daemon_life_cycle-im.opt
+++ /dev/null
@@ -1,3 +0,0 @@
---run-as-service
---log=$MYSQLTEST_VARDIR/log/im.log
---monitoring-interval=1
diff --git a/mysql-test/suite/im/t/im_daemon_life_cycle.imtest b/mysql-test/suite/im/t/im_daemon_life_cycle.imtest
deleted file mode 100644
index c42ab89cc49..00000000000
--- a/mysql-test/suite/im/t/im_daemon_life_cycle.imtest
+++ /dev/null
@@ -1,100 +0,0 @@
-let $UTIL=$MYSQL_TEST_DIR/suite/im/t;
-
-###########################################################################
-#
-# This file contains test for (1.2) test suite.
-#
-# Consult WL#2789 for more information.
-#
-###########################################################################
-
---exec $UTIL/log.sh im_daemon_life_cycle im_daemon_life_cycle.imtest started.
-
-###########################################################################
-
---source suite/im/t/im_check_env.inc
-
-# Turn on reconnect, not on by default anymore.
---enable_reconnect
-
-###########################################################################
-#
-# The main daemon-life-cycle test case -- check that IM-angel will restart
-# IM-main if it got killed:
-# - kill IM-main and check that IM-angel will restart it;
-# - wait for IM-main to start accepting connections before continue test
-# case;
-#
-# NOTE: timeout is 55 seconds. Timeout should be more than shutdown-delay
-# specified for managed MySQL instance. Now shutdown-delay is 10 seconds
-# (set in mysql-test-run.pl). So, 55 seconds should be enough to make 5
-# attempts.
-#
-###########################################################################
-
---exec $UTIL/log.sh im_daemon_life_cycle Main-test: starting...
-
---exec $UTIL/log.sh im_daemon_life_cycle Killing IM-main...
---exec $UTIL/kill_n_check.sh $IM_PATH_PID restarted 55 im_daemon_life_cycle
-
---exec $UTIL/log.sh im_daemon_life_cycle Waiting for IM-main to start accepting connections...
---exec $UTIL/wait_for_socket.sh $EXE_MYSQL $IM_PATH_SOCK $IM_USERNAME $IM_PASSWORD '' 55 im_daemon_life_cycle
-
---exec $UTIL/log.sh im_daemon_life_cycle Main-test: done.
-
-###########################################################################
-#
-# BUG#12751: Instance Manager: client hangs
-# - start nonguarded instance (mysqld2);
-# - kill IM-main and get it restarted by IM-angel;
-# - check that guarded instance (mysqld1) is accepting connections.
-# - check that non-guarded instance (mysqld2) were not stopped.
-#
-###########################################################################
-
---echo
---echo --------------------------------------------------------------------
---echo -- Test for BUG#12751
---echo --------------------------------------------------------------------
-
---exec $UTIL/log.sh im_daemon_life_cycle BUG12751: starting...
-
-# 1. Start mysqld;
-
---exec $UTIL/log.sh im_daemon_life_cycle mysqld2: starting...
-START INSTANCE mysqld2;
-
---exec $UTIL/log.sh im_daemon_life_cycle mysqld2: waiting to start...
---exec $UTIL/wait_for_process.sh $IM_MYSQLD2_PATH_PID 55 started im_daemon_life_cycle
-
---exec $UTIL/log.sh im_daemon_life_cycle mysqld2: started.
-
-# 2. Restart IM-main;
-
---exec $UTIL/log.sh im_daemon_life_cycle Killing IM-main...
---exec $UTIL/kill_n_check.sh $IM_PATH_PID restarted 55 im_daemon_life_cycle
-
---exec $UTIL/log.sh im_daemon_life_cycle Waiting for IM-main to start accepting connections...
---exec $UTIL/wait_for_socket.sh $EXE_MYSQL $IM_PATH_SOCK $IM_USERNAME $IM_PASSWORD '' 55 im_daemon_life_cycle
-
-# 3. Issue some statement -- connection should be re-established.
-
---exec $UTIL/log.sh im_daemon_life_cycle Checking that IM-main processing commands...
-
---replace_column 2 STATE 3 VERSION_NUMBER 4 VERSION
-SHOW INSTANCE STATUS mysqld1;
-
-# 4. Stop mysqld2, because it will not be stopped by IM, as it is nonguarded.
-# So, if it we do not stop it, it will be stopped by mysql-test-run.pl with
-# warning.
-
---exec $UTIL/log.sh im_daemon_life_cycle mysqld2: stopping...
-STOP INSTANCE mysqld2;
-
---exec $UTIL/log.sh im_daemon_life_cycle mysqld2: waiting to stop...
---exec $UTIL/wait_for_process.sh $IM_MYSQLD2_PATH_PID 55 stopped im_daemon_life_cycle
---exec $UTIL/log.sh im_daemon_life_cycle mysqld2: stopped.
-
-###########################################################################
-
---exec $UTIL/log.sh im_daemon_life_cycle BUG12751: done.
diff --git a/mysql-test/suite/im/t/im_instance_conf-im.opt b/mysql-test/suite/im/t/im_instance_conf-im.opt
deleted file mode 100644
index 34b74ce0c95..00000000000
--- a/mysql-test/suite/im/t/im_instance_conf-im.opt
+++ /dev/null
@@ -1 +0,0 @@
---monitoring-interval=1
diff --git a/mysql-test/suite/im/t/im_instance_conf.imtest b/mysql-test/suite/im/t/im_instance_conf.imtest
deleted file mode 100644
index b667df41f98..00000000000
--- a/mysql-test/suite/im/t/im_instance_conf.imtest
+++ /dev/null
@@ -1,244 +0,0 @@
-###########################################################################
-#
-# This test suite checks the following statements:
-# - CREATE INSTANCE <instance_name> [option1[=option1_value], ...];
-# - DROP INSTANCE <instance_name>;
-#
-# For CREATE INSTANCE we check that:
-# - CREATE INSTANCE succeeds for non-existing instance;
-# - CREATE INSTANCE fails for existing instance;
-# - CREATE INSTANCE can get additional options with and w/o values;
-# - CREATE INSTANCE parses options and handles grammar errors correctly.
-# Check that strings with spaces are handled correctly, unknown (for
-# mysqld) options should also be handled;
-# - CREATE INSTANCE updates both config file and internal configuration cache;
-# - CREATE INSTANCE allows to create instances only with properly formed
-# names (mysqld*);
-#
-# For DROP INSTANCE we check that:
-# - DROP INSTANCE succeeds for existing instance;
-# - DROP INSTANCE fails for non-existing instance;
-# - DROP INSTANCE fails for active instance.
-# - DROP INSTANCE updates both config file and internal configuration cache;
-#
-# NOTE: each CREATE INSTANCE statement must specify socket-file-name, otherwise
-# this results of the test can be affected by another running test suite.
-#
-###########################################################################
-
---source suite/im/t/im_check_env.inc
-
-###########################################################################
-#
-# Check starting conditions.
-#
-###########################################################################
-
-# Check that the configuration file contains only instances that we expect.
-
---echo --------------------------------------------------------------------
---exec grep '^server_id[^a-zA-Z0-9_\-]' $MYSQLTEST_VARDIR/im.cnf;
---echo --------------------------------------------------------------------
-
-###########################################################################
-#
-# CREATE INSTANCE tests.
-#
-###########################################################################
-
-# Check that CREATE INSTANCE succeeds for non-existing instance and also check
-# that both config file and internal configuration cache have been updated.
-
-CREATE INSTANCE mysqld3
- server_id = 3,
- socket = "$MYSQL_TMP_DIR/mysqld_3.sock";
-
-SHOW INSTANCES;
-
---echo --------------------------------------------------------------------
---exec grep '^server_id[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
---echo --------------------------------------------------------------------
-
-# Check that CREATE INSTANCE fails for existing instance. Let's all three
-# existing instances (running one, stopped one and just created one). Just in
-# case...
-
---error 3012 # ER_CREATE_EXISTING_INSTANCE
-CREATE INSTANCE mysqld1;
-
---error 3012 # ER_CREATE_EXISTING_INSTANCE
-CREATE INSTANCE mysqld2;
-
---error 3012 # ER_CREATE_EXISTING_INSTANCE
-CREATE INSTANCE mysqld3;
-
-# Check that CREATE INSTANCE can get additional options with and w/o values.
-# Ensure that config file is updated properly.
-
-# - without values;
-
---echo --------------------------------------------------------------------
---exec grep "^nonguarded\$" $MYSQLTEST_VARDIR/im.cnf;
---echo --------------------------------------------------------------------
-
-CREATE INSTANCE mysqld4
- nonguarded,
- server_id = 4,
- socket = "$MYSQL_TMP_DIR/mysqld_4.sock";
-
-SHOW INSTANCES;
-
---echo --------------------------------------------------------------------
---exec grep "^nonguarded\$" $MYSQLTEST_VARDIR/im.cnf;
---echo --------------------------------------------------------------------
-
-# - with value;
-
---echo --------------------------------------------------------------------
---exec grep '^test-A[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
---exec grep '^test-B[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
-
-CREATE INSTANCE mysqld5
- test-A = 000,
- test-B = test,
- server_id = 5,
- socket = "$MYSQL_TMP_DIR/mysqld_5.sock";
-
-SHOW INSTANCES;
-
---echo --------------------------------------------------------------------
---exec grep '^test-A[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
---echo --------------------------------------------------------------------
---exec grep '^test-B[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
---echo --------------------------------------------------------------------
-
-# Check that CREATE INSTANCE parses options and handles grammar errors
-# correctly. Check that strings with spaces are handled correctly,
-# unknown (for mysqld) options should also be handled.
-
-# - check handling of extra spaces;
-
---echo --------------------------------------------------------------------
---exec grep '^test-C1[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
---exec grep '^test-C2[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
-
-CREATE INSTANCE mysqld6
- test-C1 = 10 ,
- test-C2 = 02 ,
- server_id = 6,
- socket = "$MYSQL_TMP_DIR/mysqld_6.sock";
-
-SHOW INSTANCES;
-
---echo --------------------------------------------------------------------
---exec grep '^test-C1[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
---echo --------------------------------------------------------------------
---exec grep '^test-C2[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
---echo --------------------------------------------------------------------
-
-# - check handling of grammar error;
-
---echo --------------------------------------------------------------------
---exec grep '^test-D[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
---exec grep '^test-E[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
-
---error ER_SYNTAX_ERROR
-CREATE INSTANCE mysqld7 test-D = test-D-value ;
-SHOW INSTANCES;
-
---error ER_SYNTAX_ERROR
-CREATE INSTANCE mysqld8 test-E 0 ;
-SHOW INSTANCES;
-
---error ER_SYNTAX_ERROR
-CREATE INSTANCE mysqld8 test-F = ;
-SHOW INSTANCES;
-
---echo --------------------------------------------------------------------
---exec grep '^test-D[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
---exec grep '^test-E[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
-
-# - check parsing of string option values
-
---echo --------------------------------------------------------------------
---exec grep '^test-1[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
---exec grep '^test-2[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
---exec grep '^test-3[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
---exec grep '^test-4[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
---exec grep '^test-5[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
---exec grep '^test-6[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
---exec grep '^test-7[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
-
-CREATE INSTANCE mysqld9
- test-1=" hello world ",
- test-2=' ',
- server_id = 9,
- socket = "$MYSQL_TMP_DIR/mysqld_9.sock";
-SHOW INSTANCES;
-
-CREATE INSTANCE mysqld10
- test-3='\b\babc\sdef',
- server_id = 10,
- socket = "$MYSQL_TMP_DIR/mysqld_10.sock";
-# test-3='abc def'
-SHOW INSTANCES;
-
-CREATE INSTANCE mysqld11
- test-4='abc\tdef',
- test-5='abc\ndef',
- server_id = 11,
- socket = "$MYSQL_TMP_DIR/mysqld_11.sock";
-SHOW INSTANCES;
-
-CREATE INSTANCE mysqld12
- test-6="abc\rdef",
- test-7="abc\\def",
- server_id = 12,
- socket = "$MYSQL_TMP_DIR/mysqld_12.sock";
-# test-6=abc
-SHOW INSTANCES;
-
---error ER_SYNTAX_ERROR
-CREATE INSTANCE mysqld13 test-bad=' \ ';
-SHOW INSTANCES;
-
---echo --------------------------------------------------------------------
---exec grep '^test-1[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
---echo --------------------------------------------------------------------
---exec grep '^test-2[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
---echo --------------------------------------------------------------------
---exec grep '^test-3[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
---echo --------------------------------------------------------------------
---exec grep '^test-4[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
---echo --------------------------------------------------------------------
---exec grep '^test-5[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
---echo --------------------------------------------------------------------
---exec grep '^test-6[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
---echo --------------------------------------------------------------------
---exec grep '^test-7[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
---echo --------------------------------------------------------------------
---exec grep '^test-bad' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
-
-
-# Check that CREATE INSTANCE allows to create instances only with properly
-# formed names (mysqld*).
-
---error 3014 # ER_MALFORMED_INSTANCE_NAME
-CREATE INSTANCE qqq1;
-
diff --git a/mysql-test/suite/im/t/im_life_cycle-im.opt b/mysql-test/suite/im/t/im_life_cycle-im.opt
deleted file mode 100644
index 34b74ce0c95..00000000000
--- a/mysql-test/suite/im/t/im_life_cycle-im.opt
+++ /dev/null
@@ -1 +0,0 @@
---monitoring-interval=1
diff --git a/mysql-test/suite/im/t/im_life_cycle.imtest b/mysql-test/suite/im/t/im_life_cycle.imtest
deleted file mode 100644
index 31f63d82505..00000000000
--- a/mysql-test/suite/im/t/im_life_cycle.imtest
+++ /dev/null
@@ -1,205 +0,0 @@
-let $UTIL=$MYSQL_TEST_DIR/suite/im/t;
-
-###########################################################################
-#
-# This file contains test for (1.1) test suite.
-#
-# Consult WL#2789 for more information.
-#
-###########################################################################
-
---source suite/im/t/im_check_env.inc
-
-###########################################################################
-#
-# 1.1.2. Check 'START INSTANCE' command:
-# - start the second instance;
-# - check that it is reported as online;
-# - execute some SQL-statement on mysqld2 to ensure that it is really up and
-# running;
-#
-###########################################################################
-
---echo
---echo --------------------------------------------------------------------
---echo -- 1.1.2.
---echo --------------------------------------------------------------------
-
-START INSTANCE mysqld2;
-# FIXME: START INSTANCE should be synchronous.
---exec $UTIL/wait_for_process.sh $IM_MYSQLD2_PATH_PID 30 started im_life_cycle
-
-# FIXME: Result of SHOW INSTANCES here is not deterministic unless START
-# INSTANCE is synchronous. Even waiting for mysqld to start by looking at
-# its pid file is not enough, because it is unknown when IM detects that
-# mysqld has started.
-# SHOW INSTANCES;
-
---connect (mysql_con,localhost,root,,mysql,$IM_MYSQLD2_PORT,$IM_MYSQLD2_SOCK)
---connection mysql_con
-
---replace_result $IM_MYSQLD2_PORT IM_MYSQLD2_PORT
-SHOW VARIABLES LIKE 'port';
-
---connection default
---disconnect mysql_con
-
-###########################################################################
-#
-# 1.1.3. Check 'STOP INSTANCE' command:
-# - stop the second instance;
-# - check that it is reported as offline;
-# - TODO: try to execute some SQL-statement to ensure that it is really down;
-#
-###########################################################################
-
---echo
---echo --------------------------------------------------------------------
---echo -- 1.1.3.
---echo --------------------------------------------------------------------
-
-STOP INSTANCE mysqld2;
-# FIXME: STOP INSTANCE should be synchronous.
---exec $UTIL/wait_for_process.sh $IM_MYSQLD2_PATH_PID 30 stopped im_life_cycle
-
-# FIXME: Result of SHOW INSTANCES here is not deterministic unless START
-# INSTANCE is synchronous. Even waiting for mysqld to start by looking at
-# its pid file is not enough, because it is unknown when IM detects that
-# mysqld has started.
-# SHOW INSTANCES;
-
-###########################################################################
-#
-# 1.1.4. Check that Instance Manager reports correct errors for 'START
-# INSTANCE' command:
-# - if the client tries to start unregistered instance;
-# - if the client tries to start already started instance;
-# - if the client submits invalid arguments;
-#
-###########################################################################
-
---echo
---echo --------------------------------------------------------------------
---echo -- 1.1.4.
---echo --------------------------------------------------------------------
-
---error 3000 # ER_BAD_INSTANCE_NAME
-START INSTANCE mysqld3;
-
---error 3002 # ER_INSTANCE_ALREADY_STARTED
-START INSTANCE mysqld1;
-
-###########################################################################
-#
-# 1.1.5. Check that Instance Manager reports correct errors for
-# 'STOP INSTANCE' command:
-# - if the client tries to start unregistered instance;
-# - if the client tries to start already stopped instance;
-# - if the client submits invalid arguments;
-#
-###########################################################################
-
---echo
---echo --------------------------------------------------------------------
---echo -- 1.1.5.
---echo --------------------------------------------------------------------
-
---error 3000 # ER_BAD_INSTANCE_NAME
-STOP INSTANCE mysqld3;
-
-# TODO: IM should be fixed.
-# BUG#12673: Instance Manager allows to stop the instance many times
-# --error 3002 # ER_INSTANCE_ALREADY_STARTED
-# STOP INSTANCE mysqld2;
-
-###########################################################################
-#
-# 1.1.6. Check that Instance Manager is able to restart guarded instances.
-#
-###########################################################################
-
---echo
---echo --------------------------------------------------------------------
---echo -- 1.1.6.
---echo --------------------------------------------------------------------
-
---exec $UTIL/kill_n_check.sh $IM_MYSQLD1_PATH_PID restarted 30 im_life_cycle
-
-# Give some time to IM to detect that mysqld was restarted. It should be
-# longer than monitoring interval.
-
---sleep 3
-
-SHOW INSTANCES;
-
-###########################################################################
-#
-# 1.1.7. Check that Instance Manager does not restart non-guarded instance.
-#
-###########################################################################
-
---echo
---echo --------------------------------------------------------------------
---echo -- 1.1.7.
---echo --------------------------------------------------------------------
-
-START INSTANCE mysqld2;
-# FIXME: START INSTANCE should be synchronous.
---exec $UTIL/wait_for_process.sh $IM_MYSQLD2_PATH_PID 30 started im_life_cycle
-
-# FIXME: Result of SHOW INSTANCES here is not deterministic unless START
-# INSTANCE is synchronous. Even waiting for mysqld to start by looking at
-# its pid file is not enough, because it is unknown when IM detects that
-# mysqld has started.
-# SHOW INSTANCES;
-
---exec $UTIL/kill_n_check.sh $IM_MYSQLD2_PATH_PID killed 10 im_life_cycle
-
-# FIXME: Result of SHOW INSTANCES here is not deterministic unless START
-# INSTANCE is synchronous. Even waiting for mysqld to start by looking at
-# its pid file is not enough, because it is unknown when IM detects that
-# mysqld has started.
-# SHOW INSTANCES;
-
-###########################################################################
-#
-# 1.1.8. Check that Instance Manager returns an error on
-# incomplete SHOW INSTANCE STATUS command.
-#
-###########################################################################
-
---echo
---echo --------------------------------------------------------------------
---echo -- 1.1.8.
---echo --------------------------------------------------------------------
-
---error ER_SYNTAX_ERROR
-SHOW INSTANCE STATUS;
-
-#
-# Tests for bug fixes
-#
-
-#
-# Bug #12813 Instance Manager: START/STOP INSTANCE commands accept
-# a list as argument.
-#
-
---echo
---echo --------------------------------------------------------------------
---echo -- BUG#12813
---echo --------------------------------------------------------------------
-
---error ER_SYNTAX_ERROR
-START INSTANCE mysqld1,mysqld2,mysqld3;
-
---error ER_SYNTAX_ERROR
-STOP INSTANCE mysqld1,mysqld2,mysqld3;
-
-#
-# Bug #12673: Instance Manager: allows to stop the instance many times
-#
---error 3001
-STOP INSTANCE mysqld2;
-
---echo End of 5.0 tests
diff --git a/mysql-test/suite/im/t/im_options-im.opt b/mysql-test/suite/im/t/im_options-im.opt
deleted file mode 100644
index 34b74ce0c95..00000000000
--- a/mysql-test/suite/im/t/im_options-im.opt
+++ /dev/null
@@ -1 +0,0 @@
---monitoring-interval=1
diff --git a/mysql-test/suite/im/t/im_options.imtest b/mysql-test/suite/im/t/im_options.imtest
deleted file mode 100644
index d251b97d8e7..00000000000
--- a/mysql-test/suite/im/t/im_options.imtest
+++ /dev/null
@@ -1,248 +0,0 @@
-###########################################################################
-#
-# This test suite checks the following statements:
-# - SET <instance id>.<option name> = <option value>;
-# - UNSET <instance id>.<option name> = <option value>;
-# - FLUSH INSTANCES;
-#
-# For SET/UNSET we check that:
-# - SET ignores spaces correctly;
-# - UNSET does not allow option-value part (= <option value>);
-# - SET/UNSET can be applied several times w/o error;
-# - SET/UNSET is allowed only for stopped instances;
-# - SET/UNSET updates both the configuration cache in IM and
-# the configuration file;
-#
-# For FLUSH INSTANCES we check that:
-# - FLUSH INSTANCES is allowed only when all instances are stopped;
-#
-# According to the IM implementation details, we should play at least with the
-# following options:
-# - server_id
-# - port
-# - nonguarded
-#
-# Let's test SET statement on the option 'server_id'. It's expected that
-# originally the instances have the following server ids and states:
-# - mysqld1: server_id: 1; running (online)
-# - mysqld2: server_id: 2; stopped (offline)
-#
-# NOTE: each CREATE INSTANCE statement must specify socket-file-name, otherwise
-# this results of the test can be affected by another running test suite.
-#
-###########################################################################
-
---source suite/im/t/im_check_env.inc
-
-###########################################################################
-#
-# Check that SET/UNSET is allowed only for stopped instances.
-#
-###########################################################################
-
-# - check that SET/UNSET is denied for running instances;
-
---error 3015 # ER_INSTANCE_IS_ACTIVE
-UNSET mysqld1.server_id;
-
---error 3015 # ER_INSTANCE_IS_ACTIVE
-SET mysqld1.server_id = 11;
-
-# - check that SET/UNSET is denied for active instances:
-# - create dummy misconfigured instance;
-# - start it;
-# - try to set/unset options;
-
-CREATE INSTANCE mysqld3
- datadir = '/',
- server_id = 3,
- socket = "$MYSQL_TMP_DIR/mysqld_3.sock";
-START INSTANCE mysqld3;
-
-# FIXME: START INSTANCE should be synchronous.
---sleep 3
-# should be longer than monitoring interval and enough to start instance.
-
-# NOTE: We can not analyze state of the instance here -- it can be Failed or
-# Starting because Instance Manager is trying to start the misconfigured
-# instance several times.
-
---error 3015 # ER_INSTANCE_IS_ACTIVE
-UNSET mysqld3.server_id;
-
---error 3015 # ER_INSTANCE_IS_ACTIVE
-SET mysqld3.server_id = 11;
-
-STOP INSTANCE mysqld3;
-
-# FIXME: STOP INSTANCE should be synchronous.
---sleep 3
-# should be longer than monitoring interval and enough to stop instance.
-
---replace_column 3 VERSION_NUMBER 4 VERSION
-SHOW INSTANCE STATUS mysqld3;
-
-# - check that SET/UNSET succeed for stopped instances;
-# - check that SET/UNSET can be applied multiple times;
-
-UNSET mysqld2.server_id;
-UNSET mysqld2.server_id;
-
---replace_column 2 option_value
-SHOW INSTANCE OPTIONS mysqld2;
-
-SET mysqld2.server_id = 2;
-SET mysqld2.server_id = 2;
-
---replace_column 2 option_value
-SHOW INSTANCE OPTIONS mysqld2;
-
-# - check that UNSET does not allow option-value part (= <option value>);
-
---error ER_SYNTAX_ERROR
-UNSET mysqld2.server_id = 11;
-
-# - check that SET/UNSET working properly with multiple options;
-
-SET mysqld2.aaa, mysqld3.bbb, mysqld2.ccc = 0010, mysqld3.ddd = 0020;
-
---echo --------------------------------------------------------------------
---exec grep "^aaa\$" $MYSQLTEST_VARDIR/im.cnf ;
---echo --------------------------------------------------------------------
---exec grep "^bbb\$" $MYSQLTEST_VARDIR/im.cnf ;
---echo --------------------------------------------------------------------
---exec grep '^ccc[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf ;
---echo --------------------------------------------------------------------
---exec grep '^ddd[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf ;
---echo --------------------------------------------------------------------
-
-UNSET mysqld2.aaa, mysqld3.bbb, mysqld2.ccc, mysqld3.ddd;
-
---echo --------------------------------------------------------------------
---exec grep "^aaa\$" $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
---exec grep "^bbb\$" $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
---exec grep '^ccc[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
---exec grep '^ddd[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
-
-# - check that if some instance name is invalid or the active is active,
-# whole SET-statement will not be executed;
-
---error 3000 # ER_BAD_INSTANCE_NAME
-SET mysqld2.aaa, mysqld3.bbb, mysqld.ccc = 0010;
-
---echo --------------------------------------------------------------------
---exec grep "^aaa\$" $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
---exec grep "^bbb\$" $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
---exec grep '^ccc[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
-
---error 3015 # ER_INSTANCE_IS_ACTIVE
-SET mysqld2.aaa, mysqld3.bbb, mysqld1.ccc = 0010;
-
---echo --------------------------------------------------------------------
---exec grep "^aaa\$" $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
---exec grep "^bbb\$" $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
---exec grep '^ccc[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
-
-# - check that if some instance name is invalid or the active is active,
-# whole UNSET-statement will not be executed;
-
---error 3000 # ER_BAD_INSTANCE_NAME
-UNSET mysqld2.server_id, mysqld3.server_id, mysqld.ccc;
-
---echo --------------------------------------------------------------------
---exec grep '^server_id[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
---echo --------------------------------------------------------------------
-
---error 3015 # ER_INSTANCE_IS_ACTIVE
-UNSET mysqld2.server_id, mysqld3.server_id, mysqld1.ccc;
-
---echo --------------------------------------------------------------------
---exec grep '^server_id[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
---echo --------------------------------------------------------------------
-
-DROP INSTANCE mysqld3;
-
-# - check that spaces are handled correctly;
-
-SET mysqld2.server_id=222;
-SET mysqld2.server_id = 222;
-SET mysqld2.server_id = 222 ;
-SET mysqld2 . server_id = 222 ;
-SET mysqld2 . server_id = 222 , mysqld2 . aaa , mysqld2 . bbb ;
-
---echo --------------------------------------------------------------------
---exec grep '^server_id[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf ;
---echo --------------------------------------------------------------------
---exec grep "^aaa\$" $MYSQLTEST_VARDIR/im.cnf ;
---echo --------------------------------------------------------------------
---exec grep "^bbb\$" $MYSQLTEST_VARDIR/im.cnf ;
---echo --------------------------------------------------------------------
-
-UNSET mysqld2 . aaa , mysqld2 . bbb ;
-
---echo --------------------------------------------------------------------
---exec grep '^server_id[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf ;
---echo --------------------------------------------------------------------
---exec grep "^aaa\$" $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
---exec grep "^bbb\$" $MYSQLTEST_VARDIR/im.cnf || true;
---echo --------------------------------------------------------------------
-
-###########################################################################
-#
-# Check that SET/UNSET updates both the configuration cache in IM and
-# the configuration file.
-#
-###########################################################################
-
-# - check that the configuration file has been updated (i.e. contains
-# server_id=SERVER_ID for mysqld2);
-
---echo --------------------------------------------------------------------
---exec grep '^server_id[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf ;
---echo --------------------------------------------------------------------
-
-# - (for mysqld1) check that the running instance has not been affected:
-# connect to the instance and check that 'SHOW VARIABLES LIKE 'server_id''
-# returns zero;
-
---connection mysql1_con
-
-SHOW VARIABLES LIKE 'server_id';
-
---connection default
-
-# - check that internal cache of Instance Manager has been affected;
-# TODO: we should check only server_id option here.
-
-# SHOW INSTANCE OPTIONS mysqld2;
-
-###########################################################################
-#
-# Check that FLUSH INSTANCES is allowed only when all instances are stopped.
-#
-###########################################################################
-
-SHOW INSTANCES;
-
---error 3016 # ER_THERE_IS_ACTIVE_INSTACE
-FLUSH INSTANCES;
-
-STOP INSTANCE mysqld1;
-# FIXME: STOP INSTANCE should be synchronous.
---sleep 3
-# should be longer than monitoring interval and enough to stop instance.
-
-SHOW INSTANCES;
-
-FLUSH INSTANCES;
diff --git a/mysql-test/suite/im/t/im_utils-im.opt b/mysql-test/suite/im/t/im_utils-im.opt
deleted file mode 100644
index 34b74ce0c95..00000000000
--- a/mysql-test/suite/im/t/im_utils-im.opt
+++ /dev/null
@@ -1 +0,0 @@
---monitoring-interval=1
diff --git a/mysql-test/suite/im/t/im_utils.imtest b/mysql-test/suite/im/t/im_utils.imtest
deleted file mode 100644
index b935634e96c..00000000000
--- a/mysql-test/suite/im/t/im_utils.imtest
+++ /dev/null
@@ -1,107 +0,0 @@
-###########################################################################
-#
-# This file contains test for (2) test suite.
-#
-# Consult WL#2789 for more information.
-#
-###########################################################################
-
---source suite/im/t/im_check_env.inc
-
-let $UTIL=$MYSQL_TEST_DIR/suite/im/t;
-
-###########################################################################
-
-#
-# Check 'SHOW INSTANCE OPTIONS' command.
-#
-# Since configuration of an mysqld-instance contains directories, we should
-# completely ignore the second column (values) in order to make the test
-# case produce the same results on different installations;
-# TODO: ignore values of only directory-specific options.
-#
-
---replace_column 2 VALUE
-SHOW INSTANCE OPTIONS mysqld1;
-
---replace_column 2 VALUE
-SHOW INSTANCE OPTIONS mysqld2;
-
-#
-# Before checking log files, we should start the second instance (mysqld2) to
-# give it a chance to create log files.
-#
-
-START INSTANCE mysqld2;
---exec $UTIL/wait_for_process.sh $IM_MYSQLD2_PATH_PID 30 started im_utils
-
-STOP INSTANCE mysqld2;
---exec $UTIL/wait_for_process.sh $IM_MYSQLD2_PATH_PID 30 stopped im_utils
-
-#
-# Check 'SHOW LOG FILES' command:
-# - check that log files of both offline and online instances are accessible;
-# - since placement of the log files is installation-specific, we should
-# ignore it in comparisson;
-# - also, we should ignore log file size, since it may depend on the version
-# being tested;
-#
-
---replace_column 2 PATH 3 FILE_SIZE
-SHOW mysqld1 LOG FILES;
-
---replace_column 2 PATH 3 FILE_SIZE
-SHOW mysqld2 LOG FILES;
-
-#
-# Check 'SHOW LOG' command:
-# - check that all three kinds of logs are available for both offline and
-# online instances;
-# - we should ignore the value, because it is very specific and depends on
-# many factors; we only check that Instance Manager is able to provide log
-# files.
-#
-
-# mysqld1 (online) w/o the optional argument.
-
---replace_column 1 LOG_DATA
-SHOW mysqld1 LOG ERROR 10;
-
---replace_column 1 LOG_DATA
-SHOW mysqld1 LOG SLOW 10;
-
---replace_column 1 LOG_DATA
-SHOW mysqld1 LOG GENERAL 10;
-
-# mysqld1 (online) with the optional argument.
-
---replace_column 1 LOG_DATA
-SHOW mysqld1 LOG ERROR 10, 2;
-
---replace_column 1 LOG_DATA
-SHOW mysqld1 LOG SLOW 10, 2;
-
---replace_column 1 LOG_DATA
-SHOW mysqld1 LOG GENERAL 10, 2;
-
-# mysqld2 (offline) w/o the optional argument.
-
---replace_column 1 LOG_DATA
-SHOW mysqld2 LOG ERROR 10;
-
---replace_column 1 LOG_DATA
-SHOW mysqld2 LOG SLOW 10;
-
---replace_column 1 LOG_DATA
-SHOW mysqld2 LOG GENERAL 10;
-
-# mysqld2 (offline) with the optional argument.
-
---replace_column 1 LOG_DATA
-SHOW mysqld2 LOG ERROR 10, 2;
-
---replace_column 1 LOG_DATA
-SHOW mysqld2 LOG SLOW 10, 2;
-
---replace_column 1 LOG_DATA
-SHOW mysqld2 LOG GENERAL 10, 2;
diff --git a/mysql-test/suite/im/t/kill_n_check.sh b/mysql-test/suite/im/t/kill_n_check.sh
deleted file mode 100755
index 6f2a0825dcd..00000000000
--- a/mysql-test/suite/im/t/kill_n_check.sh
+++ /dev/null
@@ -1,147 +0,0 @@
-#!/bin/sh
-
-###########################################################################
-
-# NOTE: this script returns 0 (success) even in case of failure (except for
-# usage-error). This is because this script is executed under
-# mysql-test-run[.pl] and it's better to examine particular problem in log
-# file, than just having said that the test case has failed.
-
-###########################################################################
-
-basename=`basename "$0"`
-dirname=`dirname "$0"`
-
-###########################################################################
-
-. "$dirname/utils.sh"
-
-###########################################################################
-
-check_restart()
-{
- if [ ! -r "$pid_path" ]; then
- log_debug "No '$pid_path' found."
- user_msg='the process was killed'
- return 1
- fi
-
- new_pid=`cat "$pid_path" 2>/dev/null`
- err_code=$?
-
- log_debug "err_code: $err_code; original_pid: $original_pid; new_pid: $new_pid."
-
- if [ $err_code -eq 0 -a "$original_pid" = "$new_pid" ]; then
- log_debug "The process was not restarted."
- user_msg='the process was not restarted'
- return 1
- fi
-
- log_debug "The process was restarted."
- user_msg='the process was restarted'
- return 0
-}
-
-###########################################################################
-
-if [ $# -ne 4 ]; then
- echo "Usage: $basename <pid file path> killed|restarted <timeout> <test id>"
- exit 1
-fi
-
-pid_path="$1"
-expected_result="$2"
-total_timeout="$3"
-test_id="$4"
-log_file="$MYSQLTEST_VARDIR/log/$test_id.script.log"
-
-log_debug "-- $basename: starting --"
-log_debug "pid_path: '$pid_path'"
-log_debug "expected_result: '$expected_result'"
-log_debug "total_timeout: '$total_timeout'"
-log_debug "test_id: '$test_id'"
-log_debug "log_file: '$log_file'"
-
-###########################################################################
-
-if [ "$expected_result" != 'killed' -a \
- "$expected_result" != 'restarted' ]; then
- log_error "Invalid second argument ($expected_result): 'killed' or 'restarted' expected."
- quit 0
-fi
-
-if [ -z "$pid_path" ]; then
- log_error "Invalid PID path ($pid_path)."
- quit 0
-fi
-
-if [ ! -r "$pid_path" ]; then
- log_error "PID file ($pid_path) does not exist."
- quit 0
-fi
-
-if [ -z "$total_timeout" ]; then
- log_error "Timeout is not specified."
- quit 0
-fi
-
-###########################################################################
-
-original_pid=`cat "$pid_path"`
-log_debug "original_pid: $original_pid."
-
-log_info "Killing the process..."
-
-kill -9 $original_pid
-
-###########################################################################
-
-log_info "Waiting..."
-
-if [ "$expected_result" = "restarted" ]; then
-
- # Wait for the process to restart.
-
- cur_attempt=1
-
- while true; do
-
- log_debug "cur_attempt: $cur_attempt."
-
- if check_restart; then
- log_info "Success: $user_msg."
- quit 0
- fi
-
- [ $cur_attempt -ge $total_timeout ] && break
-
- log_debug "Sleeping for 1 second..."
- sleep 1
-
- cur_attempt=`expr $cur_attempt + 1`
-
- done
-
- log_error "$user_msg."
- quit 0
-
-else # $expected_result == killed
-
- # Here we have to sleep for some long time to ensure that the process will
- # not be restarted.
-
- log_debug "Sleeping for $total_timeout seconds..."
- sleep $total_timeout
-
- new_pid=`cat "$pid_path" 2>/dev/null`
- log_debug "new_pid: $new_pid."
-
- if [ "$new_pid" -a "$new_pid" -ne "$original_pid" ]; then
- log_error "The process was restarted."
- else
- log_info "Success: the process was killed."
- fi
-
- quit 0
-
-fi
diff --git a/mysql-test/suite/im/t/log.sh b/mysql-test/suite/im/t/log.sh
deleted file mode 100755
index 33ef6d6701f..00000000000
--- a/mysql-test/suite/im/t/log.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-
-###########################################################################
-
-basename=`basename "$0"`
-dirname=`dirname "$0"`
-
-###########################################################################
-
-. "$dirname/utils.sh"
-
-###########################################################################
-
-if [ $# -lt 2 ]; then
- echo "Usage: $basename <test id> log message ..."
- exit 1
-fi
-
-test_id="$1"
-log_file="$MYSQLTEST_VARDIR/log/$test_id.script.log"
-
-shift
-
-log_debug "$*"
diff --git a/mysql-test/suite/im/t/utils.sh b/mysql-test/suite/im/t/utils.sh
deleted file mode 100644
index b3f4744947d..00000000000
--- a/mysql-test/suite/im/t/utils.sh
+++ /dev/null
@@ -1,55 +0,0 @@
-###########################################################################
-#
-# This file provides utility functions and is included by other scripts.
-#
-# The following global variables must be set before calling functions from this
-# file:
-# - basename -- base name of the calling script (main application);
-# - log_file -- where to store log records;
-#
-###########################################################################
-
-log()
-{
- [ -z "$log_file" ] && return;
-
- log_level="$1"
- log_msg="$2"
- ts=`date`
-
- echo "[$ts] [$basename] [$log_level] $log_msg" >> "$log_file";
-}
-
-###########################################################################
-
-log_debug()
-{
- log 'DEBUG' "$1"
-}
-
-###########################################################################
-
-log_info()
-{
- log 'INFO' "$1"
- echo "$1"
-}
-
-###########################################################################
-
-log_error()
-{
- log 'ERROR' "$1"
- echo "Error: $1"
-}
-
-###########################################################################
-
-quit()
-{
- exit_status="$1"
-
- log_debug "-- $basename: finished (exit_status: $exit_status) --"
-
- exit $exit_status
-}
diff --git a/mysql-test/suite/im/t/wait_for_process.sh b/mysql-test/suite/im/t/wait_for_process.sh
deleted file mode 100755
index 2143ab2002f..00000000000
--- a/mysql-test/suite/im/t/wait_for_process.sh
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/bin/sh
-
-###########################################################################
-
-# NOTE: this script returns 0 (success) even in case of failure (except for
-# usage-error). This is because this script is executed under
-# mysql-test-run[.pl] and it's better to examine particular problem in log
-# file, than just having said that the test case has failed.
-
-###########################################################################
-
-basename=`basename "$0"`
-dirname=`dirname "$0"`
-
-###########################################################################
-
-. "$dirname/utils.sh"
-
-###########################################################################
-
-check_started()
-{
- if [ ! -r "$pid_path" ]; then
- log_debug "No PID-file ($pid_path) found -- not started."
- return 1
- fi
-
- new_pid=`cat "$pid_path" 2>/dev/null`
- err_code=$?
-
- log_debug "err_code: $err_code; new_pid: $new_pid."
-
- if [ $? -ne 0 -o -z "$new_pid" ]; then
- log_debug "The process was not started."
- return 1
- fi
-
- log_debug "The process was started."
- return 0
-}
-
-###########################################################################
-
-check_stopped()
-{
- if [ -r "$pid_path" ]; then
- log_debug "PID-file '$pid_path' exists -- not stopped."
- return 1
- fi
-
- log_debug "No PID-file ($pid_path) found -- stopped."
- return 0
-}
-
-###########################################################################
-
-if [ $# -ne 4 ]; then
- echo "Usage: $basename <pid file path> <total attempts> started|stopped <test id>"
- exit 1
-fi
-
-pid_path="$1"
-total_attempts="$2"
-event="$3"
-test_id="$4"
-log_file="$MYSQLTEST_VARDIR/log/$test_id.script.log"
-
-log_debug "-- $basename: starting --"
-log_debug "pid_path: '$pid_path'"
-log_debug "total_attempts: '$total_attempts'"
-log_debug "event: '$event'"
-log_debug "test_id: '$test_id'"
-log_debug "log_file: '$log_file'"
-
-###########################################################################
-
-case "$event" in
- started)
- check_fn='check_started';
- ;;
-
- stopped)
- check_fn='check_stopped';
- ;;
-
- *)
- log_error "Invalid third argument ('started' or 'stopped' expected)."
- quit 0
-esac
-
-###########################################################################
-
-cur_attempt=1
-
-while true; do
-
- log_debug "cur_attempt: $cur_attempt."
-
- if ( eval $check_fn ); then
- log_info "Success: the process has been $event."
- quit 0
- fi
-
- [ $cur_attempt -ge $total_attempts ] && break
-
- log_debug "Sleeping for 1 second..."
- sleep 1
-
- cur_attempt=`expr $cur_attempt + 1`
-
-done
-
-log_error "The process has not been $event in $total_attempts secs."
-quit 0
diff --git a/mysql-test/suite/im/t/wait_for_socket.sh b/mysql-test/suite/im/t/wait_for_socket.sh
deleted file mode 100755
index 2fa7d5c5b7e..00000000000
--- a/mysql-test/suite/im/t/wait_for_socket.sh
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/bin/sh
-
-###########################################################################
-
-# NOTE: this script returns 0 (success) even in case of failure (except for
-# usage-error). This is because this script is executed under
-# mysql-test-run[.pl] and it's better to examine particular problem in log
-# file, than just having said that the test case has failed.
-
-###########################################################################
-
-basename=`basename "$0"`
-dirname=`dirname "$0"`
-
-###########################################################################
-
-. "$dirname/utils.sh"
-
-###########################################################################
-
-if [ $# -ne 7 ]; then
- echo "Usage: wait_for_socket.sh <executable path> <socket path> <username> <password> <db> <timeout> <test id>"
- exit 1
-fi
-
-client_exe="$1"
-socket_path="$2"
-username="$3"
-password="$4"
-db="$5"
-total_timeout="$6"
-test_id="$7"
-log_file="$MYSQLTEST_VARDIR/log/$test_id.script.log"
-
-log_debug "-- $basename: starting --"
-log_debug "client_exe: '$client_exe'"
-log_debug "socket_path: '$socket_path'"
-log_debug "username: '$username'"
-log_debug "password: '$password'"
-log_debug "db: '$db'"
-log_debug "total_timeout: '$total_timeout'"
-log_debug "test_id: '$test_id'"
-log_debug "log_file: '$log_file'"
-
-###########################################################################
-
-if [ -z "$client_exe" ]; then
- log_error "Invalid path to client executable ($client_exe)."
- quit 0;
-fi
-
-if [ ! -x "$client_exe" ]; then
- log_error "Client by path '$client_exe' is not available."
- quit 0;
-fi
-
-if [ -z "$socket_path" ]; then
- log_error "Invalid socket patch ($socket_path)."
- quit 0
-fi
-
-###########################################################################
-
-client_args="--no-defaults --silent --socket=$socket_path --connect_timeout=1 "
-
-[ -n "$username" ] && client_args="$client_args --user=$username "
-[ -n "$password" ] && client_args="$client_args --password=$password "
-[ -n "$db" ] && client_args="$client_args $db"
-
-log_debug "client_args: '$client_args'"
-
-###########################################################################
-
-cur_attempt=1
-
-while true; do
-
- log_debug "cur_attempt: $cur_attempt."
-
- if ( echo 'quit' | "$client_exe" $client_args >/dev/null 2>&1 ); then
- log_info "Success: server is ready to accept connection on socket."
- quit 0
- fi
-
- [ $cur_attempt -ge $total_timeout ] && break
-
- sleep 1
-
- cur_attempt=`expr $cur_attempt + 1`
-
-done
-
-log_error "Server does not accept connections after $total_timeout seconds."
-quit 0
diff --git a/mysql-test/suite/innodb/include/have_innodb_plugin.inc b/mysql-test/suite/innodb/include/have_innodb_plugin.inc
deleted file mode 100644
index 24af3274ada..00000000000
--- a/mysql-test/suite/innodb/include/have_innodb_plugin.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-disable_query_log;
---require r/true.require
-select (PLUGIN_LIBRARY LIKE 'ha_innodb_plugin%') as `TRUE` from information_schema.plugins where PLUGIN_NAME='InnoDB';
-enable_query_log;
diff --git a/mysql-test/suite/innodb/r/innodb-zip.result b/mysql-test/suite/innodb/r/innodb-zip.result
index 21396d81ba8..bcd3849238f 100644
--- a/mysql-test/suite/innodb/r/innodb-zip.result
+++ b/mysql-test/suite/innodb/r/innodb-zip.result
@@ -173,19 +173,19 @@ select @@innodb_file_format;
@@innodb_file_format
Barracuda
set global innodb_file_format=`2`;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_file_format' can't be set to the value of '2'
set global innodb_file_format=`-1`;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_file_format' can't be set to the value of '-1'
set global innodb_file_format=`Antelope`;
set global innodb_file_format=`Barracuda`;
set global innodb_file_format=`Cheetah`;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'Cheetah'
set global innodb_file_format=`abc`;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'abc'
set global innodb_file_format=`1a`;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_file_format' can't be set to the value of '1a'
set global innodb_file_format=``;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_file_format' can't be set to the value of ''
set global innodb_file_per_table = on;
set global innodb_file_format = `1`;
set innodb_strict_mode = off;
diff --git a/mysql-test/suite/innodb/r/innodb_bug47167.result b/mysql-test/suite/innodb/r/innodb_bug47167.result
index cbec363d78f..cf8cb0c0d7b 100644
--- a/mysql-test/suite/innodb/r/innodb_bug47167.result
+++ b/mysql-test/suite/innodb/r/innodb_bug47167.result
@@ -15,10 +15,10 @@ select @@innodb_file_format_check;
@@innodb_file_format_check
Antelope
set global innodb_file_format_check = cheetah;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'cheetah'
set global innodb_file_format_check = Bear;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'Bear'
set global innodb_file_format_check = on;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'ON'
set global innodb_file_format_check = off;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'off'
diff --git a/mysql-test/suite/innodb/r/innodb_file_format.result b/mysql-test/suite/innodb/r/innodb_file_format.result
index 36f176c616a..107025e4e52 100644
--- a/mysql-test/suite/innodb/r/innodb_file_format.result
+++ b/mysql-test/suite/innodb/r/innodb_file_format.result
@@ -8,7 +8,7 @@ Antelope
set global innodb_file_format=antelope;
set global innodb_file_format=barracuda;
set global innodb_file_format=cheetah;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'cheetah'
select @@innodb_file_format;
@@innodb_file_format
Barracuda
@@ -17,16 +17,16 @@ select @@innodb_file_format;
@@innodb_file_format
Antelope
set global innodb_file_format=on;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'ON'
set global innodb_file_format=off;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'off'
select @@innodb_file_format;
@@innodb_file_format
Antelope
set global innodb_file_format_check=antelope;
set global innodb_file_format_check=barracuda;
set global innodb_file_format_check=cheetah;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'cheetah'
select @@innodb_file_format_check;
@@innodb_file_format_check
Barracuda
@@ -35,9 +35,9 @@ select @@innodb_file_format_check;
@@innodb_file_format_check
Barracuda
set global innodb_file_format=on;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'ON'
set global innodb_file_format=off;
-ERROR HY000: Incorrect arguments to SET
+ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'off'
select @@innodb_file_format_check;
@@innodb_file_format_check
Barracuda
diff --git a/mysql-test/suite/innodb/t/disabled.def b/mysql-test/suite/innodb/t/disabled.def
index baf8c89f539..6535ee27887 100644
--- a/mysql-test/suite/innodb/t/disabled.def
+++ b/mysql-test/suite/innodb/t/disabled.def
@@ -1 +1 @@
-innodb-index: InnoDB: Error: table `test`.`t1#1` already exists in InnoDB internal
+innodb-index : Bug#49396 2009-12-03 test fails in embedded mode
diff --git a/mysql-test/suite/innodb/t/innodb-analyze.test b/mysql-test/suite/innodb/t/innodb-analyze.test
index 870e6434797..9bdb9db697c 100644
--- a/mysql-test/suite/innodb/t/innodb-analyze.test
+++ b/mysql-test/suite/innodb/t/innodb-analyze.test
@@ -4,7 +4,6 @@
#
-- source include/have_innodb.inc
--- source suite/innodb/include/have_innodb_plugin.inc
# we care only that the following SQL commands do not produce errors
# and do not crash the server
@@ -12,6 +11,7 @@
-- disable_result_log
-- enable_warnings
+let $sample_pages=`select @@innodb_stats_sample_pages`;
SET GLOBAL innodb_stats_sample_pages=0;
# check that the value has been adjusted to 1
@@ -62,5 +62,4 @@ SET GLOBAL innodb_stats_sample_pages=16;
ANALYZE TABLE innodb_analyze;
DROP TABLE innodb_analyze;
-
-SET GLOBAL innodb_stats_sample_pages=DEFAULT;
+EVAL SET GLOBAL innodb_stats_sample_pages=$sample_pages;
diff --git a/mysql-test/suite/innodb/t/innodb-consistent-master.opt b/mysql-test/suite/innodb/t/innodb-consistent-master.opt
deleted file mode 100644
index cb48f1aaf60..00000000000
--- a/mysql-test/suite/innodb/t/innodb-consistent-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---loose-innodb_lock_wait_timeout=2
diff --git a/mysql-test/suite/innodb/t/innodb-timeout.test b/mysql-test/suite/innodb/t/innodb-timeout.test
index 1ee1ad63180..f23fe3cff2d 100644
--- a/mysql-test/suite/innodb/t/innodb-timeout.test
+++ b/mysql-test/suite/innodb/t/innodb-timeout.test
@@ -1,5 +1,4 @@
-- source include/have_innodb.inc
--- source suite/innodb/include/have_innodb_plugin.inc
let $timeout=`select @@innodb_lock_wait_timeout`;
set global innodb_lock_wait_timeout=42;
diff --git a/mysql-test/suite/innodb/t/innodb-use-sys-malloc.test b/mysql-test/suite/innodb/t/innodb-use-sys-malloc.test
index 4df3ca9d27c..325dd19d086 100644
--- a/mysql-test/suite/innodb/t/innodb-use-sys-malloc.test
+++ b/mysql-test/suite/innodb/t/innodb-use-sys-malloc.test
@@ -1,5 +1,4 @@
--source include/have_innodb.inc
--- source suite/innodb/include/have_innodb_plugin.inc
#display current value of innodb_use_sys_malloc
SELECT @@GLOBAL.innodb_use_sys_malloc;
diff --git a/mysql-test/suite/innodb/t/innodb-zip.test b/mysql-test/suite/innodb/t/innodb-zip.test
index c27392ac4fa..eb517563416 100644
--- a/mysql-test/suite/innodb/t/innodb-zip.test
+++ b/mysql-test/suite/innodb/t/innodb-zip.test
@@ -1,5 +1,4 @@
-- source include/have_innodb.inc
--- source suite/innodb/include/have_innodb_plugin.inc
let $per_table=`select @@innodb_file_per_table`;
let $format=`select @@innodb_file_format`;
@@ -143,19 +142,19 @@ set global innodb_file_format=`0`;
select @@innodb_file_format;
set global innodb_file_format=`1`;
select @@innodb_file_format;
--- error ER_WRONG_ARGUMENTS
+-- error ER_WRONG_VALUE_FOR_VAR
set global innodb_file_format=`2`;
--- error ER_WRONG_ARGUMENTS
+-- error ER_WRONG_VALUE_FOR_VAR
set global innodb_file_format=`-1`;
set global innodb_file_format=`Antelope`;
set global innodb_file_format=`Barracuda`;
--- error ER_WRONG_ARGUMENTS
+-- error ER_WRONG_VALUE_FOR_VAR
set global innodb_file_format=`Cheetah`;
--- error ER_WRONG_ARGUMENTS
+-- error ER_WRONG_VALUE_FOR_VAR
set global innodb_file_format=`abc`;
--- error ER_WRONG_ARGUMENTS
+-- error ER_WRONG_VALUE_FOR_VAR
set global innodb_file_format=`1a`;
--- error ER_WRONG_ARGUMENTS
+-- error ER_WRONG_VALUE_FOR_VAR
set global innodb_file_format=``;
#test strict mode.
diff --git a/mysql-test/suite/innodb/t/innodb_bug36169.test b/mysql-test/suite/innodb/t/innodb_bug36169.test
index da852b816f4..5bf55193b5c 100644
--- a/mysql-test/suite/innodb/t/innodb_bug36169.test
+++ b/mysql-test/suite/innodb/t/innodb_bug36169.test
@@ -4,8 +4,9 @@
#
-- source include/have_innodb.inc
--- source suite/innodb/include/have_innodb_plugin.inc
+let $file_format=`select @@innodb_file_format`;
+let $file_per_table=`select @@innodb_file_per_table`;
SET GLOBAL innodb_file_format='Barracuda';
SET GLOBAL innodb_file_per_table=ON;
@@ -1154,6 +1155,5 @@ DROP TABLE IF EXISTS table4;
DROP TABLE IF EXISTS table5;
DROP TABLE IF EXISTS table6;
-SET GLOBAL innodb_file_per_table=DEFAULT;
-SET GLOBAL innodb_file_format='Antelope';
-SET GLOBAL innodb_file_format_check='Antelope';
+EVAL SET GLOBAL innodb_file_format=$file_format;
+EVAL SET GLOBAL innodb_file_per_table=$file_per_table;
diff --git a/mysql-test/suite/innodb/t/innodb_bug36172.test b/mysql-test/suite/innodb/t/innodb_bug36172.test
index 9e1308d5fc3..c6c4e6fae47 100644
--- a/mysql-test/suite/innodb/t/innodb_bug36172.test
+++ b/mysql-test/suite/innodb/t/innodb_bug36172.test
@@ -4,7 +4,6 @@
-- source include/not_embedded.inc
-- source include/have_innodb.inc
--- source suite/innodb/include/have_innodb_plugin.inc
SET storage_engine=InnoDB;
@@ -15,6 +14,9 @@ SET storage_engine=InnoDB;
-- disable_query_log
-- disable_result_log
+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;
@@ -25,7 +27,6 @@ CHECK TABLE table0 EXTENDED;
INSERT IGNORE INTO `table0` SET `col19` = '19940127002709', `col20` = 2383927.9055146948, `col21` = 4293243420.5621204000, `col22` = '20511211123705', `col23` = 4289899778.6573381000, `col24` = 4293449279.0540481000, `col25` = 'emphysemic', `col26` = 'dentally', `col27` = '2347406', `col28` = 'eruct', `col30` = 1222, `col31` = 4294372994.9941406000, `col32` = 4291385574.1173744000, `col33` = 'borrowing\'s', `col34` = 'septics', `col35` = 'ratter\'s', `col36` = 'Kaye', `col37` = 'Florentia', `col38` = 'allium', `col39` = 'barkeep', `col40` = '19510407003441', `col41` = 4293559200.4215522000, `col42` = 22482, `col43` = 'decussate', `col44` = 'Brom\'s', `col45` = 'violated', `col46` = 4925506.4635456400, `col47` = 930549, `col48` = '51296066', `col49` = 'voluminously', `col50` = '29306676', `col51` = -88, `col52` = -2153690, `col53` = 4290250202.1464887000, `col54` = 'expropriation', `col55` = 'Aberdeen\'s', `col56` = 20343, `col58` = '19640415171532', `col59` = 'extern', `col60` = 'Ubana', `col61` = 4290487961.8539081000, `col62` = '2147', `col63` = -24271, `col64` = '20750801194548', `col65` = 'Cunaxa\'s', `col66` = 'pasticcio', `col67` = 2795817, `col68` = 'Indore\'s', `col70` = 6864127, `col71` = '1817832', `col72` = '20540506114211', `col73` = '20040101012300', `col74` = 'rationalized', `col75` = '45522', `col76` = 'indene', `col77` = -6964559, `col78` = 4247535.5266884370, `col79` = '20720416124357', `col80` = '2143', `col81` = 4292060102.4466386000, `col82` = 'striving', `col83` = 'boneblack\'s', `col84` = 'redolent', `col85` = 6489697.9009369183, `col86` = 4287473465.9731131000, `col87` = 7726015, `col88` = 'perplexed', `col89` = '17153791', `col90` = 5478587.1108127078, `col91` = 4287091404.7004304000, `col92` = 'Boulez\'s', `col93` = '2931278';
CHECK TABLE table0 EXTENDED;
DROP TABLE table0;
-
-SET GLOBAL innodb_file_per_table=DEFAULT;
-SET GLOBAL innodb_file_format='Antelope';
-SET GLOBAL innodb_file_format_check='Antelope';
+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/t/innodb_bug47167.test b/mysql-test/suite/innodb/t/innodb_bug47167.test
index df056b91ff9..9b8bff0292f 100644
--- a/mysql-test/suite/innodb/t/innodb_bug47167.test
+++ b/mysql-test/suite/innodb/t/innodb_bug47167.test
@@ -4,7 +4,6 @@
# user-Defined Variable.
--source include/have_innodb.inc
--- source suite/innodb/include/have_innodb_plugin.inc
# Save the value (Antelope) in 'innodb_file_format_check' to
# 'old_innodb_file_format_check'
@@ -32,15 +31,15 @@ select @@innodb_file_format_check;
# Following are negative tests, all should fail.
--disable_warnings
---error ER_WRONG_ARGUMENTS
+--error ER_WRONG_VALUE_FOR_VAR
set global innodb_file_format_check = cheetah;
---error ER_WRONG_ARGUMENTS
+--error ER_WRONG_VALUE_FOR_VAR
set global innodb_file_format_check = Bear;
---error ER_WRONG_ARGUMENTS
+--error ER_WRONG_VALUE_FOR_VAR
set global innodb_file_format_check = on;
---error ER_WRONG_ARGUMENTS
+--error ER_WRONG_VALUE_FOR_VAR
set global innodb_file_format_check = off;
--enable_warnings
diff --git a/mysql-test/suite/innodb/t/innodb_file_format.test b/mysql-test/suite/innodb/t/innodb_file_format.test
index 4823254b959..4e11da5f123 100644
--- a/mysql-test/suite/innodb/t/innodb_file_format.test
+++ b/mysql-test/suite/innodb/t/innodb_file_format.test
@@ -1,5 +1,4 @@
-- source include/have_innodb.inc
--- source suite/innodb/include/have_innodb_plugin.inc
call mtr.add_suppression("InnoDB: invalid innodb_file_format_check value");
@@ -10,26 +9,26 @@ select @@innodb_file_format;
select @@innodb_file_format_check;
set global innodb_file_format=antelope;
set global innodb_file_format=barracuda;
---error ER_WRONG_ARGUMENTS
+--error ER_WRONG_VALUE_FOR_VAR
set global innodb_file_format=cheetah;
select @@innodb_file_format;
set global innodb_file_format=default;
select @@innodb_file_format;
---error ER_WRONG_ARGUMENTS
+--error ER_WRONG_VALUE_FOR_VAR
set global innodb_file_format=on;
---error ER_WRONG_ARGUMENTS
+--error ER_WRONG_VALUE_FOR_VAR
set global innodb_file_format=off;
select @@innodb_file_format;
set global innodb_file_format_check=antelope;
set global innodb_file_format_check=barracuda;
---error ER_WRONG_ARGUMENTS
+--error ER_WRONG_VALUE_FOR_VAR
set global innodb_file_format_check=cheetah;
select @@innodb_file_format_check;
set global innodb_file_format_check=default;
select @@innodb_file_format_check;
---error ER_WRONG_ARGUMENTS
+--error ER_WRONG_VALUE_FOR_VAR
set global innodb_file_format=on;
---error ER_WRONG_ARGUMENTS
+--error ER_WRONG_VALUE_FOR_VAR
set global innodb_file_format=off;
select @@innodb_file_format_check;
diff --git a/mysql-test/suite/innodb/t/innodb_information_schema.test b/mysql-test/suite/innodb/t/innodb_information_schema.test
index 599215e9ca4..fc1d38d8d14 100644
--- a/mysql-test/suite/innodb/t/innodb_information_schema.test
+++ b/mysql-test/suite/innodb/t/innodb_information_schema.test
@@ -4,7 +4,6 @@
#
-- source include/have_innodb.inc
--- source suite/innodb/include/have_innodb_plugin.inc
-- disable_query_log
-- disable_result_log
diff --git a/mysql-test/suite/jp/r/jp_create_db_sjis.result b/mysql-test/suite/jp/r/jp_create_db_sjis.result
index fd66609b7bc..b7c09fbfbe9 100644
--- a/mysql-test/suite/jp/r/jp_create_db_sjis.result
+++ b/mysql-test/suite/jp/r/jp_create_db_sjis.result
@@ -13,6 +13,7 @@ information_schema
“ú–{Œê
ÆÎݺÞ
mysql
+performance_schema
test
USE `ÆÎݺÞ`;
USE `“ú–{Œê`;
diff --git a/mysql-test/suite/jp/r/jp_create_db_ucs2.result b/mysql-test/suite/jp/r/jp_create_db_ucs2.result
index 3a3316ecbaf..3832ff5a0c7 100644
--- a/mysql-test/suite/jp/r/jp_create_db_ucs2.result
+++ b/mysql-test/suite/jp/r/jp_create_db_ucs2.result
@@ -14,6 +14,7 @@ information_schema
íÜíÝíÞ
ŽÆŽÎŽÝŽºŽÞ
mysql
+performance_schema
test
USE `ŽÆŽÎŽÝŽºŽÞ`;
USE `ÆüËܸì`;
diff --git a/mysql-test/suite/jp/r/jp_create_db_ujis.result b/mysql-test/suite/jp/r/jp_create_db_ujis.result
index 4d6561b88ce..d6bf31336fd 100644
--- a/mysql-test/suite/jp/r/jp_create_db_ujis.result
+++ b/mysql-test/suite/jp/r/jp_create_db_ujis.result
@@ -13,6 +13,7 @@ information_schema
íÜíÝíÞ
ŽÆŽÎŽÝŽºŽÞ
mysql
+performance_schema
test
USE `ŽÆŽÎŽÝŽºŽÞ`;
USE `ÆüËܸì`;
diff --git a/mysql-test/suite/jp/r/jp_create_db_utf8.result b/mysql-test/suite/jp/r/jp_create_db_utf8.result
index 2f70903ac71..62202d43df0 100644
--- a/mysql-test/suite/jp/r/jp_create_db_utf8.result
+++ b/mysql-test/suite/jp/r/jp_create_db_utf8.result
@@ -13,6 +13,7 @@ information_schema
龔龖龗
ニホï¾ï½ºï¾ž
mysql
+performance_schema
test
USE `ニホï¾ï½ºï¾ž`;
USE `日本語`;
diff --git a/mysql-test/suite/large_tests/r/lock_tables_big.result b/mysql-test/suite/large_tests/r/lock_tables_big.result
new file mode 100644
index 00000000000..de639143055
--- /dev/null
+++ b/mysql-test/suite/large_tests/r/lock_tables_big.result
@@ -0,0 +1 @@
+all done
diff --git a/mysql-test/suite/large_tests/t/lock_tables_big.test b/mysql-test/suite/large_tests/t/lock_tables_big.test
new file mode 100644
index 00000000000..41dcff3577c
--- /dev/null
+++ b/mysql-test/suite/large_tests/t/lock_tables_big.test
@@ -0,0 +1,32 @@
+#
+# Bug#24509 cannot use more than 2048 file descriptors on windows
+#
+--disable_query_log
+create database many_tables;
+use many_tables;
+let $max_tables=3000;
+let $i=$max_tables;
+
+--disable_warnings
+create table t (i int);
+let $table_list=t READ;
+
+while ($i)
+{
+ eval create table t$i (i int);
+ let $table_list= $table_list ,t$i READ;
+ dec $i;
+}
+
+#lock all tables we just created (resembles mysqldump startup is doing with --all-databases operation)
+#There will be 3 descriptors for each table (table.FRM, table.MYI and table.MYD files) means 9000 files
+#descriptors altogether. For Microsoft C runtime, this is way too many.
+
+eval LOCK TABLES $table_list;
+unlock tables;
+
+drop database many_tables;
+--disable_query_log
+--echo all done
+
+
diff --git a/mysql-test/suite/ndb/my.cnf b/mysql-test/suite/ndb/my.cnf
index a19fdeee302..37dfc3945ce 100644
--- a/mysql-test/suite/ndb/my.cnf
+++ b/mysql-test/suite/ndb/my.cnf
@@ -1,5 +1,6 @@
!include include/default_mysqld.cnf
!include include/default_ndbd.cnf
+!include include/default_client.cnf
[cluster_config.1]
NoOfReplicas= 2
diff --git a/mysql-test/suite/ndb/r/ndb_basic.result b/mysql-test/suite/ndb/r/ndb_basic.result
index 9f4f8c0755c..cbc320908ac 100644
--- a/mysql-test/suite/ndb/r/ndb_basic.result
+++ b/mysql-test/suite/ndb/r/ndb_basic.result
@@ -18,11 +18,15 @@ Variable_name Value
ndb_autoincrement_prefetch_sz #
ndb_cache_check_time #
ndb_connectstring #
+ndb_distribution #
ndb_extra_logging #
ndb_force_send #
ndb_index_stat_cache_entries #
ndb_index_stat_enable #
ndb_index_stat_update_freq #
+ndb_mgmd_host #
+ndb_nodeid #
+ndb_optimized_node_selection #
ndb_report_thresh_binlog_epoch_slip #
ndb_report_thresh_binlog_mem_usage #
ndb_use_copying_alter_table #
diff --git a/mysql-test/suite/ndb/r/ndb_binlog_format.result b/mysql-test/suite/ndb/r/ndb_binlog_format.result
index 6e1fc12130f..62d491bc94a 100644
--- a/mysql-test/suite/ndb/r/ndb_binlog_format.result
+++ b/mysql-test/suite/ndb/r/ndb_binlog_format.result
@@ -1,3 +1,4 @@
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
drop table if exists t1, t2, t3;
CREATE TABLE t1 (m INT, n INT) ENGINE=MYISAM;
CREATE TABLE t2 (b INT, c INT) ENGINE=BLACKHOLE;
@@ -7,18 +8,26 @@ SET SESSION BINLOG_FORMAT=STATEMENT;
INSERT INTO t1 VALUES (1,1), (1,2), (2,1), (2,2);
INSERT INTO t2 VALUES (1,1), (1,2), (2,1), (2,2);
UPDATE t1, t2 SET m = 2, b = 3 WHERE n = c;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
START TRANSACTION;
INSERT INTO t3 VALUES (1,1), (1,2), (2,1), (2,2);
UPDATE t1, t3 SET m = 2, e = 3 WHERE n = f;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
UPDATE t3, t2 SET e = 2, b = 3 WHERE f = c;
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
+mysqld-bin.000001 # Query # # BEGIN
mysqld-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1,1), (1,2), (2,1), (2,2)
+mysqld-bin.000001 # Query # # COMMIT
mysqld-bin.000001 # Query # # BEGIN
mysqld-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES (1,1), (1,2), (2,1), (2,2)
mysqld-bin.000001 # Query # # COMMIT
+mysqld-bin.000001 # Query # # BEGIN
mysqld-bin.000001 # Query # # use `test`; UPDATE t1, t2 SET m = 2, b = 3 WHERE n = c
+mysqld-bin.000001 # Query # # COMMIT
mysqld-bin.000001 # Query # # BEGIN
mysqld-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES (1,1), (1,2), (2,1), (2,2)
mysqld-bin.000001 # Query # # use `test`; UPDATE t1, t3 SET m = 2, e = 3 WHERE n = f
diff --git a/mysql-test/suite/ndb/r/ndb_bitfield.result b/mysql-test/suite/ndb/r/ndb_bitfield.result
index 59c4d420b22..826f3a98348 100644
--- a/mysql-test/suite/ndb/r/ndb_bitfield.result
+++ b/mysql-test/suite/ndb/r/ndb_bitfield.result
@@ -204,7 +204,7 @@ b int
ERROR HY000: Can't create table 'test.t1' (errno: 906)
show warnings;
Level Code Message
-Error 1296 Got error 906 'Unsupported attribute type in index' from NDB
+Warning 1296 Got error 906 'Unsupported attribute type in index' from NDB
Error 1005 Can't create table 'test.t1' (errno: 906)
create table t1 (
pk1 int not null primary key,
@@ -214,7 +214,7 @@ key(b)
ERROR HY000: Can't create table 'test.t1' (errno: 906)
show warnings;
Level Code Message
-Error 1296 Got error 906 'Unsupported attribute type in index' from NDB
+Warning 1296 Got error 906 'Unsupported attribute type in index' from NDB
Error 1005 Can't create table 'test.t1' (errno: 906)
create table t1 (
pk1 int primary key,
diff --git a/mysql-test/suite/ndb/r/ndb_condition_pushdown.result b/mysql-test/suite/ndb/r/ndb_condition_pushdown.result
index 4b6f5031fb2..f2b5b882f10 100644
--- a/mysql-test/suite/ndb/r/ndb_condition_pushdown.result
+++ b/mysql-test/suite/ndb/r/ndb_condition_pushdown.result
@@ -51,8 +51,8 @@ CREATE TABLE t3 (pk1 int unsigned NOT NULL PRIMARY KEY, attr1 int unsigned NO
insert into t3 values (0,0,0,0,"a"),(1,1,9223372036854775803,1,"b"),(2,2,9223372036854775804,2,"c"),(3,3,9223372036854775805,3,"d"),(4,4,9223372036854775806,4,"e"),(5,5,9223372036854775807,5,"f");
CREATE TABLE t4 (pk1 int unsigned NOT NULL PRIMARY KEY, attr1 int unsigned NOT NULL, attr2 bigint unsigned, attr3 tinyint unsigned, attr4 VARCHAR(10) , KEY (attr1)) ENGINE=ndbcluster;
insert into t4 values (0,0,0,0,"a"),(1,1,9223372036854775803,1,"b"),(2,2,9223372036854775804,2,"c"),(3,3,9223372036854775805,3,"d"),(4,4,9223372036854775806,4,"e"),(5,5,9223372036854775807,5,"f");
-set @old_ecpd = @@session.engine_condition_pushdown;
-set engine_condition_pushdown = off;
+set @old_optimizer_switch = @@session.optimizer_switch;
+set optimizer_switch = "engine_condition_pushdown=off";
select auto from t1 where
string = "aaaa" and
vstring = "aaaa" and
@@ -484,7 +484,7 @@ pk1 attr1 attr2 attr3 attr4 pk1 attr1 attr2 attr3 attr4
2 2 9223372036854775804 2 c 2 2 9223372036854775804 2 c
3 3 9223372036854775805 3 d 3 3 9223372036854775805 3 d
4 4 9223372036854775806 4 e 4 4 9223372036854775806 4 e
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
explain
select auto from t1 where
string = "aaaa" and
@@ -1769,12 +1769,12 @@ id select_type table type possible_keys key key_len ref rows Extra
create table t5 (a int primary key auto_increment, b tinytext not null)
engine = ndb;
insert into t5 (b) values ('jonas'), ('jensing'), ('johan');
-set engine_condition_pushdown = off;
+set optimizer_switch = "engine_condition_pushdown=off";
select * from t5 where b like '%jo%' order by a;
a b
1 jonas
3 johan
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
explain select * from t5 where b like '%jo%';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t5 ALL NULL NULL NULL NULL # Using where
@@ -1782,7 +1782,7 @@ select * from t5 where b like '%jo%' order by a;
a b
1 jonas
3 johan
-set engine_condition_pushdown = off;
+set optimizer_switch = "engine_condition_pushdown=off";
select auto from t1 where date_time like '1902-02-02 %' order by auto;
auto
2
@@ -1790,7 +1790,7 @@ select auto from t1 where date_time not like '1902-02-02 %' order by auto;
auto
3
4
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
explain select auto from t1 where date_time like '1902-02-02 %';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL # Using where
@@ -1808,7 +1808,7 @@ drop table t1;
create table t1 (a int, b varchar(3), primary key using hash(a))
engine=ndb;
insert into t1 values (1,'a'), (2,'ab'), (3,'abc');
-set engine_condition_pushdown = off;
+set optimizer_switch = "engine_condition_pushdown=off";
select * from t1 where b like 'ab';
a b
2 ab
@@ -1821,7 +1821,7 @@ a b
select * from t1 where b like 'abc' or b like 'abc';
a b
3 abc
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
select * from t1 where b like 'ab';
a b
2 ab
@@ -1838,7 +1838,7 @@ drop table t1;
create table t1 (a int, b char(3), primary key using hash(a))
engine=ndb;
insert into t1 values (1,'a'), (2,'ab'), (3,'abc');
-set engine_condition_pushdown = off;
+set optimizer_switch = "engine_condition_pushdown=off";
select * from t1 where b like 'ab';
a b
2 ab
@@ -1851,7 +1851,7 @@ a b
select * from t1 where b like 'abc' or b like 'abc';
a b
3 abc
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
select * from t1 where b like 'ab';
a b
2 ab
@@ -1868,11 +1868,11 @@ drop table t1;
create table t1 ( fname varchar(255), lname varchar(255) )
engine=ndbcluster;
insert into t1 values ("Young","Foo");
-set engine_condition_pushdown = 0;
+set optimizer_switch = "engine_condition_pushdown=off";
SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%');
fname lname
Young Foo
-set engine_condition_pushdown = 1;
+set optimizer_switch = "engine_condition_pushdown=on";
SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%');
fname lname
Young Foo
@@ -1880,11 +1880,11 @@ insert into t1 values ("aaa", "aaa");
insert into t1 values ("bbb", "bbb");
insert into t1 values ("ccc", "ccc");
insert into t1 values ("ddd", "ddd");
-set engine_condition_pushdown = 0;
+set optimizer_switch = "engine_condition_pushdown=off";
SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%');
fname lname
Young Foo
-set engine_condition_pushdown = 1;
+set optimizer_switch = "engine_condition_pushdown=on";
SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%');
fname lname
Young Foo
@@ -1896,7 +1896,7 @@ insert into t1 values (20,2,200,0+0x2222);
insert into t1 values (30,3,300,0+0x3333);
insert into t1 values (40,4,400,0+0x4444);
insert into t1 values (50,5,500,0+0x5555);
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
select a,b,d from t1
where b in (0,1,2,5)
order by b;
@@ -1916,5 +1916,5 @@ a b d
50 5 21845
Warnings:
Warning 4294 Scan filter is too large, discarded
-set engine_condition_pushdown = @old_ecpd;
+set optimizer_switch = @old_optimizer_switch;
DROP TABLE t1,t2,t3,t4,t5;
diff --git a/mysql-test/suite/ndb/r/ndb_dd_alter.result b/mysql-test/suite/ndb/r/ndb_dd_alter.result
index 94426546115..7ebbb24c84f 100644
--- a/mysql-test/suite/ndb/r/ndb_dd_alter.result
+++ b/mysql-test/suite/ndb/r/ndb_dd_alter.result
@@ -314,11 +314,11 @@ a1
20
SELECT * FROM information_schema.partitions WHERE table_name= 't1' AND partition_name = 'p0';
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 KEY NULL NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default ts
+def test t1 p0 NULL 1 NULL KEY NULL NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default ts
ALTER TABLE test.t1 ADD a2 FLOAT, ADD a3 DOUBLE;
SELECT * FROM information_schema.partitions WHERE table_name= 't1' AND partition_name = 'p0';
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 KEY NULL NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default ts
+def test t1 p0 NULL 1 NULL KEY NULL NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default ts
SELECT * FROM test.t1 ORDER BY a1;
a1 a2 a3
1 2.2345 20000001
diff --git a/mysql-test/suite/ndb/r/ndb_dd_basic.result b/mysql-test/suite/ndb/r/ndb_dd_basic.result
index 41e3d10fe5b..e56c18c5d95 100644
--- a/mysql-test/suite/ndb/r/ndb_dd_basic.result
+++ b/mysql-test/suite/ndb/r/ndb_dd_basic.result
@@ -8,20 +8,20 @@ INITIAL_SIZE 16M
UNDO_BUFFER_SIZE = 1M
ENGINE=MYISAM;
Warnings:
-Error 1478 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
+Warning 1478 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
ALTER LOGFILE GROUP lg1
ADD UNDOFILE 'undofile02.dat'
INITIAL_SIZE = 4M
ENGINE=XYZ;
Warnings:
-Warning 1286 Unknown table engine 'XYZ'
-Error 1478 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
+Warning 1286 Unknown storage engine 'XYZ'
+Warning 1478 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
CREATE TABLESPACE ts1
ADD DATAFILE 'datafile.dat'
USE LOGFILE GROUP lg1
INITIAL_SIZE 12M;
Warnings:
-Error 1478 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
+Warning 1478 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
set storage_engine=ndb;
CREATE LOGFILE GROUP lg1
ADD UNDOFILE 'undofile.dat'
diff --git a/mysql-test/suite/ndb/r/ndb_dd_ddl.result b/mysql-test/suite/ndb/r/ndb_dd_ddl.result
index d8d9e8631d5..2ea073d87cd 100644
--- a/mysql-test/suite/ndb/r/ndb_dd_ddl.result
+++ b/mysql-test/suite/ndb/r/ndb_dd_ddl.result
@@ -15,7 +15,7 @@ ENGINE NDB;
ERROR HY000: Failed to create LOGFILE GROUP
SHOW WARNINGS;
Level Code Message
-Error 1296 Got error 1514 'Currently there is a limit of one logfile group' from NDB
+Warning 1296 Got error 1514 'Currently there is a limit of one logfile group' from NDB
Error 1528 Failed to create LOGFILE GROUP
CREATE LOGFILE GROUP lg1
ADD UNDOFILE 'undofile.dat'
@@ -236,3 +236,80 @@ engine ndb;
ERROR HY000: Failed to drop TABLESPACE
drop logfile group lg1
engine ndb;
+
+# -----------------------------------------------------------------
+# End 5.1 test
+# -----------------------------------------------------------------
+
+# --
+# -- WL#4300: Define privileges for tablespaces.
+# --
+GRANT CREATE TABLESPACE ON *.* TO mysqltest_u1@localhost;
+
+DROP DATABASE IF EXISTS mysqltest2;
+CREATE DATABASE mysqltest2;
+GRANT ALL PRIVILEGES ON mysqltest2.* TO mysqltest_u2@localhost;
+
+# -- Connection: mysqltest_u1@localhost
+
+# -- Grants for mysqltest_u1@localhost:
+SHOW GRANTS;
+Grants for mysqltest_u1@localhost
+GRANT CREATE TABLESPACE ON *.* TO 'mysqltest_u1'@'localhost'
+
+# -- Check CREATE LOGFILE GROUP...
+CREATE LOGFILE GROUP lg1
+ADD UNDOFILE 'undofile.dat'
+INITIAL_SIZE 1M
+UNDO_BUFFER_SIZE = 1M
+ENGINE = NDB;
+
+# -- Check ALTER LOGFILE GROUP...
+ALTER LOGFILE GROUP lg1
+ADD UNDOFILE 'undofile02.dat'
+INITIAL_SIZE 1M
+ENGINE = NDB;
+
+# -- Check CREATE TABLESPACE...
+CREATE TABLESPACE ts1
+ADD DATAFILE 'datafile.dat'
+USE LOGFILE GROUP lg1
+INITIAL_SIZE 1M
+ENGINE = NDB;
+
+# -- Check ALTER TABLESPACE...
+ALTER TABLESPACE ts1
+DROP DATAFILE 'datafile.dat'
+INITIAL_SIZE 1M
+ENGINE = NDB;
+
+# -- Connection: mysqltest_u2@localhost
+
+# -- Grants for mysqltest_u2@localhost:
+SHOW GRANTS;
+Grants for mysqltest_u2@localhost
+GRANT USAGE ON *.* TO 'mysqltest_u2'@'localhost'
+GRANT ALL PRIVILEGES ON `mysqltest2`.* TO 'mysqltest_u2'@'localhost'
+CREATE TABLE t1(c INT) TABLESPACE ts1;
+DROP TABLE t1;
+
+# -- Connection: mysqltest_u1@localhost
+
+
+# -- Check DROP TABLESPACE...
+DROP TABLESPACE ts1
+ENGINE = NDB;
+
+# -- Check DROP LOGFILE GROUP...
+DROP LOGFILE GROUP lg1
+ENGINE = NDB;
+
+# -- Connection: root@localhost
+
+DROP USER mysqltest_u1@localhost;
+DROP USER mysqltest_u2@localhost;
+DROP DATABASE IF EXISTS mysqltest2;
+
+# -----------------------------------------------------------------
+# End 6.0 test
+# -----------------------------------------------------------------
diff --git a/mysql-test/suite/ndb/r/ndb_gis.result b/mysql-test/suite/ndb/r/ndb_gis.result
index 374d702c408..76a53804d8f 100644
--- a/mysql-test/suite/ndb/r/ndb_gis.result
+++ b/mysql-test/suite/ndb/r/ndb_gis.result
@@ -266,7 +266,7 @@ fid AsText(EndPoint(g))
107 POINT(40 10)
SELECT fid, GLength(g) FROM gis_line ORDER by fid;
fid GLength(g)
-105 24.142135623731
+105 24.14213562373095
106 40
107 30
SELECT fid, NumPoints(g) FROM gis_line ORDER by fid;
@@ -292,7 +292,7 @@ Note 1003 select astext(startpoint(`test`.`gis_line`.`g`)) AS `AsText(StartPoint
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)
+109 POINT(25.416666666666668 25.416666666666668)
110 POINT(20 10)
SELECT fid, Area(g) FROM gis_polygon ORDER by fid;
fid Area(g)
@@ -326,8 +326,8 @@ fid IsClosed(g)
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)
+117 POINT(55.58852775304245 17.426536064113982)
+118 POINT(55.58852775304245 17.426536064113982)
119 POINT(2 2)
SELECT fid, Area(g) FROM gis_multi_polygon ORDER by fid;
fid Area(g)
@@ -463,7 +463,7 @@ drop table t1;
End of 4.1 tests
CREATE TABLE t1 (name VARCHAR(100), square GEOMETRY);
Warnings:
-Error 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK'
+Warning 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK'
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))'));
@@ -548,7 +548,7 @@ Overlaps(@horiz1, @point2)
0
DROP TABLE t1;
End of 5.0 tests
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
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);
@@ -816,7 +816,7 @@ fid AsText(EndPoint(g))
107 POINT(40 10)
SELECT fid, GLength(g) FROM gis_line ORDER by fid;
fid GLength(g)
-105 24.142135623731
+105 24.14213562373095
106 40
107 30
SELECT fid, NumPoints(g) FROM gis_line ORDER by fid;
@@ -842,7 +842,7 @@ Note 1003 select astext(startpoint(`test`.`gis_line`.`g`)) AS `AsText(StartPoint
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)
+109 POINT(25.416666666666668 25.416666666666668)
110 POINT(20 10)
SELECT fid, Area(g) FROM gis_polygon ORDER by fid;
fid Area(g)
@@ -876,8 +876,8 @@ fid IsClosed(g)
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)
+117 POINT(55.58852775304245 17.426536064113982)
+118 POINT(55.58852775304245 17.426536064113982)
119 POINT(2 2)
SELECT fid, Area(g) FROM gis_multi_polygon ORDER by fid;
fid Area(g)
@@ -1013,7 +1013,7 @@ drop table t1;
End of 4.1 tests
CREATE TABLE t1 (name VARCHAR(100), square GEOMETRY);
Warnings:
-Error 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK'
+Warning 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK'
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))'));
diff --git a/mysql-test/suite/ndb/r/ndb_index_unique.result b/mysql-test/suite/ndb/r/ndb_index_unique.result
index bfc0c5a2e56..5d0f4038211 100644
--- a/mysql-test/suite/ndb/r/ndb_index_unique.result
+++ b/mysql-test/suite/ndb/r/ndb_index_unique.result
@@ -181,8 +181,8 @@ a b c
5 5 NULL
8 3 NULL
9 3 NULL
-set @old_ecpd = @@session.engine_condition_pushdown;
-set engine_condition_pushdown = true;
+set @old_optimizer_switch = @@session.optimizer_switch;
+set optimizer_switch = "engine_condition_pushdown=on";
explain select * from t2 where (b = 3 OR b = 5) AND c IS NULL AND a < 9 order by a;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 range PRIMARY,b PRIMARY 4 NULL 1 Using where with pushed condition
@@ -191,7 +191,7 @@ a b c
3 3 NULL
5 5 NULL
8 3 NULL
-set engine_condition_pushdown = @old_ecpd;
+set optimizer_switch = @old_optimizer_switch;
drop table t2;
CREATE TABLE t3 (
a int unsigned NOT NULL,
@@ -682,7 +682,7 @@ create table t1 (a int primary key, b varchar(1000) not null, unique key (b))
engine=ndb charset=utf8;
insert into t1 values (1, repeat(_utf8 0xe288ab6474, 200));
insert into t1 values (2, repeat(_utf8 0xe288ab6474, 200));
-ERROR 23000: Duplicate entry '∫dt∫dt∫dt∫dt∫dt∫dt∫dt∫dt∫dt∫dt∫dt∫dt∫d' for key 'b'
+ERROR 23000: Duplicate entry '\222Bdt\222Bdt\222Bdt\222Bdt\222Bdt\222Bdt\222Bdt\222Bdt\222Bdt\222Bdt\222Bdt\222Bdt\222Bd' for key 'b'
select a, sha1(b) from t1;
a sha1(b)
1 08f5d02c8b8bc244f275bdfc22c42c5cab0d9d7d
diff --git a/mysql-test/suite/ndb/r/ndb_multi_row.result b/mysql-test/suite/ndb/r/ndb_multi_row.result
index 3d34b16a1a8..96986490d23 100644
--- a/mysql-test/suite/ndb/r/ndb_multi_row.result
+++ b/mysql-test/suite/ndb/r/ndb_multi_row.result
@@ -63,6 +63,6 @@ t4
drop table t1, t2, t3, t4;
drop table if exists t1, t3, t4;
Warnings:
-Error 155 Table 'test.t1' doesn't exist
-Error 155 Table 'test.t3' doesn't exist
-Error 155 Table 'test.t4' doesn't exist
+Warning 155 Table 'test.t1' doesn't exist
+Warning 155 Table 'test.t3' doesn't exist
+Warning 155 Table 'test.t4' doesn't exist
diff --git a/mysql-test/suite/ndb/r/ndb_partition_error.result b/mysql-test/suite/ndb/r/ndb_partition_error.result
index d86dc382185..df2db5c5f06 100644
--- a/mysql-test/suite/ndb/r/ndb_partition_error.result
+++ b/mysql-test/suite/ndb/r/ndb_partition_error.result
@@ -14,7 +14,7 @@ partition x3 values less than (20) nodegroup 14);
ERROR HY000: Can't create table 'test.t1' (errno: 140)
show warnings;
Level Code Message
-Error 1296 Got error 771 'Given NODEGROUP doesn't exist in this cluster' from NDB
+Warning 1296 Got error 771 'Given NODEGROUP doesn't exist in this cluster' from NDB
Error 1005 Can't create table 'test.t1' (errno: 140)
CREATE TABLE t1 (
a int not null,
diff --git a/mysql-test/suite/ndb/r/ndb_partition_range.result b/mysql-test/suite/ndb/r/ndb_partition_range.result
index 83eff9ea2ee..fbaec81984d 100644
--- a/mysql-test/suite/ndb/r/ndb_partition_range.result
+++ b/mysql-test/suite/ndb/r/ndb_partition_range.result
@@ -17,9 +17,9 @@ INSERT into t1 values (10, 1, 1);
INSERT into t1 values (15, 1, 1);
select * from information_schema.partitions where table_name= 't1';
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 x1 NULL 1 NULL RANGE NULL a NULL 5 0 0 0 # 0 0 # # NULL NULL default NULL
-NULL test t1 x2 NULL 2 NULL RANGE NULL a NULL 10 0 0 0 # 0 0 # # NULL NULL default NULL
-NULL test t1 x3 NULL 3 NULL RANGE NULL a NULL 20 0 0 0 # 0 0 # # NULL NULL default NULL
+def test t1 x1 NULL 1 NULL RANGE NULL a NULL 5 0 0 0 # 0 0 # # NULL NULL default NULL
+def test t1 x2 NULL 2 NULL RANGE NULL a NULL 10 0 0 0 # 0 0 # # NULL NULL default NULL
+def test t1 x3 NULL 3 NULL RANGE NULL a NULL 20 0 0 0 # 0 0 # # NULL NULL default NULL
select * from t1 order by a;
a b c
1 1 1
diff --git a/mysql-test/suite/ndb/r/ndb_restore.result b/mysql-test/suite/ndb/r/ndb_restore.result
index f6b50a1dfdc..186cbb71f5e 100644
--- a/mysql-test/suite/ndb/r/ndb_restore.result
+++ b/mysql-test/suite/ndb/r/ndb_restore.result
@@ -140,9 +140,9 @@ ForceVarPart: 0
ForceVarPart: 1
select * from information_schema.columns where table_name = "t1_c";
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
-NULL test t1_c capgoaledatta 1 NULL NO mediumint NULL NULL 7 0 NULL NULL mediumint(5) unsigned PRI auto_increment select,insert,update,references
-NULL test t1_c goaledatta 2 NO char 2 2 NULL NULL latin1 latin1_swedish_ci char(2) PRI select,insert,update,references
-NULL test t1_c maturegarbagefa 3 NO varchar 32 32 NULL NULL latin1 latin1_swedish_ci varchar(32) PRI select,insert,update,references
+def test t1_c capgoaledatta 1 NULL NO mediumint NULL NULL 7 0 NULL NULL mediumint(5) unsigned PRI auto_increment select,insert,update,references
+def test t1_c goaledatta 2 NO char 2 2 NULL NULL latin1 latin1_swedish_ci char(2) PRI select,insert,update,references
+def test t1_c maturegarbagefa 3 NO varchar 32 32 NULL NULL latin1 latin1_swedish_ci varchar(32) PRI select,insert,update,references
select count(*) from t1;
count(*)
5
diff --git a/mysql-test/suite/ndb/r/ndb_restore_different_endian_data.result b/mysql-test/suite/ndb/r/ndb_restore_different_endian_data.result
index e552de8d854..b101c93d156 100644
--- a/mysql-test/suite/ndb/r/ndb_restore_different_endian_data.result
+++ b/mysql-test/suite/ndb/r/ndb_restore_different_endian_data.result
@@ -79,7 +79,7 @@ t_pk t_date t_datetime t_timestamp t_time t_year
1 1998-01-01 2006-08-10 10:11:12 2002-10-29 16:51:06 19:38:34 2155
SELECT t_pk,hex(t_bit),t_tinyint,t_bool,t_smallint,t_mediumint,t_int,t_bigint,t_float,t_double,t_decimal FROM t_num;
t_pk hex(t_bit) t_tinyint t_bool t_smallint t_mediumint t_int t_bigint t_float t_double t_decimal
-1 AAAAAAAAAAAAAAAA 125 1 32765 8388606 2147483647 9223372036854775807 1e+20 1e+150 331.0000000000000000
+1 AAAAAAAAAAAAAAAA 125 1 32765 8388606 2147483647 9223372036854775807 1e20 1e150 331.0000000000000000
SELECT t_pk,t_char,t_varchar,hex(t_binary),hex(t_varbinary) FROM t_string_1;
t_pk t_char t_varchar hex(t_binary) hex(t_varbinary)
1 abcdefghijklmn abcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmn 612020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 4100
@@ -178,7 +178,7 @@ t_pk t_date t_datetime t_timestamp t_time t_year
1 1998-01-01 2006-08-10 10:11:12 2002-10-29 16:51:06 19:38:34 2155
SELECT t_pk,hex(t_bit),t_tinyint,t_bool,t_smallint,t_mediumint,t_int,t_bigint,t_float,t_double,t_decimal FROM t_num;
t_pk hex(t_bit) t_tinyint t_bool t_smallint t_mediumint t_int t_bigint t_float t_double t_decimal
-1 AAAAAAAAAAAAAAAA 125 1 32765 8388606 2147483647 9223372036854775807 1e+20 1e+150 331.0000000000000000
+1 AAAAAAAAAAAAAAAA 125 1 32765 8388606 2147483647 9223372036854775807 1e20 1e150 331.0000000000000000
SELECT t_pk,t_char,t_varchar,hex(t_binary),hex(t_varbinary) FROM t_string_1;
t_pk t_char t_varchar hex(t_binary) hex(t_varbinary)
1 abcdefghijklmn abcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmn 612020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 4100
diff --git a/mysql-test/suite/ndb/r/ndb_row_format.result b/mysql-test/suite/ndb/r/ndb_row_format.result
index eea0692dd92..48a314c2fe9 100644
--- a/mysql-test/suite/ndb/r/ndb_row_format.result
+++ b/mysql-test/suite/ndb/r/ndb_row_format.result
@@ -8,7 +8,7 @@ ENGINE=NDB;
ERROR HY000: Can't create table 'test.t1' (errno: 138)
SHOW WARNINGS;
Level Code Message
-Error 1478 Table storage engine 'ndbcluster' does not support the create option 'Row format FIXED incompatible with variable sized attribute'
+Warning 1478 Table storage engine 'ndbcluster' does not support the create option 'Row format FIXED incompatible with variable sized attribute'
Error 1005 Can't create table 'test.t1' (errno: 138)
CREATE TABLE t1
( a INT KEY,
diff --git a/mysql-test/suite/ndb/r/ndb_single_user.result b/mysql-test/suite/ndb/r/ndb_single_user.result
index 8133e540d71..1d5f3041adb 100644
--- a/mysql-test/suite/ndb/r/ndb_single_user.result
+++ b/mysql-test/suite/ndb/r/ndb_single_user.result
@@ -9,7 +9,7 @@ ENGINE=NDB;
ERROR HY000: Failed to create LOGFILE GROUP
show warnings;
Level Code Message
-Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
+Warning 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
Error 1528 Failed to create LOGFILE GROUP
create table t1 (a int key, b int unique, c int) engine ndb;
CREATE LOGFILE GROUP lg1
@@ -25,14 +25,14 @@ ENGINE NDB;
ERROR HY000: Failed to create TABLESPACE
show warnings;
Level Code Message
-Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
+Warning 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
Error 1528 Failed to create TABLESPACE
DROP LOGFILE GROUP lg1
ENGINE =NDB;
ERROR HY000: Failed to drop LOGFILE GROUP
show warnings;
Level Code Message
-Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
+Warning 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
Error 1529 Failed to drop LOGFILE GROUP
CREATE TABLESPACE ts1
ADD DATAFILE 'datafile.dat'
@@ -45,7 +45,7 @@ ENGINE NDB;
ERROR HY000: Failed to alter: DROP DATAFILE
show warnings;
Level Code Message
-Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
+Warning 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
Error 1533 Failed to alter: DROP DATAFILE
ALTER TABLESPACE ts1
DROP DATAFILE 'datafile.dat'
@@ -55,7 +55,7 @@ ENGINE NDB;
ERROR HY000: Failed to drop TABLESPACE
show warnings;
Level Code Message
-Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
+Warning 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
Error 1529 Failed to drop TABLESPACE
DROP TABLESPACE ts1
ENGINE NDB;
diff --git a/mysql-test/suite/ndb/r/ps_7ndb.result b/mysql-test/suite/ndb/r/ps_7ndb.result
index 73a2e0c1dda..fcb2d641cf0 100644
--- a/mysql-test/suite/ndb/r/ps_7ndb.result
+++ b/mysql-test/suite/ndb/r/ps_7ndb.result
@@ -59,8 +59,8 @@ def test t9 t9 c7 c7 4 12 1 Y 32768 31 63
def test t9 t9 c8 c8 5 22 1 Y 32768 31 63
def test t9 t9 c9 c9 5 22 1 Y 32768 31 63
def test t9 t9 c10 c10 5 22 1 Y 32768 31 63
-def test t9 t9 c11 c11 246 9 6 Y 0 4 63
-def test t9 t9 c12 c12 246 10 6 Y 0 4 63
+def test t9 t9 c11 c11 246 9 6 Y 32768 4 63
+def test t9 t9 c12 c12 246 10 6 Y 32768 4 63
def test t9 t9 c13 c13 10 10 10 Y 128 0 63
def test t9 t9 c14 c14 12 19 19 Y 128 0 63
def test t9 t9 c15 c15 7 19 19 N 9441 0 63
@@ -1790,8 +1790,8 @@ select * from t5 ;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def test t5 t5 const01 const01 3 1 1 N 32769 0 63
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
-def test t5 t5 const02 const02 246 4 3 N 1 1 63
-def test t5 t5 param02 param02 246 67 32 Y 0 30 63
+def test t5 t5 const02 const02 246 4 3 N 32769 1 63
+def test t5 t5 param02 param02 246 67 32 Y 32768 30 63
def test t5 t5 const03 const03 5 17 1 N 32769 31 63
def test t5 t5 param03 param03 5 23 1 Y 32768 31 63
def test t5 t5 const04 const04 253 3 3 N 1 0 8
@@ -1812,7 +1812,7 @@ def test t5 t5 const11 const11 3 4 4 Y 32768 0 63
def test t5 t5 param11 param11 8 20 4 Y 32768 0 63
def test t5 t5 const12 const12 254 0 0 Y 128 0 63
def test t5 t5 param12 param12 8 20 0 Y 32768 0 63
-def test t5 t5 param13 param13 246 67 0 Y 0 30 63
+def test t5 t5 param13 param13 246 67 0 Y 32768 30 63
def test t5 t5 param14 param14 252 4294967295 0 Y 16 0 8
def test t5 t5 param15 param15 252 4294967295 0 Y 144 0 63
const01 8
@@ -1910,8 +1910,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -1957,8 +1957,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2007,8 +2007,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2047,8 +2047,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2095,8 +2095,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2139,8 +2139,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2185,8 +2185,8 @@ def @arg07 5 23 1 Y 32896 31 63
def @arg08 5 23 1 Y 32896 31 63
def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63
-def @arg11 246 83 6 Y 128 30 63
-def @arg12 246 83 6 Y 128 30 63
+def @arg11 246 83 6 Y 32896 30 63
+def @arg12 246 83 6 Y 32896 30 63
def @arg13 251 16777216 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2223,8 +2223,8 @@ def @arg07 5 23 0 Y 32896 31 63
def @arg08 5 23 0 Y 32896 31 63
def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63
-def @arg11 246 83 0 Y 128 30 63
-def @arg12 246 83 0 Y 128 30 63
+def @arg11 246 83 0 Y 32896 30 63
+def @arg12 246 83 0 Y 32896 30 63
def @arg13 251 16777216 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63
@@ -2568,10 +2568,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 9.22337e+18
-c8 9.22337203685478e+18
-c9 9.22337203685478e+18
-c10 9.22337203685478e+18
+c7 9.22337e18
+c8 9.223372036854776e18
+c9 9.223372036854776e18
+c10 9.223372036854776e18
c12 9999.9999
execute my_delete ;
set @arg00= '9223372036854775807' ;
@@ -2591,10 +2591,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 9.22337e+18
-c8 9.22337203685478e+18
-c9 9.22337203685478e+18
-c10 9.22337203685478e+18
+c7 9.22337e18
+c8 9.223372036854776e18
+c9 9.223372036854776e18
+c10 9.223372036854776e18
c12 9999.9999
execute my_delete ;
set @arg00= -9223372036854775808 ;
@@ -2614,10 +2614,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -9.22337e+18
-c8 -9.22337203685478e+18
-c9 -9.22337203685478e+18
-c10 -9.22337203685478e+18
+c7 -9.22337e18
+c8 -9.223372036854776e18
+c9 -9.223372036854776e18
+c10 -9.223372036854776e18
c12 -9999.9999
execute my_delete ;
set @arg00= '-9223372036854775808' ;
@@ -2637,10 +2637,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -9.22337e+18
-c8 -9.22337203685478e+18
-c9 -9.22337203685478e+18
-c10 -9.22337203685478e+18
+c7 -9.22337e18
+c8 -9.223372036854776e18
+c9 -9.223372036854776e18
+c10 -9.223372036854776e18
c12 -9999.9999
execute my_delete ;
set @arg00= 1.11111111111111111111e+50 ;
@@ -2662,10 +2662,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 3.40282e+38
-c8 1.11111111111111e+50
-c9 1.11111111111111e+50
-c10 1.11111111111111e+50
+c7 3.40282e38
+c8 1.111111111111111e50
+c9 1.111111111111111e50
+c10 1.111111111111111e50
c12 9999.9999
execute my_delete ;
set @arg00= '1.11111111111111111111e+50' ;
@@ -2687,10 +2687,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
-c7 3.40282e+38
-c8 1.11111111111111e+50
-c9 1.11111111111111e+50
-c10 1.11111111111111e+50
+c7 3.40282e38
+c8 1.111111111111111e50
+c9 1.111111111111111e50
+c10 1.111111111111111e50
c12 9999.9999
execute my_delete ;
set @arg00= -1.11111111111111111111e+50 ;
@@ -2712,10 +2712,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -3.40282e+38
-c8 -1.11111111111111e+50
-c9 -1.11111111111111e+50
-c10 -1.11111111111111e+50
+c7 -3.40282e38
+c8 -1.111111111111111e50
+c9 -1.111111111111111e50
+c10 -1.111111111111111e50
c12 -9999.9999
execute my_delete ;
set @arg00= '-1.11111111111111111111e+50' ;
@@ -2737,10 +2737,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
-c7 -3.40282e+38
-c8 -1.11111111111111e+50
-c9 -1.11111111111111e+50
-c10 -1.11111111111111e+50
+c7 -3.40282e38
+c8 -1.111111111111111e50
+c9 -1.111111111111111e50
+c10 -1.111111111111111e50
c12 -9999.9999
execute my_delete ;
test_sequence
@@ -2805,10 +2805,10 @@ c1 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30
51 5 51.0 51.0 51.0 51.0 51.0 51.0 51.0 51.0 51.0 51.0
52 5 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0
53 5 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0
-54 5 54 54 54.00 54.00 54.00 54.00 54.00 54.00 54.00 54.00
-55 5 55 55 55 55 55 55 55 55 55 55
-56 6 56 56 56.00 56.00 56.00 56.00 56.00 56.00 56.00 56.00
-57 6 57 57 57.00 57.00 57.00 57.00 57.00 57.00 57.00 57.00
+54 5 54 54 54 54 54 54 54 54 54 54
+55 6 55 55 55 55 55 55 55 55 55 55
+56 6 56 56 56 56 56 56 56 56 56 56
+57 6 57 57 57 57 57 57 57 57 57 57
60 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
61 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
62 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
@@ -3022,7 +3022,7 @@ c1 c13 c14 c15 c16 c17
42 0000-00-00 0000-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
43 0000-00-00 0000-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
50 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
-51 2010-00-00 2010-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
+51 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
52 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
53 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
60 NULL NULL 1991-01-01 01:01:01 NULL NULL
diff --git a/mysql-test/suite/ndb/t/ndb_binlog_format.test b/mysql-test/suite/ndb/t/ndb_binlog_format.test
index acb34bb388c..994054f0676 100644
--- a/mysql-test/suite/ndb/t/ndb_binlog_format.test
+++ b/mysql-test/suite/ndb/t/ndb_binlog_format.test
@@ -6,6 +6,8 @@
-- source include/have_ndb.inc
-- source include/have_log_bin.inc
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
--disable_warnings
drop table if exists t1, t2, t3;
--enable_warnings
diff --git a/mysql-test/suite/ndb/t/ndb_condition_pushdown.test b/mysql-test/suite/ndb/t/ndb_condition_pushdown.test
index a56c9dda01c..a6ab06eae31 100644
--- a/mysql-test/suite/ndb/t/ndb_condition_pushdown.test
+++ b/mysql-test/suite/ndb/t/ndb_condition_pushdown.test
@@ -68,8 +68,8 @@ CREATE TABLE t4 (pk1 int unsigned NOT NULL PRIMARY KEY, attr1 int unsigned NO
insert into t4 values (0,0,0,0,"a"),(1,1,9223372036854775803,1,"b"),(2,2,9223372036854775804,2,"c"),(3,3,9223372036854775805,3,"d"),(4,4,9223372036854775806,4,"e"),(5,5,9223372036854775807,5,"f");
-set @old_ecpd = @@session.engine_condition_pushdown;
-set engine_condition_pushdown = off;
+set @old_optimizer_switch = @@session.optimizer_switch;
+set optimizer_switch = "engine_condition_pushdown=off";
# Test all types and compare operators
select auto from t1 where
@@ -453,7 +453,7 @@ select * from t2,t3 where t2.attr1 < 1 and t2.attr2 = t3.attr2 and t3.attr1 < 5
select * from t4 where attr1 < 5 and attr2 > 9223372036854775803 and attr3 != 3 order by t4.pk1;
select * from t3,t4 where t4.attr1 > 1 and t4.attr2 = t3.attr2 and t4.attr3 < 5 order by t4.pk1;
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
# Test all types and compare operators
--replace_column 9 #
@@ -1674,18 +1674,18 @@ select * from t3 left join t4 on t4.attr2 = t3.attr2 where t4.attr1 > 1 and t4.a
create table t5 (a int primary key auto_increment, b tinytext not null)
engine = ndb;
insert into t5 (b) values ('jonas'), ('jensing'), ('johan');
-set engine_condition_pushdown = off;
+set optimizer_switch = "engine_condition_pushdown=off";
select * from t5 where b like '%jo%' order by a;
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
--replace_column 9 #
explain select * from t5 where b like '%jo%';
select * from t5 where b like '%jo%' order by a;
# bug#21056 ndb pushdown equal/setValue error on datetime
-set engine_condition_pushdown = off;
+set optimizer_switch = "engine_condition_pushdown=off";
select auto from t1 where date_time like '1902-02-02 %' order by auto;
select auto from t1 where date_time not like '1902-02-02 %' order by auto;
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
--replace_column 9 #
explain select auto from t1 where date_time like '1902-02-02 %';
select auto from t1 where date_time like '1902-02-02 %' order by auto;
@@ -1701,12 +1701,12 @@ insert into t1 values (1,'a'), (2,'ab'), (3,'abc');
# in TUP the constants 'ab' 'abc' were expected in varchar format
# "like" returned error which became "false"
# scan filter negates "or" which exposes the bug
-set engine_condition_pushdown = off;
+set optimizer_switch = "engine_condition_pushdown=off";
select * from t1 where b like 'ab';
select * from t1 where b like 'ab' or b like 'ab';
select * from t1 where b like 'abc';
select * from t1 where b like 'abc' or b like 'abc';
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
select * from t1 where b like 'ab';
select * from t1 where b like 'ab' or b like 'ab';
select * from t1 where b like 'abc';
@@ -1719,12 +1719,12 @@ engine=ndb;
insert into t1 values (1,'a'), (2,'ab'), (3,'abc');
# test that incorrect MySQL behaviour is preserved
# 'ab ' LIKE 'ab' is true in MySQL
-set engine_condition_pushdown = off;
+set optimizer_switch = "engine_condition_pushdown=off";
select * from t1 where b like 'ab';
select * from t1 where b like 'ab' or b like 'ab';
select * from t1 where b like 'abc';
select * from t1 where b like 'abc' or b like 'abc';
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
select * from t1 where b like 'ab';
select * from t1 where b like 'ab' or b like 'ab';
select * from t1 where b like 'abc';
@@ -1736,9 +1736,9 @@ create table t1 ( fname varchar(255), lname varchar(255) )
engine=ndbcluster;
insert into t1 values ("Young","Foo");
-set engine_condition_pushdown = 0;
+set optimizer_switch = "engine_condition_pushdown=off";
SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%');
-set engine_condition_pushdown = 1;
+set optimizer_switch = "engine_condition_pushdown=on";
SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%');
# make sure optimizer does not do some crazy shortcut
@@ -1747,9 +1747,9 @@ insert into t1 values ("bbb", "bbb");
insert into t1 values ("ccc", "ccc");
insert into t1 values ("ddd", "ddd");
-set engine_condition_pushdown = 0;
+set optimizer_switch = "engine_condition_pushdown=off";
SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%');
-set engine_condition_pushdown = 1;
+set optimizer_switch = "engine_condition_pushdown=on";
SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%');
# bug#29390 (scan filter is too large, discarded)
@@ -1766,7 +1766,7 @@ insert into t1 values (30,3,300,0+0x3333);
insert into t1 values (40,4,400,0+0x4444);
insert into t1 values (50,5,500,0+0x5555);
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
select a,b,d from t1
where b in (0,1,2,5)
@@ -2050,5 +2050,5 @@ select a,b,d from t1
order by b;
--enable_query_log
-set engine_condition_pushdown = @old_ecpd;
+set optimizer_switch = @old_optimizer_switch;
DROP TABLE t1,t2,t3,t4,t5;
diff --git a/mysql-test/suite/ndb/t/ndb_dd_ddl.test b/mysql-test/suite/ndb/t/ndb_dd_ddl.test
index d6de7c45326..48d7b77c412 100644
--- a/mysql-test/suite/ndb/t/ndb_dd_ddl.test
+++ b/mysql-test/suite/ndb/t/ndb_dd_ddl.test
@@ -367,4 +367,104 @@ engine ndb;
--exec rm $MYSQLTEST_VARDIR/tmp/t1.frm
-# End 5.1 test
+--echo
+--echo # -----------------------------------------------------------------
+--echo # End 5.1 test
+--echo # -----------------------------------------------------------------
+
+--echo
+--echo # --
+--echo # -- WL#4300: Define privileges for tablespaces.
+--echo # --
+
+GRANT CREATE TABLESPACE ON *.* TO mysqltest_u1@localhost;
+
+--echo
+
+--disable_warnings
+DROP DATABASE IF EXISTS mysqltest2;
+--enable_warnings
+
+CREATE DATABASE mysqltest2;
+
+GRANT ALL PRIVILEGES ON mysqltest2.* TO mysqltest_u2@localhost;
+
+--echo
+--echo # -- Connection: mysqltest_u1@localhost
+--echo
+--connect(con1, localhost, mysqltest_u1,,)
+
+--echo # -- Grants for mysqltest_u1@localhost:
+SHOW GRANTS;
+
+--echo
+--echo # -- Check CREATE LOGFILE GROUP...
+CREATE LOGFILE GROUP lg1
+ADD UNDOFILE 'undofile.dat'
+INITIAL_SIZE 1M
+UNDO_BUFFER_SIZE = 1M
+ENGINE = NDB;
+
+--echo
+--echo # -- Check ALTER LOGFILE GROUP...
+ALTER LOGFILE GROUP lg1
+ADD UNDOFILE 'undofile02.dat'
+INITIAL_SIZE 1M
+ENGINE = NDB;
+
+--echo
+--echo # -- Check CREATE TABLESPACE...
+CREATE TABLESPACE ts1
+ADD DATAFILE 'datafile.dat'
+USE LOGFILE GROUP lg1
+INITIAL_SIZE 1M
+ENGINE = NDB;
+
+--echo
+--echo # -- Check ALTER TABLESPACE...
+ALTER TABLESPACE ts1
+DROP DATAFILE 'datafile.dat'
+INITIAL_SIZE 1M
+ENGINE = NDB;
+
+--echo
+--echo # -- Connection: mysqltest_u2@localhost
+--echo
+--connect(con2, localhost, mysqltest_u2,,mysqltest2)
+
+--echo # -- Grants for mysqltest_u2@localhost:
+SHOW GRANTS;
+
+CREATE TABLE t1(c INT) TABLESPACE ts1;
+
+DROP TABLE t1;
+
+--echo
+--echo # -- Connection: mysqltest_u1@localhost
+--echo
+--connection con1
+
+--echo
+--echo # -- Check DROP TABLESPACE...
+DROP TABLESPACE ts1
+ENGINE = NDB;
+
+--echo
+--echo # -- Check DROP LOGFILE GROUP...
+DROP LOGFILE GROUP lg1
+ENGINE = NDB;
+
+--echo
+--echo # -- Connection: root@localhost
+--echo
+--connection default
+--disconnect con1
+
+DROP USER mysqltest_u1@localhost;
+DROP USER mysqltest_u2@localhost;
+DROP DATABASE IF EXISTS mysqltest2;
+
+--echo
+--echo # -----------------------------------------------------------------
+--echo # End 6.0 test
+--echo # -----------------------------------------------------------------
diff --git a/mysql-test/suite/ndb/t/ndb_gis.test b/mysql-test/suite/ndb/t/ndb_gis.test
index e14f462c32d..babff535f94 100644
--- a/mysql-test/suite/ndb/t/ndb_gis.test
+++ b/mysql-test/suite/ndb/t/ndb_gis.test
@@ -1,5 +1,5 @@
--source include/have_ndb.inc
SET storage_engine=ndbcluster;
--source include/gis_generic.inc
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
--source include/gis_generic.inc
diff --git a/mysql-test/suite/ndb/t/ndb_index_unique.test b/mysql-test/suite/ndb/t/ndb_index_unique.test
index 78757c3bcf7..9178ace1ad0 100644
--- a/mysql-test/suite/ndb/t/ndb_index_unique.test
+++ b/mysql-test/suite/ndb/t/ndb_index_unique.test
@@ -112,11 +112,11 @@ insert t2 values(1,1,NULL),(2,2,2),(3,3,NULL),(4,4,4),(5,5,NULL),(6,6,6),(7,7,NU
select * from t2 where c IS NULL order by a;
select * from t2 where b = 3 AND c IS NULL order by a;
select * from t2 where (b = 3 OR b = 5) AND c IS NULL order by a;
-set @old_ecpd = @@session.engine_condition_pushdown;
-set engine_condition_pushdown = true;
+set @old_optimizer_switch = @@session.optimizer_switch;
+set optimizer_switch = "engine_condition_pushdown=on";
explain select * from t2 where (b = 3 OR b = 5) AND c IS NULL AND a < 9 order by a;
select * from t2 where (b = 3 OR b = 5) AND c IS NULL AND a < 9 order by a;
-set engine_condition_pushdown = @old_ecpd;
+set optimizer_switch = @old_optimizer_switch;
drop table t2;
diff --git a/mysql-test/suite/parts/inc/partition_alter2_1.inc b/mysql-test/suite/parts/inc/partition_alter2_1.inc
index 92cbc7ba6e6..23c083a70ba 100644
--- a/mysql-test/suite/parts/inc/partition_alter2_1.inc
+++ b/mysql-test/suite/parts/inc/partition_alter2_1.inc
@@ -14,6 +14,8 @@
# Change: Splitted the test in two different parts (increasing/decreasing col) #
################################################################################
+if (!$only_part_2)
+{
--echo
--echo #========================================================================
--echo # 1 Increase the size of the column used in the partitioning
@@ -89,13 +91,16 @@ if ($more_pk_ui_tests)
let $unique= , UNIQUE INDEX uidx (f_int1);
--source suite/parts/inc/partition_alter_11.inc
let $unique= , UNIQUE INDEX uidx (f_int1,f_int2);
- --source suite/parts/inc/partition_alter_11.inc
+ #--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
let $unique= , UNIQUE INDEX uidx (f_int2,f_int1);
- --source suite/parts/inc/partition_alter_11.inc
+ #--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
}
+}
#
+if (!$only_part_1)
+{
--echo #------------------------------------------------------------------------
--echo # 1.3 ALTER column f_int1 and f_int2
--echo # f_int1 or (f_int1 and f_int2) used in partitioning function
@@ -105,7 +110,7 @@ if ($more_pk_ui_tests)
let $alter= ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
--echo # 1.3.1 no PRIMARY KEY or UNIQUE INDEX exists
let $unique= ;
---source suite/parts/inc/partition_alter_11.inc
+#--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
#
if ($do_pk_tests)
@@ -119,10 +124,10 @@ if ($do_pk_tests)
--source suite/parts/inc/partition_alter_11.inc
}
let $unique= , PRIMARY KEY (f_int1,f_int2);
- --source suite/parts/inc/partition_alter_11.inc
+ #--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
let $unique= , PRIMARY KEY (f_int2,f_int1);
- --source suite/parts/inc/partition_alter_11.inc
+ #--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
}
#
@@ -135,11 +140,12 @@ if ($more_pk_ui_tests)
--source suite/parts/inc/partition_alter_11.inc
}
let $unique= , UNIQUE INDEX uidx (f_int1,f_int2);
---source suite/parts/inc/partition_alter_11.inc
+#--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
let $unique= , UNIQUE INDEX uidx (f_int2,f_int1);
---source suite/parts/inc/partition_alter_11.inc
+#--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
+}
if (0)
{
diff --git a/mysql-test/suite/parts/inc/partition_alter2_2.inc b/mysql-test/suite/parts/inc/partition_alter2_2.inc
index 829b0ee661c..37dca19893e 100644
--- a/mysql-test/suite/parts/inc/partition_alter2_2.inc
+++ b/mysql-test/suite/parts/inc/partition_alter2_2.inc
@@ -14,6 +14,8 @@
# Change: Splitted the test in two different parts (increasing/decreasing col) #
################################################################################
+if (!$only_part_2)
+{
--echo
--echo #========================================================================
--echo # 2 Decrease the size of the column used in the partitioning
@@ -95,7 +97,10 @@ if ($more_pk_ui_tests)
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
}
+}
#
+if (!$only_part_1)
+{
--echo #------------------------------------------------------------------------
--echo # 2.3 ALTER column f_int1 and f_int2 used in partitioning function
--echo #------------------------------------------------------------------------
@@ -104,7 +109,7 @@ if ($more_pk_ui_tests)
let $alter= ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
--echo # 2.3.1 no PRIMARY KEY or UNIQUE INDEX exists
let $unique= ;
---source suite/parts/inc/partition_alter_11.inc
+#--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
#
if ($do_pk_tests)
@@ -118,10 +123,10 @@ if ($do_pk_tests)
--source suite/parts/inc/partition_alter_11.inc
}
let $unique= , PRIMARY KEY (f_int1,f_int2);
- --source suite/parts/inc/partition_alter_11.inc
+ #--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
let $unique= , PRIMARY KEY (f_int2,f_int1);
- --source suite/parts/inc/partition_alter_11.inc
+ #--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
}
#
@@ -134,11 +139,12 @@ if ($more_pk_ui_tests)
--source suite/parts/inc/partition_alter_11.inc
}
let $unique= , UNIQUE INDEX uidx (f_int1,f_int2);
---source suite/parts/inc/partition_alter_11.inc
+#--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
let $unique= , UNIQUE INDEX uidx (f_int2,f_int1);
---source suite/parts/inc/partition_alter_11.inc
+#--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
+}
#
if (0)
diff --git a/mysql-test/suite/parts/inc/partition_alter_13.inc b/mysql-test/suite/parts/inc/partition_alter_13.inc
index cfc622a7c82..0964f5ee240 100644
--- a/mysql-test/suite/parts/inc/partition_alter_13.inc
+++ b/mysql-test/suite/parts/inc/partition_alter_13.inc
@@ -92,16 +92,13 @@ $partitioning;
#----------- PARTITION BY RANGE
if ($with_partitioning)
{
---disable_query_log
-eval SET @aux = 'PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
+let $partitioning= PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
(PARTITION parta VALUES LESS THAN (0),
PARTITION partb VALUES LESS THAN ($max_row_div4),
PARTITION partc VALUES LESS THAN ($max_row_div2),
PARTITION partd VALUES LESS THAN ($max_row_div2 + $max_row_div4),
PARTITION parte VALUES LESS THAN ($max_row),
-PARTITION partf VALUES LESS THAN $MAX_VALUE)';
-let $partitioning= `SELECT @aux`;
---enable_query_log
+PARTITION partf VALUES LESS THAN $MAX_VALUE);
}
eval CREATE TABLE t1 (
$column_list
@@ -113,15 +110,11 @@ $partitioning;
#----------- PARTITION BY RANGE -- SUBPARTITION BY HASH
if ($with_partitioning)
{
---disable_query_log
-eval SET @aux =
-'PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
+let $partitioning= PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
(PARTITION parta VALUES LESS THAN (0),
PARTITION partb VALUES LESS THAN ($max_row_div4),
PARTITION partc VALUES LESS THAN ($max_row_div2),
-PARTITION partd VALUES LESS THAN $MAX_VALUE)';
-let $partitioning= `SELECT @aux`;
---enable_query_log
+PARTITION partd VALUES LESS THAN $MAX_VALUE);
}
eval CREATE TABLE t1 (
$column_list
@@ -133,8 +126,7 @@ $partitioning;
#----------- PARTITION BY RANGE -- SUBPARTITION BY KEY
if ($with_partitioning)
{
---disable_query_log
-eval SET @aux = 'PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
+let $partitioning= PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
(PARTITION part1 VALUES LESS THAN (0)
(SUBPARTITION subpart11, SUBPARTITION subpart12),
PARTITION part2 VALUES LESS THAN ($max_row_div4)
@@ -142,9 +134,7 @@ PARTITION part2 VALUES LESS THAN ($max_row_div4)
PARTITION part3 VALUES LESS THAN ($max_row_div2)
(SUBPARTITION subpart31, SUBPARTITION subpart32),
PARTITION part4 VALUES LESS THAN $MAX_VALUE
-(SUBPARTITION subpart41, SUBPARTITION subpart42))';
-let $partitioning= `SELECT @aux`;
---enable_query_log
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
}
eval CREATE TABLE t1 (
$column_list
@@ -176,15 +166,11 @@ $partitioning;
#----------- PARTITION BY LIST -- SUBPARTITION BY KEY
if ($with_partitioning)
{
---disable_query_log
-eval SET @aux =
-'PARTITION BY LIST(ABS(MOD(f_int1,2)))
+let $partitioning= PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS $sub_part_no
(PARTITION part1 VALUES IN (0),
PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL))';
-let $partitioning= `SELECT @aux`;
---enable_query_log
+ PARTITION part3 VALUES IN (NULL));
}
eval CREATE TABLE t1 (
$column_list
diff --git a/mysql-test/suite/parts/inc/partition_key_32col.inc b/mysql-test/suite/parts/inc/partition_key_32col.inc
index 74016d9b556..b0635ca0e9c 100644
--- a/mysql-test/suite/parts/inc/partition_key_32col.inc
+++ b/mysql-test/suite/parts/inc/partition_key_32col.inc
@@ -1,4 +1,4 @@
---error ER_TOO_MANY_KEY_PARTS
+--error ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR
eval create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3)) engine=$engine
partition by key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3) (
partition pa1 max_rows=20 min_rows=2,
diff --git a/mysql-test/suite/parts/inc/partition_mgm.inc b/mysql-test/suite/parts/inc/partition_mgm.inc
index 1ab548222a8..9dfa2b2ffb3 100644
--- a/mysql-test/suite/parts/inc/partition_mgm.inc
+++ b/mysql-test/suite/parts/inc/partition_mgm.inc
@@ -13,6 +13,7 @@
# part_optA-D Extra partitioning options (E.g. INDEX/DATA DIR) #
# #
# have_bug33158 NDB case insensitive create, but case sensitive rename #
+# no_truncate No support for truncate partition #
#------------------------------------------------------------------------------#
# Original Author: mattiasj #
# Original Date: 2008-06-27 #
@@ -518,6 +519,95 @@ DROP TABLE TableA;
}
# End of $can_only_key
+if ($no_truncate)
+{
+--echo # Verify that TRUNCATE PARTITION gives error
+eval CREATE TABLE t1
+(a BIGINT AUTO_INCREMENT PRIMARY KEY,
+ b VARCHAR(255))
+ENGINE = $engine
+PARTITION BY KEY (a)
+(PARTITION LT1000,
+ PARTITION LT2000,
+ PARTITION MAX);
+INSERT INTO t1 VALUES (NULL, "First"), (NULL, "Second"), (999, "Last in LT1000"), (NULL, "First in LT2000"), (NULL, "Second in LT2000"), (1999, "Last in LT2000"), (NULL, "First in MAX"), (NULL, "Second in MAX");
+--error ER_PARTITION_MGMT_ON_NONPARTITIONED, ER_ILLEGAL_HA
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+}
+if (!$no_truncate)
+{
+--echo # Testing TRUNCATE PARTITION
+eval CREATE TABLE t1
+(a BIGINT AUTO_INCREMENT PRIMARY KEY,
+ b VARCHAR(255))
+ENGINE = $engine
+PARTITION BY RANGE (a)
+(PARTITION LT1000 VALUES LESS THAN (1000),
+ PARTITION LT2000 VALUES LESS THAN (2000),
+ PARTITION MAX VALUES LESS THAN MAXVALUE);
+INSERT INTO t1 VALUES (NULL, "First"), (NULL, "Second"), (999, "Last in LT1000"), (NULL, "First in LT2000"), (NULL, "Second in LT2000"), (1999, "Last in LT2000"), (NULL, "First in MAX"), (NULL, "Second in MAX");
+SHOW CREATE TABLE t1;
+SELECT * FROM t1 ORDER BY a;
+ALTER TABLE t1 ANALYZE PARTITION MAX;
+--echo # Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (1)");
+SELECT * FROM t1 WHERE a >= 2000;
+--echo # Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (2)");
+SELECT * FROM t1 WHERE a >= 2000;
+--echo # Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (3)");
+SELECT * FROM t1 WHERE a >= 2000;
+--echo # Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (4)");
+SELECT * FROM t1 WHERE a >= 2000;
+--echo # Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (1)");
+SELECT * FROM t1 ORDER BY a;
+--echo # Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (2)");
+SELECT * FROM t1 ORDER BY a;
+--echo # Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (3)");
+SELECT * FROM t1 ORDER BY a;
+--echo # Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (4)");
+SELECT * FROM t1 ORDER BY a;
+--echo # Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (1)");
+SELECT * FROM t1 ORDER BY a;
+--echo # Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (2)");
+SELECT * FROM t1 ORDER BY a;
+--echo # Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (3)");
+SELECT * FROM t1 ORDER BY a;
+--echo # Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (4)");
+SELECT * FROM t1 ORDER BY a;
+DROP TABLE t1;
+}
--echo # Cleaning up before exit
eval USE $old_db;
DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/inc/partition_syntax.inc b/mysql-test/suite/parts/inc/partition_syntax.inc
index e72aad80f0a..e7eea73325a 100644
--- a/mysql-test/suite/parts/inc/partition_syntax.inc
+++ b/mysql-test/suite/parts/inc/partition_syntax.inc
@@ -312,7 +312,7 @@ PARTITION BY RANGE(f_int1)
--echo #------------------------------------------------------------------------
--echo # 3.5.1 NULL in RANGE partitioning clause
--echo # 3.5.1.1 VALUE LESS THAN (NULL) is not allowed
---error ER_PARSE_ERROR
+--error ER_NULL_IN_VALUES_LESS_THAN
eval CREATE TABLE t1 (
$column_list
)
@@ -320,7 +320,7 @@ PARTITION BY RANGE(f_int1)
( PARTITION part1 VALUES LESS THAN (NULL),
PARTITION part2 VALUES LESS THAN (1000));
--echo # 3.5.1.2 VALUE LESS THAN (NULL) is not allowed
---error ER_PARSE_ERROR
+--error ER_NULL_IN_VALUES_LESS_THAN
eval CREATE TABLE t1 (
$column_list
)
diff --git a/mysql-test/suite/parts/r/partition_alter1_1_2_innodb.result b/mysql-test/suite/parts/r/partition_alter1_1_2_innodb.result
index 5d584e1da8b..8dbb9b44e2f 100644
--- a/mysql-test/suite/parts/r/partition_alter1_1_2_innodb.result
+++ b/mysql-test/suite/parts/r/partition_alter1_1_2_innodb.result
@@ -3571,8 +3571,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
@@ -7585,8 +7585,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
@@ -11712,8 +11712,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
@@ -15854,8 +15854,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
@@ -19892,8 +19892,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
@@ -23914,8 +23914,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
@@ -27936,8 +27936,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
diff --git a/mysql-test/suite/parts/r/partition_alter1_1_2_myisam.result b/mysql-test/suite/parts/r/partition_alter1_1_2_myisam.result
index dda69f141df..887ac403cdb 100644
--- a/mysql-test/suite/parts/r/partition_alter1_1_2_myisam.result
+++ b/mysql-test/suite/parts/r/partition_alter1_1_2_myisam.result
@@ -3808,8 +3808,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
@@ -8098,8 +8098,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
diff --git a/mysql-test/suite/parts/r/partition_alter1_2_innodb.result b/mysql-test/suite/parts/r/partition_alter1_2_innodb.result
index 369882a0427..b25ed98c355 100644
--- a/mysql-test/suite/parts/r/partition_alter1_2_innodb.result
+++ b/mysql-test/suite/parts/r/partition_alter1_2_innodb.result
@@ -14138,8 +14138,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
@@ -17736,8 +17736,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
@@ -21447,8 +21447,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
@@ -25173,8 +25173,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
@@ -28788,8 +28788,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
@@ -32386,8 +32386,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
@@ -36096,8 +36096,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
diff --git a/mysql-test/suite/parts/r/partition_alter1_2_myisam.result b/mysql-test/suite/parts/r/partition_alter1_2_myisam.result
index 4d91af85003..087262f5f89 100644
--- a/mysql-test/suite/parts/r/partition_alter1_2_myisam.result
+++ b/mysql-test/suite/parts/r/partition_alter1_2_myisam.result
@@ -7322,8 +7322,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
@@ -11196,8 +11196,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
@@ -15070,8 +15070,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
diff --git a/mysql-test/suite/parts/r/partition_alter2_1_1_innodb.result b/mysql-test/suite/parts/r/partition_alter2_1_1_innodb.result
new file mode 100644
index 00000000000..1b08b2f74fd
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_alter2_1_1_innodb.result
@@ -0,0 +1,20103 @@
+SET @max_row = 20;
+SET @@session.storage_engine = 'InnoDB';
+
+#------------------------------------------------------------------------
+# 0. Setting of auxiliary variables + Creation of an auxiliary tables
+# needed in many testcases
+#------------------------------------------------------------------------
+SELECT @max_row DIV 2 INTO @max_row_div2;
+SELECT @max_row DIV 3 INTO @max_row_div3;
+SELECT @max_row DIV 4 INTO @max_row_div4;
+SET @max_int_4 = 2147483647;
+DROP TABLE IF EXISTS t0_template;
+CREATE TABLE t0_template (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000) ,
+PRIMARY KEY(f_int1))
+ENGINE = MEMORY;
+# Logging of <max_row> INSERTs into t0_template suppressed
+DROP TABLE IF EXISTS t0_definition;
+CREATE TABLE t0_definition (
+state CHAR(3),
+create_command VARBINARY(5000),
+file_list VARBINARY(10000),
+PRIMARY KEY (state)
+) ENGINE = MEMORY;
+DROP TABLE IF EXISTS t0_aux;
+CREATE TABLE t0_aux ( f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000) )
+ENGINE = MEMORY;
+SET AUTOCOMMIT= 1;
+SET @@session.sql_mode= '';
+# End of basic preparations needed for all tests
+#-----------------------------------------------
+
+#========================================================================
+# 1 Increase the size of the column used in the partitioning
+# function and/or PRIMARY KEY and/or UNIQUE INDEX
+#========================================================================
+#------------------------------------------------------------------------
+# 1.1 ALTER column f_int2 not used in partitioning function
+#------------------------------------------------------------------------
+# 1.1.1 no PRIMARY KEY or UNIQUE INDEX exists
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY HASH(f_int1) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY KEY(f_int1) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY LIST(MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY RANGE(f_int1)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+# 1.1.2 PRIMARY KEY exists
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY HASH(f_int1) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY KEY(f_int1) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY LIST(MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY HASH(f_int1) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY KEY(f_int1) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY LIST(MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+# 1.1.3 UNIQUE INDEX exists
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int1,f_int2)
+)
+PARTITION BY HASH(f_int1) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int1,f_int2)
+)
+PARTITION BY KEY(f_int1) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int1,f_int2)
+)
+PARTITION BY LIST(MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int1,f_int2)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int1,f_int2)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int2,f_int1)
+)
+PARTITION BY HASH(f_int1) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int2,f_int1)
+)
+PARTITION BY KEY(f_int1) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int2,f_int1)
+)
+PARTITION BY LIST(MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int2,f_int1)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int2,f_int1)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+DROP VIEW IF EXISTS v1;
+DROP TABLE IF EXISTS t1;
+DROP TABLE IF EXISTS t0_aux;
+DROP TABLE IF EXISTS t0_definition;
+DROP TABLE IF EXISTS t0_template;
diff --git a/mysql-test/suite/parts/r/partition_alter2_1_2_innodb.result b/mysql-test/suite/parts/r/partition_alter2_1_2_innodb.result
new file mode 100644
index 00000000000..b69fcee1b1f
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_alter2_1_2_innodb.result
@@ -0,0 +1,20089 @@
+SET @max_row = 20;
+SET @@session.storage_engine = 'InnoDB';
+
+#------------------------------------------------------------------------
+# 0. Setting of auxiliary variables + Creation of an auxiliary tables
+# needed in many testcases
+#------------------------------------------------------------------------
+SELECT @max_row DIV 2 INTO @max_row_div2;
+SELECT @max_row DIV 3 INTO @max_row_div3;
+SELECT @max_row DIV 4 INTO @max_row_div4;
+SET @max_int_4 = 2147483647;
+DROP TABLE IF EXISTS t0_template;
+CREATE TABLE t0_template (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000) ,
+PRIMARY KEY(f_int1))
+ENGINE = MEMORY;
+# Logging of <max_row> INSERTs into t0_template suppressed
+DROP TABLE IF EXISTS t0_definition;
+CREATE TABLE t0_definition (
+state CHAR(3),
+create_command VARBINARY(5000),
+file_list VARBINARY(10000),
+PRIMARY KEY (state)
+) ENGINE = MEMORY;
+DROP TABLE IF EXISTS t0_aux;
+CREATE TABLE t0_aux ( f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000) )
+ENGINE = MEMORY;
+SET AUTOCOMMIT= 1;
+SET @@session.sql_mode= '';
+# End of basic preparations needed for all tests
+#-----------------------------------------------
+#------------------------------------------------------------------------
+# 1.3 ALTER column f_int1 and f_int2
+# f_int1 or (f_int1 and f_int2) used in partitioning function
+#------------------------------------------------------------------------
+# 1.3.1 no PRIMARY KEY or UNIQUE INDEX exists
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1 + f_int2)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1,f_int2)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY LIST(MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY HASH (f_int2)
+SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+# 1.3.2 PRIMARY KEY exists
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1 + f_int2)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1,f_int2)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY LIST(MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY HASH (f_int2)
+SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1 + f_int2)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1,f_int2)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY LIST(MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY HASH (f_int2)
+SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) NOT NULL DEFAULT '0',
+ `f_int2` bigint(20) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+# 1.3.3 UNIQUE INDEX exists
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int1,f_int2)
+)
+PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1 + f_int2)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int1,f_int2)
+)
+PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1,f_int2)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int1,f_int2)
+)
+PARTITION BY LIST(MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int1,f_int2)
+)
+PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY HASH (f_int2)
+SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int1,f_int2)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int1,f_int2)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int2,f_int1)
+)
+PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1 + f_int2)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int2,f_int1)
+)
+PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1,f_int2)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int2,f_int1)
+)
+PARTITION BY LIST(MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int2,f_int1)
+)
+PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY HASH (f_int2)
+SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int2,f_int1)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int2,f_int1)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` bigint(20) DEFAULT NULL,
+ `f_int2` bigint(20) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+DROP VIEW IF EXISTS v1;
+DROP TABLE IF EXISTS t1;
+DROP TABLE IF EXISTS t0_aux;
+DROP TABLE IF EXISTS t0_definition;
+DROP TABLE IF EXISTS t0_template;
diff --git a/mysql-test/suite/parts/r/partition_alter2_1_innodb.result b/mysql-test/suite/parts/r/partition_alter2_1_innodb.result
deleted file mode 100644
index fcccd52f571..00000000000
--- a/mysql-test/suite/parts/r/partition_alter2_1_innodb.result
+++ /dev/null
@@ -1,60196 +0,0 @@
-SET @max_row = 20;
-SET @@session.storage_engine = 'InnoDB';
-
-#------------------------------------------------------------------------
-# 0. Setting of auxiliary variables + Creation of an auxiliary tables
-# needed in many testcases
-#------------------------------------------------------------------------
-SELECT @max_row DIV 2 INTO @max_row_div2;
-SELECT @max_row DIV 3 INTO @max_row_div3;
-SELECT @max_row DIV 4 INTO @max_row_div4;
-SET @max_int_4 = 2147483647;
-DROP TABLE IF EXISTS t0_template;
-CREATE TABLE t0_template (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000) ,
-PRIMARY KEY(f_int1))
-ENGINE = MEMORY;
-# Logging of <max_row> INSERTs into t0_template suppressed
-DROP TABLE IF EXISTS t0_definition;
-CREATE TABLE t0_definition (
-state CHAR(3),
-create_command VARBINARY(5000),
-file_list VARBINARY(10000),
-PRIMARY KEY (state)
-) ENGINE = MEMORY;
-DROP TABLE IF EXISTS t0_aux;
-CREATE TABLE t0_aux ( f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000) )
-ENGINE = MEMORY;
-SET AUTOCOMMIT= 1;
-SET @@session.sql_mode= '';
-# End of basic preparations needed for all tests
-#-----------------------------------------------
-
-#========================================================================
-# 1 Increase the size of the column used in the partitioning
-# function and/or PRIMARY KEY and/or UNIQUE INDEX
-#========================================================================
-#------------------------------------------------------------------------
-# 1.1 ALTER column f_int2 not used in partitioning function
-#------------------------------------------------------------------------
-# 1.1.1 no PRIMARY KEY or UNIQUE INDEX exists
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-# 1.1.2 PRIMARY KEY exists
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-# 1.1.3 UNIQUE INDEX exists
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int1,f_int2)
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int1,f_int2)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int1,f_int2)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int2,f_int1)
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int2,f_int1)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int2,f_int1)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-#------------------------------------------------------------------------
-# 1.3 ALTER column f_int1 and f_int2
-# f_int1 or (f_int1 and f_int2) used in partitioning function
-#------------------------------------------------------------------------
-# 1.3.1 no PRIMARY KEY or UNIQUE INDEX exists
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1 + f_int2)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1,f_int2)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY HASH (f_int2)
-SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-# 1.3.2 PRIMARY KEY exists
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1 + f_int2)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1,f_int2)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY LIST(MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY HASH (f_int2)
-SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1 + f_int2)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1,f_int2)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY LIST(MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY HASH (f_int2)
-SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) NOT NULL DEFAULT '0',
- `f_int2` bigint(20) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-# 1.3.3 UNIQUE INDEX exists
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1 + f_int2)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1,f_int2)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY LIST(MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY HASH (f_int2)
-SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1 + f_int2)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1,f_int2)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY LIST(MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY HASH (f_int2)
-SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP VIEW IF EXISTS v1;
-DROP TABLE IF EXISTS t1;
-DROP TABLE IF EXISTS t0_aux;
-DROP TABLE IF EXISTS t0_definition;
-DROP TABLE IF EXISTS t0_template;
diff --git a/mysql-test/suite/parts/r/partition_alter2_1_myisam.result b/mysql-test/suite/parts/r/partition_alter2_1_myisam.result
index 902ce9711be..f2a13497159 100644
--- a/mysql-test/suite/parts/r/partition_alter2_1_myisam.result
+++ b/mysql-test/suite/parts/r/partition_alter2_1_myisam.result
@@ -12521,3882 +12521,6 @@ f_char2 CHAR(20),
f_charbig VARCHAR(1000)
)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-unified filelist
-t1#P#p0.MYD
-t1#P#p0.MYI
-t1#P#p1.MYD
-t1#P#p1.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-unified filelist
-t1#P#p0.MYD
-t1#P#p0.MYI
-t1#P#p1.MYD
-t1#P#p1.MYI
-t1#P#p2.MYD
-t1#P#p2.MYI
-t1#P#p3.MYD
-t1#P#p3.MYI
-t1#P#p4.MYD
-t1#P#p4.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
- PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
- PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
- PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
- PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
- PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
- PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
- PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#part0.MYD
-t1#P#part0.MYI
-t1#P#part1.MYD
-t1#P#part1.MYI
-t1#P#part2.MYD
-t1#P#part2.MYI
-t1#P#part3.MYD
-t1#P#part3.MYI
-t1#P#part_1.MYD
-t1#P#part_1.MYI
-t1#P#part_2.MYD
-t1#P#part_2.MYI
-t1#P#part_3.MYD
-t1#P#part_3.MYI
-t1#P#part_N.MYD
-t1#P#part_N.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#parta.MYD
-t1#P#parta.MYI
-t1#P#partb.MYD
-t1#P#partb.MYI
-t1#P#partc.MYD
-t1#P#partc.MYI
-t1#P#partd.MYD
-t1#P#partd.MYI
-t1#P#parte.MYD
-t1#P#parte.MYI
-t1#P#partf.MYD
-t1#P#partf.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MyISAM 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 = MyISAM,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#parta#SP#partasp0.MYD
-t1#P#parta#SP#partasp0.MYI
-t1#P#parta#SP#partasp1.MYD
-t1#P#parta#SP#partasp1.MYI
-t1#P#partb#SP#partbsp0.MYD
-t1#P#partb#SP#partbsp0.MYI
-t1#P#partb#SP#partbsp1.MYD
-t1#P#partb#SP#partbsp1.MYI
-t1#P#partc#SP#partcsp0.MYD
-t1#P#partc#SP#partcsp0.MYI
-t1#P#partc#SP#partcsp1.MYD
-t1#P#partc#SP#partcsp1.MYI
-t1#P#partd#SP#partdsp0.MYD
-t1#P#partd#SP#partdsp0.MYI
-t1#P#partd#SP#partdsp1.MYD
-t1#P#partd#SP#partdsp1.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MyISAM,
- SUBPARTITION subpart12 ENGINE = MyISAM),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MyISAM,
- SUBPARTITION subpart22 ENGINE = MyISAM),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MyISAM,
- SUBPARTITION subpart32 ENGINE = MyISAM),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MyISAM,
- SUBPARTITION subpart42 ENGINE = MyISAM)) */
-
-unified filelist
-t1#P#part1#SP#subpart11.MYD
-t1#P#part1#SP#subpart11.MYI
-t1#P#part1#SP#subpart12.MYD
-t1#P#part1#SP#subpart12.MYI
-t1#P#part2#SP#subpart21.MYD
-t1#P#part2#SP#subpart21.MYI
-t1#P#part2#SP#subpart22.MYD
-t1#P#part2#SP#subpart22.MYI
-t1#P#part3#SP#subpart31.MYD
-t1#P#part3#SP#subpart31.MYI
-t1#P#part3#SP#subpart32.MYD
-t1#P#part3#SP#subpart32.MYI
-t1#P#part4#SP#subpart41.MYD
-t1#P#part4#SP#subpart41.MYI
-t1#P#part4#SP#subpart42.MYD
-t1#P#part4#SP#subpart42.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MyISAM 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 = MyISAM,
- SUBPARTITION sp12 ENGINE = MyISAM),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MyISAM,
- SUBPARTITION sp22 ENGINE = MyISAM),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MyISAM,
- SUBPARTITION sp32 ENGINE = MyISAM),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MyISAM,
- SUBPARTITION sp42 ENGINE = MyISAM)) */
-
-unified filelist
-t1#P#part1#SP#sp11.MYD
-t1#P#part1#SP#sp11.MYI
-t1#P#part1#SP#sp12.MYD
-t1#P#part1#SP#sp12.MYI
-t1#P#part2#SP#sp21.MYD
-t1#P#part2#SP#sp21.MYI
-t1#P#part2#SP#sp22.MYD
-t1#P#part2#SP#sp22.MYI
-t1#P#part3#SP#sp31.MYD
-t1#P#part3#SP#sp31.MYI
-t1#P#part3#SP#sp32.MYD
-t1#P#part3#SP#sp32.MYI
-t1#P#part4#SP#sp41.MYD
-t1#P#part4#SP#sp41.MYI
-t1#P#part4#SP#sp42.MYD
-t1#P#part4#SP#sp42.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MyISAM 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 = MyISAM,
- PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
- PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#part1#SP#part1sp0.MYD
-t1#P#part1#SP#part1sp0.MYI
-t1#P#part1#SP#part1sp1.MYD
-t1#P#part1#SP#part1sp1.MYI
-t1#P#part1#SP#part1sp2.MYD
-t1#P#part1#SP#part1sp2.MYI
-t1#P#part2#SP#part2sp0.MYD
-t1#P#part2#SP#part2sp0.MYI
-t1#P#part2#SP#part2sp1.MYD
-t1#P#part2#SP#part2sp1.MYI
-t1#P#part2#SP#part2sp2.MYD
-t1#P#part2#SP#part2sp2.MYI
-t1#P#part3#SP#part3sp0.MYD
-t1#P#part3#SP#part3sp0.MYI
-t1#P#part3#SP#part3sp1.MYD
-t1#P#part3#SP#part3sp1.MYI
-t1#P#part3#SP#part3sp2.MYD
-t1#P#part3#SP#part3sp2.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
@@ -19786,8 +15910,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
@@ -20272,4298 +16396,6 @@ f_char2 CHAR(20),
f_charbig VARCHAR(1000)
, UNIQUE INDEX uidx (f_int1,f_int2)
)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-unified filelist
-t1#P#p0.MYD
-t1#P#p0.MYI
-t1#P#p1.MYD
-t1#P#p1.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-unified filelist
-t1#P#p0.MYD
-t1#P#p0.MYI
-t1#P#p1.MYD
-t1#P#p1.MYI
-t1#P#p2.MYD
-t1#P#p2.MYI
-t1#P#p3.MYD
-t1#P#p3.MYI
-t1#P#p4.MYD
-t1#P#p4.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
- PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
- PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
- PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
- PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
- PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
- PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
- PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#part0.MYD
-t1#P#part0.MYI
-t1#P#part1.MYD
-t1#P#part1.MYI
-t1#P#part2.MYD
-t1#P#part2.MYI
-t1#P#part3.MYD
-t1#P#part3.MYI
-t1#P#part_1.MYD
-t1#P#part_1.MYI
-t1#P#part_2.MYD
-t1#P#part_2.MYI
-t1#P#part_3.MYD
-t1#P#part_3.MYI
-t1#P#part_N.MYD
-t1#P#part_N.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#parta.MYD
-t1#P#parta.MYI
-t1#P#partb.MYD
-t1#P#partb.MYI
-t1#P#partc.MYD
-t1#P#partc.MYI
-t1#P#partd.MYD
-t1#P#partd.MYI
-t1#P#parte.MYD
-t1#P#parte.MYI
-t1#P#partf.MYD
-t1#P#partf.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MyISAM 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 = MyISAM,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#parta#SP#partasp0.MYD
-t1#P#parta#SP#partasp0.MYI
-t1#P#parta#SP#partasp1.MYD
-t1#P#parta#SP#partasp1.MYI
-t1#P#partb#SP#partbsp0.MYD
-t1#P#partb#SP#partbsp0.MYI
-t1#P#partb#SP#partbsp1.MYD
-t1#P#partb#SP#partbsp1.MYI
-t1#P#partc#SP#partcsp0.MYD
-t1#P#partc#SP#partcsp0.MYI
-t1#P#partc#SP#partcsp1.MYD
-t1#P#partc#SP#partcsp1.MYI
-t1#P#partd#SP#partdsp0.MYD
-t1#P#partd#SP#partdsp0.MYI
-t1#P#partd#SP#partdsp1.MYD
-t1#P#partd#SP#partdsp1.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MyISAM,
- SUBPARTITION subpart12 ENGINE = MyISAM),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MyISAM,
- SUBPARTITION subpart22 ENGINE = MyISAM),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MyISAM,
- SUBPARTITION subpart32 ENGINE = MyISAM),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MyISAM,
- SUBPARTITION subpart42 ENGINE = MyISAM)) */
-
-unified filelist
-t1#P#part1#SP#subpart11.MYD
-t1#P#part1#SP#subpart11.MYI
-t1#P#part1#SP#subpart12.MYD
-t1#P#part1#SP#subpart12.MYI
-t1#P#part2#SP#subpart21.MYD
-t1#P#part2#SP#subpart21.MYI
-t1#P#part2#SP#subpart22.MYD
-t1#P#part2#SP#subpart22.MYI
-t1#P#part3#SP#subpart31.MYD
-t1#P#part3#SP#subpart31.MYI
-t1#P#part3#SP#subpart32.MYD
-t1#P#part3#SP#subpart32.MYI
-t1#P#part4#SP#subpart41.MYD
-t1#P#part4#SP#subpart41.MYI
-t1#P#part4#SP#subpart42.MYD
-t1#P#part4#SP#subpart42.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MyISAM 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 = MyISAM,
- SUBPARTITION sp12 ENGINE = MyISAM),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MyISAM,
- SUBPARTITION sp22 ENGINE = MyISAM),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MyISAM,
- SUBPARTITION sp32 ENGINE = MyISAM),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MyISAM,
- SUBPARTITION sp42 ENGINE = MyISAM)) */
-
-unified filelist
-t1#P#part1#SP#sp11.MYD
-t1#P#part1#SP#sp11.MYI
-t1#P#part1#SP#sp12.MYD
-t1#P#part1#SP#sp12.MYI
-t1#P#part2#SP#sp21.MYD
-t1#P#part2#SP#sp21.MYI
-t1#P#part2#SP#sp22.MYD
-t1#P#part2#SP#sp22.MYI
-t1#P#part3#SP#sp31.MYD
-t1#P#part3#SP#sp31.MYI
-t1#P#part3#SP#sp32.MYD
-t1#P#part3#SP#sp32.MYI
-t1#P#part4#SP#sp41.MYD
-t1#P#part4#SP#sp41.MYI
-t1#P#part4#SP#sp42.MYD
-t1#P#part4#SP#sp42.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MyISAM 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 = MyISAM,
- PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
- PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#part1#SP#part1sp0.MYD
-t1#P#part1#SP#part1sp0.MYI
-t1#P#part1#SP#part1sp1.MYD
-t1#P#part1#SP#part1sp1.MYI
-t1#P#part1#SP#part1sp2.MYD
-t1#P#part1#SP#part1sp2.MYI
-t1#P#part2#SP#part2sp0.MYD
-t1#P#part2#SP#part2sp0.MYI
-t1#P#part2#SP#part2sp1.MYD
-t1#P#part2#SP#part2sp1.MYI
-t1#P#part2#SP#part2sp2.MYD
-t1#P#part2#SP#part2sp2.MYI
-t1#P#part3#SP#part3sp0.MYD
-t1#P#part3#SP#part3sp0.MYI
-t1#P#part3#SP#part3sp1.MYD
-t1#P#part3#SP#part3sp1.MYI
-t1#P#part3#SP#part3sp2.MYD
-t1#P#part3#SP#part3sp2.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
@@ -28317,4298 +20149,6 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MyISAM 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 = MyISAM,
- PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
- PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#part1#SP#part1sp0.MYD
-t1#P#part1#SP#part1sp0.MYI
-t1#P#part1#SP#part1sp1.MYD
-t1#P#part1#SP#part1sp1.MYI
-t1#P#part1#SP#part1sp2.MYD
-t1#P#part1#SP#part1sp2.MYI
-t1#P#part2#SP#part2sp0.MYD
-t1#P#part2#SP#part2sp0.MYI
-t1#P#part2#SP#part2sp1.MYD
-t1#P#part2#SP#part2sp1.MYI
-t1#P#part2#SP#part2sp2.MYD
-t1#P#part2#SP#part2sp2.MYI
-t1#P#part3#SP#part3sp0.MYD
-t1#P#part3#SP#part3sp0.MYI
-t1#P#part3#SP#part3sp1.MYD
-t1#P#part3#SP#part3sp1.MYI
-t1#P#part3#SP#part3sp2.MYD
-t1#P#part3#SP#part3sp2.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-unified filelist
-t1#P#p0.MYD
-t1#P#p0.MYI
-t1#P#p1.MYD
-t1#P#p1.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-unified filelist
-t1#P#p0.MYD
-t1#P#p0.MYI
-t1#P#p1.MYD
-t1#P#p1.MYI
-t1#P#p2.MYD
-t1#P#p2.MYI
-t1#P#p3.MYD
-t1#P#p3.MYI
-t1#P#p4.MYD
-t1#P#p4.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
- PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
- PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
- PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
- PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
- PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
- PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
- PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#part0.MYD
-t1#P#part0.MYI
-t1#P#part1.MYD
-t1#P#part1.MYI
-t1#P#part2.MYD
-t1#P#part2.MYI
-t1#P#part3.MYD
-t1#P#part3.MYI
-t1#P#part_1.MYD
-t1#P#part_1.MYI
-t1#P#part_2.MYD
-t1#P#part_2.MYI
-t1#P#part_3.MYD
-t1#P#part_3.MYI
-t1#P#part_N.MYD
-t1#P#part_N.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#parta.MYD
-t1#P#parta.MYI
-t1#P#partb.MYD
-t1#P#partb.MYI
-t1#P#partc.MYD
-t1#P#partc.MYI
-t1#P#partd.MYD
-t1#P#partd.MYI
-t1#P#parte.MYD
-t1#P#parte.MYI
-t1#P#partf.MYD
-t1#P#partf.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MyISAM 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 = MyISAM,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#parta#SP#partasp0.MYD
-t1#P#parta#SP#partasp0.MYI
-t1#P#parta#SP#partasp1.MYD
-t1#P#parta#SP#partasp1.MYI
-t1#P#partb#SP#partbsp0.MYD
-t1#P#partb#SP#partbsp0.MYI
-t1#P#partb#SP#partbsp1.MYD
-t1#P#partb#SP#partbsp1.MYI
-t1#P#partc#SP#partcsp0.MYD
-t1#P#partc#SP#partcsp0.MYI
-t1#P#partc#SP#partcsp1.MYD
-t1#P#partc#SP#partcsp1.MYI
-t1#P#partd#SP#partdsp0.MYD
-t1#P#partd#SP#partdsp0.MYI
-t1#P#partd#SP#partdsp1.MYD
-t1#P#partd#SP#partdsp1.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MyISAM,
- SUBPARTITION subpart12 ENGINE = MyISAM),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MyISAM,
- SUBPARTITION subpart22 ENGINE = MyISAM),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MyISAM,
- SUBPARTITION subpart32 ENGINE = MyISAM),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MyISAM,
- SUBPARTITION subpart42 ENGINE = MyISAM)) */
-
-unified filelist
-t1#P#part1#SP#subpart11.MYD
-t1#P#part1#SP#subpart11.MYI
-t1#P#part1#SP#subpart12.MYD
-t1#P#part1#SP#subpart12.MYI
-t1#P#part2#SP#subpart21.MYD
-t1#P#part2#SP#subpart21.MYI
-t1#P#part2#SP#subpart22.MYD
-t1#P#part2#SP#subpart22.MYI
-t1#P#part3#SP#subpart31.MYD
-t1#P#part3#SP#subpart31.MYI
-t1#P#part3#SP#subpart32.MYD
-t1#P#part3#SP#subpart32.MYI
-t1#P#part4#SP#subpart41.MYD
-t1#P#part4#SP#subpart41.MYI
-t1#P#part4#SP#subpart42.MYD
-t1#P#part4#SP#subpart42.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` bigint(20) DEFAULT NULL,
- `f_int2` bigint(20) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MyISAM 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 = MyISAM,
- SUBPARTITION sp12 ENGINE = MyISAM),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MyISAM,
- SUBPARTITION sp22 ENGINE = MyISAM),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MyISAM,
- SUBPARTITION sp32 ENGINE = MyISAM),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MyISAM,
- SUBPARTITION sp42 ENGINE = MyISAM)) */
-
-unified filelist
-t1#P#part1#SP#sp11.MYD
-t1#P#part1#SP#sp11.MYI
-t1#P#part1#SP#sp12.MYD
-t1#P#part1#SP#sp12.MYI
-t1#P#part2#SP#sp21.MYD
-t1#P#part2#SP#sp21.MYI
-t1#P#part2#SP#sp22.MYD
-t1#P#part2#SP#sp22.MYI
-t1#P#part3#SP#sp31.MYD
-t1#P#part3#SP#sp31.MYI
-t1#P#part3#SP#sp32.MYD
-t1#P#part3#SP#sp32.MYI
-t1#P#part4#SP#sp41.MYD
-t1#P#part4#SP#sp41.MYI
-t1#P#part4#SP#sp42.MYD
-t1#P#part4#SP#sp42.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
PARTITION part2 VALUES IN (1),
PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
@@ -32628,10 +20168,10 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
+ UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY (f_int1)
+SUBPARTITION BY KEY (f_int2)
SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
@@ -36899,8 +24439,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
diff --git a/mysql-test/suite/parts/r/partition_alter2_2_1_innodb.result b/mysql-test/suite/parts/r/partition_alter2_2_1_innodb.result
new file mode 100644
index 00000000000..1ff53af9111
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_alter2_2_1_innodb.result
@@ -0,0 +1,20162 @@
+SET @max_row = 20;
+SET @@session.storage_engine = 'InnoDB';
+
+#------------------------------------------------------------------------
+# 0. Setting of auxiliary variables + Creation of an auxiliary tables
+# needed in many testcases
+#------------------------------------------------------------------------
+SELECT @max_row DIV 2 INTO @max_row_div2;
+SELECT @max_row DIV 3 INTO @max_row_div3;
+SELECT @max_row DIV 4 INTO @max_row_div4;
+SET @max_int_4 = 2147483647;
+DROP TABLE IF EXISTS t0_template;
+CREATE TABLE t0_template (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000) ,
+PRIMARY KEY(f_int1))
+ENGINE = MEMORY;
+# Logging of <max_row> INSERTs into t0_template suppressed
+DROP TABLE IF EXISTS t0_definition;
+CREATE TABLE t0_definition (
+state CHAR(3),
+create_command VARBINARY(5000),
+file_list VARBINARY(10000),
+PRIMARY KEY (state)
+) ENGINE = MEMORY;
+DROP TABLE IF EXISTS t0_aux;
+CREATE TABLE t0_aux ( f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000) )
+ENGINE = MEMORY;
+SET AUTOCOMMIT= 1;
+SET @@session.sql_mode= '';
+# End of basic preparations needed for all tests
+#-----------------------------------------------
+
+#========================================================================
+# 2 Decrease the size of the column used in the partitioning
+# function and/or PRIMARY KEY and/or UNIQUE INDEX
+#========================================================================
+#------------------------------------------------------------------------
+# 2.1 ALTER column f_int2 not used in partitioning function
+#------------------------------------------------------------------------
+# 2.1.1 no PRIMARY KEY or UNIQUE INDEX exists
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY HASH(f_int1) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY KEY(f_int1) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY LIST(MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY RANGE(f_int1)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY HASH(f_int1) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY KEY(f_int1) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY LIST(MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY HASH(f_int1) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY KEY(f_int1) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY LIST(MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+# 2.1.3 UNIQUE INDEX exists
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int1,f_int2)
+)
+PARTITION BY HASH(f_int1) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int1,f_int2)
+)
+PARTITION BY KEY(f_int1) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int1,f_int2)
+)
+PARTITION BY LIST(MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int1,f_int2)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int1,f_int2)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int2,f_int1)
+)
+PARTITION BY HASH(f_int1) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int2,f_int1)
+)
+PARTITION BY KEY(f_int1) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int2,f_int1)
+)
+PARTITION BY LIST(MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int1)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+ERROR HY000: Table has no partition for value 2147483647
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int2,f_int1)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx1 (f_int2,f_int1)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` int(11) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+DROP VIEW IF EXISTS v1;
+DROP TABLE IF EXISTS t1;
+DROP TABLE IF EXISTS t0_aux;
+DROP TABLE IF EXISTS t0_definition;
+DROP TABLE IF EXISTS t0_template;
diff --git a/mysql-test/suite/parts/r/partition_alter2_2_2_innodb.result b/mysql-test/suite/parts/r/partition_alter2_2_2_innodb.result
new file mode 100644
index 00000000000..1859859b24f
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_alter2_2_2_innodb.result
@@ -0,0 +1,20238 @@
+SET @max_row = 20;
+SET @@session.storage_engine = 'InnoDB';
+
+#------------------------------------------------------------------------
+# 0. Setting of auxiliary variables + Creation of an auxiliary tables
+# needed in many testcases
+#------------------------------------------------------------------------
+SELECT @max_row DIV 2 INTO @max_row_div2;
+SELECT @max_row DIV 3 INTO @max_row_div3;
+SELECT @max_row DIV 4 INTO @max_row_div4;
+SET @max_int_4 = 2147483647;
+DROP TABLE IF EXISTS t0_template;
+CREATE TABLE t0_template (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000) ,
+PRIMARY KEY(f_int1))
+ENGINE = MEMORY;
+# Logging of <max_row> INSERTs into t0_template suppressed
+DROP TABLE IF EXISTS t0_definition;
+CREATE TABLE t0_definition (
+state CHAR(3),
+create_command VARBINARY(5000),
+file_list VARBINARY(10000),
+PRIMARY KEY (state)
+) ENGINE = MEMORY;
+DROP TABLE IF EXISTS t0_aux;
+CREATE TABLE t0_aux ( f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000) )
+ENGINE = MEMORY;
+SET AUTOCOMMIT= 1;
+SET @@session.sql_mode= '';
+# End of basic preparations needed for all tests
+#-----------------------------------------------
+#------------------------------------------------------------------------
+# 2.3 ALTER column f_int1 and f_int2 used in partitioning function
+#------------------------------------------------------------------------
+# 2.3.1 no PRIMARY KEY or UNIQUE INDEX exists
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1 + f_int2)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1,f_int2)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY LIST(MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY HASH (f_int2)
+SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+# check prerequisites-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+# 2.3.2 PRIMARY KEY exists
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1 + f_int2)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1,f_int2)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY LIST(MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY HASH (f_int2)
+SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int1,f_int2)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1 + f_int2)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1,f_int2)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY LIST(MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY HASH (f_int2)
+SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, PRIMARY KEY (f_int2,f_int1)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) NOT NULL DEFAULT '0',
+ `f_int2` mediumint(9) NOT NULL DEFAULT '0',
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ PRIMARY KEY (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+ERROR 23000: Column 'f_int1' cannot be null
+# check null success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+# 2.3.3 UNIQUE INDEX exists
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int1,f_int2)
+)
+PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1 + f_int2)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int1,f_int2)
+)
+PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1,f_int2)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int1,f_int2)
+)
+PARTITION BY LIST(MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int1,f_int2)
+)
+PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY HASH (f_int2)
+SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int1,f_int2)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int1,f_int2)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int1,f_int2)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int2,f_int1)
+)
+PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY HASH (f_int1 + f_int2)
+PARTITIONS 2 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int2,f_int1)
+)
+PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY KEY (f_int1,f_int2)
+PARTITIONS 5 */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int2,f_int1)
+)
+PARTITION BY LIST(MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3),
+PARTITION part_2 VALUES IN (-2),
+PARTITION part_1 VALUES IN (-1),
+PARTITION part_N VALUES IN (NULL),
+PARTITION part0 VALUES IN (0),
+PARTITION part1 VALUES IN (1),
+PARTITION part2 VALUES IN (2),
+PARTITION part3 VALUES IN (3));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
+(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
+ PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
+ PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
+ PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
+ PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
+ PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int2,f_int1)
+)
+PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (10 + 5),
+PARTITION parte VALUES LESS THAN (20),
+PARTITION partf VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0),
+PARTITION partb VALUES LESS THAN (5),
+PARTITION partc VALUES LESS THAN (10),
+PARTITION partd VALUES LESS THAN (2147483646));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY HASH (f_int2)
+SUBPARTITIONS 2
+(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int2,f_int1)
+)
+PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+(SUBPARTITION subpart11, SUBPARTITION subpart12),
+PARTITION part2 VALUES LESS THAN (5)
+(SUBPARTITION subpart21, SUBPARTITION subpart22),
+PARTITION part3 VALUES LESS THAN (10)
+(SUBPARTITION subpart31, SUBPARTITION subpart32),
+PARTITION part4 VALUES LESS THAN (2147483646)
+(SUBPARTITION subpart41, SUBPARTITION subpart42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (f_int1)
+SUBPARTITION BY KEY (f_int2)
+(PARTITION part1 VALUES LESS THAN (0)
+ (SUBPARTITION subpart11 ENGINE = InnoDB,
+ SUBPARTITION subpart12 ENGINE = InnoDB),
+ PARTITION part2 VALUES LESS THAN (5)
+ (SUBPARTITION subpart21 ENGINE = InnoDB,
+ SUBPARTITION subpart22 ENGINE = InnoDB),
+ PARTITION part3 VALUES LESS THAN (10)
+ (SUBPARTITION subpart31 ENGINE = InnoDB,
+ SUBPARTITION subpart32 ENGINE = InnoDB),
+ PARTITION part4 VALUES LESS THAN (2147483646)
+ (SUBPARTITION subpart41 ENGINE = InnoDB,
+ SUBPARTITION subpart42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int2,f_int1)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
+(PARTITION part1 VALUES IN (0)
+(SUBPARTITION sp11, SUBPARTITION sp12),
+PARTITION part2 VALUES IN (1)
+(SUBPARTITION sp21, SUBPARTITION sp22),
+PARTITION part3 VALUES IN (2)
+(SUBPARTITION sp31, SUBPARTITION sp32),
+PARTITION part4 VALUES IN (NULL)
+(SUBPARTITION sp41, SUBPARTITION sp42));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ SUBPARTITION sp12 ENGINE = InnoDB),
+ PARTITION part2 VALUES IN (1)
+ (SUBPARTITION sp21 ENGINE = InnoDB,
+ SUBPARTITION sp22 ENGINE = InnoDB),
+ PARTITION part3 VALUES IN (2)
+ (SUBPARTITION sp31 ENGINE = InnoDB,
+ SUBPARTITION sp32 ENGINE = InnoDB),
+ PARTITION part4 VALUES IN (NULL)
+ (SUBPARTITION sp41 ENGINE = InnoDB,
+ SUBPARTITION sp42 ENGINE = InnoDB)) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+CREATE TABLE t1 (
+f_int1 INTEGER,
+f_int2 INTEGER,
+f_char1 CHAR(20),
+f_char2 CHAR(20),
+f_charbig VARCHAR(1000)
+, UNIQUE INDEX uidx (f_int2,f_int1)
+)
+PARTITION BY LIST(ABS(MOD(f_int1,2)))
+SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
+(PARTITION part1 VALUES IN (0),
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
+ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
+# Start usability test (inc/partition_check.inc)
+create_command
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f_int1` mediumint(9) DEFAULT NULL,
+ `f_int2` mediumint(9) DEFAULT NULL,
+ `f_char1` char(20) DEFAULT NULL,
+ `f_char2` char(20) DEFAULT NULL,
+ `f_charbig` varchar(1000) DEFAULT NULL,
+ UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
+) ENGINE=InnoDB 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 = InnoDB,
+ PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
+ PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
+
+# check prerequisites-1 success: 1
+# check COUNT(*) success: 1
+# check MIN/MAX(f_int1) success: 1
+# check MIN/MAX(f_int2) success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+ERROR 23000: Duplicate entry '2-2' for key 'uidx'
+# check prerequisites-3 success: 1
+# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
+CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
+WHERE f_int1 IN (2,3);
+DELETE FROM t1 WHERE f_charbig = 'delete me';
+# check read via f_int1 success: 1
+# check read via f_int2 success: 1
+
+# check multiple-1 success: 1
+DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
+
+# check multiple-2 success: 1
+INSERT INTO t1 SELECT * FROM t0_template
+WHERE MOD(f_int1,3) = 0;
+
+# check multiple-3 success: 1
+UPDATE t1 SET f_int1 = f_int1 + @max_row
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
+AND @max_row_div2 + @max_row_div4;
+
+# check multiple-4 success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
+AND @max_row_div2 + @max_row_div4 + @max_row;
+
+# check multiple-5 success: 1
+SELECT COUNT(*) INTO @try_count FROM t0_template
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT COUNT(*) INTO @clash_count
+FROM t1 INNER JOIN t0_template USING(f_int1)
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-1 success: 1
+SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
+INSERT INTO t1
+SET f_int1 = @cur_value , f_int2 = @cur_value,
+f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
+f_charbig = '#SINGLE#';
+
+# check single-2 success: 1
+SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
+SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value2
+WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
+
+# check single-3 success: 1
+SET @cur_value1= -1;
+SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
+UPDATE t1 SET f_int1 = @cur_value1
+WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
+
+# check single-4 success: 1
+SELECT MAX(f_int1) INTO @cur_value FROM t1;
+DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
+
+# check single-5 success: 1
+DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
+
+# check single-6 success: 1
+INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
+Warnings:
+Warning 1264 Out of range value for column 'f_int1' at row 1
+Warning 1264 Out of range value for column 'f_int2' at row 1
+
+# check single-7 success: 1
+DELETE FROM t1 WHERE f_charbig = '#2147483647##';
+DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
+INSERT t1 SET f_int1 = 0 , f_int2 = 0,
+f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
+f_charbig = '#NULL#';
+INSERT INTO t1
+SET f_int1 = NULL , f_int2 = -@max_row,
+f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
+f_charbig = '#NULL#';
+# check null success: 1
+
+# check null-1 success: 1
+UPDATE t1 SET f_int1 = -@max_row
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-2 success: 1
+UPDATE t1 SET f_int1 = NULL
+WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-3 success: 1
+DELETE FROM t1
+WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
+AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
+
+# check null-4 success: 1
+DELETE FROM t1
+WHERE f_int1 = 0 AND f_int2 = 0
+AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
+AND f_charbig = '#NULL#';
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0
+AND f_int1 BETWEEN @max_row_div2 AND @max_row
+ON DUPLICATE KEY
+UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
+f_int2 = 2 * @max_row + source_tab.f_int1,
+f_charbig = 'was updated';
+
+# check unique-1-a success: 1
+
+# check unique-1-b success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===')
+WHERE f_charbig = 'was updated';
+REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
+ FROM t0_template source_tab
+WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
+
+# check replace success: 1
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
+DELETE FROM t1
+WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
+f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
+UPDATE t1 SET f_int2 = f_int1,
+f_char1 = CAST(f_int1 AS CHAR),
+f_char2 = CAST(f_int1 AS CHAR),
+f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
+WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
+SET AUTOCOMMIT= 0;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-1 success: 1
+COMMIT WORK;
+
+# check transactions-2 success: 1
+ROLLBACK WORK;
+
+# check transactions-3 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+ROLLBACK WORK;
+
+# check transactions-4 success: 1
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, '', '', 'was inserted'
+FROM t0_template source_tab
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+
+# check transactions-5 success: 1
+ROLLBACK WORK;
+
+# check transactions-6 success: 1
+# INFO: Storage engine used for t1 seems to be transactional.
+COMMIT;
+
+# check transactions-7 success: 1
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+SET @@session.sql_mode = 'traditional';
+SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
+'', '', 'was inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
+ERROR 22012: Division by 0
+COMMIT;
+
+# check transactions-8 success: 1
+# INFO: Storage engine used for t1 seems to be able to revert
+# changes made by the failing statement.
+SET @@session.sql_mode = '';
+SET AUTOCOMMIT= 1;
+DELETE FROM t1 WHERE f_charbig = 'was inserted';
+COMMIT WORK;
+UPDATE t1 SET f_charbig = REPEAT('b', 1000);
+
+# check special-1 success: 1
+UPDATE t1 SET f_charbig = '';
+
+# check special-2 success: 1
+UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
+INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-1 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+
+# check trigger-2 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-3 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-4 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = new.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-5 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-6 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-7 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
+SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
+'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
+BEGIN
+UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
+f_charbig = 'updated by trigger'
+ WHERE f_int1 = - old.f_int1;
+END|
+DELETE FROM t0_aux
+WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
+
+# check trigger-8 success: 1
+DROP TRIGGER trg_1;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = 'just inserted'
+ WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
+DELETE FROM t0_aux
+WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+DELETE FROM t1
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = old.f_int1 + @max_row,
+new.f_int2 = old.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-9 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = new.f_int1 + @max_row,
+new.f_int2 = new.f_int2 - @max_row,
+new.f_charbig = '####updated per update trigger####';
+END|
+UPDATE t1
+SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
+f_charbig = '####updated per update statement itself####';
+
+# check trigger-10 success: 1
+DROP TRIGGER trg_2;
+UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
+f_int2 = CAST(f_char1 AS SIGNED INT),
+f_charbig = CONCAT('===',f_char1,'===');
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
+SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-11 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+SET new.f_int1 = @my_max1 + @counter,
+new.f_int2 = @my_min2 - @counter,
+new.f_charbig = '####updated per insert trigger####';
+SET @counter = @counter + 1;
+END|
+SET @counter = 1;
+SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
+INSERT INTO t1 (f_char1, f_char2, f_charbig)
+SELECT CAST(f_int1 AS CHAR),
+CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
+WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
+ORDER BY f_int1;
+DROP TRIGGER trg_3;
+
+# check trigger-12 success: 1
+DELETE FROM t1
+WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
+AND f_int2 <> CAST(f_char1 AS SIGNED INT)
+AND f_charbig = '####updated per insert trigger####';
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+CHECK TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CHECKSUM TABLE t1 EXTENDED;
+Table Checksum
+test.t1 <some_value>
+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
+# check layout success: 1
+REPAIR TABLE t1 EXTENDED;
+Table Op Msg_type Msg_text
+test.t1 repair note The storage engine for the table doesn't support repair
+# check layout success: 1
+TRUNCATE t1;
+
+# check TRUNCATE success: 1
+# check layout success: 1
+# End usability test (inc/partition_check.inc)
+DROP TABLE t1;
+DROP VIEW IF EXISTS v1;
+DROP TABLE IF EXISTS t1;
+DROP TABLE IF EXISTS t0_aux;
+DROP TABLE IF EXISTS t0_definition;
+DROP TABLE IF EXISTS t0_template;
diff --git a/mysql-test/suite/parts/r/partition_alter2_2_innodb.result b/mysql-test/suite/parts/r/partition_alter2_2_innodb.result
deleted file mode 100644
index cb9ea4ed60a..00000000000
--- a/mysql-test/suite/parts/r/partition_alter2_2_innodb.result
+++ /dev/null
@@ -1,60544 +0,0 @@
-SET @max_row = 20;
-SET @@session.storage_engine = 'InnoDB';
-
-#------------------------------------------------------------------------
-# 0. Setting of auxiliary variables + Creation of an auxiliary tables
-# needed in many testcases
-#------------------------------------------------------------------------
-SELECT @max_row DIV 2 INTO @max_row_div2;
-SELECT @max_row DIV 3 INTO @max_row_div3;
-SELECT @max_row DIV 4 INTO @max_row_div4;
-SET @max_int_4 = 2147483647;
-DROP TABLE IF EXISTS t0_template;
-CREATE TABLE t0_template (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000) ,
-PRIMARY KEY(f_int1))
-ENGINE = MEMORY;
-# Logging of <max_row> INSERTs into t0_template suppressed
-DROP TABLE IF EXISTS t0_definition;
-CREATE TABLE t0_definition (
-state CHAR(3),
-create_command VARBINARY(5000),
-file_list VARBINARY(10000),
-PRIMARY KEY (state)
-) ENGINE = MEMORY;
-DROP TABLE IF EXISTS t0_aux;
-CREATE TABLE t0_aux ( f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000) )
-ENGINE = MEMORY;
-SET AUTOCOMMIT= 1;
-SET @@session.sql_mode= '';
-# End of basic preparations needed for all tests
-#-----------------------------------------------
-
-#========================================================================
-# 2 Decrease the size of the column used in the partitioning
-# function and/or PRIMARY KEY and/or UNIQUE INDEX
-#========================================================================
-#------------------------------------------------------------------------
-# 2.1 ALTER column f_int2 not used in partitioning function
-#------------------------------------------------------------------------
-# 2.1.1 no PRIMARY KEY or UNIQUE INDEX exists
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-# 2.1.3 UNIQUE INDEX exists
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int1,f_int2)
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int1,f_int2)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int1,f_int2)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int2,f_int1)
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int2,f_int1)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int2,f_int1)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-ERROR HY000: Table has no partition for value 2147483647
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx1 (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` int(11) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-#------------------------------------------------------------------------
-# 2.3 ALTER column f_int1 and f_int2 used in partitioning function
-#------------------------------------------------------------------------
-# 2.3.1 no PRIMARY KEY or UNIQUE INDEX exists
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1 + f_int2)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1,f_int2)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY HASH (f_int2)
-SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-# 2.3.2 PRIMARY KEY exists
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1 + f_int2)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1,f_int2)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY LIST(MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY HASH (f_int2)
-SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1 + f_int2)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1,f_int2)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY LIST(MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY HASH (f_int2)
-SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, PRIMARY KEY (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) NOT NULL DEFAULT '0',
- `f_int2` mediumint(9) NOT NULL DEFAULT '0',
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- PRIMARY KEY (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-ERROR 23000: Column 'f_int1' cannot be null
-# check null success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-# 2.3.3 UNIQUE INDEX exists
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1 + f_int2)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1,f_int2)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY LIST(MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY HASH (f_int2)
-SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1 + f_int2)
-PARTITIONS 2 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1,f_int2)
-PARTITIONS 5 */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY LIST(MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
- PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
- PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
- PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
- PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
- PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
- PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY HASH (f_int2)
-SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
- PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
- PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int2)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = InnoDB,
- SUBPARTITION subpart12 ENGINE = InnoDB),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = InnoDB,
- SUBPARTITION subpart22 ENGINE = InnoDB),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = InnoDB,
- SUBPARTITION subpart32 ENGINE = InnoDB),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = InnoDB,
- SUBPARTITION subpart42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- SUBPARTITION sp12 ENGINE = InnoDB),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = InnoDB,
- SUBPARTITION sp22 ENGINE = InnoDB),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = InnoDB,
- SUBPARTITION sp32 ENGINE = InnoDB),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = InnoDB,
- SUBPARTITION sp42 ENGINE = InnoDB)) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=InnoDB 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 = InnoDB,
- PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
- PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be able to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-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
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair note The storage engine for the table doesn't support repair
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP VIEW IF EXISTS v1;
-DROP TABLE IF EXISTS t1;
-DROP TABLE IF EXISTS t0_aux;
-DROP TABLE IF EXISTS t0_definition;
-DROP TABLE IF EXISTS t0_template;
diff --git a/mysql-test/suite/parts/r/partition_alter2_2_myisam.result b/mysql-test/suite/parts/r/partition_alter2_2_myisam.result
index 630ad0aaf08..70e869f48fb 100644
--- a/mysql-test/suite/parts/r/partition_alter2_2_myisam.result
+++ b/mysql-test/suite/parts/r/partition_alter2_2_myisam.result
@@ -12556,3910 +12556,6 @@ f_char2 CHAR(20),
f_charbig VARCHAR(1000)
)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-unified filelist
-t1#P#p0.MYD
-t1#P#p0.MYI
-t1#P#p1.MYD
-t1#P#p1.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-unified filelist
-t1#P#p0.MYD
-t1#P#p0.MYI
-t1#P#p1.MYD
-t1#P#p1.MYI
-t1#P#p2.MYD
-t1#P#p2.MYI
-t1#P#p3.MYD
-t1#P#p3.MYI
-t1#P#p4.MYD
-t1#P#p4.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
- PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
- PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
- PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
- PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
- PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
- PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
- PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#part0.MYD
-t1#P#part0.MYI
-t1#P#part1.MYD
-t1#P#part1.MYI
-t1#P#part2.MYD
-t1#P#part2.MYI
-t1#P#part3.MYD
-t1#P#part3.MYI
-t1#P#part_1.MYD
-t1#P#part_1.MYI
-t1#P#part_2.MYD
-t1#P#part_2.MYI
-t1#P#part_3.MYD
-t1#P#part_3.MYI
-t1#P#part_N.MYD
-t1#P#part_N.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#parta.MYD
-t1#P#parta.MYI
-t1#P#partb.MYD
-t1#P#partb.MYI
-t1#P#partc.MYD
-t1#P#partc.MYI
-t1#P#partd.MYD
-t1#P#partd.MYI
-t1#P#parte.MYD
-t1#P#parte.MYI
-t1#P#partf.MYD
-t1#P#partf.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MyISAM 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 = MyISAM,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#parta#SP#partasp0.MYD
-t1#P#parta#SP#partasp0.MYI
-t1#P#parta#SP#partasp1.MYD
-t1#P#parta#SP#partasp1.MYI
-t1#P#partb#SP#partbsp0.MYD
-t1#P#partb#SP#partbsp0.MYI
-t1#P#partb#SP#partbsp1.MYD
-t1#P#partb#SP#partbsp1.MYI
-t1#P#partc#SP#partcsp0.MYD
-t1#P#partc#SP#partcsp0.MYI
-t1#P#partc#SP#partcsp1.MYD
-t1#P#partc#SP#partcsp1.MYI
-t1#P#partd#SP#partdsp0.MYD
-t1#P#partd#SP#partdsp0.MYI
-t1#P#partd#SP#partdsp1.MYD
-t1#P#partd#SP#partdsp1.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MyISAM,
- SUBPARTITION subpart12 ENGINE = MyISAM),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MyISAM,
- SUBPARTITION subpart22 ENGINE = MyISAM),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MyISAM,
- SUBPARTITION subpart32 ENGINE = MyISAM),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MyISAM,
- SUBPARTITION subpart42 ENGINE = MyISAM)) */
-
-unified filelist
-t1#P#part1#SP#subpart11.MYD
-t1#P#part1#SP#subpart11.MYI
-t1#P#part1#SP#subpart12.MYD
-t1#P#part1#SP#subpart12.MYI
-t1#P#part2#SP#subpart21.MYD
-t1#P#part2#SP#subpart21.MYI
-t1#P#part2#SP#subpart22.MYD
-t1#P#part2#SP#subpart22.MYI
-t1#P#part3#SP#subpart31.MYD
-t1#P#part3#SP#subpart31.MYI
-t1#P#part3#SP#subpart32.MYD
-t1#P#part3#SP#subpart32.MYI
-t1#P#part4#SP#subpart41.MYD
-t1#P#part4#SP#subpart41.MYI
-t1#P#part4#SP#subpart42.MYD
-t1#P#part4#SP#subpart42.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MyISAM 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 = MyISAM,
- SUBPARTITION sp12 ENGINE = MyISAM),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MyISAM,
- SUBPARTITION sp22 ENGINE = MyISAM),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MyISAM,
- SUBPARTITION sp32 ENGINE = MyISAM),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MyISAM,
- SUBPARTITION sp42 ENGINE = MyISAM)) */
-
-unified filelist
-t1#P#part1#SP#sp11.MYD
-t1#P#part1#SP#sp11.MYI
-t1#P#part1#SP#sp12.MYD
-t1#P#part1#SP#sp12.MYI
-t1#P#part2#SP#sp21.MYD
-t1#P#part2#SP#sp21.MYI
-t1#P#part2#SP#sp22.MYD
-t1#P#part2#SP#sp22.MYI
-t1#P#part3#SP#sp31.MYD
-t1#P#part3#SP#sp31.MYI
-t1#P#part3#SP#sp32.MYD
-t1#P#part3#SP#sp32.MYI
-t1#P#part4#SP#sp41.MYD
-t1#P#part4#SP#sp41.MYI
-t1#P#part4#SP#sp42.MYD
-t1#P#part4#SP#sp42.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MyISAM 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 = MyISAM,
- PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
- PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#part1#SP#part1sp0.MYD
-t1#P#part1#SP#part1sp0.MYI
-t1#P#part1#SP#part1sp1.MYD
-t1#P#part1#SP#part1sp1.MYI
-t1#P#part1#SP#part1sp2.MYD
-t1#P#part1#SP#part1sp2.MYI
-t1#P#part2#SP#part2sp0.MYD
-t1#P#part2#SP#part2sp0.MYI
-t1#P#part2#SP#part2sp1.MYD
-t1#P#part2#SP#part2sp1.MYI
-t1#P#part2#SP#part2sp2.MYD
-t1#P#part2#SP#part2sp2.MYI
-t1#P#part3#SP#part3sp0.MYD
-t1#P#part3#SP#part3sp0.MYI
-t1#P#part3#SP#part3sp1.MYD
-t1#P#part3#SP#part3sp1.MYI
-t1#P#part3#SP#part3sp2.MYD
-t1#P#part3#SP#part3sp2.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-# check prerequisites-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-
-)
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
@@ -19876,8 +15972,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
@@ -20365,4326 +16461,6 @@ f_char2 CHAR(20),
f_charbig VARCHAR(1000)
, UNIQUE INDEX uidx (f_int1,f_int2)
)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-unified filelist
-t1#P#p0.MYD
-t1#P#p0.MYI
-t1#P#p1.MYD
-t1#P#p1.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-unified filelist
-t1#P#p0.MYD
-t1#P#p0.MYI
-t1#P#p1.MYD
-t1#P#p1.MYI
-t1#P#p2.MYD
-t1#P#p2.MYI
-t1#P#p3.MYD
-t1#P#p3.MYI
-t1#P#p4.MYD
-t1#P#p4.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
- PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
- PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
- PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
- PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
- PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
- PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
- PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#part0.MYD
-t1#P#part0.MYI
-t1#P#part1.MYD
-t1#P#part1.MYI
-t1#P#part2.MYD
-t1#P#part2.MYI
-t1#P#part3.MYD
-t1#P#part3.MYI
-t1#P#part_1.MYD
-t1#P#part_1.MYI
-t1#P#part_2.MYD
-t1#P#part_2.MYI
-t1#P#part_3.MYD
-t1#P#part_3.MYI
-t1#P#part_N.MYD
-t1#P#part_N.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#parta.MYD
-t1#P#parta.MYI
-t1#P#partb.MYD
-t1#P#partb.MYI
-t1#P#partc.MYD
-t1#P#partc.MYI
-t1#P#partd.MYD
-t1#P#partd.MYI
-t1#P#parte.MYD
-t1#P#parte.MYI
-t1#P#partf.MYD
-t1#P#partf.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MyISAM 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 = MyISAM,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#parta#SP#partasp0.MYD
-t1#P#parta#SP#partasp0.MYI
-t1#P#parta#SP#partasp1.MYD
-t1#P#parta#SP#partasp1.MYI
-t1#P#partb#SP#partbsp0.MYD
-t1#P#partb#SP#partbsp0.MYI
-t1#P#partb#SP#partbsp1.MYD
-t1#P#partb#SP#partbsp1.MYI
-t1#P#partc#SP#partcsp0.MYD
-t1#P#partc#SP#partcsp0.MYI
-t1#P#partc#SP#partcsp1.MYD
-t1#P#partc#SP#partcsp1.MYI
-t1#P#partd#SP#partdsp0.MYD
-t1#P#partd#SP#partdsp0.MYI
-t1#P#partd#SP#partdsp1.MYD
-t1#P#partd#SP#partdsp1.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MyISAM,
- SUBPARTITION subpart12 ENGINE = MyISAM),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MyISAM,
- SUBPARTITION subpart22 ENGINE = MyISAM),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MyISAM,
- SUBPARTITION subpart32 ENGINE = MyISAM),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MyISAM,
- SUBPARTITION subpart42 ENGINE = MyISAM)) */
-
-unified filelist
-t1#P#part1#SP#subpart11.MYD
-t1#P#part1#SP#subpart11.MYI
-t1#P#part1#SP#subpart12.MYD
-t1#P#part1#SP#subpart12.MYI
-t1#P#part2#SP#subpart21.MYD
-t1#P#part2#SP#subpart21.MYI
-t1#P#part2#SP#subpart22.MYD
-t1#P#part2#SP#subpart22.MYI
-t1#P#part3#SP#subpart31.MYD
-t1#P#part3#SP#subpart31.MYI
-t1#P#part3#SP#subpart32.MYD
-t1#P#part3#SP#subpart32.MYI
-t1#P#part4#SP#subpart41.MYD
-t1#P#part4#SP#subpart41.MYI
-t1#P#part4#SP#subpart42.MYD
-t1#P#part4#SP#subpart42.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MyISAM 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 = MyISAM,
- SUBPARTITION sp12 ENGINE = MyISAM),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MyISAM,
- SUBPARTITION sp22 ENGINE = MyISAM),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MyISAM,
- SUBPARTITION sp32 ENGINE = MyISAM),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MyISAM,
- SUBPARTITION sp42 ENGINE = MyISAM)) */
-
-unified filelist
-t1#P#part1#SP#sp11.MYD
-t1#P#part1#SP#sp11.MYI
-t1#P#part1#SP#sp12.MYD
-t1#P#part1#SP#sp12.MYI
-t1#P#part2#SP#sp21.MYD
-t1#P#part2#SP#sp21.MYI
-t1#P#part2#SP#sp22.MYD
-t1#P#part2#SP#sp22.MYI
-t1#P#part3#SP#sp31.MYD
-t1#P#part3#SP#sp31.MYI
-t1#P#part3#SP#sp32.MYD
-t1#P#part3#SP#sp32.MYI
-t1#P#part4#SP#sp41.MYD
-t1#P#part4#SP#sp41.MYI
-t1#P#part4#SP#sp42.MYD
-t1#P#part4#SP#sp42.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
-PARTITION part2 VALUES IN (1),
-PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MyISAM 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 = MyISAM,
- PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
- PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#part1#SP#part1sp0.MYD
-t1#P#part1#SP#part1sp0.MYI
-t1#P#part1#SP#part1sp1.MYD
-t1#P#part1#SP#part1sp1.MYI
-t1#P#part1#SP#part1sp2.MYD
-t1#P#part1#SP#part1sp2.MYI
-t1#P#part2#SP#part2sp0.MYD
-t1#P#part2#SP#part2sp0.MYI
-t1#P#part2#SP#part2sp1.MYD
-t1#P#part2#SP#part2sp1.MYI
-t1#P#part2#SP#part2sp2.MYD
-t1#P#part2#SP#part2sp2.MYI
-t1#P#part3#SP#part3sp0.MYD
-t1#P#part3#SP#part3sp0.MYI
-t1#P#part3#SP#part3sp1.MYD
-t1#P#part3#SP#part3sp1.MYI
-t1#P#part3#SP#part3sp2.MYD
-t1#P#part3#SP#part3sp2.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int1,f_int2)
-)
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
@@ -28465,4326 +20241,6 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MyISAM 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 = MyISAM,
- PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
- PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#part1#SP#part1sp0.MYD
-t1#P#part1#SP#part1sp0.MYI
-t1#P#part1#SP#part1sp1.MYD
-t1#P#part1#SP#part1sp1.MYI
-t1#P#part1#SP#part1sp2.MYD
-t1#P#part1#SP#part1sp2.MYI
-t1#P#part2#SP#part2sp0.MYD
-t1#P#part2#SP#part2sp0.MYI
-t1#P#part2#SP#part2sp1.MYD
-t1#P#part2#SP#part2sp1.MYI
-t1#P#part2#SP#part2sp2.MYD
-t1#P#part2#SP#part2sp2.MYI
-t1#P#part3#SP#part3sp0.MYD
-t1#P#part3#SP#part3sp0.MYI
-t1#P#part3#SP#part3sp1.MYD
-t1#P#part3#SP#part3sp1.MYI
-t1#P#part3#SP#part3sp2.MYD
-t1#P#part3#SP#part3sp2.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY HASH(f_int1) PARTITIONS 2;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY HASH (f_int1)
-PARTITIONS 2 */
-
-unified filelist
-t1#P#p0.MYD
-t1#P#p0.MYI
-t1#P#p1.MYD
-t1#P#p1.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY KEY(f_int1) PARTITIONS 5;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY KEY (f_int1)
-PARTITIONS 5 */
-
-unified filelist
-t1#P#p0.MYD
-t1#P#p0.MYI
-t1#P#p1.MYD
-t1#P#p1.MYI
-t1#P#p2.MYD
-t1#P#p2.MYI
-t1#P#p3.MYD
-t1#P#p3.MYI
-t1#P#p4.MYD
-t1#P#p4.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY LIST(MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3),
-PARTITION part_2 VALUES IN (-2),
-PARTITION part_1 VALUES IN (-1),
-PARTITION part_N VALUES IN (NULL),
-PARTITION part0 VALUES IN (0),
-PARTITION part1 VALUES IN (1),
-PARTITION part2 VALUES IN (2),
-PARTITION part3 VALUES IN (3));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
- PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
- PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
- PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
- PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
- PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
- PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
- PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#part0.MYD
-t1#P#part0.MYI
-t1#P#part1.MYD
-t1#P#part1.MYI
-t1#P#part2.MYD
-t1#P#part2.MYI
-t1#P#part3.MYD
-t1#P#part3.MYI
-t1#P#part_1.MYD
-t1#P#part_1.MYI
-t1#P#part_2.MYD
-t1#P#part_2.MYI
-t1#P#part_3.MYD
-t1#P#part_3.MYI
-t1#P#part_N.MYD
-t1#P#part_N.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1)
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (10 + 5),
-PARTITION parte VALUES LESS THAN (20),
-PARTITION partf VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#parta.MYD
-t1#P#parta.MYI
-t1#P#partb.MYD
-t1#P#partb.MYI
-t1#P#partc.MYD
-t1#P#partc.MYI
-t1#P#partd.MYD
-t1#P#partd.MYI
-t1#P#parte.MYD
-t1#P#parte.MYI
-t1#P#partf.MYD
-t1#P#partf.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0),
-PARTITION partb VALUES LESS THAN (5),
-PARTITION partc VALUES LESS THAN (10),
-PARTITION partd VALUES LESS THAN (2147483646));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MyISAM 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 = MyISAM,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
-
-unified filelist
-t1#P#parta#SP#partasp0.MYD
-t1#P#parta#SP#partasp0.MYI
-t1#P#parta#SP#partasp1.MYD
-t1#P#parta#SP#partasp1.MYI
-t1#P#partb#SP#partbsp0.MYD
-t1#P#partb#SP#partbsp0.MYI
-t1#P#partb#SP#partbsp1.MYD
-t1#P#partb#SP#partbsp1.MYI
-t1#P#partc#SP#partcsp0.MYD
-t1#P#partc#SP#partcsp0.MYI
-t1#P#partc#SP#partcsp1.MYD
-t1#P#partc#SP#partcsp1.MYI
-t1#P#partd#SP#partdsp0.MYD
-t1#P#partd#SP#partdsp0.MYI
-t1#P#partd#SP#partdsp1.MYD
-t1#P#partd#SP#partdsp1.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
-(SUBPARTITION subpart11, SUBPARTITION subpart12),
-PARTITION part2 VALUES LESS THAN (5)
-(SUBPARTITION subpart21, SUBPARTITION subpart22),
-PARTITION part3 VALUES LESS THAN (10)
-(SUBPARTITION subpart31, SUBPARTITION subpart32),
-PARTITION part4 VALUES LESS THAN (2147483646)
-(SUBPARTITION subpart41, SUBPARTITION subpart42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-/*!50100 PARTITION BY RANGE (f_int1)
-SUBPARTITION BY KEY (f_int1)
-(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MyISAM,
- SUBPARTITION subpart12 ENGINE = MyISAM),
- PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MyISAM,
- SUBPARTITION subpart22 ENGINE = MyISAM),
- PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MyISAM,
- SUBPARTITION subpart32 ENGINE = MyISAM),
- PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MyISAM,
- SUBPARTITION subpart42 ENGINE = MyISAM)) */
-
-unified filelist
-t1#P#part1#SP#subpart11.MYD
-t1#P#part1#SP#subpart11.MYI
-t1#P#part1#SP#subpart12.MYD
-t1#P#part1#SP#subpart12.MYI
-t1#P#part2#SP#subpart21.MYD
-t1#P#part2#SP#subpart21.MYI
-t1#P#part2#SP#subpart22.MYD
-t1#P#part2#SP#subpart22.MYI
-t1#P#part3#SP#subpart31.MYD
-t1#P#part3#SP#subpart31.MYI
-t1#P#part3#SP#subpart32.MYD
-t1#P#part3#SP#subpart32.MYI
-t1#P#part4#SP#subpart41.MYD
-t1#P#part4#SP#subpart41.MYI
-t1#P#part4#SP#subpart42.MYD
-t1#P#part4#SP#subpart42.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
-(PARTITION part1 VALUES IN (0)
-(SUBPARTITION sp11, SUBPARTITION sp12),
-PARTITION part2 VALUES IN (1)
-(SUBPARTITION sp21, SUBPARTITION sp22),
-PARTITION part3 VALUES IN (2)
-(SUBPARTITION sp31, SUBPARTITION sp32),
-PARTITION part4 VALUES IN (NULL)
-(SUBPARTITION sp41, SUBPARTITION sp42));
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
-ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
-# Start usability test (inc/partition_check.inc)
-create_command
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `f_int1` mediumint(9) DEFAULT NULL,
- `f_int2` mediumint(9) DEFAULT NULL,
- `f_char1` char(20) DEFAULT NULL,
- `f_char2` char(20) DEFAULT NULL,
- `f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MyISAM 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 = MyISAM,
- SUBPARTITION sp12 ENGINE = MyISAM),
- PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MyISAM,
- SUBPARTITION sp22 ENGINE = MyISAM),
- PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MyISAM,
- SUBPARTITION sp32 ENGINE = MyISAM),
- PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MyISAM,
- SUBPARTITION sp42 ENGINE = MyISAM)) */
-
-unified filelist
-t1#P#part1#SP#sp11.MYD
-t1#P#part1#SP#sp11.MYI
-t1#P#part1#SP#sp12.MYD
-t1#P#part1#SP#sp12.MYI
-t1#P#part2#SP#sp21.MYD
-t1#P#part2#SP#sp21.MYI
-t1#P#part2#SP#sp22.MYD
-t1#P#part2#SP#sp22.MYI
-t1#P#part3#SP#sp31.MYD
-t1#P#part3#SP#sp31.MYI
-t1#P#part3#SP#sp32.MYD
-t1#P#part3#SP#sp32.MYI
-t1#P#part4#SP#sp41.MYD
-t1#P#part4#SP#sp41.MYI
-t1#P#part4#SP#sp42.MYD
-t1#P#part4#SP#sp42.MYI
-t1.frm
-t1.par
-
-# check prerequisites-1 success: 1
-# check COUNT(*) success: 1
-# check MIN/MAX(f_int1) success: 1
-# check MIN/MAX(f_int2) success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-ERROR 23000: Duplicate entry '2-2' for key 'uidx'
-# check prerequisites-3 success: 1
-# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
-CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
-WHERE f_int1 IN (2,3);
-DELETE FROM t1 WHERE f_charbig = 'delete me';
-# check read via f_int1 success: 1
-# check read via f_int2 success: 1
-
-# check multiple-1 success: 1
-DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
-
-# check multiple-2 success: 1
-INSERT INTO t1 SELECT * FROM t0_template
-WHERE MOD(f_int1,3) = 0;
-
-# check multiple-3 success: 1
-UPDATE t1 SET f_int1 = f_int1 + @max_row
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
-AND @max_row_div2 + @max_row_div4;
-
-# check multiple-4 success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
-AND @max_row_div2 + @max_row_div4 + @max_row;
-
-# check multiple-5 success: 1
-SELECT COUNT(*) INTO @try_count FROM t0_template
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT COUNT(*) INTO @clash_count
-FROM t1 INNER JOIN t0_template USING(f_int1)
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-1 success: 1
-SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
-INSERT INTO t1
-SET f_int1 = @cur_value , f_int2 = @cur_value,
-f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
-f_charbig = '#SINGLE#';
-
-# check single-2 success: 1
-SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
-SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value2
-WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
-
-# check single-3 success: 1
-SET @cur_value1= -1;
-SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
-UPDATE t1 SET f_int1 = @cur_value1
-WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
-
-# check single-4 success: 1
-SELECT MAX(f_int1) INTO @cur_value FROM t1;
-DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
-
-# check single-5 success: 1
-DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
-
-# check single-6 success: 1
-INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
-Warnings:
-Warning 1264 Out of range value for column 'f_int1' at row 1
-Warning 1264 Out of range value for column 'f_int2' at row 1
-
-# check single-7 success: 1
-DELETE FROM t1 WHERE f_charbig = '#2147483647##';
-DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
-INSERT t1 SET f_int1 = 0 , f_int2 = 0,
-f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
-f_charbig = '#NULL#';
-INSERT INTO t1
-SET f_int1 = NULL , f_int2 = -@max_row,
-f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
-f_charbig = '#NULL#';
-# check null success: 1
-
-# check null-1 success: 1
-UPDATE t1 SET f_int1 = -@max_row
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-2 success: 1
-UPDATE t1 SET f_int1 = NULL
-WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-3 success: 1
-DELETE FROM t1
-WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
-AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
-
-# check null-4 success: 1
-DELETE FROM t1
-WHERE f_int1 = 0 AND f_int2 = 0
-AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
-AND f_charbig = '#NULL#';
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0
-AND f_int1 BETWEEN @max_row_div2 AND @max_row
-ON DUPLICATE KEY
-UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
-f_int2 = 2 * @max_row + source_tab.f_int1,
-f_charbig = 'was updated';
-
-# check unique-1-a success: 1
-
-# check unique-1-b success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===')
-WHERE f_charbig = 'was updated';
-REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
- FROM t0_template source_tab
-WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
-
-# check replace success: 1
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
-DELETE FROM t1
-WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
-f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
-UPDATE t1 SET f_int2 = f_int1,
-f_char1 = CAST(f_int1 AS CHAR),
-f_char2 = CAST(f_int1 AS CHAR),
-f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
-WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
-SET AUTOCOMMIT= 0;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-1 success: 1
-COMMIT WORK;
-
-# check transactions-2 success: 1
-ROLLBACK WORK;
-
-# check transactions-3 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-ROLLBACK WORK;
-
-# check transactions-4 success: 1
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, '', '', 'was inserted'
-FROM t0_template source_tab
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-
-# check transactions-5 success: 1
-ROLLBACK WORK;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
-
-# check transactions-6 success: 1
-# INFO: Storage engine used for t1 seems to be not transactional.
-COMMIT;
-
-# check transactions-7 success: 1
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-SET @@session.sql_mode = 'traditional';
-SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
-'', '', 'was inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
-ERROR 22012: Division by 0
-COMMIT;
-
-# check transactions-8 success: 1
-# INFO: Storage engine used for t1 seems to be unable to revert
-# changes made by the failing statement.
-SET @@session.sql_mode = '';
-SET AUTOCOMMIT= 1;
-DELETE FROM t1 WHERE f_charbig = 'was inserted';
-COMMIT WORK;
-UPDATE t1 SET f_charbig = REPEAT('b', 1000);
-
-# check special-1 success: 1
-UPDATE t1 SET f_charbig = '';
-
-# check special-2 success: 1
-UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
-INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-1 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-
-# check trigger-2 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-3 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-4 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = new.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-5 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-6 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-7 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
-SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
-'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
-BEGIN
-UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
-f_charbig = 'updated by trigger'
- WHERE f_int1 = - old.f_int1;
-END|
-DELETE FROM t0_aux
-WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
-
-# check trigger-8 success: 1
-DROP TRIGGER trg_1;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = 'just inserted'
- WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
-DELETE FROM t0_aux
-WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-DELETE FROM t1
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = old.f_int1 + @max_row,
-new.f_int2 = old.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-9 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = new.f_int1 + @max_row,
-new.f_int2 = new.f_int2 - @max_row,
-new.f_charbig = '####updated per update trigger####';
-END|
-UPDATE t1
-SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
-f_charbig = '####updated per update statement itself####';
-
-# check trigger-10 success: 1
-DROP TRIGGER trg_2;
-UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
-f_int2 = CAST(f_char1 AS SIGNED INT),
-f_charbig = CONCAT('===',f_char1,'===');
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
-SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-11 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
-BEGIN
-SET new.f_int1 = @my_max1 + @counter,
-new.f_int2 = @my_min2 - @counter,
-new.f_charbig = '####updated per insert trigger####';
-SET @counter = @counter + 1;
-END|
-SET @counter = 1;
-SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
-INSERT INTO t1 (f_char1, f_char2, f_charbig)
-SELECT CAST(f_int1 AS CHAR),
-CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
-WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
-ORDER BY f_int1;
-DROP TRIGGER trg_3;
-
-# check trigger-12 success: 1
-DELETE FROM t1
-WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
-AND f_int2 <> CAST(f_char1 AS SIGNED INT)
-AND f_charbig = '####updated per insert trigger####';
-ANALYZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 analyze status OK
-CHECK TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-CHECKSUM TABLE t1 EXTENDED;
-Table Checksum
-test.t1 <some_value>
-OPTIMIZE TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 optimize status OK
-# check layout success: 1
-REPAIR TABLE t1 EXTENDED;
-Table Op Msg_type Msg_text
-test.t1 repair status OK
-# check layout success: 1
-TRUNCATE t1;
-
-# check TRUNCATE success: 1
-# check layout success: 1
-# End usability test (inc/partition_check.inc)
-DROP TABLE t1;
-CREATE TABLE t1 (
-f_int1 INTEGER,
-f_int2 INTEGER,
-f_char1 CHAR(20),
-f_char2 CHAR(20),
-f_charbig VARCHAR(1000)
-, UNIQUE INDEX uidx (f_int2,f_int1)
-)
-PARTITION BY LIST(ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0),
PARTITION part2 VALUES IN (1),
PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
@@ -32804,10 +20260,10 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
- UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
+ UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
-SUBPARTITION BY KEY (f_int1)
+SUBPARTITION BY KEY (f_int2)
SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
@@ -37105,8 +24561,8 @@ f_charbig VARCHAR(1000)
PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
(PARTITION part1 VALUES IN (0),
- PARTITION part2 VALUES IN (1),
- PARTITION part3 VALUES IN (NULL));
+PARTITION part2 VALUES IN (1),
+PARTITION part3 VALUES IN (NULL));
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
diff --git a/mysql-test/suite/parts/r/partition_float_innodb.result b/mysql-test/suite/parts/r/partition_float_innodb.result
index 917358dc54a..d2f04a68629 100644
--- a/mysql-test/suite/parts/r/partition_float_innodb.result
+++ b/mysql-test/suite/parts/r/partition_float_innodb.result
@@ -18,25 +18,25 @@ t1 CREATE TABLE `t1` (
insert into t1 values (-3.402823466E+38), (3.402823466E+38), (-1.5), (-1), (0), (1), (1.5);
select * from t1;
a
--3.40282e+38
+-3.40282e38
-1.5
-1
0
1
1.5
-3.40282e+38
+3.40282e38
select * from t1 where a=1.5;
a
1.5
delete from t1 where a=1.5;
select * from t1;
a
--3.40282e+38
+-3.40282e38
-1.5
-1
0
1
-3.40282e+38
+3.40282e38
drop table t1;
create table t2 (a float not null, primary key(a)) engine='InnoDB'
partition by key (a) partitions 10;
@@ -51,37 +51,37 @@ PARTITIONS 10 */
insert into t2 values (-3.402823466E+38), (-3.402823466E+37), (-123.456), (0), (1234546.789), (123.456), (1.5);
select * from t2;
a
--3.40282e+38
--3.40282e+37
+-3.40282e38
+-3.40282e37
-123.456
0
1.5
123.456
-1.23455e+06
+1234550
select * from t2 where a=123.456;
a
delete from t2 where a=123.456;
select * from t2;
a
--3.40282e+38
--3.40282e+37
+-3.40282e38
+-3.40282e37
-123.456
0
1.5
123.456
-1.23455e+06
+1234550
select * from t2 where a=1.5;
a
1.5
delete from t2 where a=1.5;
select * from t2;
a
--3.40282e+38
--3.40282e+37
+-3.40282e38
+-3.40282e37
-123.456
0
123.456
-1.23455e+06
+1234550
delete from t2;
1024*3 inserts;
select count(*) from t2;
@@ -108,27 +108,27 @@ t1 CREATE TABLE `t1` (
insert into t1 values (-2.2250738585072014E+208), (-2.2250738585072014E-208), (-1.5), (-1), (0), (1.5), (1234.567), (2.2250738585072014E+208);
select * from t1;
a
--2.2250738585072e+208
+-2.2250738585072016e208
-1.5
-1
--2.2250738585072e-208
+-2.2250738585072014e-208
0
1.5
1234.567
-2.2250738585072e+208
+2.2250738585072016e208
select * from t1 where a=1.5;
a
1.5
delete from t1 where a=1.5;
select * from t1;
a
--2.2250738585072e+208
+-2.2250738585072016e208
-1.5
-1
--2.2250738585072e-208
+-2.2250738585072014e-208
0
1234.567
-2.2250738585072e+208
+2.2250738585072016e208
drop table t1;
create table t2 (a double not null, primary key(a)) engine='InnoDB'
partition by key (a) partitions 10;
@@ -143,27 +143,27 @@ PARTITIONS 10 */
insert into t2 values (-2.2250738585072014E+208), (-2.2250738585072014E-208), (-1.5), (-1), (0), (1.5), (1234.567), (2.2250738585072014E+208);
select * from t2;
a
--2.2250738585072e+208
+-2.2250738585072016e208
-1.5
-1
--2.2250738585072e-208
+-2.2250738585072014e-208
0
1.5
1234.567
-2.2250738585072e+208
+2.2250738585072016e208
select * from t2 where a=1234.567;
a
1234.567
delete from t2 where a=1234.567;
select * from t2;
a
--2.2250738585072e+208
+-2.2250738585072016e208
-1.5
-1
--2.2250738585072e-208
+-2.2250738585072014e-208
0
1.5
-2.2250738585072e+208
+2.2250738585072016e208
delete from t2;
1024*3 inserts;
select count(*) from t2;
diff --git a/mysql-test/suite/parts/r/partition_float_myisam.result b/mysql-test/suite/parts/r/partition_float_myisam.result
index 3f9390f6ba9..2d52d095989 100644
--- a/mysql-test/suite/parts/r/partition_float_myisam.result
+++ b/mysql-test/suite/parts/r/partition_float_myisam.result
@@ -18,25 +18,25 @@ t1 CREATE TABLE `t1` (
insert into t1 values (-3.402823466E+38), (3.402823466E+38), (-1.5), (-1), (0), (1), (1.5);
select * from t1;
a
--3.40282e+38
+-3.40282e38
-1.5
-1
0
1
1.5
-3.40282e+38
+3.40282e38
select * from t1 where a=1.5;
a
1.5
delete from t1 where a=1.5;
select * from t1;
a
--3.40282e+38
+-3.40282e38
-1.5
-1
0
1
-3.40282e+38
+3.40282e38
drop table t1;
create table t2 (a float not null, primary key(a)) engine='MYISAM'
partition by key (a) partitions 10;
@@ -51,37 +51,37 @@ PARTITIONS 10 */
insert into t2 values (-3.402823466E+38), (-3.402823466E+37), (-123.456), (0), (1234546.789), (123.456), (1.5);
select * from t2;
a
--3.40282e+38
--3.40282e+37
+-3.40282e38
+-3.40282e37
-123.456
0
1.5
123.456
-1.23455e+06
+1234550
select * from t2 where a=123.456;
a
delete from t2 where a=123.456;
select * from t2;
a
--3.40282e+38
--3.40282e+37
+-3.40282e38
+-3.40282e37
-123.456
0
1.5
123.456
-1.23455e+06
+1234550
select * from t2 where a=1.5;
a
1.5
delete from t2 where a=1.5;
select * from t2;
a
--3.40282e+38
--3.40282e+37
+-3.40282e38
+-3.40282e37
-123.456
0
123.456
-1.23455e+06
+1234550
delete from t2;
16384*3 inserts;
select count(*) from t2;
@@ -108,27 +108,27 @@ t1 CREATE TABLE `t1` (
insert into t1 values (-2.2250738585072014E+208), (-2.2250738585072014E-208), (-1.5), (-1), (0), (1.5), (1234.567), (2.2250738585072014E+208);
select * from t1;
a
--2.2250738585072e+208
+-2.2250738585072016e208
-1.5
-1
--2.2250738585072e-208
+-2.2250738585072014e-208
0
1.5
1234.567
-2.2250738585072e+208
+2.2250738585072016e208
select * from t1 where a=1.5;
a
1.5
delete from t1 where a=1.5;
select * from t1;
a
--2.2250738585072e+208
+-2.2250738585072016e208
-1.5
-1
--2.2250738585072e-208
+-2.2250738585072014e-208
0
1234.567
-2.2250738585072e+208
+2.2250738585072016e208
drop table t1;
create table t2 (a double not null, primary key(a)) engine='MYISAM'
partition by key (a) partitions 10;
@@ -143,27 +143,27 @@ PARTITIONS 10 */
insert into t2 values (-2.2250738585072014E+208), (-2.2250738585072014E-208), (-1.5), (-1), (0), (1.5), (1234.567), (2.2250738585072014E+208);
select * from t2;
a
--2.2250738585072e+208
+-2.2250738585072016e208
-1.5
-1
--2.2250738585072e-208
+-2.2250738585072014e-208
0
1.5
1234.567
-2.2250738585072e+208
+2.2250738585072016e208
select * from t2 where a=1234.567;
a
1234.567
delete from t2 where a=1234.567;
select * from t2;
a
--2.2250738585072e+208
+-2.2250738585072016e208
-1.5
-1
--2.2250738585072e-208
+-2.2250738585072014e-208
0
1.5
-2.2250738585072e+208
+2.2250738585072016e208
delete from t2;
16384*3 inserts;
select count(*) from t2;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc0_archive.result b/mysql-test/suite/parts/r/partition_mgm_lc0_archive.result
index 30ff27df298..4f623813386 100644
--- a/mysql-test/suite/parts/r/partition_mgm_lc0_archive.result
+++ b/mysql-test/suite/parts/r/partition_mgm_lc0_archive.result
@@ -915,6 +915,18 @@ TableA CREATE TABLE `TableA` (
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
# Cleaning up after LIST PARTITIONING test
DROP TABLE TableA;
+# Verify that TRUNCATE PARTITION gives error
+CREATE TABLE t1
+(a BIGINT AUTO_INCREMENT PRIMARY KEY,
+b VARCHAR(255))
+ENGINE = 'Archive'
+PARTITION BY KEY (a)
+(PARTITION LT1000,
+PARTITION LT2000,
+PARTITION MAX);
+INSERT INTO t1 VALUES (NULL, "First"), (NULL, "Second"), (999, "Last in LT1000"), (NULL, "First in LT2000"), (NULL, "Second in LT2000"), (1999, "Last in LT2000"), (NULL, "First in MAX"), (NULL, "Second in MAX");
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+Got one of the listed errors
# Cleaning up before exit
USE test;
DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc0_innodb.result b/mysql-test/suite/parts/r/partition_mgm_lc0_innodb.result
index cd55ffbad03..19f16780d13 100644
--- a/mysql-test/suite/parts/r/partition_mgm_lc0_innodb.result
+++ b/mysql-test/suite/parts/r/partition_mgm_lc0_innodb.result
@@ -915,6 +915,170 @@ TableA CREATE TABLE `TableA` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1
# Cleaning up after LIST PARTITIONING test
DROP TABLE TableA;
+# Testing TRUNCATE PARTITION
+CREATE TABLE t1
+(a BIGINT AUTO_INCREMENT PRIMARY KEY,
+b VARCHAR(255))
+ENGINE = 'InnoDB'
+PARTITION BY RANGE (a)
+(PARTITION LT1000 VALUES LESS THAN (1000),
+PARTITION LT2000 VALUES LESS THAN (2000),
+PARTITION MAX VALUES LESS THAN MAXVALUE);
+INSERT INTO t1 VALUES (NULL, "First"), (NULL, "Second"), (999, "Last in LT1000"), (NULL, "First in LT2000"), (NULL, "Second in LT2000"), (1999, "Last in LT2000"), (NULL, "First in MAX"), (NULL, "Second in MAX");
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` bigint(20) NOT NULL AUTO_INCREMENT,
+ `b` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`a`)
+) ENGINE=InnoDB AUTO_INCREMENT=2002 DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (a)
+(PARTITION LT1000 VALUES LESS THAN (1000) ENGINE = InnoDB,
+ PARTITION LT2000 VALUES LESS THAN (2000) ENGINE = InnoDB,
+ PARTITION MAX VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */
+SELECT * FROM t1 ORDER BY a;
+a b
+1 First
+2 Second
+999 Last in LT1000
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First in MAX
+2001 Second in MAX
+ALTER TABLE t1 ANALYZE PARTITION MAX;
+Table Op Msg_type Msg_text
+MySQL_Test_DB.t1 analyze status OK
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (1)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (2)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (3)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (4)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (4)
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (1)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (2)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (3)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (4)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (1)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (2)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (3)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+2007 First after TRUNCATE LT2000 (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (4)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+2007 First after TRUNCATE LT2000 (3)
+2008 First after TRUNCATE LT2000 (4)
+DROP TABLE t1;
# Cleaning up before exit
USE test;
DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc0_memory.result b/mysql-test/suite/parts/r/partition_mgm_lc0_memory.result
index faf776e03a3..69a43b64d87 100644
--- a/mysql-test/suite/parts/r/partition_mgm_lc0_memory.result
+++ b/mysql-test/suite/parts/r/partition_mgm_lc0_memory.result
@@ -915,6 +915,170 @@ TableA CREATE TABLE `TableA` (
) ENGINE=MEMORY DEFAULT CHARSET=latin1
# Cleaning up after LIST PARTITIONING test
DROP TABLE TableA;
+# Testing TRUNCATE PARTITION
+CREATE TABLE t1
+(a BIGINT AUTO_INCREMENT PRIMARY KEY,
+b VARCHAR(255))
+ENGINE = 'Memory'
+PARTITION BY RANGE (a)
+(PARTITION LT1000 VALUES LESS THAN (1000),
+PARTITION LT2000 VALUES LESS THAN (2000),
+PARTITION MAX VALUES LESS THAN MAXVALUE);
+INSERT INTO t1 VALUES (NULL, "First"), (NULL, "Second"), (999, "Last in LT1000"), (NULL, "First in LT2000"), (NULL, "Second in LT2000"), (1999, "Last in LT2000"), (NULL, "First in MAX"), (NULL, "Second in MAX");
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` bigint(20) NOT NULL AUTO_INCREMENT,
+ `b` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`a`)
+) ENGINE=MEMORY AUTO_INCREMENT=2002 DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (a)
+(PARTITION LT1000 VALUES LESS THAN (1000) ENGINE = MEMORY,
+ PARTITION LT2000 VALUES LESS THAN (2000) ENGINE = MEMORY,
+ PARTITION MAX VALUES LESS THAN MAXVALUE ENGINE = MEMORY) */
+SELECT * FROM t1 ORDER BY a;
+a b
+1 First
+2 Second
+999 Last in LT1000
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First in MAX
+2001 Second in MAX
+ALTER TABLE t1 ANALYZE PARTITION MAX;
+Table Op Msg_type Msg_text
+MySQL_Test_DB.t1 analyze note The storage engine for the table doesn't support analyze
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (1)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (2)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (3)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (4)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (4)
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (1)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (2)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (3)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (4)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (1)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (2)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (3)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+2007 First after TRUNCATE LT2000 (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (4)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+2007 First after TRUNCATE LT2000 (3)
+2008 First after TRUNCATE LT2000 (4)
+DROP TABLE t1;
# Cleaning up before exit
USE test;
DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc0_myisam.result b/mysql-test/suite/parts/r/partition_mgm_lc0_myisam.result
index 827f7a15c24..9b4e85be9d0 100644
--- a/mysql-test/suite/parts/r/partition_mgm_lc0_myisam.result
+++ b/mysql-test/suite/parts/r/partition_mgm_lc0_myisam.result
@@ -915,6 +915,170 @@ TableA CREATE TABLE `TableA` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1
# Cleaning up after LIST PARTITIONING test
DROP TABLE TableA;
+# Testing TRUNCATE PARTITION
+CREATE TABLE t1
+(a BIGINT AUTO_INCREMENT PRIMARY KEY,
+b VARCHAR(255))
+ENGINE = 'MyISAM'
+PARTITION BY RANGE (a)
+(PARTITION LT1000 VALUES LESS THAN (1000),
+PARTITION LT2000 VALUES LESS THAN (2000),
+PARTITION MAX VALUES LESS THAN MAXVALUE);
+INSERT INTO t1 VALUES (NULL, "First"), (NULL, "Second"), (999, "Last in LT1000"), (NULL, "First in LT2000"), (NULL, "Second in LT2000"), (1999, "Last in LT2000"), (NULL, "First in MAX"), (NULL, "Second in MAX");
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` bigint(20) NOT NULL AUTO_INCREMENT,
+ `b` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`a`)
+) ENGINE=MyISAM AUTO_INCREMENT=2002 DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (a)
+(PARTITION LT1000 VALUES LESS THAN (1000) ENGINE = MyISAM,
+ PARTITION LT2000 VALUES LESS THAN (2000) ENGINE = MyISAM,
+ PARTITION MAX VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
+SELECT * FROM t1 ORDER BY a;
+a b
+1 First
+2 Second
+999 Last in LT1000
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First in MAX
+2001 Second in MAX
+ALTER TABLE t1 ANALYZE PARTITION MAX;
+Table Op Msg_type Msg_text
+MySQL_Test_DB.t1 analyze status OK
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (1)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (2)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (3)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (4)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (4)
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (1)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (2)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (3)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (4)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (1)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (2)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (3)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+2007 First after TRUNCATE LT2000 (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (4)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+2007 First after TRUNCATE LT2000 (3)
+2008 First after TRUNCATE LT2000 (4)
+DROP TABLE t1;
# Cleaning up before exit
USE test;
DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc0_ndb.result b/mysql-test/suite/parts/r/partition_mgm_lc0_ndb.result
index 45b674638e7..15b3f424527 100644
--- a/mysql-test/suite/parts/r/partition_mgm_lc0_ndb.result
+++ b/mysql-test/suite/parts/r/partition_mgm_lc0_ndb.result
@@ -181,6 +181,18 @@ TableA CREATE TABLE `TableA` (
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
# Cleaning up after KEY PARTITIONING test
DROP TABLE TableA;
+# Verify that TRUNCATE PARTITION gives error
+CREATE TABLE t1
+(a BIGINT AUTO_INCREMENT PRIMARY KEY,
+b VARCHAR(255))
+ENGINE = 'NDBCluster'
+PARTITION BY KEY (a)
+(PARTITION LT1000,
+PARTITION LT2000,
+PARTITION MAX);
+INSERT INTO t1 VALUES (NULL, "First"), (NULL, "Second"), (999, "Last in LT1000"), (NULL, "First in LT2000"), (NULL, "Second in LT2000"), (1999, "Last in LT2000"), (NULL, "First in MAX"), (NULL, "Second in MAX");
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+Got one of the listed errors
# Cleaning up before exit
USE test;
DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc1_archive.result b/mysql-test/suite/parts/r/partition_mgm_lc1_archive.result
index 443453a2d70..4cd8cafa3ee 100644
--- a/mysql-test/suite/parts/r/partition_mgm_lc1_archive.result
+++ b/mysql-test/suite/parts/r/partition_mgm_lc1_archive.result
@@ -882,6 +882,18 @@ TableA CREATE TABLE `tablea` (
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
# Cleaning up after LIST PARTITIONING test
DROP TABLE TableA;
+# Verify that TRUNCATE PARTITION gives error
+CREATE TABLE t1
+(a BIGINT AUTO_INCREMENT PRIMARY KEY,
+b VARCHAR(255))
+ENGINE = 'Archive'
+PARTITION BY KEY (a)
+(PARTITION LT1000,
+PARTITION LT2000,
+PARTITION MAX);
+INSERT INTO t1 VALUES (NULL, "First"), (NULL, "Second"), (999, "Last in LT1000"), (NULL, "First in LT2000"), (NULL, "Second in LT2000"), (1999, "Last in LT2000"), (NULL, "First in MAX"), (NULL, "Second in MAX");
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+Got one of the listed errors
# Cleaning up before exit
USE test;
DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc1_innodb.result b/mysql-test/suite/parts/r/partition_mgm_lc1_innodb.result
index 49ccc7b1808..952f4136cb6 100644
--- a/mysql-test/suite/parts/r/partition_mgm_lc1_innodb.result
+++ b/mysql-test/suite/parts/r/partition_mgm_lc1_innodb.result
@@ -882,6 +882,170 @@ TableA CREATE TABLE `tablea` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1
# Cleaning up after LIST PARTITIONING test
DROP TABLE TableA;
+# Testing TRUNCATE PARTITION
+CREATE TABLE t1
+(a BIGINT AUTO_INCREMENT PRIMARY KEY,
+b VARCHAR(255))
+ENGINE = 'InnoDB'
+PARTITION BY RANGE (a)
+(PARTITION LT1000 VALUES LESS THAN (1000),
+PARTITION LT2000 VALUES LESS THAN (2000),
+PARTITION MAX VALUES LESS THAN MAXVALUE);
+INSERT INTO t1 VALUES (NULL, "First"), (NULL, "Second"), (999, "Last in LT1000"), (NULL, "First in LT2000"), (NULL, "Second in LT2000"), (1999, "Last in LT2000"), (NULL, "First in MAX"), (NULL, "Second in MAX");
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` bigint(20) NOT NULL AUTO_INCREMENT,
+ `b` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`a`)
+) ENGINE=InnoDB AUTO_INCREMENT=2002 DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (a)
+(PARTITION LT1000 VALUES LESS THAN (1000) ENGINE = InnoDB,
+ PARTITION LT2000 VALUES LESS THAN (2000) ENGINE = InnoDB,
+ PARTITION MAX VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */
+SELECT * FROM t1 ORDER BY a;
+a b
+1 First
+2 Second
+999 Last in LT1000
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First in MAX
+2001 Second in MAX
+ALTER TABLE t1 ANALYZE PARTITION MAX;
+Table Op Msg_type Msg_text
+mysql_test_db.t1 analyze status OK
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (1)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (2)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (3)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (4)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (4)
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (1)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (2)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (3)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (4)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (1)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (2)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (3)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+2007 First after TRUNCATE LT2000 (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (4)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+2007 First after TRUNCATE LT2000 (3)
+2008 First after TRUNCATE LT2000 (4)
+DROP TABLE t1;
# Cleaning up before exit
USE test;
DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc1_memory.result b/mysql-test/suite/parts/r/partition_mgm_lc1_memory.result
index 6f34054428c..435a0d8313e 100644
--- a/mysql-test/suite/parts/r/partition_mgm_lc1_memory.result
+++ b/mysql-test/suite/parts/r/partition_mgm_lc1_memory.result
@@ -882,6 +882,170 @@ TableA CREATE TABLE `tablea` (
) ENGINE=MEMORY DEFAULT CHARSET=latin1
# Cleaning up after LIST PARTITIONING test
DROP TABLE TableA;
+# Testing TRUNCATE PARTITION
+CREATE TABLE t1
+(a BIGINT AUTO_INCREMENT PRIMARY KEY,
+b VARCHAR(255))
+ENGINE = 'Memory'
+PARTITION BY RANGE (a)
+(PARTITION LT1000 VALUES LESS THAN (1000),
+PARTITION LT2000 VALUES LESS THAN (2000),
+PARTITION MAX VALUES LESS THAN MAXVALUE);
+INSERT INTO t1 VALUES (NULL, "First"), (NULL, "Second"), (999, "Last in LT1000"), (NULL, "First in LT2000"), (NULL, "Second in LT2000"), (1999, "Last in LT2000"), (NULL, "First in MAX"), (NULL, "Second in MAX");
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` bigint(20) NOT NULL AUTO_INCREMENT,
+ `b` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`a`)
+) ENGINE=MEMORY AUTO_INCREMENT=2002 DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (a)
+(PARTITION LT1000 VALUES LESS THAN (1000) ENGINE = MEMORY,
+ PARTITION LT2000 VALUES LESS THAN (2000) ENGINE = MEMORY,
+ PARTITION MAX VALUES LESS THAN MAXVALUE ENGINE = MEMORY) */
+SELECT * FROM t1 ORDER BY a;
+a b
+1 First
+2 Second
+999 Last in LT1000
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First in MAX
+2001 Second in MAX
+ALTER TABLE t1 ANALYZE PARTITION MAX;
+Table Op Msg_type Msg_text
+mysql_test_db.t1 analyze note The storage engine for the table doesn't support analyze
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (1)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (2)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (3)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (4)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (4)
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (1)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (2)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (3)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (4)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (1)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (2)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (3)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+2007 First after TRUNCATE LT2000 (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (4)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+2007 First after TRUNCATE LT2000 (3)
+2008 First after TRUNCATE LT2000 (4)
+DROP TABLE t1;
# Cleaning up before exit
USE test;
DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc1_myisam.result b/mysql-test/suite/parts/r/partition_mgm_lc1_myisam.result
index ac230e29c66..3a90ce4d73c 100644
--- a/mysql-test/suite/parts/r/partition_mgm_lc1_myisam.result
+++ b/mysql-test/suite/parts/r/partition_mgm_lc1_myisam.result
@@ -882,6 +882,170 @@ TableA CREATE TABLE `tablea` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1
# Cleaning up after LIST PARTITIONING test
DROP TABLE TableA;
+# Testing TRUNCATE PARTITION
+CREATE TABLE t1
+(a BIGINT AUTO_INCREMENT PRIMARY KEY,
+b VARCHAR(255))
+ENGINE = 'MyISAM'
+PARTITION BY RANGE (a)
+(PARTITION LT1000 VALUES LESS THAN (1000),
+PARTITION LT2000 VALUES LESS THAN (2000),
+PARTITION MAX VALUES LESS THAN MAXVALUE);
+INSERT INTO t1 VALUES (NULL, "First"), (NULL, "Second"), (999, "Last in LT1000"), (NULL, "First in LT2000"), (NULL, "Second in LT2000"), (1999, "Last in LT2000"), (NULL, "First in MAX"), (NULL, "Second in MAX");
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` bigint(20) NOT NULL AUTO_INCREMENT,
+ `b` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`a`)
+) ENGINE=MyISAM AUTO_INCREMENT=2002 DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (a)
+(PARTITION LT1000 VALUES LESS THAN (1000) ENGINE = MyISAM,
+ PARTITION LT2000 VALUES LESS THAN (2000) ENGINE = MyISAM,
+ PARTITION MAX VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
+SELECT * FROM t1 ORDER BY a;
+a b
+1 First
+2 Second
+999 Last in LT1000
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First in MAX
+2001 Second in MAX
+ALTER TABLE t1 ANALYZE PARTITION MAX;
+Table Op Msg_type Msg_text
+mysql_test_db.t1 analyze status OK
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (1)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (2)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (3)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (4)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (4)
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (1)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (2)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (3)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (4)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (1)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (2)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (3)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+2007 First after TRUNCATE LT2000 (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (4)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+2007 First after TRUNCATE LT2000 (3)
+2008 First after TRUNCATE LT2000 (4)
+DROP TABLE t1;
# Cleaning up before exit
USE test;
DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc1_ndb.result b/mysql-test/suite/parts/r/partition_mgm_lc1_ndb.result
index 0a53e1b4a9b..1d221caa163 100644
--- a/mysql-test/suite/parts/r/partition_mgm_lc1_ndb.result
+++ b/mysql-test/suite/parts/r/partition_mgm_lc1_ndb.result
@@ -219,6 +219,18 @@ TableA CREATE TABLE `tablea` (
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
# Cleaning up after KEY PARTITIONING test
DROP TABLE TableA;
+# Verify that TRUNCATE PARTITION gives error
+CREATE TABLE t1
+(a BIGINT AUTO_INCREMENT PRIMARY KEY,
+b VARCHAR(255))
+ENGINE = 'NDBCluster'
+PARTITION BY KEY (a)
+(PARTITION LT1000,
+PARTITION LT2000,
+PARTITION MAX);
+INSERT INTO t1 VALUES (NULL, "First"), (NULL, "Second"), (999, "Last in LT1000"), (NULL, "First in LT2000"), (NULL, "Second in LT2000"), (1999, "Last in LT2000"), (NULL, "First in MAX"), (NULL, "Second in MAX");
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+Got one of the listed errors
# Cleaning up before exit
USE test;
DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc2_archive.result b/mysql-test/suite/parts/r/partition_mgm_lc2_archive.result
index fc0390c238d..6e8abfef06d 100644
--- a/mysql-test/suite/parts/r/partition_mgm_lc2_archive.result
+++ b/mysql-test/suite/parts/r/partition_mgm_lc2_archive.result
@@ -882,6 +882,18 @@ TableA CREATE TABLE `TableA` (
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
# Cleaning up after LIST PARTITIONING test
DROP TABLE TableA;
+# Verify that TRUNCATE PARTITION gives error
+CREATE TABLE t1
+(a BIGINT AUTO_INCREMENT PRIMARY KEY,
+b VARCHAR(255))
+ENGINE = 'Archive'
+PARTITION BY KEY (a)
+(PARTITION LT1000,
+PARTITION LT2000,
+PARTITION MAX);
+INSERT INTO t1 VALUES (NULL, "First"), (NULL, "Second"), (999, "Last in LT1000"), (NULL, "First in LT2000"), (NULL, "Second in LT2000"), (1999, "Last in LT2000"), (NULL, "First in MAX"), (NULL, "Second in MAX");
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+Got one of the listed errors
# Cleaning up before exit
USE test;
DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc2_innodb.result b/mysql-test/suite/parts/r/partition_mgm_lc2_innodb.result
index da111137068..8e42bc9eb62 100644
--- a/mysql-test/suite/parts/r/partition_mgm_lc2_innodb.result
+++ b/mysql-test/suite/parts/r/partition_mgm_lc2_innodb.result
@@ -882,6 +882,170 @@ TableA CREATE TABLE `TableA` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1
# Cleaning up after LIST PARTITIONING test
DROP TABLE TableA;
+# Testing TRUNCATE PARTITION
+CREATE TABLE t1
+(a BIGINT AUTO_INCREMENT PRIMARY KEY,
+b VARCHAR(255))
+ENGINE = 'InnoDB'
+PARTITION BY RANGE (a)
+(PARTITION LT1000 VALUES LESS THAN (1000),
+PARTITION LT2000 VALUES LESS THAN (2000),
+PARTITION MAX VALUES LESS THAN MAXVALUE);
+INSERT INTO t1 VALUES (NULL, "First"), (NULL, "Second"), (999, "Last in LT1000"), (NULL, "First in LT2000"), (NULL, "Second in LT2000"), (1999, "Last in LT2000"), (NULL, "First in MAX"), (NULL, "Second in MAX");
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` bigint(20) NOT NULL AUTO_INCREMENT,
+ `b` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`a`)
+) ENGINE=InnoDB AUTO_INCREMENT=2002 DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (a)
+(PARTITION LT1000 VALUES LESS THAN (1000) ENGINE = InnoDB,
+ PARTITION LT2000 VALUES LESS THAN (2000) ENGINE = InnoDB,
+ PARTITION MAX VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */
+SELECT * FROM t1 ORDER BY a;
+a b
+1 First
+2 Second
+999 Last in LT1000
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First in MAX
+2001 Second in MAX
+ALTER TABLE t1 ANALYZE PARTITION MAX;
+Table Op Msg_type Msg_text
+mysql_test_db.t1 analyze status OK
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (1)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (2)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (3)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (4)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (4)
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (1)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (2)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (3)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (4)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (1)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (2)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (3)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+2007 First after TRUNCATE LT2000 (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (4)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+2007 First after TRUNCATE LT2000 (3)
+2008 First after TRUNCATE LT2000 (4)
+DROP TABLE t1;
# Cleaning up before exit
USE test;
DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc2_memory.result b/mysql-test/suite/parts/r/partition_mgm_lc2_memory.result
index a1716ea36c8..24047912ab1 100644
--- a/mysql-test/suite/parts/r/partition_mgm_lc2_memory.result
+++ b/mysql-test/suite/parts/r/partition_mgm_lc2_memory.result
@@ -882,6 +882,170 @@ TableA CREATE TABLE `TableA` (
) ENGINE=MEMORY DEFAULT CHARSET=latin1
# Cleaning up after LIST PARTITIONING test
DROP TABLE TableA;
+# Testing TRUNCATE PARTITION
+CREATE TABLE t1
+(a BIGINT AUTO_INCREMENT PRIMARY KEY,
+b VARCHAR(255))
+ENGINE = 'Memory'
+PARTITION BY RANGE (a)
+(PARTITION LT1000 VALUES LESS THAN (1000),
+PARTITION LT2000 VALUES LESS THAN (2000),
+PARTITION MAX VALUES LESS THAN MAXVALUE);
+INSERT INTO t1 VALUES (NULL, "First"), (NULL, "Second"), (999, "Last in LT1000"), (NULL, "First in LT2000"), (NULL, "Second in LT2000"), (1999, "Last in LT2000"), (NULL, "First in MAX"), (NULL, "Second in MAX");
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` bigint(20) NOT NULL AUTO_INCREMENT,
+ `b` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`a`)
+) ENGINE=MEMORY AUTO_INCREMENT=2002 DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (a)
+(PARTITION LT1000 VALUES LESS THAN (1000) ENGINE = MEMORY,
+ PARTITION LT2000 VALUES LESS THAN (2000) ENGINE = MEMORY,
+ PARTITION MAX VALUES LESS THAN MAXVALUE ENGINE = MEMORY) */
+SELECT * FROM t1 ORDER BY a;
+a b
+1 First
+2 Second
+999 Last in LT1000
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First in MAX
+2001 Second in MAX
+ALTER TABLE t1 ANALYZE PARTITION MAX;
+Table Op Msg_type Msg_text
+mysql_test_db.t1 analyze note The storage engine for the table doesn't support analyze
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (1)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (2)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (3)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (4)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (4)
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (1)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (2)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (3)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (4)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (1)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (2)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (3)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+2007 First after TRUNCATE LT2000 (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (4)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+2007 First after TRUNCATE LT2000 (3)
+2008 First after TRUNCATE LT2000 (4)
+DROP TABLE t1;
# Cleaning up before exit
USE test;
DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc2_myisam.result b/mysql-test/suite/parts/r/partition_mgm_lc2_myisam.result
index 6bdfa149de0..7a61a811ea3 100644
--- a/mysql-test/suite/parts/r/partition_mgm_lc2_myisam.result
+++ b/mysql-test/suite/parts/r/partition_mgm_lc2_myisam.result
@@ -882,6 +882,170 @@ TableA CREATE TABLE `TableA` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1
# Cleaning up after LIST PARTITIONING test
DROP TABLE TableA;
+# Testing TRUNCATE PARTITION
+CREATE TABLE t1
+(a BIGINT AUTO_INCREMENT PRIMARY KEY,
+b VARCHAR(255))
+ENGINE = 'MyISAM'
+PARTITION BY RANGE (a)
+(PARTITION LT1000 VALUES LESS THAN (1000),
+PARTITION LT2000 VALUES LESS THAN (2000),
+PARTITION MAX VALUES LESS THAN MAXVALUE);
+INSERT INTO t1 VALUES (NULL, "First"), (NULL, "Second"), (999, "Last in LT1000"), (NULL, "First in LT2000"), (NULL, "Second in LT2000"), (1999, "Last in LT2000"), (NULL, "First in MAX"), (NULL, "Second in MAX");
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` bigint(20) NOT NULL AUTO_INCREMENT,
+ `b` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`a`)
+) ENGINE=MyISAM AUTO_INCREMENT=2002 DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (a)
+(PARTITION LT1000 VALUES LESS THAN (1000) ENGINE = MyISAM,
+ PARTITION LT2000 VALUES LESS THAN (2000) ENGINE = MyISAM,
+ PARTITION MAX VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
+SELECT * FROM t1 ORDER BY a;
+a b
+1 First
+2 Second
+999 Last in LT1000
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First in MAX
+2001 Second in MAX
+ALTER TABLE t1 ANALYZE PARTITION MAX;
+Table Op Msg_type Msg_text
+mysql_test_db.t1 analyze status OK
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (1)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (2)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (3)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE MAX (4)");
+SELECT * FROM t1 WHERE a >= 2000;
+a b
+2000 First after TRUNCATE MAX (4)
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (1)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (2)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (3)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT1000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT1000 (4)");
+SELECT * FROM t1 ORDER BY a;
+a b
+1000 First in LT2000
+1001 Second in LT2000
+1999 Last in LT2000
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+# Truncate without FLUSH
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (1)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+# Truncate with FLUSH after
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+FLUSH TABLES;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (2)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+# Truncate with FLUSH before
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (3)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+2007 First after TRUNCATE LT2000 (3)
+# Truncate with FLUSH after INSERT
+FLUSH TABLES;
+ALTER TABLE t1 TRUNCATE PARTITION LT2000;
+INSERT INTO t1 VALUES (NULL, "First after TRUNCATE LT2000 (4)");
+SELECT * FROM t1 ORDER BY a;
+a b
+2000 First after TRUNCATE MAX (4)
+2001 First after TRUNCATE LT1000 (1)
+2002 First after TRUNCATE LT1000 (2)
+2003 First after TRUNCATE LT1000 (3)
+2004 First after TRUNCATE LT1000 (4)
+2005 First after TRUNCATE LT2000 (1)
+2006 First after TRUNCATE LT2000 (2)
+2007 First after TRUNCATE LT2000 (3)
+2008 First after TRUNCATE LT2000 (4)
+DROP TABLE t1;
# Cleaning up before exit
USE test;
DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc2_ndb.result b/mysql-test/suite/parts/r/partition_mgm_lc2_ndb.result
index 8b9c5be1fb6..2f5dfe5e08e 100644
--- a/mysql-test/suite/parts/r/partition_mgm_lc2_ndb.result
+++ b/mysql-test/suite/parts/r/partition_mgm_lc2_ndb.result
@@ -219,6 +219,18 @@ TableA CREATE TABLE `TableA` (
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
# Cleaning up after KEY PARTITIONING test
DROP TABLE TableA;
+# Verify that TRUNCATE PARTITION gives error
+CREATE TABLE t1
+(a BIGINT AUTO_INCREMENT PRIMARY KEY,
+b VARCHAR(255))
+ENGINE = 'NDBCluster'
+PARTITION BY KEY (a)
+(PARTITION LT1000,
+PARTITION LT2000,
+PARTITION MAX);
+INSERT INTO t1 VALUES (NULL, "First"), (NULL, "Second"), (999, "Last in LT1000"), (NULL, "First in LT2000"), (NULL, "Second in LT2000"), (1999, "Last in LT2000"), (NULL, "First in MAX"), (NULL, "Second in MAX");
+ALTER TABLE t1 TRUNCATE PARTITION MAX;
+Got one of the listed errors
# Cleaning up before exit
USE test;
DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_special_innodb.result b/mysql-test/suite/parts/r/partition_special_innodb.result
index 8869f6d450c..26c1ac9356c 100644
--- a/mysql-test/suite/parts/r/partition_special_innodb.result
+++ b/mysql-test/suite/parts/r/partition_special_innodb.result
@@ -133,7 +133,7 @@ partition pa1 max_rows=20 min_rows=2,
partition pa2 max_rows=30 min_rows=3,
partition pa3 max_rows=30 min_rows=4,
partition pa4 max_rows=40 min_rows=2);
-ERROR 42000: Too many key parts specified; max 16 parts allowed
+ERROR HY000: Too many fields in 'list of partition fields'
create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1)) engine='InnoDB'
partition by key(a,b,c,d,e,f,g,h) (
partition pa1 max_rows=20 min_rows=2,
diff --git a/mysql-test/suite/parts/r/partition_special_myisam.result b/mysql-test/suite/parts/r/partition_special_myisam.result
index 7167d6af39e..60c9f9666cd 100644
--- a/mysql-test/suite/parts/r/partition_special_myisam.result
+++ b/mysql-test/suite/parts/r/partition_special_myisam.result
@@ -133,7 +133,7 @@ partition pa1 max_rows=20 min_rows=2,
partition pa2 max_rows=30 min_rows=3,
partition pa3 max_rows=30 min_rows=4,
partition pa4 max_rows=40 min_rows=2);
-ERROR 42000: Too many key parts specified; max 16 parts allowed
+ERROR HY000: Too many fields in 'list of partition fields'
create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1)) engine='MyISAM'
partition by key(a,b,c,d,e,f,g,h) (
partition pa1 max_rows=20 min_rows=2,
diff --git a/mysql-test/suite/parts/r/partition_syntax_innodb.result b/mysql-test/suite/parts/r/partition_syntax_innodb.result
index c27a1386409..848a30a13df 100644
--- a/mysql-test/suite/parts/r/partition_syntax_innodb.result
+++ b/mysql-test/suite/parts/r/partition_syntax_innodb.result
@@ -610,8 +610,7 @@ f_charbig VARCHAR(1000)
PARTITION BY RANGE(f_int1)
( PARTITION part1 VALUES LESS THAN (NULL),
PARTITION part2 VALUES LESS THAN (1000));
-ERROR 42000: Not allowed to use NULL value in VALUES LESS THAN near '),
-PARTITION part2 VALUES LESS THAN (1000))' at line 9
+ERROR HY000: Not allowed to use NULL value in VALUES LESS THAN
# 3.5.1.2 VALUE LESS THAN (NULL) is not allowed
CREATE TABLE t1 (
f_int1 INTEGER,
@@ -623,8 +622,7 @@ f_charbig VARCHAR(1000)
PARTITION BY RANGE(f_int1)
( PARTITION part1 VALUES LESS THAN (NULL),
PARTITION part2 VALUES LESS THAN (1000));
-ERROR 42000: Not allowed to use NULL value in VALUES LESS THAN near '),
-PARTITION part2 VALUES LESS THAN (1000))' at line 9
+ERROR HY000: Not allowed to use NULL value in VALUES LESS THAN
# 3.5.2 NULL in LIST partitioning clause
# 3.5.2.1 VALUE IN (NULL)
CREATE TABLE t1 (
diff --git a/mysql-test/suite/parts/r/partition_syntax_myisam.result b/mysql-test/suite/parts/r/partition_syntax_myisam.result
index 0cf98765797..f3b7f5b3025 100644
--- a/mysql-test/suite/parts/r/partition_syntax_myisam.result
+++ b/mysql-test/suite/parts/r/partition_syntax_myisam.result
@@ -610,8 +610,7 @@ f_charbig VARCHAR(1000)
PARTITION BY RANGE(f_int1)
( PARTITION part1 VALUES LESS THAN (NULL),
PARTITION part2 VALUES LESS THAN (1000));
-ERROR 42000: Not allowed to use NULL value in VALUES LESS THAN near '),
-PARTITION part2 VALUES LESS THAN (1000))' at line 9
+ERROR HY000: Not allowed to use NULL value in VALUES LESS THAN
# 3.5.1.2 VALUE LESS THAN (NULL) is not allowed
CREATE TABLE t1 (
f_int1 INTEGER,
@@ -623,8 +622,7 @@ f_charbig VARCHAR(1000)
PARTITION BY RANGE(f_int1)
( PARTITION part1 VALUES LESS THAN (NULL),
PARTITION part2 VALUES LESS THAN (1000));
-ERROR 42000: Not allowed to use NULL value in VALUES LESS THAN near '),
-PARTITION part2 VALUES LESS THAN (1000))' at line 9
+ERROR HY000: Not allowed to use NULL value in VALUES LESS THAN
# 3.5.2 NULL in LIST partitioning clause
# 3.5.2.1 VALUE IN (NULL)
CREATE TABLE t1 (
diff --git a/mysql-test/suite/parts/r/rpl_partition.result b/mysql-test/suite/parts/r/rpl_partition.result
index c2537815631..78d8beb17ed 100644
--- a/mysql-test/suite/parts/r/rpl_partition.result
+++ b/mysql-test/suite/parts/r/rpl_partition.result
@@ -11,6 +11,17 @@ SET SESSION binlog_format = 'ROW';
select @@global.binlog_format, @@session.binlog_format;
@@global.binlog_format ROW
@@session.binlog_format ROW
+[on slave]
+set @old_global_binlog_format= @@global.binlog_format;
+set @old_session_binlog_format= @@session.binlog_format;
+SET GLOBAL binlog_format = 'ROW';
+SET SESSION binlog_format = 'ROW';
+select @@global.binlog_format, @@session.binlog_format;
+@@global.binlog_format ROW
+@@session.binlog_format ROW
+include/stop_slave.inc
+include/start_slave.inc
+[on master]
DROP TABLE IF EXISTS t1, t2, t3;
DROP PROCEDURE IF EXISTS p1;
DROP PROCEDURE IF EXISTS p2;
@@ -177,6 +188,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SELECT count(*) "Slave norm" FROM t1;
Slave norm 500
SELECT count(*) "Slave bykey" FROM t2;
@@ -189,3 +202,6 @@ DROP TABLE t1, t2, t3;
DROP PROCEDURE IF EXISTS p1;
DROP PROCEDURE IF EXISTS p2;
DROP PROCEDURE IF EXISTS p3;
+[on slave]
+set @@global.binlog_format= @old_global_binlog_format;
+set @@session.binlog_format= @old_session_binlog_format;
diff --git a/mysql-test/suite/parts/t/disabled.def b/mysql-test/suite/parts/t/disabled.def
index 518a3c90422..8a1dafe59a2 100644
--- a/mysql-test/suite/parts/t/disabled.def
+++ b/mysql-test/suite/parts/t/disabled.def
@@ -1,3 +1,3 @@
-partition_basic_ndb : Bug#19899 Crashing the server
+partition_basic_ndb : Bug#44919 parts-suite in mtr tries to use features not supported by ndb
# http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-limitations-syntax.html
partition_syntax_ndb : Bug#36735 Not supported
diff --git a/mysql-test/suite/parts/t/partition_alter2_1_innodb.test b/mysql-test/suite/parts/t/partition_alter2_1_1_innodb.test
index b5f29e4ad72..9500f05b173 100644
--- a/mysql-test/suite/parts/t/partition_alter2_1_innodb.test
+++ b/mysql-test/suite/parts/t/partition_alter2_1_1_innodb.test
@@ -1,5 +1,5 @@
################################################################################
-# t/partition_alter2_1_innodb.test #
+# t/partition_alter2_1_1_innodb.test #
# #
# Purpose: #
# Tests around Alter column used in partitioning function #
@@ -39,6 +39,8 @@ SET @max_row = 20;
##### Execute more tests #####
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# only do the first part
+let $only_part_1= 1;
# The server must support partitioning.
--source include/have_partition.inc
diff --git a/mysql-test/suite/parts/t/partition_alter2_1_2_innodb.test b/mysql-test/suite/parts/t/partition_alter2_1_2_innodb.test
new file mode 100644
index 00000000000..28bbcb3115b
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_alter2_1_2_innodb.test
@@ -0,0 +1,82 @@
+################################################################################
+# t/partition_alter2_1_2_innodb.test #
+# #
+# Purpose: #
+# Tests around Alter column used in partitioning function #
+# InnoDB branch #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: mleich #
+# Original Date: 2006-03-05 #
+# Change Author: #
+# Change Date: #
+# Change: #
+################################################################################
+
+#
+# NOTE: PLEASE DO NOT ADD NOT INNODB SPECIFIC TESTCASES HERE !
+# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
+# THE SOURCED FILES ONLY.
+#
+# Please read the README at the end of inc/partition.pre before changing
+# any of the variables.
+#
+
+#------------------------------------------------------------------------------#
+# General not engine specific settings and requirements
+
+##### Options, for debugging support #####
+let $debug= 0;
+let $with_partitioning= 1;
+
+##### Option, for displaying files #####
+let $ls= 1;
+
+##### Number of rows for the INSERT/UPDATE/DELETE/SELECT experiments #####
+# on partioned tables
+SET @max_row = 20;
+
+##### Execute more tests #####
+let $more_trigger_tests= 0;
+let $more_pk_ui_tests= 0;
+# only do the second part
+let $only_part_2= 1;
+
+# The server must support partitioning.
+--source include/have_partition.inc
+
+#------------------------------------------------------------------------------#
+# Engine specific settings and requirements
+
+##### Storage engine to be tested
+--source include/have_innodb.inc
+let $engine= 'InnoDB';
+
+##### Execute the test of "table" files
+# InnoDB has no files per PK, UI, ...
+let $do_file_tests= 0;
+
+##### Execute PRIMARY KEY tests #####
+# AFAIK InnoDB clusters the table around PRIMARY KEYs.
+let $do_pk_tests= 1;
+
+##### Assign a big number smaller than the maximum value for partitions #####
+# and smaller than the maximum value of SIGNED INTEGER
+let $MAX_VALUE= (2147483646);
+
+# Generate the prerequisites ($variables, @variables, tables) needed
+--source suite/parts/inc/partition.pre
+
+##### Workarounds for known open engine specific bugs
+# none
+
+#------------------------------------------------------------------------------#
+# Execute the tests to be applied to all storage engines
+--source suite/parts/inc/partition_alter2_1.inc
+
+#------------------------------------------------------------------------------#
+# Execute storage engine specific tests
+
+#------------------------------------------------------------------------------#
+# Cleanup
+--source suite/parts/inc/partition_cleanup.inc
diff --git a/mysql-test/suite/parts/t/partition_alter2_2_innodb.test b/mysql-test/suite/parts/t/partition_alter2_2_1_innodb.test
index 1d8ac251aca..2bb30feb35d 100644
--- a/mysql-test/suite/parts/t/partition_alter2_2_innodb.test
+++ b/mysql-test/suite/parts/t/partition_alter2_2_1_innodb.test
@@ -1,5 +1,5 @@
################################################################################
-# t/partition_alter2_2_innodb.test #
+# t/partition_alter2_2_1_innodb.test #
# #
# Purpose: #
# Tests around Alter column used in partitioning function #
@@ -39,6 +39,8 @@ SET @max_row = 20;
##### Execute more tests #####
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# only do the first part
+let $only_part_1= 1;
# The server must support partitioning.
--source include/have_partition.inc
diff --git a/mysql-test/suite/parts/t/partition_alter2_2_2_innodb.test b/mysql-test/suite/parts/t/partition_alter2_2_2_innodb.test
new file mode 100644
index 00000000000..a356b4e31a3
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_alter2_2_2_innodb.test
@@ -0,0 +1,82 @@
+################################################################################
+# t/partition_alter2_2_2_innodb.test #
+# #
+# Purpose: #
+# Tests around Alter column used in partitioning function #
+# InnoDB branch #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: mleich #
+# Original Date: 2006-03-05 #
+# Change Author: #
+# Change Date: #
+# Change: #
+################################################################################
+
+#
+# NOTE: PLEASE DO NOT ADD NOT INNODB SPECIFIC TESTCASES HERE !
+# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
+# THE SOURCED FILES ONLY.
+#
+# Please read the README at the end of inc/partition.pre before changing
+# any of the variables.
+#
+
+#------------------------------------------------------------------------------#
+# General not engine specific settings and requirements
+
+##### Options, for debugging support #####
+let $debug= 0;
+let $with_partitioning= 1;
+
+##### Option, for displaying files #####
+let $ls= 1;
+
+##### Number of rows for the INSERT/UPDATE/DELETE/SELECT experiments #####
+# on partioned tables
+SET @max_row = 20;
+
+##### Execute more tests #####
+let $more_trigger_tests= 0;
+let $more_pk_ui_tests= 0;
+# only do the second part
+let $only_part_2= 1;
+
+# The server must support partitioning.
+--source include/have_partition.inc
+
+#------------------------------------------------------------------------------#
+# Engine specific settings and requirements
+
+##### Storage engine to be tested
+--source include/have_innodb.inc
+let $engine= 'InnoDB';
+
+##### Execute the test of "table" files
+# InnoDB has no files per PK, UI, ...
+let $do_file_tests= 0;
+
+##### Execute PRIMARY KEY tests #####
+# AFAIK InnoDB clusters the table around PRIMARY KEYs.
+let $do_pk_tests= 1;
+
+##### Assign a big number smaller than the maximum value for partitions #####
+# and smaller than the maximum value of SIGNED INTEGER
+let $MAX_VALUE= (2147483646);
+
+# Generate the prerequisites ($variables, @variables, tables) needed
+--source suite/parts/inc/partition.pre
+
+##### Workarounds for known open engine specific bugs
+# none
+
+#------------------------------------------------------------------------------#
+# Execute the tests to be applied to all storage engines
+--source suite/parts/inc/partition_alter2_2.inc
+
+#------------------------------------------------------------------------------#
+# Execute storage engine specific tests
+
+#------------------------------------------------------------------------------#
+# Cleanup
+--source suite/parts/inc/partition_cleanup.inc
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc0_archive.test b/mysql-test/suite/parts/t/partition_mgm_lc0_archive.test
index 5b4f2568d46..313da329a9f 100644
--- a/mysql-test/suite/parts/t/partition_mgm_lc0_archive.test
+++ b/mysql-test/suite/parts/t/partition_mgm_lc0_archive.test
@@ -35,6 +35,7 @@
##### Storage engine to be tested
--source include/have_archive.inc
let $engine= 'Archive';
+let $no_truncate= 1;
#------------------------------------------------------------------------------#
# Execute the tests to be applied to all storage engines
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc0_ndb.test b/mysql-test/suite/parts/t/partition_mgm_lc0_ndb.test
index 686c69cca25..736e45067bc 100644
--- a/mysql-test/suite/parts/t/partition_mgm_lc0_ndb.test
+++ b/mysql-test/suite/parts/t/partition_mgm_lc0_ndb.test
@@ -41,6 +41,8 @@ let $can_only_key= 1;
# Allow hash/list/range partitioning with ndb
#SET new=on;
let $engine= 'NDBCluster';
+# NDB does not yet support TRUNCATE PARTITION
+let $no_truncate= 1;
#------------------------------------------------------------------------------#
# Execute the tests to be applied to all storage engines
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc1_archive.test b/mysql-test/suite/parts/t/partition_mgm_lc1_archive.test
index 2bc643db75f..58eef828f06 100644
--- a/mysql-test/suite/parts/t/partition_mgm_lc1_archive.test
+++ b/mysql-test/suite/parts/t/partition_mgm_lc1_archive.test
@@ -32,6 +32,7 @@
##### Storage engine to be tested
--source include/have_archive.inc
let $engine= 'Archive';
+let $no_truncate= 1;
#------------------------------------------------------------------------------#
# Execute the tests to be applied to all storage engines
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc1_ndb.test b/mysql-test/suite/parts/t/partition_mgm_lc1_ndb.test
index a70b9b5c41c..ac425eb84ff 100644
--- a/mysql-test/suite/parts/t/partition_mgm_lc1_ndb.test
+++ b/mysql-test/suite/parts/t/partition_mgm_lc1_ndb.test
@@ -38,6 +38,8 @@ let $can_only_key= 1;
# Allow hash/list/range partitioning with ndb
#SET new=on;
let $engine= 'NDBCluster';
+# NDB does not yet support TRUNCATE PARTITION
+let $no_truncate= 1;
#------------------------------------------------------------------------------#
# Execute the tests to be applied to all storage engines
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc2_archive.test b/mysql-test/suite/parts/t/partition_mgm_lc2_archive.test
index d0e2591804d..92036178e59 100644
--- a/mysql-test/suite/parts/t/partition_mgm_lc2_archive.test
+++ b/mysql-test/suite/parts/t/partition_mgm_lc2_archive.test
@@ -32,6 +32,7 @@
##### Storage engine to be tested
--source include/have_archive.inc
let $engine= 'Archive';
+let $no_truncate= 1;
#------------------------------------------------------------------------------#
# Execute the tests to be applied to all storage engines
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc2_ndb.test b/mysql-test/suite/parts/t/partition_mgm_lc2_ndb.test
index 67fdfdde70b..725ba3b5e74 100644
--- a/mysql-test/suite/parts/t/partition_mgm_lc2_ndb.test
+++ b/mysql-test/suite/parts/t/partition_mgm_lc2_ndb.test
@@ -37,6 +37,8 @@ let $can_only_key= 1;
# Allow hash/list/range partitioning with ndb
#SET new=on;
let $engine= 'NDBCluster';
+# NDB does not yet support TRUNCATE PARTITION
+let $no_truncate= 1;
#------------------------------------------------------------------------------#
# Execute the tests to be applied to all storage engines
diff --git a/mysql-test/suite/parts/t/partition_repair_myisam.test b/mysql-test/suite/parts/t/partition_repair_myisam.test
index a7ceb5b7faf..146e52db092 100644
--- a/mysql-test/suite/parts/t/partition_repair_myisam.test
+++ b/mysql-test/suite/parts/t/partition_repair_myisam.test
@@ -3,6 +3,8 @@
--disable_warnings
--disable_query_log
drop table if exists t1_will_crash;
+call mtr.add_suppression("Got an error from thread_id=.*ha_myisam.cc:");
+call mtr.add_suppression("MySQL thread id .*, query id .* localhost.*root Checking table");
--enable_query_log
--enable_warnings
diff --git a/mysql-test/suite/parts/t/rpl_partition.test b/mysql-test/suite/parts/t/rpl_partition.test
index c5ee20971b3..6a5a17ad5af 100644
--- a/mysql-test/suite/parts/t/rpl_partition.test
+++ b/mysql-test/suite/parts/t/rpl_partition.test
@@ -11,6 +11,19 @@ set @old_session_binlog_format= @@session.binlog_format;
SET GLOBAL binlog_format = 'ROW';
SET SESSION binlog_format = 'ROW';
select @@global.binlog_format, @@session.binlog_format;
+--echo [on slave]
+connection slave;
+set @old_global_binlog_format= @@global.binlog_format;
+set @old_session_binlog_format= @@session.binlog_format;
+SET GLOBAL binlog_format = 'ROW';
+SET SESSION binlog_format = 'ROW';
+select @@global.binlog_format, @@session.binlog_format;
+# restart slave so that slave sql thread's binlog format is re-read
+# from @@global.binlog_format
+--source include/stop_slave.inc
+--source include/start_slave.inc
+--echo [on master]
+connection master;
--disable_warnings
DROP TABLE IF EXISTS t1, t2, t3;
@@ -158,8 +171,9 @@ DROP TABLE t1, t2, t3;
DROP PROCEDURE IF EXISTS p1;
DROP PROCEDURE IF EXISTS p2;
DROP PROCEDURE IF EXISTS p3;
-save_master_pos;
-connection slave;
-sync_with_master;
+--echo [on slave]
+sync_slave_with_master;
+set @@global.binlog_format= @old_global_binlog_format;
+set @@session.binlog_format= @old_session_binlog_format;
# End of 5.1 tests
diff --git a/mysql-test/suite/perfschema/include/binlog_common.inc b/mysql-test/suite/perfschema/include/binlog_common.inc
new file mode 100644
index 00000000000..10afe54ab5b
--- /dev/null
+++ b/mysql-test/suite/perfschema/include/binlog_common.inc
@@ -0,0 +1,49 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+RESET MASTER;
+
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS;
+
+update performance_schema.SETUP_INSTRUMENTS set enabled='NO'
+ where name like "wait/synch/rwlock/%";
+
+select count(*) > 0 from performance_schema.EVENTS_WAITS_CURRENT;
+
+--disable_warnings
+drop table if exists test.t1;
+drop table if exists test.t2;
+--enable_warnings
+
+create table test.t1 (thread_id integer);
+create table test.t2 (name varchar(128));
+
+insert into test.t1
+ select thread_id from performance_schema.EVENTS_WAITS_CURRENT;
+
+insert into test.t2
+ select name from performance_schema.SETUP_INSTRUMENTS
+ where name like "wait/synch/rwlock/%";
+
+drop table test.t1;
+drop table test.t2;
+
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES'
+ where name like "wait/synch/rwlock/%";
+
+--source include/show_binlog_events.inc
+
diff --git a/mysql-test/suite/perfschema/include/cleanup_helper.inc b/mysql-test/suite/perfschema/include/cleanup_helper.inc
new file mode 100644
index 00000000000..5c2429ddb97
--- /dev/null
+++ b/mysql-test/suite/perfschema/include/cleanup_helper.inc
@@ -0,0 +1,25 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES';
+
+disconnect con1;
+disconnect con2;
+disconnect con3;
+
+connection default;
+
diff --git a/mysql-test/suite/perfschema/include/privilege.inc b/mysql-test/suite/perfschema/include/privilege.inc
new file mode 100644
index 00000000000..ef2acc995d5
--- /dev/null
+++ b/mysql-test/suite/perfschema/include/privilege.inc
@@ -0,0 +1,194 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--disable_warnings
+drop table if exists test.t1;
+--enable_warnings
+
+## The result of show grants is not consistent across platforms ...
+## show grants;
+
+## Not enforced yet: deny CREATE_ACL and DROP_ACL
+## Waiting to remove .FRM files first
+##
+## --error ER_DBACCESS_DENIED_ERROR
+## create table performance_schema.t1(a int);
+##
+## --error ER_DBACCESS_DENIED_ERROR
+## drop table performance_schema.t1;
+##
+## --error ER_DBACCESS_DENIED_ERROR
+## create table performance_schema.SETUP_INSTRUMENTS(a int);
+##
+## --error ER_DBACCESS_DENIED_ERROR
+## create table performance_schema.EVENTS_WAITS_CURRENT(a int);
+##
+## --error ER_DBACCESS_DENIED_ERROR
+## create table performance_schema.FILE_INSTANCES(a int);
+##
+## --error ER_DBACCESS_DENIED_ERROR
+## drop table performance_schema.SETUP_INSTRUMENTS;
+##
+## --error ER_DBACCESS_DENIED_ERROR
+## drop table performance_schema.EVENTS_WAITS_CURRENT;
+##
+## --error ER_DBACCESS_DENIED_ERROR
+## drop table performance_schema.FILE_INSTANCES;
+
+--error ER_DBACCESS_DENIED_ERROR
+rename table performance_schema.SETUP_INSTRUMENTS to test.t1;
+
+--error ER_DBACCESS_DENIED_ERROR
+rename table performance_schema.EVENTS_WAITS_CURRENT to test.t1;
+
+--error ER_DBACCESS_DENIED_ERROR
+rename table performance_schema.FILE_INSTANCES to test.t1;
+
+--error ER_DBACCESS_DENIED_ERROR
+rename table performance_schema.SETUP_INSTRUMENTS to performance_schema.t1;
+
+--error ER_DBACCESS_DENIED_ERROR
+rename table performance_schema.EVENTS_WAITS_CURRENT to performance_schema.t1;
+
+--error ER_DBACCESS_DENIED_ERROR
+rename table performance_schema.FILE_INSTANCES to performance_schema.t1;
+
+--error ER_DBACCESS_DENIED_ERROR
+rename table performance_schema.SETUP_INSTRUMENTS
+ to performance_schema.EVENTS_WAITS_CURRENT;
+
+--error ER_DBACCESS_DENIED_ERROR
+rename table performance_schema.EVENTS_WAITS_CURRENT
+ to performance_schema.SETUP_INSTRUMENTS;
+
+--error ER_DBACCESS_DENIED_ERROR
+create procedure performance_schema.my_proc() begin end;
+
+--error ER_DBACCESS_DENIED_ERROR
+create function performance_schema.my_func() returns int return 0;
+
+--error ER_DBACCESS_DENIED_ERROR
+create event performance_schema.my_event on schedule every 15 minute
+do begin end;
+
+--error ER_DBACCESS_DENIED_ERROR
+create trigger performance_schema.bi_setup_instruments
+ before insert on performance_schema.SETUP_INSTRUMENTS
+ for each row begin end;
+
+--error ER_DBACCESS_DENIED_ERROR
+create trigger performance_schema.bi_events_waits_current
+ before insert on performance_schema.EVENTS_WAITS_CURRENT
+ for each row begin end;
+
+--error ER_DBACCESS_DENIED_ERROR
+create trigger performance_schema.bi_file_instances
+ before insert on performance_schema.FILE_INSTANCES
+ for each row begin end;
+
+--error ER_WRONG_PERFSCHEMA_USAGE
+create table test.t1(a int) engine=PERFORMANCE_SCHEMA;
+
+--error ER_WRONG_PERFSCHEMA_USAGE
+create table test.t1 like performance_schema.SETUP_INSTRUMENTS;
+
+--error ER_WRONG_PERFSCHEMA_USAGE
+create table test.t1 like performance_schema.EVENTS_WAITS_CURRENT;
+
+--error ER_WRONG_PERFSCHEMA_USAGE
+create table test.t1 like performance_schema.FILE_INSTANCES;
+
+--replace_result '\'setup_instruments' '\'SETUP_INSTRUMENTS'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.SETUP_INSTRUMENTS
+ set name="foo";
+
+--replace_result '\'events_waits_current' '\'EVENTS_WAITS_CURRENT'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.EVENTS_WAITS_CURRENT
+ set name="foo";
+
+--replace_result '\'file_instances' '\'FILE_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.FILE_INSTANCES
+ set name="foo";
+
+--replace_result '\'setup_instruments' '\'SETUP_INSTRUMENTS'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.SETUP_INSTRUMENTS;
+
+--replace_result '\'events_waits_current' '\'EVENTS_WAITS_CURRENT'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.EVENTS_WAITS_CURRENT;
+
+--replace_result '\'file_instances' '\'FILE_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.FILE_INSTANCES;
+
+lock table performance_schema.SETUP_INSTRUMENTS read;
+unlock tables;
+
+lock table performance_schema.SETUP_INSTRUMENTS write;
+unlock tables;
+
+--replace_result '\'events_waits_current' '\'EVENTS_WAITS_CURRENT'
+--error ER_TABLEACCESS_DENIED_ERROR
+lock table performance_schema.EVENTS_WAITS_CURRENT read;
+unlock tables;
+
+--replace_result '\'events_waits_current' '\'EVENTS_WAITS_CURRENT'
+--error ER_TABLEACCESS_DENIED_ERROR
+lock table performance_schema.EVENTS_WAITS_CURRENT write;
+unlock tables;
+
+--replace_result '\'file_instances' '\'FILE_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+lock table performance_schema.FILE_INSTANCES read;
+unlock tables;
+
+--replace_result '\'file_instances' '\'FILE_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+lock table performance_schema.FILE_INSTANCES write;
+unlock tables;
+
+--echo #
+--echo # WL#4818, NFS2: Can use grants to give normal user access
+--echo # to view data from _CURRENT and _HISTORY tables
+--echo #
+--echo # Should work as pfs_user_1 and pfs_user_2, but not as pfs_user_3.
+--echo # (Except for EVENTS_WAITS_CURRENT, which is granted.)
+
+# Errors here will be caught by the diff afterwards
+--disable_abort_on_error
+
+--replace_result '\'events_waits_history' '\'EVENTS_WAITS_HISTORY'
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_HISTORY LIMIT 1;
+
+--replace_result '\'events_waits_history_long' '\'EVENTS_WAITS_HISTORY_LONG'
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_HISTORY_LONG LIMIT 1;
+
+--replace_result '\'events_waits_current' '\'EVENTS_WAITS_CURRENT'
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_CURRENT LIMIT 1;
+
+--replace_result '\'events_waits_summary_by_instance' '\'EVENTS_WAITS_SUMMARY_BY_INSTANCE'
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE LIMIT 1;
+
+--replace_result '\'file_summary_by_instance' '\'FILE_SUMMARY_BY_INSTANCE'
+SELECT "can select" FROM performance_schema.FILE_SUMMARY_BY_INSTANCE LIMIT 1;
+
+--enable_abort_on_error
+
diff --git a/mysql-test/suite/perfschema/include/setup_helper.inc b/mysql-test/suite/perfschema/include/setup_helper.inc
new file mode 100644
index 00000000000..8a2dfa86496
--- /dev/null
+++ b/mysql-test/suite/perfschema/include/setup_helper.inc
@@ -0,0 +1,54 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+let $MYSQLD_DATADIR= `select @@datadir`;
+let $MYSQLD_TMPDIR= `select @@tmpdir`;
+
+--disable_query_log
+update performance_schema.SETUP_INSTRUMENTS set enabled='NO';
+update performance_schema.SETUP_CONSUMERS set enabled='YES';
+--enable_query_log
+
+connect (con1, localhost, root, , );
+
+let $con1_THREAD_ID=`select thread_id from performance_schema.PROCESSLIST
+ where ID in (select connection_id())`;
+
+connect (con2, localhost, root, , );
+
+let $con2_THREAD_ID=`select thread_id from performance_schema.PROCESSLIST
+ where ID in (select connection_id())`;
+
+connect (con3, localhost, root, , );
+
+let $con3_THREAD_ID=`select thread_id from performance_schema.PROCESSLIST
+ where ID in (select connection_id())`;
+
+connection default;
+
+--disable_query_log
+prepare stmt_dump_events from
+ "select event_name,
+ left(source, locate(\":\", source)) as short_source,
+ operation, number_of_bytes
+ from performance_schema.EVENTS_WAITS_HISTORY_LONG
+ where thread_id=? order by event_id;";
+
+prepare stmt_dump_thread from
+ "select name from performance_schema.PROCESSLIST where thread_id=? ;";
+--enable_query_log
+
diff --git a/mysql-test/suite/perfschema/include/start_server_common.inc b/mysql-test/suite/perfschema/include/start_server_common.inc
new file mode 100644
index 00000000000..fa1cb953f59
--- /dev/null
+++ b/mysql-test/suite/perfschema/include/start_server_common.inc
@@ -0,0 +1,62 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+show databases;
+
+select count(*) from performance_schema.PERFORMANCE_TIMERS;
+select count(*) from performance_schema.SETUP_CONSUMERS;
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS;
+select count(*) from performance_schema.SETUP_TIMERS;
+
+# Make sure we don't crash, no matter what the starting parameters are
+
+--disable_result_log
+select * from performance_schema.COND_INSTANCES;
+select * from performance_schema.EVENTS_WAITS_CURRENT;
+select * from performance_schema.EVENTS_WAITS_HISTORY;
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+select * from performance_schema.FILE_INSTANCES;
+select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
+select * from performance_schema.MUTEX_INSTANCES;
+select * from performance_schema.PERFORMANCE_TIMERS;
+select * from performance_schema.PROCESSLIST;
+select * from performance_schema.RWLOCK_INSTANCES;
+select * from performance_schema.SETUP_CONSUMERS;
+select * from performance_schema.SETUP_INSTRUMENTS;
+select * from performance_schema.SETUP_OBJECTS;
+select * from performance_schema.SETUP_TIMERS;
+--enable_result_log
+
+# This has a stable output, printing the result:
+show variables like "performance_schema%";
+
+# This has an unrepeatable output, it does depends too much on
+# - the platform hardware (sizeof structures, padding)
+# - the compiler used (sizeof(enum))
+# - the platform header files (sizeof(size_t))
+# - the code path in the server (what gets executed and instrumented
+# at runtime)
+
+--disable_result_log
+show engine PERFORMANCE_SCHEMA status;
+show status like "performance_schema%";
+--enable_result_log
+
diff --git a/mysql-test/suite/perfschema/r/aggregate.result b/mysql-test/suite/perfschema/r/aggregate.result
new file mode 100644
index 00000000000..598f9297cc5
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/aggregate.result
@@ -0,0 +1,101 @@
+"General cleanup"
+drop table if exists t1;
+update performance_schema.SETUP_INSTRUMENTS set enabled = 'NO';
+update performance_schema.SETUP_CONSUMERS set enabled = 'NO';
+truncate table performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
+truncate table performance_schema.FILE_SUMMARY_BY_INSTANCE;
+truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+update performance_schema.SETUP_CONSUMERS set enabled = 'YES';
+update performance_schema.SETUP_INSTRUMENTS
+set enabled = 'YES', timed = 'YES';
+create table t1 (
+id INT PRIMARY KEY,
+b CHAR(100) DEFAULT 'initial value')
+ENGINE=MyISAM;
+insert into t1 (id) values (1), (2), (3), (4), (5), (6), (7), (8);
+update performance_schema.SETUP_INSTRUMENTS SET enabled = 'NO';
+set @dump_all=FALSE;
+"Verifying file aggregate consistency"
+SELECT EVENT_NAME, e.COUNT_READ, SUM(i.COUNT_READ)
+FROM performance_schema.FILE_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.FILE_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.COUNT_READ <> SUM(i.COUNT_READ))
+OR @dump_all;
+EVENT_NAME COUNT_READ SUM(i.COUNT_READ)
+SELECT EVENT_NAME, e.COUNT_WRITE, SUM(i.COUNT_WRITE)
+FROM performance_schema.FILE_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.FILE_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.COUNT_WRITE <> SUM(i.COUNT_WRITE))
+OR @dump_all;
+EVENT_NAME COUNT_WRITE SUM(i.COUNT_WRITE)
+SELECT EVENT_NAME, e.SUM_NUMBER_OF_BYTES_READ, SUM(i.SUM_NUMBER_OF_BYTES_READ)
+FROM performance_schema.FILE_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.FILE_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.SUM_NUMBER_OF_BYTES_READ <> SUM(i.SUM_NUMBER_OF_BYTES_READ))
+OR @dump_all;
+EVENT_NAME SUM_NUMBER_OF_BYTES_READ SUM(i.SUM_NUMBER_OF_BYTES_READ)
+SELECT EVENT_NAME, e.SUM_NUMBER_OF_BYTES_WRITE, SUM(i.SUM_NUMBER_OF_BYTES_WRITE)
+FROM performance_schema.FILE_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.FILE_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.SUM_NUMBER_OF_BYTES_WRITE <> SUM(i.SUM_NUMBER_OF_BYTES_WRITE))
+OR @dump_all;
+EVENT_NAME SUM_NUMBER_OF_BYTES_WRITE SUM(i.SUM_NUMBER_OF_BYTES_WRITE)
+"Verifying waits aggregate consistency (instance)"
+SELECT EVENT_NAME, e.SUM_TIMER_WAIT, SUM(i.SUM_TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.SUM_TIMER_WAIT <> SUM(i.SUM_TIMER_WAIT))
+OR @dump_all;
+EVENT_NAME SUM_TIMER_WAIT SUM(i.SUM_TIMER_WAIT)
+SELECT EVENT_NAME, e.MIN_TIMER_WAIT, MIN(i.MIN_TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.MIN_TIMER_WAIT <> MIN(i.MIN_TIMER_WAIT))
+AND (MIN(i.MIN_TIMER_WAIT) != 0)
+OR @dump_all;
+EVENT_NAME MIN_TIMER_WAIT MIN(i.MIN_TIMER_WAIT)
+SELECT EVENT_NAME, e.MAX_TIMER_WAIT, MAX(i.MAX_TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.MAX_TIMER_WAIT <> MAX(i.MAX_TIMER_WAIT))
+OR @dump_all;
+EVENT_NAME MAX_TIMER_WAIT MAX(i.MAX_TIMER_WAIT)
+"Verifying waits aggregate consistency (thread)"
+SELECT EVENT_NAME, e.SUM_TIMER_WAIT, SUM(t.SUM_TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
+USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.SUM_TIMER_WAIT <> SUM(t.SUM_TIMER_WAIT))
+OR @dump_all;
+EVENT_NAME SUM_TIMER_WAIT SUM(t.SUM_TIMER_WAIT)
+SELECT EVENT_NAME, e.MIN_TIMER_WAIT, MIN(t.MIN_TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
+USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.MIN_TIMER_WAIT <> MIN(t.MIN_TIMER_WAIT))
+AND (MIN(t.MIN_TIMER_WAIT) != 0)
+OR @dump_all;
+EVENT_NAME MIN_TIMER_WAIT MIN(t.MIN_TIMER_WAIT)
+SELECT EVENT_NAME, e.MAX_TIMER_WAIT, MAX(t.MAX_TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
+USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.MAX_TIMER_WAIT <> MAX(t.MAX_TIMER_WAIT))
+OR @dump_all;
+EVENT_NAME MAX_TIMER_WAIT MAX(t.MAX_TIMER_WAIT)
+update performance_schema.SETUP_CONSUMERS set enabled = 'YES';
+update performance_schema.SETUP_INSTRUMENTS
+set enabled = 'YES', timed = 'YES';
+drop table test.t1;
diff --git a/mysql-test/suite/perfschema/r/bad_option_1.result b/mysql-test/suite/perfschema/r/bad_option_1.result
new file mode 100644
index 00000000000..02fd04afd33
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/bad_option_1.result
@@ -0,0 +1,2 @@
+Found: unknown variable 'performance-schema-enabled=maybe'
+Found: Aborting
diff --git a/mysql-test/suite/perfschema/r/bad_option_2.result b/mysql-test/suite/perfschema/r/bad_option_2.result
new file mode 100644
index 00000000000..d8fda2af3b6
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/bad_option_2.result
@@ -0,0 +1 @@
+Found: ambiguous option '--performance-schema-max_=12'
diff --git a/mysql-test/suite/perfschema/r/binlog_mix.result b/mysql-test/suite/perfschema/r/binlog_mix.result
new file mode 100644
index 00000000000..b437f4eda1f
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/binlog_mix.result
@@ -0,0 +1,49 @@
+set binlog_format=mixed;
+RESET MASTER;
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS;
+count(*) > 0
+1
+update performance_schema.SETUP_INSTRUMENTS set enabled='NO'
+ where name like "wait/synch/rwlock/%";
+select count(*) > 0 from performance_schema.EVENTS_WAITS_CURRENT;
+count(*) > 0
+1
+drop table if exists test.t1;
+drop table if exists test.t2;
+create table test.t1 (thread_id integer);
+create table test.t2 (name varchar(128));
+insert into test.t1
+select thread_id from performance_schema.EVENTS_WAITS_CURRENT;
+insert into test.t2
+select name from performance_schema.SETUP_INSTRUMENTS
+where name like "wait/synch/rwlock/%";
+drop table test.t1;
+drop table test.t2;
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES'
+ where name like "wait/synch/rwlock/%";
+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 # Table_map # # table_id: # (performance_schema.SETUP_INSTRUMENTS)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; drop table if exists test.t1
+master-bin.000001 # Query # # use `test`; drop table if exists test.t2
+master-bin.000001 # Query # # use `test`; create table test.t1 (thread_id integer)
+master-bin.000001 # Query # # use `test`; create table test.t2 (name varchar(128))
+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 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; drop table test.t1
+master-bin.000001 # Query # # use `test`; drop table test.t2
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (performance_schema.SETUP_INSTRUMENTS)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
diff --git a/mysql-test/suite/perfschema/r/binlog_row.result b/mysql-test/suite/perfschema/r/binlog_row.result
new file mode 100644
index 00000000000..50a201a81d9
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/binlog_row.result
@@ -0,0 +1,49 @@
+set binlog_format=row;
+RESET MASTER;
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS;
+count(*) > 0
+1
+update performance_schema.SETUP_INSTRUMENTS set enabled='NO'
+ where name like "wait/synch/rwlock/%";
+select count(*) > 0 from performance_schema.EVENTS_WAITS_CURRENT;
+count(*) > 0
+1
+drop table if exists test.t1;
+drop table if exists test.t2;
+create table test.t1 (thread_id integer);
+create table test.t2 (name varchar(128));
+insert into test.t1
+select thread_id from performance_schema.EVENTS_WAITS_CURRENT;
+insert into test.t2
+select name from performance_schema.SETUP_INSTRUMENTS
+where name like "wait/synch/rwlock/%";
+drop table test.t1;
+drop table test.t2;
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES'
+ where name like "wait/synch/rwlock/%";
+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 # Table_map # # table_id: # (performance_schema.SETUP_INSTRUMENTS)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; drop table if exists test.t1
+master-bin.000001 # Query # # use `test`; drop table if exists test.t2
+master-bin.000001 # Query # # use `test`; create table test.t1 (thread_id integer)
+master-bin.000001 # Query # # use `test`; create table test.t2 (name varchar(128))
+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 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; drop table test.t1
+master-bin.000001 # Query # # use `test`; drop table test.t2
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (performance_schema.SETUP_INSTRUMENTS)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
diff --git a/mysql-test/suite/perfschema/r/binlog_stmt.result b/mysql-test/suite/perfschema/r/binlog_stmt.result
new file mode 100644
index 00000000000..b03b9a1f5af
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/binlog_stmt.result
@@ -0,0 +1,57 @@
+set binlog_format=statement;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+RESET MASTER;
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS;
+count(*) > 0
+1
+update performance_schema.SETUP_INSTRUMENTS set enabled='NO'
+ where name like "wait/synch/rwlock/%";
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+select count(*) > 0 from performance_schema.EVENTS_WAITS_CURRENT;
+count(*) > 0
+1
+drop table if exists test.t1;
+drop table if exists test.t2;
+create table test.t1 (thread_id integer);
+create table test.t2 (name varchar(128));
+insert into test.t1
+select thread_id from performance_schema.EVENTS_WAITS_CURRENT;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+insert into test.t2
+select name from performance_schema.SETUP_INSTRUMENTS
+where name like "wait/synch/rwlock/%";
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+drop table test.t1;
+drop table test.t2;
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES'
+ where name like "wait/synch/rwlock/%";
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses the general_log, slow_log or performance_schema table(s). This is unsafe because system tables may differ on slave.
+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`; update performance_schema.SETUP_INSTRUMENTS set enabled='NO'
+ where name like "wait/synch/rwlock/%"
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; drop table if exists test.t1
+master-bin.000001 # Query # # use `test`; drop table if exists test.t2
+master-bin.000001 # Query # # use `test`; create table test.t1 (thread_id integer)
+master-bin.000001 # Query # # use `test`; create table test.t2 (name varchar(128))
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; insert into test.t1
+select thread_id from performance_schema.EVENTS_WAITS_CURRENT
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; insert into test.t2
+select name from performance_schema.SETUP_INSTRUMENTS
+where name like "wait/synch/rwlock/%"
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; drop table test.t1
+master-bin.000001 # Query # # use `test`; drop table test.t2
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; update performance_schema.SETUP_INSTRUMENTS set enabled='YES'
+ where name like "wait/synch/rwlock/%"
+master-bin.000001 # Query # # COMMIT
diff --git a/mysql-test/suite/perfschema/r/cnf_option.result b/mysql-test/suite/perfschema/r/cnf_option.result
new file mode 100644
index 00000000000..85adfb5113d
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/cnf_option.result
@@ -0,0 +1,6 @@
+show variables like 'performance_schema_max_thread_classes';
+Variable_name Value
+performance_schema_max_thread_classes 12
+show variables like 'performance_schema_max_thread_instances';
+Variable_name Value
+performance_schema_max_thread_instances 318
diff --git a/mysql-test/suite/perfschema/r/column_privilege.result b/mysql-test/suite/perfschema/r/column_privilege.result
new file mode 100644
index 00000000000..7bbc59ac452
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/column_privilege.result
@@ -0,0 +1,27 @@
+show grants;
+Grants for root@localhost
+GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
+grant usage on *.* to 'pfs_user_5'@localhost with GRANT OPTION;
+grant SELECT(thread_id, event_id) on performance_schema.EVENTS_WAITS_CURRENT
+to 'pfs_user_5'@localhost;
+grant UPDATE(enabled) on performance_schema.SETUP_INSTRUMENTS
+to 'pfs_user_5'@localhost;
+flush privileges;
+select thread_id from performance_schema.EVENTS_WAITS_CURRENT;
+select thread_id, event_id from performance_schema.EVENTS_WAITS_CURRENT;
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES';
+select event_name from performance_schema.EVENTS_WAITS_CURRENT;
+ERROR 42000: SELECT command denied to user 'pfs_user_5'@'localhost' for column 'event_name' in table 'EVENTS_WAITS_CURRENT'
+select thread_id, event_id, event_name
+from performance_schema.EVENTS_WAITS_CURRENT;
+ERROR 42000: SELECT command denied to user 'pfs_user_5'@'localhost' for column 'event_name' in table 'EVENTS_WAITS_CURRENT'
+update performance_schema.SETUP_INSTRUMENTS set name='illegal';
+ERROR 42000: UPDATE command denied to user 'pfs_user_5'@'localhost' for column 'name' in table 'SETUP_INSTRUMENTS'
+update performance_schema.SETUP_INSTRUMENTS set timed='NO';
+ERROR 42000: UPDATE command denied to user 'pfs_user_5'@'localhost' for column 'timed' in table 'SETUP_INSTRUMENTS'
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'pfs_user_5'@localhost;
+DROP USER 'pfs_user_5'@localhost;
+flush privileges;
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'YES', timed = 'YES';
+UPDATE performance_schema.SETUP_CONSUMERS SET enabled = 'YES';
+UPDATE performance_schema.SETUP_TIMERS SET timer_name = 'CYCLE';
diff --git a/mysql-test/suite/perfschema/r/ddl_cond_instances.result b/mysql-test/suite/perfschema/r/ddl_cond_instances.result
new file mode 100644
index 00000000000..33adcebaceb
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/ddl_cond_instances.result
@@ -0,0 +1,8 @@
+alter table performance_schema.COND_INSTANCES add column foo integer;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+truncate table performance_schema.COND_INSTANCES;
+ERROR HY000: Invalid performance_schema usage.
+ALTER TABLE performance_schema.COND_INSTANCES ADD INDEX test_index(NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+CREATE UNIQUE INDEX test_index ON performance_schema.COND_INSTANCES(NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
diff --git a/mysql-test/suite/perfschema/r/ddl_events_waits_current.result b/mysql-test/suite/perfschema/r/ddl_events_waits_current.result
new file mode 100644
index 00000000000..a438c93affe
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/ddl_events_waits_current.result
@@ -0,0 +1,7 @@
+alter table performance_schema.EVENTS_WAITS_CURRENT add column foo integer;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+truncate table performance_schema.EVENTS_WAITS_CURRENT;
+ALTER TABLE performance_schema.EVENTS_WAITS_CURRENT ADD INDEX test_index(EVENT_ID);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+CREATE UNIQUE INDEX test_index ON performance_schema.EVENTS_WAITS_CURRENT(EVENT_ID);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
diff --git a/mysql-test/suite/perfschema/r/ddl_events_waits_history.result b/mysql-test/suite/perfschema/r/ddl_events_waits_history.result
new file mode 100644
index 00000000000..748dc2f29cd
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/ddl_events_waits_history.result
@@ -0,0 +1,7 @@
+alter table performance_schema.EVENTS_WAITS_HISTORY add column foo integer;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+truncate table performance_schema.EVENTS_WAITS_HISTORY;
+ALTER TABLE performance_schema.EVENTS_WAITS_HISTORY ADD INDEX test_index(EVENT_ID);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+CREATE UNIQUE INDEX test_index ON performance_schema.EVENTS_WAITS_HISTORY(EVENT_ID);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
diff --git a/mysql-test/suite/perfschema/r/ddl_events_waits_history_long.result b/mysql-test/suite/perfschema/r/ddl_events_waits_history_long.result
new file mode 100644
index 00000000000..1a047a765f6
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/ddl_events_waits_history_long.result
@@ -0,0 +1,7 @@
+alter table performance_schema.EVENTS_WAITS_HISTORY_LONG add column foo integer;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+truncate table performance_schema.EVENTS_WAITS_HISTORY_LONG;
+ALTER TABLE performance_schema.EVENTS_WAITS_HISTORY_LONG ADD INDEX test_index(EVENT_ID);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+CREATE UNIQUE INDEX test_index ON performance_schema.EVENTS_WAITS_HISTORY_LONG(EVENT_ID);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
diff --git a/mysql-test/suite/perfschema/r/ddl_ews_by_event_name.result b/mysql-test/suite/perfschema/r/ddl_ews_by_event_name.result
new file mode 100644
index 00000000000..74fc4e1a640
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/ddl_ews_by_event_name.result
@@ -0,0 +1,7 @@
+alter table performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME add column foo integer;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+ALTER TABLE performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME ADD INDEX test_index(EVENT_NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+CREATE UNIQUE INDEX test_index ON performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME(EVENT_NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
diff --git a/mysql-test/suite/perfschema/r/ddl_ews_by_instance.result b/mysql-test/suite/perfschema/r/ddl_ews_by_instance.result
new file mode 100644
index 00000000000..4a35565bae0
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/ddl_ews_by_instance.result
@@ -0,0 +1,7 @@
+alter table performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE add column foo integer;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+ALTER TABLE performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE ADD INDEX test_index(EVENT_NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+CREATE UNIQUE INDEX test_index ON performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE(EVENT_NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
diff --git a/mysql-test/suite/perfschema/r/ddl_ews_by_thread_by_event_name.result b/mysql-test/suite/perfschema/r/ddl_ews_by_thread_by_event_name.result
new file mode 100644
index 00000000000..18d98006220
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/ddl_ews_by_thread_by_event_name.result
@@ -0,0 +1,9 @@
+alter table performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
+add column foo integer;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+ALTER TABLE performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME ADD INDEX test_index(THREAD_ID);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+CREATE UNIQUE INDEX test_index
+ON performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME(THREAD_ID);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
diff --git a/mysql-test/suite/perfschema/r/ddl_file_instances.result b/mysql-test/suite/perfschema/r/ddl_file_instances.result
new file mode 100644
index 00000000000..21e65c62405
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/ddl_file_instances.result
@@ -0,0 +1,8 @@
+alter table performance_schema.FILE_INSTANCES add column foo integer;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+truncate table performance_schema.FILE_INSTANCES;
+ERROR HY000: Invalid performance_schema usage.
+ALTER TABLE performance_schema.FILE_INSTANCES ADD INDEX test_index(FILE_NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+CREATE UNIQUE INDEX test_index ON performance_schema.FILE_INSTANCES(FILE_NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
diff --git a/mysql-test/suite/perfschema/r/ddl_fs_by_event_name.result b/mysql-test/suite/perfschema/r/ddl_fs_by_event_name.result
new file mode 100644
index 00000000000..2f21ef56832
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/ddl_fs_by_event_name.result
@@ -0,0 +1,7 @@
+alter table performance_schema.FILE_SUMMARY_BY_EVENT_NAME add column foo integer;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+truncate table performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
+ALTER TABLE performance_schema.FILE_SUMMARY_BY_EVENT_NAME ADD INDEX test_index(NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+CREATE UNIQUE INDEX test_index ON performance_schema.FILE_SUMMARY_BY_EVENT_NAME(NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
diff --git a/mysql-test/suite/perfschema/r/ddl_fs_by_instance.result b/mysql-test/suite/perfschema/r/ddl_fs_by_instance.result
new file mode 100644
index 00000000000..8e256d1fd8d
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/ddl_fs_by_instance.result
@@ -0,0 +1,7 @@
+alter table performance_schema.FILE_SUMMARY_BY_INSTANCE add column foo integer;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+truncate table performance_schema.FILE_SUMMARY_BY_INSTANCE;
+ALTER TABLE performance_schema.FILE_SUMMARY_BY_INSTANCE ADD INDEX test_index(NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+CREATE UNIQUE INDEX test_index ON performance_schema.FILE_SUMMARY_BY_INSTANCE(NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
diff --git a/mysql-test/suite/perfschema/r/ddl_mutex_instances.result b/mysql-test/suite/perfschema/r/ddl_mutex_instances.result
new file mode 100644
index 00000000000..35397a5294d
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/ddl_mutex_instances.result
@@ -0,0 +1,8 @@
+alter table performance_schema.MUTEX_INSTANCES add column foo integer;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+truncate table performance_schema.MUTEX_INSTANCES;
+ERROR HY000: Invalid performance_schema usage.
+ALTER TABLE performance_schema.MUTEX_INSTANCES ADD INDEX test_index(NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+CREATE UNIQUE INDEX test_index ON performance_schema.MUTEX_INSTANCES(NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
diff --git a/mysql-test/suite/perfschema/r/ddl_performance_timers.result b/mysql-test/suite/perfschema/r/ddl_performance_timers.result
new file mode 100644
index 00000000000..5de8193b205
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/ddl_performance_timers.result
@@ -0,0 +1,8 @@
+alter table performance_schema.PERFORMANCE_TIMERS add column foo integer;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+truncate table performance_schema.PERFORMANCE_TIMERS;
+ERROR HY000: Invalid performance_schema usage.
+ALTER TABLE performance_schema.PERFORMANCE_TIMERS ADD INDEX test_index(TIMER_NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+CREATE UNIQUE INDEX test_index ON performance_schema.PERFORMANCE_TIMERS(TIMER_NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
diff --git a/mysql-test/suite/perfschema/r/ddl_processlist.result b/mysql-test/suite/perfschema/r/ddl_processlist.result
new file mode 100644
index 00000000000..5a9eb766349
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/ddl_processlist.result
@@ -0,0 +1,8 @@
+alter table performance_schema.PROCESSLIST add column foo integer;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+truncate table performance_schema.PROCESSLIST;
+ERROR HY000: Invalid performance_schema usage.
+ALTER TABLE performance_schema.PROCESSLIST ADD INDEX test_index(ID);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+CREATE UNIQUE INDEX test_index ON performance_schema.PROCESSLIST(ID);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
diff --git a/mysql-test/suite/perfschema/r/ddl_rwlock_instances.result b/mysql-test/suite/perfschema/r/ddl_rwlock_instances.result
new file mode 100644
index 00000000000..849d191b17f
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/ddl_rwlock_instances.result
@@ -0,0 +1,8 @@
+alter table performance_schema.RWLOCK_INSTANCES add column foo integer;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+truncate table performance_schema.RWLOCK_INSTANCES;
+ERROR HY000: Invalid performance_schema usage.
+ALTER TABLE performance_schema.RWLOCK_INSTANCES ADD INDEX test_index(NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+CREATE UNIQUE INDEX test_index ON performance_schema.RWLOCK_INSTANCES(NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
diff --git a/mysql-test/suite/perfschema/r/ddl_setup_consumers.result b/mysql-test/suite/perfschema/r/ddl_setup_consumers.result
new file mode 100644
index 00000000000..f141725ee1f
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/ddl_setup_consumers.result
@@ -0,0 +1,8 @@
+alter table performance_schema.SETUP_CONSUMERS add column foo integer;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+truncate table performance_schema.SETUP_CONSUMERS;
+ERROR HY000: Invalid performance_schema usage.
+ALTER TABLE performance_schema.SETUP_CONSUMERS ADD INDEX test_index(NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+CREATE UNIQUE INDEX test_index ON performance_schema.SETUP_CONSUMERS(NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
diff --git a/mysql-test/suite/perfschema/r/ddl_setup_instruments.result b/mysql-test/suite/perfschema/r/ddl_setup_instruments.result
new file mode 100644
index 00000000000..42e54b587d8
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/ddl_setup_instruments.result
@@ -0,0 +1,8 @@
+alter table performance_schema.SETUP_INSTRUMENTS add column foo integer;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+truncate table performance_schema.SETUP_INSTRUMENTS;
+ERROR HY000: Invalid performance_schema usage.
+ALTER TABLE performance_schema.SETUP_INSTRUMENTS ADD INDEX test_index(NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+CREATE UNIQUE INDEX test_index ON performance_schema.SETUP_INSTRUMENTS(NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
diff --git a/mysql-test/suite/perfschema/r/ddl_setup_objects.result b/mysql-test/suite/perfschema/r/ddl_setup_objects.result
new file mode 100644
index 00000000000..c0f00745963
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/ddl_setup_objects.result
@@ -0,0 +1,7 @@
+alter table performance_schema.SETUP_OBJECTS add column foo integer;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+truncate table performance_schema.SETUP_OBJECTS;
+ALTER TABLE performance_schema.SETUP_OBJECTS ADD INDEX test_index(OBJECT_NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+CREATE UNIQUE INDEX test_index ON performance_schema.SETUP_OBJECTS(OBJECT_NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
diff --git a/mysql-test/suite/perfschema/r/ddl_setup_timers.result b/mysql-test/suite/perfschema/r/ddl_setup_timers.result
new file mode 100644
index 00000000000..fc74730bd50
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/ddl_setup_timers.result
@@ -0,0 +1,8 @@
+alter table performance_schema.SETUP_TIMERS add column foo integer;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+truncate table performance_schema.SETUP_TIMERS;
+ERROR HY000: Invalid performance_schema usage.
+ALTER TABLE performance_schema.SETUP_TIMERS ADD INDEX test_index(NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+CREATE UNIQUE INDEX test_index ON performance_schema.SETUP_TIMERS(NAME);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
diff --git a/mysql-test/suite/perfschema/r/dml_cond_instances.result b/mysql-test/suite/perfschema/r/dml_cond_instances.result
new file mode 100644
index 00000000000..8adc632b91b
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/dml_cond_instances.result
@@ -0,0 +1,23 @@
+select * from performance_schema.COND_INSTANCES limit 1;
+NAME OBJECT_INSTANCE_BEGIN
+# #
+select * from performance_schema.COND_INSTANCES
+where name='FOO';
+NAME OBJECT_INSTANCE_BEGIN
+insert into performance_schema.COND_INSTANCES
+set name='FOO', object_instance_begin=12;
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'COND_INSTANCES'
+update performance_schema.COND_INSTANCES
+set name='FOO';
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'COND_INSTANCES'
+delete from performance_schema.COND_INSTANCES
+where name like "wait/%";
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'COND_INSTANCES'
+delete from performance_schema.COND_INSTANCES;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'COND_INSTANCES'
+LOCK TABLES performance_schema.COND_INSTANCES READ;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'COND_INSTANCES'
+UNLOCK TABLES;
+LOCK TABLES performance_schema.COND_INSTANCES WRITE;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'COND_INSTANCES'
+UNLOCK TABLES;
diff --git a/mysql-test/suite/perfschema/r/dml_events_waits_current.result b/mysql-test/suite/perfschema/r/dml_events_waits_current.result
new file mode 100644
index 00000000000..5cd0dba7ad1
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/dml_events_waits_current.result
@@ -0,0 +1,28 @@
+select * from performance_schema.EVENTS_WAITS_CURRENT
+where event_name like 'Wait/Synch/%' limit 1;
+THREAD_ID EVENT_ID EVENT_NAME SOURCE TIMER_START TIMER_END TIMER_WAIT SPINS OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE OBJECT_INSTANCE_BEGIN NESTING_EVENT_ID OPERATION NUMBER_OF_BYTES FLAGS
+# # # # # # # # NULL NULL NULL # NULL # NULL 0
+select * from performance_schema.EVENTS_WAITS_CURRENT
+where event_name='FOO';
+THREAD_ID EVENT_ID EVENT_NAME SOURCE TIMER_START TIMER_END TIMER_WAIT SPINS OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE OBJECT_INSTANCE_BEGIN NESTING_EVENT_ID OPERATION NUMBER_OF_BYTES FLAGS
+insert into performance_schema.EVENTS_WAITS_CURRENT
+set thread_id='1', event_id=1,
+event_name='FOO', timer_start=1, timer_end=2, timer_wait=3;
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+update performance_schema.EVENTS_WAITS_CURRENT
+set timer_start=12;
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+update performance_schema.EVENTS_WAITS_CURRENT
+set timer_start=12 where thread_id=0;
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+delete from performance_schema.EVENTS_WAITS_CURRENT
+where thread_id=1;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+delete from performance_schema.EVENTS_WAITS_CURRENT;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+LOCK TABLES performance_schema.EVENTS_WAITS_CURRENT READ;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+UNLOCK TABLES;
+LOCK TABLES performance_schema.EVENTS_WAITS_CURRENT WRITE;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+UNLOCK TABLES;
diff --git a/mysql-test/suite/perfschema/r/dml_events_waits_history.result b/mysql-test/suite/perfschema/r/dml_events_waits_history.result
new file mode 100644
index 00000000000..953922868fb
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/dml_events_waits_history.result
@@ -0,0 +1,36 @@
+select * from performance_schema.EVENTS_WAITS_HISTORY
+where event_name like 'Wait/Synch/%' limit 1;
+THREAD_ID EVENT_ID EVENT_NAME SOURCE TIMER_START TIMER_END TIMER_WAIT SPINS OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE OBJECT_INSTANCE_BEGIN NESTING_EVENT_ID OPERATION NUMBER_OF_BYTES FLAGS
+# # # # # # # # NULL NULL NULL # NULL # NULL 0
+select * from performance_schema.EVENTS_WAITS_HISTORY
+where event_name='FOO';
+THREAD_ID EVENT_ID EVENT_NAME SOURCE TIMER_START TIMER_END TIMER_WAIT SPINS OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE OBJECT_INSTANCE_BEGIN NESTING_EVENT_ID OPERATION NUMBER_OF_BYTES FLAGS
+select * from performance_schema.EVENTS_WAITS_HISTORY
+where event_name like 'Wait/Synch/%' order by timer_wait limit 1;
+THREAD_ID EVENT_ID EVENT_NAME SOURCE TIMER_START TIMER_END TIMER_WAIT SPINS OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE OBJECT_INSTANCE_BEGIN NESTING_EVENT_ID OPERATION NUMBER_OF_BYTES FLAGS
+# # # # # # # # NULL NULL NULL # NULL # NULL 0
+select * from performance_schema.EVENTS_WAITS_HISTORY
+where event_name like 'Wait/Synch/%' order by timer_wait desc limit 1;
+THREAD_ID EVENT_ID EVENT_NAME SOURCE TIMER_START TIMER_END TIMER_WAIT SPINS OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE OBJECT_INSTANCE_BEGIN NESTING_EVENT_ID OPERATION NUMBER_OF_BYTES FLAGS
+# # # # # # # # NULL NULL NULL # NULL # NULL 0
+insert into performance_schema.EVENTS_WAITS_HISTORY
+set thread_id='1', event_id=1,
+event_name='FOO', timer_start=1, timer_end=2, timer_wait=3;
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_HISTORY'
+update performance_schema.EVENTS_WAITS_HISTORY
+set timer_start=12;
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_HISTORY'
+update performance_schema.EVENTS_WAITS_HISTORY
+set timer_start=12 where thread_id=0;
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_HISTORY'
+delete from performance_schema.EVENTS_WAITS_HISTORY
+where thread_id=1;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_HISTORY'
+delete from performance_schema.EVENTS_WAITS_HISTORY;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_HISTORY'
+LOCK TABLES performance_schema.EVENTS_WAITS_HISTORY READ;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_HISTORY'
+UNLOCK TABLES;
+LOCK TABLES performance_schema.EVENTS_WAITS_HISTORY WRITE;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_HISTORY'
+UNLOCK TABLES;
diff --git a/mysql-test/suite/perfschema/r/dml_events_waits_history_long.result b/mysql-test/suite/perfschema/r/dml_events_waits_history_long.result
new file mode 100644
index 00000000000..494469a0db8
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/dml_events_waits_history_long.result
@@ -0,0 +1,36 @@
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG
+where event_name like 'Wait/Synch/%' limit 1;
+THREAD_ID EVENT_ID EVENT_NAME SOURCE TIMER_START TIMER_END TIMER_WAIT SPINS OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE OBJECT_INSTANCE_BEGIN NESTING_EVENT_ID OPERATION NUMBER_OF_BYTES FLAGS
+# # # # # # # # NULL NULL NULL # NULL # NULL 0
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG
+where event_name='FOO';
+THREAD_ID EVENT_ID EVENT_NAME SOURCE TIMER_START TIMER_END TIMER_WAIT SPINS OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE OBJECT_INSTANCE_BEGIN NESTING_EVENT_ID OPERATION NUMBER_OF_BYTES FLAGS
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG
+where event_name like 'Wait/Synch/%' order by timer_wait limit 1;
+THREAD_ID EVENT_ID EVENT_NAME SOURCE TIMER_START TIMER_END TIMER_WAIT SPINS OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE OBJECT_INSTANCE_BEGIN NESTING_EVENT_ID OPERATION NUMBER_OF_BYTES FLAGS
+# # # # # # # # NULL NULL NULL # NULL # NULL 0
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG
+where event_name like 'Wait/Synch/%' order by timer_wait desc limit 1;
+THREAD_ID EVENT_ID EVENT_NAME SOURCE TIMER_START TIMER_END TIMER_WAIT SPINS OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE OBJECT_INSTANCE_BEGIN NESTING_EVENT_ID OPERATION NUMBER_OF_BYTES FLAGS
+# # # # # # # # NULL NULL NULL # NULL # NULL 0
+insert into performance_schema.EVENTS_WAITS_HISTORY_LONG
+set thread_id='1', event_id=1,
+event_name='FOO', timer_start=1, timer_end=2, timer_wait=3;
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_HISTORY_LONG'
+update performance_schema.EVENTS_WAITS_HISTORY_LONG
+set timer_start=12;
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_HISTORY_LONG'
+update performance_schema.EVENTS_WAITS_HISTORY_LONG
+set timer_start=12 where thread_id=0;
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_HISTORY_LONG'
+delete from performance_schema.EVENTS_WAITS_HISTORY_LONG
+where thread_id=1;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_HISTORY_LONG'
+delete from performance_schema.EVENTS_WAITS_HISTORY_LONG;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_HISTORY_LONG'
+LOCK TABLES performance_schema.EVENTS_WAITS_HISTORY_LONG READ;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_HISTORY_LONG'
+UNLOCK TABLES;
+LOCK TABLES performance_schema.EVENTS_WAITS_HISTORY_LONG WRITE;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_HISTORY_LONG'
+UNLOCK TABLES;
diff --git a/mysql-test/suite/perfschema/r/dml_ews_by_event_name.result b/mysql-test/suite/perfschema/r/dml_ews_by_event_name.result
new file mode 100644
index 00000000000..675fba021fe
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/dml_ews_by_event_name.result
@@ -0,0 +1,28 @@
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
+where event_name like 'Wait/Synch/%' limit 1;
+EVENT_NAME COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT
+# # # # # #
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
+where event_name='FOO';
+EVENT_NAME COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT
+insert into performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
+set event_name='FOO', count_star=1, sum_timer_wait=2, min_timer_wait=3,
+avg_timer_wait=4, max_timer_wait=5;
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
+update performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
+set count_star=12;
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
+update performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
+set count_star=12 where event_name like "FOO";
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
+delete from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
+where count_star=1;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
+delete from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
+LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME READ;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
+UNLOCK TABLES;
+LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME WRITE;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
+UNLOCK TABLES;
diff --git a/mysql-test/suite/perfschema/r/dml_ews_by_instance.result b/mysql-test/suite/perfschema/r/dml_ews_by_instance.result
new file mode 100644
index 00000000000..dc262982340
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/dml_ews_by_instance.result
@@ -0,0 +1,45 @@
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+where event_name like 'Wait/Synch/%' limit 1;
+EVENT_NAME OBJECT_INSTANCE_BEGIN COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT
+# # # # # # #
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+where event_name='FOO';
+EVENT_NAME OBJECT_INSTANCE_BEGIN COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+order by count_star limit 1;
+EVENT_NAME OBJECT_INSTANCE_BEGIN COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT
+# # # # # # #
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+order by count_star desc limit 1;
+EVENT_NAME OBJECT_INSTANCE_BEGIN COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT
+# # # # # # #
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+where min_timer_wait > 0 order by count_star limit 1;
+EVENT_NAME OBJECT_INSTANCE_BEGIN COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT
+# # # # # # #
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+where min_timer_wait > 0 order by count_star desc limit 1;
+EVENT_NAME OBJECT_INSTANCE_BEGIN COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT
+# # # # # # #
+insert into performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+set event_name='FOO', object_instance_begin=0,
+count_star=1, sum_timer_wait=2, min_timer_wait=3,
+avg_timer_wait=4, max_timer_wait=5;
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_INSTANCE'
+update performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+set count_star=12;
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_INSTANCE'
+update performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+set count_star=12 where event_name like "FOO";
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_INSTANCE'
+delete from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+where count_star=1;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_INSTANCE'
+delete from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_INSTANCE'
+LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE READ;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_INSTANCE'
+UNLOCK TABLES;
+LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE WRITE;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_INSTANCE'
+UNLOCK TABLES;
diff --git a/mysql-test/suite/perfschema/r/dml_ews_by_thread_by_event_name.result b/mysql-test/suite/perfschema/r/dml_ews_by_thread_by_event_name.result
new file mode 100644
index 00000000000..2a085659431
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/dml_ews_by_thread_by_event_name.result
@@ -0,0 +1,29 @@
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
+where event_name like 'Wait/Synch/%' limit 1;
+THREAD_ID EVENT_NAME COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT
+# # # # # # #
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
+where event_name='FOO';
+THREAD_ID EVENT_NAME COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT
+insert into performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
+set event_name='FOO', thread_id=1,
+count_star=1, sum_timer_wait=2, min_timer_wait=3,
+avg_timer_wait=4, max_timer_wait=5;
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME'
+update performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
+set count_star=12;
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME'
+update performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
+set count_star=12 where event_name like "FOO";
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME'
+delete from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
+where count_star=1;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME'
+delete from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME'
+LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME READ;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME'
+UNLOCK TABLES;
+LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME WRITE;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME'
+UNLOCK TABLES;
diff --git a/mysql-test/suite/perfschema/r/dml_file_instances.result b/mysql-test/suite/perfschema/r/dml_file_instances.result
new file mode 100644
index 00000000000..e15d68cbad3
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/dml_file_instances.result
@@ -0,0 +1,23 @@
+select * from performance_schema.FILE_INSTANCES limit 1;
+FILE_NAME EVENT_NAME OPEN_COUNT
+# # #
+select * from performance_schema.FILE_INSTANCES
+where file_name='FOO';
+FILE_NAME EVENT_NAME OPEN_COUNT
+insert into performance_schema.FILE_INSTANCES
+set file_name='FOO', event_name='BAR', open_count=12;
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'FILE_INSTANCES'
+update performance_schema.FILE_INSTANCES
+set file_name='FOO';
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'FILE_INSTANCES'
+delete from performance_schema.FILE_INSTANCES
+where event_name like "wait/%";
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'FILE_INSTANCES'
+delete from performance_schema.FILE_INSTANCES;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'FILE_INSTANCES'
+LOCK TABLES performance_schema.FILE_INSTANCES READ;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'FILE_INSTANCES'
+UNLOCK TABLES;
+LOCK TABLES performance_schema.FILE_INSTANCES WRITE;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'FILE_INSTANCES'
+UNLOCK TABLES;
diff --git a/mysql-test/suite/perfschema/r/dml_file_summary_by_event_name.result b/mysql-test/suite/perfschema/r/dml_file_summary_by_event_name.result
new file mode 100644
index 00000000000..1ecc82f40a5
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/dml_file_summary_by_event_name.result
@@ -0,0 +1,28 @@
+select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME
+where event_name like 'Wait/io/%' limit 1;
+EVENT_NAME COUNT_READ COUNT_WRITE SUM_NUMBER_OF_BYTES_READ SUM_NUMBER_OF_BYTES_WRITE
+# # # # #
+select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME
+where event_name='FOO';
+EVENT_NAME COUNT_READ COUNT_WRITE SUM_NUMBER_OF_BYTES_READ SUM_NUMBER_OF_BYTES_WRITE
+insert into performance_schema.FILE_SUMMARY_BY_EVENT_NAME
+set event_name='FOO', count_read=1, count_write=2,
+sum_number_of_bytes_read=4, sum_number_of_bytes_write=5;
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'FILE_SUMMARY_BY_EVENT_NAME'
+update performance_schema.FILE_SUMMARY_BY_EVENT_NAME
+set count_read=12;
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'FILE_SUMMARY_BY_EVENT_NAME'
+update performance_schema.FILE_SUMMARY_BY_EVENT_NAME
+set count_write=12 where event_name like "FOO";
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'FILE_SUMMARY_BY_EVENT_NAME'
+delete from performance_schema.FILE_SUMMARY_BY_EVENT_NAME
+where count_read=1;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'FILE_SUMMARY_BY_EVENT_NAME'
+delete from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'FILE_SUMMARY_BY_EVENT_NAME'
+LOCK TABLES performance_schema.FILE_SUMMARY_BY_EVENT_NAME READ;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'FILE_SUMMARY_BY_EVENT_NAME'
+UNLOCK TABLES;
+LOCK TABLES performance_schema.FILE_SUMMARY_BY_EVENT_NAME WRITE;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'FILE_SUMMARY_BY_EVENT_NAME'
+UNLOCK TABLES;
diff --git a/mysql-test/suite/perfschema/r/dml_file_summary_by_instance.result b/mysql-test/suite/perfschema/r/dml_file_summary_by_instance.result
new file mode 100644
index 00000000000..05b204cc1a9
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/dml_file_summary_by_instance.result
@@ -0,0 +1,28 @@
+select * from performance_schema.FILE_SUMMARY_BY_INSTANCE
+where event_name like 'Wait/io/%' limit 1;
+FILE_NAME EVENT_NAME COUNT_READ COUNT_WRITE SUM_NUMBER_OF_BYTES_READ SUM_NUMBER_OF_BYTES_WRITE
+# # # # # #
+select * from performance_schema.FILE_SUMMARY_BY_INSTANCE
+where event_name='FOO';
+FILE_NAME EVENT_NAME COUNT_READ COUNT_WRITE SUM_NUMBER_OF_BYTES_READ SUM_NUMBER_OF_BYTES_WRITE
+insert into performance_schema.FILE_SUMMARY_BY_INSTANCE
+set event_name='FOO', count_read=1, count_write=2,
+sum_number_of_bytes_read=4, sum_number_of_bytes_write=5;
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'FILE_SUMMARY_BY_INSTANCE'
+update performance_schema.FILE_SUMMARY_BY_INSTANCE
+set count_read=12;
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'FILE_SUMMARY_BY_INSTANCE'
+update performance_schema.FILE_SUMMARY_BY_INSTANCE
+set count_write=12 where event_name like "FOO";
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'FILE_SUMMARY_BY_INSTANCE'
+delete from performance_schema.FILE_SUMMARY_BY_INSTANCE
+where count_read=1;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'FILE_SUMMARY_BY_INSTANCE'
+delete from performance_schema.FILE_SUMMARY_BY_INSTANCE;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'FILE_SUMMARY_BY_INSTANCE'
+LOCK TABLES performance_schema.FILE_SUMMARY_BY_INSTANCE READ;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'FILE_SUMMARY_BY_INSTANCE'
+UNLOCK TABLES;
+LOCK TABLES performance_schema.FILE_SUMMARY_BY_INSTANCE WRITE;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'FILE_SUMMARY_BY_INSTANCE'
+UNLOCK TABLES;
diff --git a/mysql-test/suite/perfschema/r/dml_mutex_instances.result b/mysql-test/suite/perfschema/r/dml_mutex_instances.result
new file mode 100644
index 00000000000..655ca811c06
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/dml_mutex_instances.result
@@ -0,0 +1,23 @@
+select * from performance_schema.MUTEX_INSTANCES limit 1;
+NAME OBJECT_INSTANCE_BEGIN LOCKED_BY_THREAD_ID
+# # NULL
+select * from performance_schema.MUTEX_INSTANCES
+where name='FOO';
+NAME OBJECT_INSTANCE_BEGIN LOCKED_BY_THREAD_ID
+insert into performance_schema.MUTEX_INSTANCES
+set name='FOO', object_instance_begin=12;
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'MUTEX_INSTANCES'
+update performance_schema.MUTEX_INSTANCES
+set name='FOO';
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'MUTEX_INSTANCES'
+delete from performance_schema.MUTEX_INSTANCES
+where name like "wait/%";
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'MUTEX_INSTANCES'
+delete from performance_schema.MUTEX_INSTANCES;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'MUTEX_INSTANCES'
+LOCK TABLES performance_schema.MUTEX_INSTANCES READ;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'MUTEX_INSTANCES'
+UNLOCK TABLES;
+LOCK TABLES performance_schema.MUTEX_INSTANCES WRITE;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'MUTEX_INSTANCES'
+UNLOCK TABLES;
diff --git a/mysql-test/suite/perfschema/r/dml_performance_timers.result b/mysql-test/suite/perfschema/r/dml_performance_timers.result
new file mode 100644
index 00000000000..99c1c74b797
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/dml_performance_timers.result
@@ -0,0 +1,29 @@
+select * from performance_schema.PERFORMANCE_TIMERS;
+TIMER_NAME TIMER_FREQUENCY TIMER_RESOLUTION TIMER_OVERHEAD
+CYCLE <frequency> <resolution> <overhead>
+NANOSECOND <frequency> <resolution> <overhead>
+MICROSECOND <frequency> <resolution> <overhead>
+MILLISECOND <frequency> <resolution> <overhead>
+TICK <frequency> <resolution> <overhead>
+select * from performance_schema.PERFORMANCE_TIMERS
+where timer_name='CYCLE';
+TIMER_NAME TIMER_FREQUENCY TIMER_RESOLUTION TIMER_OVERHEAD
+CYCLE <frequency> <resolution> <overhead>
+insert into performance_schema.PERFORMANCE_TIMERS
+set timer_name='FOO', timer_frequency=1,
+timer_resolution=2, timer_overhead=3;
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'PERFORMANCE_TIMERS'
+update performance_schema.PERFORMANCE_TIMERS
+set timer_frequency=12 where timer_name='CYCLE';
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'PERFORMANCE_TIMERS'
+delete from performance_schema.PERFORMANCE_TIMERS;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'PERFORMANCE_TIMERS'
+delete from performance_schema.PERFORMANCE_TIMERS
+where timer_name='CYCLE';
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'PERFORMANCE_TIMERS'
+LOCK TABLES performance_schema.PERFORMANCE_TIMERS READ;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'PERFORMANCE_TIMERS'
+UNLOCK TABLES;
+LOCK TABLES performance_schema.PERFORMANCE_TIMERS WRITE;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'PERFORMANCE_TIMERS'
+UNLOCK TABLES;
diff --git a/mysql-test/suite/perfschema/r/dml_processlist.result b/mysql-test/suite/perfschema/r/dml_processlist.result
new file mode 100644
index 00000000000..ee0da5a7f1d
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/dml_processlist.result
@@ -0,0 +1,27 @@
+select * from performance_schema.PROCESSLIST
+where name like 'Thread/%' limit 1;
+THREAD_ID ID NAME
+# # #
+select * from performance_schema.PROCESSLIST
+where name='FOO';
+THREAD_ID ID NAME
+insert into performance_schema.PROCESSLIST
+set name='FOO', thread_id=1, id=2;
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'PROCESSLIST'
+update performance_schema.PROCESSLIST
+set thread_id=12;
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'PROCESSLIST'
+update performance_schema.PROCESSLIST
+set thread_id=12 where name like "FOO";
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'PROCESSLIST'
+delete from performance_schema.PROCESSLIST
+where id=1;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'PROCESSLIST'
+delete from performance_schema.PROCESSLIST;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'PROCESSLIST'
+LOCK TABLES performance_schema.PROCESSLIST READ;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'PROCESSLIST'
+UNLOCK TABLES;
+LOCK TABLES performance_schema.PROCESSLIST WRITE;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'PROCESSLIST'
+UNLOCK TABLES;
diff --git a/mysql-test/suite/perfschema/r/dml_rwlock_instances.result b/mysql-test/suite/perfschema/r/dml_rwlock_instances.result
new file mode 100644
index 00000000000..62b5fbeaa8a
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/dml_rwlock_instances.result
@@ -0,0 +1,23 @@
+select * from performance_schema.RWLOCK_INSTANCES limit 1;
+NAME OBJECT_INSTANCE_BEGIN WRITE_LOCKED_BY_THREAD_ID READ_LOCKED_BY_COUNT
+# # NULL 0
+select * from performance_schema.RWLOCK_INSTANCES
+where name='FOO';
+NAME OBJECT_INSTANCE_BEGIN WRITE_LOCKED_BY_THREAD_ID READ_LOCKED_BY_COUNT
+insert into performance_schema.RWLOCK_INSTANCES
+set name='FOO', object_instance_begin=12;
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'RWLOCK_INSTANCES'
+update performance_schema.RWLOCK_INSTANCES
+set name='FOO';
+ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'RWLOCK_INSTANCES'
+delete from performance_schema.RWLOCK_INSTANCES
+where name like "wait/%";
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'RWLOCK_INSTANCES'
+delete from performance_schema.RWLOCK_INSTANCES;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'RWLOCK_INSTANCES'
+LOCK TABLES performance_schema.RWLOCK_INSTANCES READ;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'RWLOCK_INSTANCES'
+UNLOCK TABLES;
+LOCK TABLES performance_schema.RWLOCK_INSTANCES WRITE;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'RWLOCK_INSTANCES'
+UNLOCK TABLES;
diff --git a/mysql-test/suite/perfschema/r/dml_setup_consumers.result b/mysql-test/suite/perfschema/r/dml_setup_consumers.result
new file mode 100644
index 00000000000..44ed751dcd2
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/dml_setup_consumers.result
@@ -0,0 +1,45 @@
+select * from performance_schema.SETUP_CONSUMERS;
+NAME ENABLED
+events_waits_current YES
+events_waits_history YES
+events_waits_history_long YES
+events_waits_summary_by_thread_by_event_name YES
+events_waits_summary_by_event_name YES
+events_waits_summary_by_instance YES
+file_summary_by_event_name YES
+file_summary_by_instance YES
+select * from performance_schema.SETUP_CONSUMERS
+where name='events_waits_current';
+NAME ENABLED
+events_waits_current YES
+select * from performance_schema.SETUP_CONSUMERS
+where enabled='YES';
+NAME ENABLED
+events_waits_current YES
+events_waits_history YES
+events_waits_history_long YES
+events_waits_summary_by_thread_by_event_name YES
+events_waits_summary_by_event_name YES
+events_waits_summary_by_instance YES
+file_summary_by_event_name YES
+file_summary_by_instance YES
+select * from performance_schema.SETUP_CONSUMERS
+where enabled='NO';
+NAME ENABLED
+insert into performance_schema.SETUP_CONSUMERS
+set name='FOO', enabled='YES';
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'SETUP_CONSUMERS'
+update performance_schema.SETUP_CONSUMERS
+set name='FOO';
+ERROR HY000: Invalid performance_schema usage.
+update performance_schema.SETUP_CONSUMERS
+set enabled='YES';
+delete from performance_schema.SETUP_CONSUMERS;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'SETUP_CONSUMERS'
+delete from performance_schema.SETUP_CONSUMERS
+where name='events_waits_current';
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'SETUP_CONSUMERS'
+LOCK TABLES performance_schema.SETUP_CONSUMERS READ;
+UNLOCK TABLES;
+LOCK TABLES performance_schema.SETUP_CONSUMERS WRITE;
+UNLOCK TABLES;
diff --git a/mysql-test/suite/perfschema/r/dml_setup_instruments.result b/mysql-test/suite/perfschema/r/dml_setup_instruments.result
new file mode 100644
index 00000000000..6d6651a5e1f
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/dml_setup_instruments.result
@@ -0,0 +1,72 @@
+select * from performance_schema.SETUP_INSTRUMENTS;
+select * from performance_schema.SETUP_INSTRUMENTS
+where name like 'Wait/Synch/Mutex/sql/%'
+ and name not in ('wait/synch/mutex/sql/DEBUG_SYNC::mutex')
+order by name limit 10;
+NAME ENABLED TIMED
+wait/synch/mutex/sql/Cversion_lock YES YES
+wait/synch/mutex/sql/Delayed_insert::mutex YES YES
+wait/synch/mutex/sql/Event_scheduler::LOCK_scheduler_state YES YES
+wait/synch/mutex/sql/hash_filo::lock YES YES
+wait/synch/mutex/sql/LOCK_active_mi YES YES
+wait/synch/mutex/sql/LOCK_audit_mask YES YES
+wait/synch/mutex/sql/LOCK_connection_count YES YES
+wait/synch/mutex/sql/LOCK_crypt YES YES
+wait/synch/mutex/sql/LOCK_delayed_create YES YES
+wait/synch/mutex/sql/LOCK_delayed_insert YES YES
+select * from performance_schema.SETUP_INSTRUMENTS
+where name like 'Wait/Synch/Rwlock/sql/%'
+ order by name limit 10;
+NAME ENABLED TIMED
+wait/synch/rwlock/sql/LOCK_dboptions YES YES
+wait/synch/rwlock/sql/LOCK_grant YES YES
+wait/synch/rwlock/sql/LOCK_system_variables_hash YES YES
+wait/synch/rwlock/sql/LOCK_sys_init_connect YES YES
+wait/synch/rwlock/sql/LOCK_sys_init_slave YES YES
+wait/synch/rwlock/sql/LOGGER::LOCK_logger YES YES
+wait/synch/rwlock/sql/Query_cache_query::lock YES YES
+wait/synch/rwlock/sql/THR_LOCK_servers YES YES
+wait/synch/rwlock/sql/THR_LOCK_udf YES YES
+select * from performance_schema.SETUP_INSTRUMENTS
+where name like 'Wait/Synch/Cond/sql/%'
+ and name not in (
+'wait/synch/cond/sql/COND_handler_count',
+'wait/synch/cond/sql/DEBUG_SYNC::cond')
+order by name limit 10;
+NAME ENABLED TIMED
+wait/synch/cond/sql/COND_flush_thread_cache YES YES
+wait/synch/cond/sql/COND_global_read_lock YES YES
+wait/synch/cond/sql/COND_manager YES YES
+wait/synch/cond/sql/COND_queue_state YES YES
+wait/synch/cond/sql/COND_refresh YES YES
+wait/synch/cond/sql/COND_rpl_status YES YES
+wait/synch/cond/sql/COND_server_started YES YES
+wait/synch/cond/sql/COND_thread_cache YES YES
+wait/synch/cond/sql/COND_thread_count YES YES
+wait/synch/cond/sql/Delayed_insert::cond YES YES
+select * from performance_schema.SETUP_INSTRUMENTS
+where name='Wait';
+select * from performance_schema.SETUP_INSTRUMENTS
+where enabled='YES';
+insert into performance_schema.SETUP_INSTRUMENTS
+set name='FOO', enabled='YES', timed='YES';
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'SETUP_INSTRUMENTS'
+update performance_schema.SETUP_INSTRUMENTS
+set name='FOO';
+ERROR HY000: Invalid performance_schema usage.
+update performance_schema.SETUP_INSTRUMENTS
+set enabled='NO';
+update performance_schema.SETUP_INSTRUMENTS
+set timed='NO';
+select * from performance_schema.SETUP_INSTRUMENTS;
+update performance_schema.SETUP_INSTRUMENTS
+set enabled='YES', timed='YES';
+delete from performance_schema.SETUP_INSTRUMENTS;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'SETUP_INSTRUMENTS'
+delete from performance_schema.SETUP_INSTRUMENTS
+where name like 'Wait/Synch/%';
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'SETUP_INSTRUMENTS'
+LOCK TABLES performance_schema.SETUP_INSTRUMENTS READ;
+UNLOCK TABLES;
+LOCK TABLES performance_schema.SETUP_INSTRUMENTS WRITE;
+UNLOCK TABLES;
diff --git a/mysql-test/suite/perfschema/r/dml_setup_objects.result b/mysql-test/suite/perfschema/r/dml_setup_objects.result
new file mode 100644
index 00000000000..a9d97357227
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/dml_setup_objects.result
@@ -0,0 +1,35 @@
+select * from performance_schema.SETUP_OBJECTS;
+OBJECT_TYPE OBJECT_SCHEMA OBJECT_NAME ENABLED TIMED AGGREGATED
+select * from performance_schema.SETUP_OBJECTS
+where object_type = 'TABLE';
+OBJECT_TYPE OBJECT_SCHEMA OBJECT_NAME ENABLED TIMED AGGREGATED
+select * from performance_schema.SETUP_OBJECTS
+where enabled='YES';
+OBJECT_TYPE OBJECT_SCHEMA OBJECT_NAME ENABLED TIMED AGGREGATED
+insert into performance_schema.SETUP_OBJECTS
+set object_type='TABLE', object_schema='FOO', object_name='BAR',
+enabled='YES', timed='YES', aggregated='YES';
+ERROR HY000: Table storage engine for 'SETUP_OBJECTS' doesn't have this option
+update performance_schema.SETUP_OBJECTS
+set object_type='TABLE';
+update performance_schema.SETUP_OBJECTS
+set object_schema='ILLEGAL';
+update performance_schema.SETUP_OBJECTS
+set object_name='ILLEGAL';
+update performance_schema.SETUP_OBJECTS
+set enabled='NO';
+update performance_schema.SETUP_OBJECTS
+set timed='NO';
+update performance_schema.SETUP_OBJECTS
+set aggregated='NO';
+select * from performance_schema.SETUP_OBJECTS;
+OBJECT_TYPE OBJECT_SCHEMA OBJECT_NAME ENABLED TIMED AGGREGATED
+update performance_schema.SETUP_OBJECTS
+set enabled='YES', timed='YES', aggregated='YES';
+delete from performance_schema.SETUP_OBJECTS
+where object_type = 'TABLE';
+delete from performance_schema.SETUP_OBJECTS;
+LOCK TABLES performance_schema.SETUP_OBJECTS READ;
+UNLOCK TABLES;
+LOCK TABLES performance_schema.SETUP_OBJECTS WRITE;
+UNLOCK TABLES;
diff --git a/mysql-test/suite/perfschema/r/dml_setup_timers.result b/mysql-test/suite/perfschema/r/dml_setup_timers.result
new file mode 100644
index 00000000000..a9bee916cde
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/dml_setup_timers.result
@@ -0,0 +1,33 @@
+select * from performance_schema.SETUP_TIMERS;
+NAME TIMER_NAME
+wait CYCLE
+select * from performance_schema.SETUP_TIMERS
+where name='Wait';
+NAME TIMER_NAME
+wait CYCLE
+select * from performance_schema.SETUP_TIMERS
+where timer_name='CYCLE';
+NAME TIMER_NAME
+wait CYCLE
+insert into performance_schema.SETUP_TIMERS
+set name='FOO', timer_name='CYCLE';
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'SETUP_TIMERS'
+update performance_schema.SETUP_TIMERS
+set name='FOO';
+ERROR HY000: Invalid performance_schema usage.
+update performance_schema.SETUP_TIMERS
+set timer_name='MILLISECOND';
+select * from performance_schema.SETUP_TIMERS;
+NAME TIMER_NAME
+wait MILLISECOND
+update performance_schema.SETUP_TIMERS
+set timer_name='CYCLE';
+delete from performance_schema.SETUP_TIMERS;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'SETUP_TIMERS'
+delete from performance_schema.SETUP_TIMERS
+where name='Wait';
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'SETUP_TIMERS'
+LOCK TABLES performance_schema.SETUP_TIMERS READ;
+UNLOCK TABLES;
+LOCK TABLES performance_schema.SETUP_TIMERS WRITE;
+UNLOCK TABLES;
diff --git a/mysql-test/suite/perfschema/r/func_file_io.result b/mysql-test/suite/perfschema/r/func_file_io.result
new file mode 100644
index 00000000000..69e6072fc22
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/func_file_io.result
@@ -0,0 +1,117 @@
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'NO', timed = 'YES';
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'YES'
+WHERE name LIKE 'wait/io/file/%';
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (id INT PRIMARY KEY, b CHAR(100) DEFAULT 'initial value')
+ENGINE=MyISAM;
+INSERT INTO t1 (id) VALUES (1), (2), (3), (4), (5), (6), (7), (8);
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY_LONG;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_CURRENT;
+SELECT * FROM t1 WHERE id = 1;
+id b
+1 initial value
+SET @before_count = (SELECT SUM(TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+WHERE (EVENT_NAME = 'wait/io/file/myisam/dfile')
+AND (OBJECT_NAME LIKE '%t1.MYD'));
+SELECT IF(@before_count > 0, 'Success', 'Failure') has_instrumentation;
+has_instrumentation
+Success
+SELECT * FROM t1 WHERE id < 4;
+id b
+1 initial value
+2 initial value
+3 initial value
+SET @after_count = (SELECT SUM(TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+WHERE (EVENT_NAME = 'wait/io/file/myisam/dfile')
+AND (OBJECT_NAME LIKE '%t1.MYD') AND (1 = 1));
+SELECT IF((@after_count - @before_count) > 0, 'Success', 'Failure') test_ff1_timed;
+test_ff1_timed
+Success
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled='NO';
+SET @before_count = (SELECT SUM(TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+WHERE (EVENT_NAME = 'wait/io/file/myisam/dfile')
+AND (OBJECT_NAME LIKE '%t1.MYD') AND (2 = 2));
+SELECT * FROM t1 WHERE id < 6;
+id b
+1 initial value
+2 initial value
+3 initial value
+4 initial value
+5 initial value
+SET @after_count = (SELECT SUM(TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+WHERE (EVENT_NAME = 'wait/io/file/myisam/dfile')
+AND (OBJECT_NAME LIKE '%t1.MYD') AND (3 = 3));
+SELECT IF((COALESCE(@after_count, 0) - COALESCE(@before_count, 0)) = 0, 'Success', 'Failure') test_ff2_timed;
+test_ff2_timed
+Success
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'YES'
+WHERE name LIKE 'wait/io/file/%';
+UPDATE performance_schema.SETUP_INSTRUMENTS SET timed = 'NO';
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY_LONG;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_CURRENT;
+SELECT * FROM t1 WHERE id > 4;
+id b
+5 initial value
+6 initial value
+7 initial value
+8 initial value
+SELECT * FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+WHERE TIMER_WAIT != NULL
+OR TIMER_START != NULL
+OR TIMER_END != NULL;
+THREAD_ID EVENT_ID EVENT_NAME SOURCE TIMER_START TIMER_END TIMER_WAIT SPINS OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE OBJECT_INSTANCE_BEGIN NESTING_EVENT_ID OPERATION NUMBER_OF_BYTES FLAGS
+SELECT * FROM performance_schema.EVENTS_WAITS_HISTORY
+WHERE TIMER_WAIT != NULL
+OR TIMER_START != NULL
+OR TIMER_END != NULL;
+THREAD_ID EVENT_ID EVENT_NAME SOURCE TIMER_START TIMER_END TIMER_WAIT SPINS OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE OBJECT_INSTANCE_BEGIN NESTING_EVENT_ID OPERATION NUMBER_OF_BYTES FLAGS
+SELECT * FROM performance_schema.EVENTS_WAITS_CURRENT
+WHERE TIMER_WAIT != NULL
+OR TIMER_START != NULL
+OR TIMER_END != NULL;
+THREAD_ID EVENT_ID EVENT_NAME SOURCE TIMER_START TIMER_END TIMER_WAIT SPINS OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE OBJECT_INSTANCE_BEGIN NESTING_EVENT_ID OPERATION NUMBER_OF_BYTES FLAGS
+UPDATE performance_schema.SETUP_INSTRUMENTS SET timed = 'YES';
+SELECT * FROM t1 WHERE id < 4;
+id b
+1 initial value
+2 initial value
+3 initial value
+DROP TABLE t1;
+SELECT SUM(COUNT_READ) AS sum_count_read,
+SUM(COUNT_WRITE) AS sum_count_write,
+SUM(SUM_NUMBER_OF_BYTES_READ) AS sum_num_bytes_read,
+SUM(SUM_NUMBER_OF_BYTES_WRITE) AS sum_num_bytes_write
+FROM performance_schema.FILE_SUMMARY_BY_INSTANCE
+WHERE FILE_NAME LIKE CONCAT('%', @@tmpdir, '%') ORDER BY NULL;
+SELECT EVENT_NAME, COUNT_STAR, AVG_TIMER_WAIT, SUM_TIMER_WAIT
+FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
+WHERE COUNT_STAR > 0
+ORDER BY SUM_TIMER_WAIT DESC
+LIMIT 10;
+SELECT i.user, SUM(TIMER_WAIT) SUM_WAIT
+# ((TIME_TO_SEC(TIMEDIFF(NOW(), i.startup_time)) * 1000) / SUM(TIMER_WAIT)) * 100 WAIT_PERCENTAGE
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG h
+INNER JOIN performance_schema.PROCESSLIST p USING (THREAD_ID)
+LEFT JOIN information_schema.PROCESSLIST i USING (ID)
+GROUP BY i.user
+ORDER BY SUM_WAIT DESC
+LIMIT 20;
+SELECT h.EVENT_NAME, SUM(h.TIMER_WAIT) TOTAL_WAIT
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG h
+INNER JOIN performance_schema.PROCESSLIST p USING (THREAD_ID)
+WHERE p.ID = 1
+GROUP BY h.EVENT_NAME
+HAVING TOTAL_WAIT > 0;
+SELECT i.user, h.operation, SUM(NUMBER_OF_BYTES) bytes
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG h
+INNER JOIN performance_schema.PROCESSLIST p USING (THREAD_ID)
+LEFT JOIN information_schema.PROCESSLIST i USING (ID)
+GROUP BY i.user, h.operation
+HAVING BYTES > 0
+ORDER BY i.user, h.operation;
diff --git a/mysql-test/suite/perfschema/r/func_mutex.result b/mysql-test/suite/perfschema/r/func_mutex.result
new file mode 100644
index 00000000000..e32d7267bb1
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/func_mutex.result
@@ -0,0 +1,113 @@
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'NO', timed = 'YES';
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'YES'
+WHERE name LIKE 'wait/synch/mutex/%'
+ OR name LIKE 'wait/synch/rwlock/%';
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (id INT PRIMARY KEY, b CHAR(100) DEFAULT 'initial value')
+ENGINE=MyISAM;
+INSERT INTO t1 (id) VALUES (1), (2), (3), (4), (5), (6), (7), (8);
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY_LONG;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_CURRENT;
+SELECT * FROM t1 WHERE id = 1;
+id b
+1 initial value
+SET @before_count = (SELECT SUM(TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+WHERE (EVENT_NAME = 'wait/synch/mutex/sql/LOCK_open'));
+SELECT * FROM t1;
+id b
+1 initial value
+2 initial value
+3 initial value
+4 initial value
+5 initial value
+6 initial value
+7 initial value
+8 initial value
+SET @after_count = (SELECT SUM(TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+WHERE (EVENT_NAME = 'wait/synch/mutex/sql/LOCK_open'));
+SELECT IF((@after_count - @before_count) > 0, 'Success', 'Failure') test_fm1_timed;
+test_fm1_timed
+Success
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'NO'
+WHERE NAME = 'wait/synch/mutex/sql/LOCK_open';
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY_LONG;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_CURRENT;
+SELECT * FROM t1 WHERE id = 1;
+id b
+1 initial value
+SET @before_count = (SELECT SUM(TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+WHERE (EVENT_NAME = 'wait/synch/mutex/sql/LOCK_open'));
+SELECT * FROM t1;
+id b
+1 initial value
+2 initial value
+3 initial value
+4 initial value
+5 initial value
+6 initial value
+7 initial value
+8 initial value
+SET @after_count = (SELECT SUM(TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+WHERE (EVENT_NAME = 'wait/synch/mutex/sql/LOCK_open'));
+SELECT IF((COALESCE(@after_count, 0) - COALESCE(@before_count, 0)) = 0, 'Success', 'Failure') test_fm2_timed;
+test_fm2_timed
+Success
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY_LONG;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_CURRENT;
+SELECT * FROM t1 WHERE id = 1;
+id b
+1 initial value
+SET @before_count = (SELECT SUM(TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+WHERE (EVENT_NAME = 'wait/synch/rwlock/sql/LOCK_grant'));
+SELECT * FROM t1;
+id b
+1 initial value
+2 initial value
+3 initial value
+4 initial value
+5 initial value
+6 initial value
+7 initial value
+8 initial value
+SET @after_count = (SELECT SUM(TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+WHERE (EVENT_NAME = 'wait/synch/rwlock/sql/LOCK_grant'));
+SELECT IF((@after_count - @before_count) > 0, 'Success', 'Failure') test_fm1_rw_timed;
+test_fm1_rw_timed
+Success
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'NO'
+WHERE NAME = 'wait/synch/rwlock/sql/LOCK_grant';
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY_LONG;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_CURRENT;
+SELECT * FROM t1 WHERE id = 1;
+id b
+1 initial value
+SET @before_count = (SELECT SUM(TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+WHERE (EVENT_NAME = 'wait/synch/rwlock/sql/LOCK_grant'));
+SELECT * FROM t1;
+id b
+1 initial value
+2 initial value
+3 initial value
+4 initial value
+5 initial value
+6 initial value
+7 initial value
+8 initial value
+SET @after_count = (SELECT SUM(TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+WHERE (EVENT_NAME = 'wait/synch/rwlock/sql/LOCK_grant'));
+SELECT IF((COALESCE(@after_count, 0) - COALESCE(@before_count, 0)) = 0, 'Success', 'Failure') test_fm2_rw_timed;
+test_fm2_rw_timed
+Success
+DROP TABLE t1;
diff --git a/mysql-test/suite/perfschema/r/global_read_lock.result b/mysql-test/suite/perfschema/r/global_read_lock.result
new file mode 100644
index 00000000000..93d6adfd049
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/global_read_lock.result
@@ -0,0 +1,33 @@
+use performance_schema;
+grant SELECT, UPDATE, LOCK TABLES on performance_schema.* to pfsuser@localhost;
+flush privileges;
+connect (con1, localhost, pfsuser, , test);
+lock tables performance_schema.SETUP_INSTRUMENTS read;
+select * from performance_schema.SETUP_INSTRUMENTS;
+unlock tables;
+lock tables performance_schema.SETUP_INSTRUMENTS write;
+update performance_schema.SETUP_INSTRUMENTS set enabled='NO';
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES';
+unlock tables;
+connection default;
+flush tables with read lock;
+connection con1;
+lock tables performance_schema.SETUP_INSTRUMENTS read;
+select * from performance_schema.SETUP_INSTRUMENTS;
+unlock tables;
+lock tables performance_schema.SETUP_INSTRUMENTS write;
+connection default;
+select event_name,
+left(source, locate(":", source)) as short_source,
+timer_end, timer_wait, operation
+from performance_schema.EVENTS_WAITS_CURRENT
+where event_name like "wait/synch/cond/sql/COND_global_read_lock";
+event_name short_source timer_end timer_wait operation
+wait/synch/cond/sql/COND_global_read_lock lock.cc: NULL NULL wait
+unlock tables;
+update performance_schema.SETUP_INSTRUMENTS set enabled='NO';
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES';
+unlock tables;
+connection default;
+drop user pfsuser@localhost;
+flush privileges;
diff --git a/mysql-test/suite/perfschema/r/information_schema.result b/mysql-test/suite/perfschema/r/information_schema.result
new file mode 100644
index 00000000000..86ebe80768c
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/information_schema.result
@@ -0,0 +1,198 @@
+select TABLE_SCHEMA, upper(TABLE_NAME), TABLE_CATALOG
+from information_schema.tables
+where TABLE_SCHEMA='performance_schema';
+TABLE_SCHEMA upper(TABLE_NAME) TABLE_CATALOG
+performance_schema COND_INSTANCES def
+performance_schema EVENTS_WAITS_CURRENT def
+performance_schema EVENTS_WAITS_HISTORY def
+performance_schema EVENTS_WAITS_HISTORY_LONG def
+performance_schema EVENTS_WAITS_SUMMARY_BY_EVENT_NAME def
+performance_schema EVENTS_WAITS_SUMMARY_BY_INSTANCE def
+performance_schema EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME def
+performance_schema FILE_INSTANCES def
+performance_schema FILE_SUMMARY_BY_EVENT_NAME def
+performance_schema FILE_SUMMARY_BY_INSTANCE def
+performance_schema MUTEX_INSTANCES def
+performance_schema PERFORMANCE_TIMERS def
+performance_schema PROCESSLIST def
+performance_schema RWLOCK_INSTANCES def
+performance_schema SETUP_CONSUMERS def
+performance_schema SETUP_INSTRUMENTS def
+performance_schema SETUP_OBJECTS def
+performance_schema SETUP_TIMERS def
+select upper(TABLE_NAME), TABLE_TYPE, ENGINE
+from information_schema.tables
+where TABLE_SCHEMA='performance_schema';
+upper(TABLE_NAME) TABLE_TYPE ENGINE
+COND_INSTANCES BASE TABLE PERFORMANCE_SCHEMA
+EVENTS_WAITS_CURRENT BASE TABLE PERFORMANCE_SCHEMA
+EVENTS_WAITS_HISTORY BASE TABLE PERFORMANCE_SCHEMA
+EVENTS_WAITS_HISTORY_LONG BASE TABLE PERFORMANCE_SCHEMA
+EVENTS_WAITS_SUMMARY_BY_EVENT_NAME BASE TABLE PERFORMANCE_SCHEMA
+EVENTS_WAITS_SUMMARY_BY_INSTANCE BASE TABLE PERFORMANCE_SCHEMA
+EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME BASE TABLE PERFORMANCE_SCHEMA
+FILE_INSTANCES BASE TABLE PERFORMANCE_SCHEMA
+FILE_SUMMARY_BY_EVENT_NAME BASE TABLE PERFORMANCE_SCHEMA
+FILE_SUMMARY_BY_INSTANCE BASE TABLE PERFORMANCE_SCHEMA
+MUTEX_INSTANCES BASE TABLE PERFORMANCE_SCHEMA
+PERFORMANCE_TIMERS BASE TABLE PERFORMANCE_SCHEMA
+PROCESSLIST BASE TABLE PERFORMANCE_SCHEMA
+RWLOCK_INSTANCES BASE TABLE PERFORMANCE_SCHEMA
+SETUP_CONSUMERS BASE TABLE PERFORMANCE_SCHEMA
+SETUP_INSTRUMENTS BASE TABLE PERFORMANCE_SCHEMA
+SETUP_OBJECTS BASE TABLE PERFORMANCE_SCHEMA
+SETUP_TIMERS BASE TABLE PERFORMANCE_SCHEMA
+select upper(TABLE_NAME), VERSION, ROW_FORMAT
+from information_schema.tables
+where TABLE_SCHEMA='performance_schema';
+upper(TABLE_NAME) VERSION ROW_FORMAT
+COND_INSTANCES 10 Dynamic
+EVENTS_WAITS_CURRENT 10 Dynamic
+EVENTS_WAITS_HISTORY 10 Dynamic
+EVENTS_WAITS_HISTORY_LONG 10 Dynamic
+EVENTS_WAITS_SUMMARY_BY_EVENT_NAME 10 Dynamic
+EVENTS_WAITS_SUMMARY_BY_INSTANCE 10 Dynamic
+EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME 10 Dynamic
+FILE_INSTANCES 10 Dynamic
+FILE_SUMMARY_BY_EVENT_NAME 10 Dynamic
+FILE_SUMMARY_BY_INSTANCE 10 Dynamic
+MUTEX_INSTANCES 10 Dynamic
+PERFORMANCE_TIMERS 10 Fixed
+PROCESSLIST 10 Dynamic
+RWLOCK_INSTANCES 10 Dynamic
+SETUP_CONSUMERS 10 Dynamic
+SETUP_INSTRUMENTS 10 Dynamic
+SETUP_OBJECTS 10 Dynamic
+SETUP_TIMERS 10 Dynamic
+select upper(TABLE_NAME), TABLE_ROWS, AVG_ROW_LENGTH
+from information_schema.tables
+where TABLE_SCHEMA='performance_schema';
+upper(TABLE_NAME) TABLE_ROWS AVG_ROW_LENGTH
+COND_INSTANCES 1000 0
+EVENTS_WAITS_CURRENT 1000 0
+EVENTS_WAITS_HISTORY 1000 0
+EVENTS_WAITS_HISTORY_LONG 10000 0
+EVENTS_WAITS_SUMMARY_BY_EVENT_NAME 1000 0
+EVENTS_WAITS_SUMMARY_BY_INSTANCE 1000 0
+EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME 1000 0
+FILE_INSTANCES 1000 0
+FILE_SUMMARY_BY_EVENT_NAME 1000 0
+FILE_SUMMARY_BY_INSTANCE 1000 0
+MUTEX_INSTANCES 1000 0
+PERFORMANCE_TIMERS 5 0
+PROCESSLIST 1000 0
+RWLOCK_INSTANCES 1000 0
+SETUP_CONSUMERS 8 0
+SETUP_INSTRUMENTS 1000 0
+SETUP_OBJECTS 1000 0
+SETUP_TIMERS 1 0
+select upper(TABLE_NAME), DATA_LENGTH, MAX_DATA_LENGTH
+from information_schema.tables
+where TABLE_SCHEMA='performance_schema';
+upper(TABLE_NAME) DATA_LENGTH MAX_DATA_LENGTH
+COND_INSTANCES 0 0
+EVENTS_WAITS_CURRENT 0 0
+EVENTS_WAITS_HISTORY 0 0
+EVENTS_WAITS_HISTORY_LONG 0 0
+EVENTS_WAITS_SUMMARY_BY_EVENT_NAME 0 0
+EVENTS_WAITS_SUMMARY_BY_INSTANCE 0 0
+EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME 0 0
+FILE_INSTANCES 0 0
+FILE_SUMMARY_BY_EVENT_NAME 0 0
+FILE_SUMMARY_BY_INSTANCE 0 0
+MUTEX_INSTANCES 0 0
+PERFORMANCE_TIMERS 0 0
+PROCESSLIST 0 0
+RWLOCK_INSTANCES 0 0
+SETUP_CONSUMERS 0 0
+SETUP_INSTRUMENTS 0 0
+SETUP_OBJECTS 0 0
+SETUP_TIMERS 0 0
+select upper(TABLE_NAME), INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT
+from information_schema.tables
+where TABLE_SCHEMA='performance_schema';
+upper(TABLE_NAME) INDEX_LENGTH DATA_FREE AUTO_INCREMENT
+COND_INSTANCES 0 0 NULL
+EVENTS_WAITS_CURRENT 0 0 NULL
+EVENTS_WAITS_HISTORY 0 0 NULL
+EVENTS_WAITS_HISTORY_LONG 0 0 NULL
+EVENTS_WAITS_SUMMARY_BY_EVENT_NAME 0 0 NULL
+EVENTS_WAITS_SUMMARY_BY_INSTANCE 0 0 NULL
+EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME 0 0 NULL
+FILE_INSTANCES 0 0 NULL
+FILE_SUMMARY_BY_EVENT_NAME 0 0 NULL
+FILE_SUMMARY_BY_INSTANCE 0 0 NULL
+MUTEX_INSTANCES 0 0 NULL
+PERFORMANCE_TIMERS 0 0 NULL
+PROCESSLIST 0 0 NULL
+RWLOCK_INSTANCES 0 0 NULL
+SETUP_CONSUMERS 0 0 NULL
+SETUP_INSTRUMENTS 0 0 NULL
+SETUP_OBJECTS 0 0 NULL
+SETUP_TIMERS 0 0 NULL
+select upper(TABLE_NAME), CREATE_TIME, UPDATE_TIME, CHECK_TIME
+from information_schema.tables
+where TABLE_SCHEMA='performance_schema';
+upper(TABLE_NAME) CREATE_TIME UPDATE_TIME CHECK_TIME
+COND_INSTANCES NULL NULL NULL
+EVENTS_WAITS_CURRENT NULL NULL NULL
+EVENTS_WAITS_HISTORY NULL NULL NULL
+EVENTS_WAITS_HISTORY_LONG NULL NULL NULL
+EVENTS_WAITS_SUMMARY_BY_EVENT_NAME NULL NULL NULL
+EVENTS_WAITS_SUMMARY_BY_INSTANCE NULL NULL NULL
+EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME NULL NULL NULL
+FILE_INSTANCES NULL NULL NULL
+FILE_SUMMARY_BY_EVENT_NAME NULL NULL NULL
+FILE_SUMMARY_BY_INSTANCE NULL NULL NULL
+MUTEX_INSTANCES NULL NULL NULL
+PERFORMANCE_TIMERS NULL NULL NULL
+PROCESSLIST NULL NULL NULL
+RWLOCK_INSTANCES NULL NULL NULL
+SETUP_CONSUMERS NULL NULL NULL
+SETUP_INSTRUMENTS NULL NULL NULL
+SETUP_OBJECTS NULL NULL NULL
+SETUP_TIMERS NULL NULL NULL
+select upper(TABLE_NAME), TABLE_COLLATION, CHECKSUM
+from information_schema.tables
+where TABLE_SCHEMA='performance_schema';
+upper(TABLE_NAME) TABLE_COLLATION CHECKSUM
+COND_INSTANCES utf8_general_ci NULL
+EVENTS_WAITS_CURRENT utf8_general_ci NULL
+EVENTS_WAITS_HISTORY utf8_general_ci NULL
+EVENTS_WAITS_HISTORY_LONG utf8_general_ci NULL
+EVENTS_WAITS_SUMMARY_BY_EVENT_NAME utf8_general_ci NULL
+EVENTS_WAITS_SUMMARY_BY_INSTANCE utf8_general_ci NULL
+EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME utf8_general_ci NULL
+FILE_INSTANCES utf8_general_ci NULL
+FILE_SUMMARY_BY_EVENT_NAME utf8_general_ci NULL
+FILE_SUMMARY_BY_INSTANCE utf8_general_ci NULL
+MUTEX_INSTANCES utf8_general_ci NULL
+PERFORMANCE_TIMERS utf8_general_ci NULL
+PROCESSLIST utf8_general_ci NULL
+RWLOCK_INSTANCES utf8_general_ci NULL
+SETUP_CONSUMERS utf8_general_ci NULL
+SETUP_INSTRUMENTS utf8_general_ci NULL
+SETUP_OBJECTS utf8_general_ci NULL
+SETUP_TIMERS utf8_general_ci NULL
+select upper(TABLE_NAME), TABLE_COMMENT
+from information_schema.tables
+where TABLE_SCHEMA='performance_schema';
+upper(TABLE_NAME) TABLE_COMMENT
+COND_INSTANCES
+EVENTS_WAITS_CURRENT
+EVENTS_WAITS_HISTORY
+EVENTS_WAITS_HISTORY_LONG
+EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
+EVENTS_WAITS_SUMMARY_BY_INSTANCE
+EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
+FILE_INSTANCES
+FILE_SUMMARY_BY_EVENT_NAME
+FILE_SUMMARY_BY_INSTANCE
+MUTEX_INSTANCES
+PERFORMANCE_TIMERS
+PROCESSLIST
+RWLOCK_INSTANCES
+SETUP_CONSUMERS
+SETUP_INSTRUMENTS
+SETUP_OBJECTS
+SETUP_TIMERS
diff --git a/mysql-test/suite/perfschema/r/misc.result b/mysql-test/suite/perfschema/r/misc.result
new file mode 100644
index 00000000000..d944b4b1d3d
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/misc.result
@@ -0,0 +1,13 @@
+SELECT EVENT_ID FROM performance_schema.EVENTS_WAITS_CURRENT
+WHERE THREAD_ID IN
+(SELECT THREAD_ID FROM performance_schema.PROCESSLIST)
+AND EVENT_NAME IN
+(SELECT NAME FROM performance_schema.SETUP_INSTRUMENTS
+WHERE NAME LIKE "wait/synch/%")
+LIMIT 1;
+create table test.t1(a int) engine=performance_schema;
+ERROR HY000: Invalid performance_schema usage.
+create table test.t1 like performance_schema.EVENTS_WAITS_CURRENT;
+ERROR HY000: Invalid performance_schema usage.
+create table performance_schema.t1(a int);
+ERROR 42000: CREATE command denied to user 'root'@'localhost' for table 't1'
diff --git a/mysql-test/suite/perfschema/r/myisam_file_io.result b/mysql-test/suite/perfschema/r/myisam_file_io.result
new file mode 100644
index 00000000000..66c37c7d6d8
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/myisam_file_io.result
@@ -0,0 +1,59 @@
+update performance_schema.SETUP_INSTRUMENTS set enabled='NO';
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES'
+ where name like "wait/io/file/myisam/%";
+update performance_schema.SETUP_CONSUMERS
+set enabled='YES';
+truncate table performance_schema.EVENTS_WAITS_HISTORY_LONG;
+drop table if exists test.no_index_tab;
+create table test.no_index_tab ( a varchar(255), b int ) engine=myisam;
+insert into no_index_tab set a = 'foo', b = 1;
+insert into no_index_tab set a = 'foo', b = 1;
+insert into no_index_tab set a = 'foo', b = 1;
+select event_name,
+left(source, locate(":", source)) as short_source,
+operation, number_of_bytes,
+substring(object_name, locate("no_index_tab", object_name)) as short_name
+from performance_schema.EVENTS_WAITS_HISTORY_LONG
+where operation not like "tell"
+ order by thread_id, event_id;
+event_name short_source operation number_of_bytes short_name
+wait/io/file/myisam/kfile mi_create.c: create NULL no_index_tab.MYI
+wait/io/file/myisam/dfile mi_create.c: create NULL no_index_tab.MYD
+wait/io/file/myisam/kfile mi_open.c: write 176 no_index_tab.MYI
+wait/io/file/myisam/kfile mi_open.c: write 100 no_index_tab.MYI
+wait/io/file/myisam/kfile mi_open.c: write 7 no_index_tab.MYI
+wait/io/file/myisam/kfile mi_open.c: write 7 no_index_tab.MYI
+wait/io/file/myisam/kfile mi_open.c: write 7 no_index_tab.MYI
+wait/io/file/myisam/kfile mi_create.c: chsize 1024 no_index_tab.MYI
+wait/io/file/myisam/dfile mi_create.c: close NULL no_index_tab.MYD
+wait/io/file/myisam/kfile mi_create.c: close NULL no_index_tab.MYI
+wait/io/file/myisam/kfile mi_open.c: open NULL no_index_tab.MYI
+wait/io/file/myisam/kfile mi_open.c: read 24 no_index_tab.MYI
+wait/io/file/myisam/kfile mi_open.c: seek NULL no_index_tab.MYI
+wait/io/file/myisam/kfile mi_open.c: read 297 no_index_tab.MYI
+wait/io/file/myisam/dfile mi_open.c: open NULL no_index_tab.MYD
+wait/io/file/myisam/kfile mi_locking.c: write 3 no_index_tab.MYI
+wait/io/file/myisam/dfile mi_dynrec.c: write 20 no_index_tab.MYD
+wait/io/file/myisam/kfile mi_open.c: write 124 no_index_tab.MYI
+wait/io/file/myisam/dfile mi_dynrec.c: write 20 no_index_tab.MYD
+wait/io/file/myisam/kfile mi_open.c: write 124 no_index_tab.MYI
+wait/io/file/myisam/dfile mi_dynrec.c: write 20 no_index_tab.MYD
+wait/io/file/myisam/kfile mi_open.c: write 124 no_index_tab.MYI
+show status like 'performance_schema_%';
+Variable_name Value
+Performance_schema_cond_classes_lost 0
+Performance_schema_cond_instances_lost 0
+Performance_schema_file_classes_lost 0
+Performance_schema_file_handles_lost 0
+Performance_schema_file_instances_lost 0
+Performance_schema_locker_lost 0
+Performance_schema_mutex_classes_lost 0
+Performance_schema_mutex_instances_lost 0
+Performance_schema_rwlock_classes_lost 0
+Performance_schema_rwlock_instances_lost 0
+Performance_schema_table_handles_lost 0
+Performance_schema_table_instances_lost 0
+Performance_schema_thread_classes_lost 0
+Performance_schema_thread_instances_lost 0
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES';
+drop table test.no_index_tab;
diff --git a/mysql-test/suite/perfschema/r/no_threads.result b/mysql-test/suite/perfschema/r/no_threads.result
new file mode 100644
index 00000000000..b38dc9fd733
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/no_threads.result
@@ -0,0 +1,43 @@
+update performance_schema.SETUP_INSTRUMENTS set enabled='NO';
+update performance_schema.SETUP_CONSUMERS set enabled='YES';
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES'
+ where name like "wait/synch/mutex/mysys/THR_LOCK_myisam";
+drop table if exists test.t1;
+truncate table performance_schema.EVENTS_WAITS_CURRENT;
+truncate table performance_schema.EVENTS_WAITS_HISTORY;
+truncate table performance_schema.EVENTS_WAITS_HISTORY_LONG;
+show variables like "thread_handling";
+Variable_name Value
+thread_handling no-threads
+create table test.t1(a int) engine=MYISAM;
+show variables like "performance_schema";
+Variable_name Value
+performance_schema ON
+show variables like "performance_schema_max_thread%";
+Variable_name Value
+performance_schema_max_thread_classes 50
+performance_schema_max_thread_instances 10
+select count(*) from performance_schema.PROCESSLIST
+where name like "thread/sql/main";
+count(*)
+1
+select count(*) from performance_schema.PROCESSLIST
+where name like "thread/sql/OneConnection";
+count(*)
+0
+select event_name, operation,
+left(source, locate(":", source)) as short_source
+from performance_schema.EVENTS_WAITS_CURRENT;
+event_name operation short_source
+wait/synch/mutex/mysys/THR_LOCK_myisam lock mi_create.c:
+select event_name, operation,
+left(source, locate(":", source)) as short_source
+from performance_schema.EVENTS_WAITS_HISTORY;
+event_name operation short_source
+wait/synch/mutex/mysys/THR_LOCK_myisam lock mi_create.c:
+select event_name, operation,
+left(source, locate(":", source)) as short_source
+from performance_schema.EVENTS_WAITS_HISTORY_LONG;
+event_name operation short_source
+wait/synch/mutex/mysys/THR_LOCK_myisam lock mi_create.c:
+drop table test.t1;
diff --git a/mysql-test/suite/perfschema/r/one_thread_per_con.result b/mysql-test/suite/perfschema/r/one_thread_per_con.result
new file mode 100644
index 00000000000..9677a09933a
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/one_thread_per_con.result
@@ -0,0 +1,38 @@
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES'
+ where name like "wait/synch/mutex/mysys/THR_LOCK_myisam";
+drop table if exists test.t1;
+drop table if exists test.t2;
+drop table if exists test.t3;
+truncate table performance_schema.EVENTS_WAITS_HISTORY_LONG;
+show variables like "thread_handling";
+Variable_name Value
+thread_handling one-thread-per-connection
+"----------------- Connection 1"
+create table test.t1(a int) engine=MYISAM;
+"----------------- Connection 2"
+create table test.t2(a int) engine=MYISAM;
+"----------------- Connection 3"
+create table test.t3(a int) engine=MYISAM;
+"----------------- Connection default"
+execute stmt_dump_events using @tid;
+event_name short_source operation number_of_bytes
+wait/synch/mutex/mysys/THR_LOCK_myisam mi_create.c: lock NULL
+execute stmt_dump_thread using @tid;
+name
+thread/sql/one_connection
+execute stmt_dump_events using @tid;
+event_name short_source operation number_of_bytes
+wait/synch/mutex/mysys/THR_LOCK_myisam mi_create.c: lock NULL
+execute stmt_dump_thread using @tid;
+name
+thread/sql/one_connection
+execute stmt_dump_events using @tid;
+event_name short_source operation number_of_bytes
+wait/synch/mutex/mysys/THR_LOCK_myisam mi_create.c: lock NULL
+execute stmt_dump_thread using @tid;
+name
+thread/sql/one_connection
+drop table test.t1;
+drop table test.t2;
+drop table test.t3;
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES';
diff --git a/mysql-test/suite/perfschema/r/privilege.result b/mysql-test/suite/perfschema/r/privilege.result
new file mode 100644
index 00000000000..ddbc150a72a
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/privilege.result
@@ -0,0 +1,577 @@
+show grants;
+Grants for root@localhost
+GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
+grant ALL on *.* to 'pfs_user_1'@localhost with GRANT OPTION;
+grant ALL on performance_schema.* to 'pfs_user_2'@localhost
+with GRANT OPTION;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant CREATE on performance_schema.* to 'pfs_user_2'@localhost;
+grant DROP on performance_schema.* to 'pfs_user_2'@localhost;
+grant REFERENCES on performance_schema.* to 'pfs_user_2'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant INDEX on performance_schema.* to 'pfs_user_2'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant ALTER on performance_schema.* to 'pfs_user_2'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant CREATE TEMPORARY TABLES on performance_schema.* to 'pfs_user_2'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant EXECUTE on performance_schema.* to 'pfs_user_2'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant CREATE VIEW on performance_schema.* to 'pfs_user_2'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant SHOW VIEW on performance_schema.* to 'pfs_user_2'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant CREATE ROUTINE on performance_schema.* to 'pfs_user_2'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant ALTER ROUTINE on performance_schema.* to 'pfs_user_2'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant EVENT on performance_schema.* to 'pfs_user_2'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant TRIGGER on performance_schema.* to 'pfs_user_2'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant SELECT on performance_schema.* to 'pfs_user_2'@localhost;
+grant INSERT on performance_schema.* to 'pfs_user_2'@localhost;
+grant UPDATE on performance_schema.* to 'pfs_user_2'@localhost;
+grant DELETE on performance_schema.* to 'pfs_user_2'@localhost;
+grant LOCK TABLES on performance_schema.* to 'pfs_user_2'@localhost;
+grant ALL on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost
+with GRANT OPTION;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant CREATE on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+grant DROP on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+grant REFERENCES on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant INDEX on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant ALTER on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant CREATE VIEW on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant SHOW VIEW on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant TRIGGER on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant INSERT on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+ERROR 42000: INSERT,GRANT command denied to user 'root'@'localhost' for table 'SETUP_INSTRUMENTS'
+grant DELETE on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+ERROR 42000: DELETE,GRANT command denied to user 'root'@'localhost' for table 'SETUP_INSTRUMENTS'
+grant SELECT on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost
+with GRANT OPTION;
+grant UPDATE on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost
+with GRANT OPTION;
+grant ALL on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost
+with GRANT OPTION;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant CREATE on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+grant DROP on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+grant REFERENCES on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant INDEX on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant ALTER on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant CREATE VIEW on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant SHOW VIEW on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant TRIGGER on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant INSERT on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+ERROR 42000: INSERT,GRANT command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+grant UPDATE on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+ERROR 42000: UPDATE,GRANT command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+grant DELETE on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+ERROR 42000: DELETE,GRANT command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+grant SELECT on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost
+with GRANT OPTION;
+grant ALL on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost
+with GRANT OPTION;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant CREATE on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+grant DROP on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+grant REFERENCES on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant INDEX on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant ALTER on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant CREATE VIEW on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant SHOW VIEW on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant TRIGGER on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+grant INSERT on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+ERROR 42000: INSERT,GRANT command denied to user 'root'@'localhost' for table 'FILE_INSTANCES'
+grant UPDATE on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+ERROR 42000: UPDATE,GRANT command denied to user 'root'@'localhost' for table 'FILE_INSTANCES'
+grant DELETE on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+ERROR 42000: DELETE,GRANT command denied to user 'root'@'localhost' for table 'FILE_INSTANCES'
+grant SELECT on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost
+with GRANT OPTION;
+grant LOCK TABLES on performance_schema.* to 'pfs_user_3'@localhost
+with GRANT OPTION;
+flush privileges;
+drop table if exists test.t1;
+rename table performance_schema.SETUP_INSTRUMENTS to test.t1;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+rename table performance_schema.EVENTS_WAITS_CURRENT to test.t1;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+rename table performance_schema.FILE_INSTANCES to test.t1;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+rename table performance_schema.SETUP_INSTRUMENTS to performance_schema.t1;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+rename table performance_schema.EVENTS_WAITS_CURRENT to performance_schema.t1;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+rename table performance_schema.FILE_INSTANCES to performance_schema.t1;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+rename table performance_schema.SETUP_INSTRUMENTS
+to performance_schema.EVENTS_WAITS_CURRENT;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+rename table performance_schema.EVENTS_WAITS_CURRENT
+to performance_schema.SETUP_INSTRUMENTS;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+create procedure performance_schema.my_proc() begin end;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+create function performance_schema.my_func() returns int return 0;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+create event performance_schema.my_event on schedule every 15 minute
+do begin end;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+create trigger performance_schema.bi_setup_instruments
+before insert on performance_schema.SETUP_INSTRUMENTS
+for each row begin end;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+create trigger performance_schema.bi_events_waits_current
+before insert on performance_schema.EVENTS_WAITS_CURRENT
+for each row begin end;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+create trigger performance_schema.bi_file_instances
+before insert on performance_schema.FILE_INSTANCES
+for each row begin end;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
+create table test.t1(a int) engine=PERFORMANCE_SCHEMA;
+ERROR HY000: Invalid performance_schema usage.
+create table test.t1 like performance_schema.SETUP_INSTRUMENTS;
+ERROR HY000: Invalid performance_schema usage.
+create table test.t1 like performance_schema.EVENTS_WAITS_CURRENT;
+ERROR HY000: Invalid performance_schema usage.
+create table test.t1 like performance_schema.FILE_INSTANCES;
+ERROR HY000: Invalid performance_schema usage.
+insert into performance_schema.SETUP_INSTRUMENTS
+set name="foo";
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'SETUP_INSTRUMENTS'
+insert into performance_schema.EVENTS_WAITS_CURRENT
+set name="foo";
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+insert into performance_schema.FILE_INSTANCES
+set name="foo";
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'FILE_INSTANCES'
+delete from performance_schema.SETUP_INSTRUMENTS;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'SETUP_INSTRUMENTS'
+delete from performance_schema.EVENTS_WAITS_CURRENT;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+delete from performance_schema.FILE_INSTANCES;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'FILE_INSTANCES'
+lock table performance_schema.SETUP_INSTRUMENTS read;
+unlock tables;
+lock table performance_schema.SETUP_INSTRUMENTS write;
+unlock tables;
+lock table performance_schema.EVENTS_WAITS_CURRENT read;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+unlock tables;
+lock table performance_schema.EVENTS_WAITS_CURRENT write;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+unlock tables;
+lock table performance_schema.FILE_INSTANCES read;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'FILE_INSTANCES'
+unlock tables;
+lock table performance_schema.FILE_INSTANCES write;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'FILE_INSTANCES'
+unlock tables;
+#
+# WL#4818, NFS2: Can use grants to give normal user access
+# to view data from _CURRENT and _HISTORY tables
+#
+# Should work as pfs_user_1 and pfs_user_2, but not as pfs_user_3.
+# (Except for EVENTS_WAITS_CURRENT, which is granted.)
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_HISTORY LIMIT 1;
+can select
+can select
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_HISTORY_LONG LIMIT 1;
+can select
+can select
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_CURRENT LIMIT 1;
+can select
+can select
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE LIMIT 1;
+can select
+can select
+SELECT "can select" FROM performance_schema.FILE_SUMMARY_BY_INSTANCE LIMIT 1;
+can select
+can select
+drop table if exists test.t1;
+rename table performance_schema.SETUP_INSTRUMENTS to test.t1;
+ERROR 42000: Access denied for user 'pfs_user_1'@'localhost' to database 'performance_schema'
+rename table performance_schema.EVENTS_WAITS_CURRENT to test.t1;
+ERROR 42000: Access denied for user 'pfs_user_1'@'localhost' to database 'performance_schema'
+rename table performance_schema.FILE_INSTANCES to test.t1;
+ERROR 42000: Access denied for user 'pfs_user_1'@'localhost' to database 'performance_schema'
+rename table performance_schema.SETUP_INSTRUMENTS to performance_schema.t1;
+ERROR 42000: Access denied for user 'pfs_user_1'@'localhost' to database 'performance_schema'
+rename table performance_schema.EVENTS_WAITS_CURRENT to performance_schema.t1;
+ERROR 42000: Access denied for user 'pfs_user_1'@'localhost' to database 'performance_schema'
+rename table performance_schema.FILE_INSTANCES to performance_schema.t1;
+ERROR 42000: Access denied for user 'pfs_user_1'@'localhost' to database 'performance_schema'
+rename table performance_schema.SETUP_INSTRUMENTS
+to performance_schema.EVENTS_WAITS_CURRENT;
+ERROR 42000: Access denied for user 'pfs_user_1'@'localhost' to database 'performance_schema'
+rename table performance_schema.EVENTS_WAITS_CURRENT
+to performance_schema.SETUP_INSTRUMENTS;
+ERROR 42000: Access denied for user 'pfs_user_1'@'localhost' to database 'performance_schema'
+create procedure performance_schema.my_proc() begin end;
+ERROR 42000: Access denied for user 'pfs_user_1'@'localhost' to database 'performance_schema'
+create function performance_schema.my_func() returns int return 0;
+ERROR 42000: Access denied for user 'pfs_user_1'@'localhost' to database 'performance_schema'
+create event performance_schema.my_event on schedule every 15 minute
+do begin end;
+ERROR 42000: Access denied for user 'pfs_user_1'@'localhost' to database 'performance_schema'
+create trigger performance_schema.bi_setup_instruments
+before insert on performance_schema.SETUP_INSTRUMENTS
+for each row begin end;
+ERROR 42000: Access denied for user 'pfs_user_1'@'localhost' to database 'performance_schema'
+create trigger performance_schema.bi_events_waits_current
+before insert on performance_schema.EVENTS_WAITS_CURRENT
+for each row begin end;
+ERROR 42000: Access denied for user 'pfs_user_1'@'localhost' to database 'performance_schema'
+create trigger performance_schema.bi_file_instances
+before insert on performance_schema.FILE_INSTANCES
+for each row begin end;
+ERROR 42000: Access denied for user 'pfs_user_1'@'localhost' to database 'performance_schema'
+create table test.t1(a int) engine=PERFORMANCE_SCHEMA;
+ERROR HY000: Invalid performance_schema usage.
+create table test.t1 like performance_schema.SETUP_INSTRUMENTS;
+ERROR HY000: Invalid performance_schema usage.
+create table test.t1 like performance_schema.EVENTS_WAITS_CURRENT;
+ERROR HY000: Invalid performance_schema usage.
+create table test.t1 like performance_schema.FILE_INSTANCES;
+ERROR HY000: Invalid performance_schema usage.
+insert into performance_schema.SETUP_INSTRUMENTS
+set name="foo";
+ERROR 42000: INSERT command denied to user 'pfs_user_1'@'localhost' for table 'SETUP_INSTRUMENTS'
+insert into performance_schema.EVENTS_WAITS_CURRENT
+set name="foo";
+ERROR 42000: INSERT command denied to user 'pfs_user_1'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+insert into performance_schema.FILE_INSTANCES
+set name="foo";
+ERROR 42000: INSERT command denied to user 'pfs_user_1'@'localhost' for table 'FILE_INSTANCES'
+delete from performance_schema.SETUP_INSTRUMENTS;
+ERROR 42000: DELETE command denied to user 'pfs_user_1'@'localhost' for table 'SETUP_INSTRUMENTS'
+delete from performance_schema.EVENTS_WAITS_CURRENT;
+ERROR 42000: DELETE command denied to user 'pfs_user_1'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+delete from performance_schema.FILE_INSTANCES;
+ERROR 42000: DELETE command denied to user 'pfs_user_1'@'localhost' for table 'FILE_INSTANCES'
+lock table performance_schema.SETUP_INSTRUMENTS read;
+unlock tables;
+lock table performance_schema.SETUP_INSTRUMENTS write;
+unlock tables;
+lock table performance_schema.EVENTS_WAITS_CURRENT read;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'pfs_user_1'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+unlock tables;
+lock table performance_schema.EVENTS_WAITS_CURRENT write;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'pfs_user_1'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+unlock tables;
+lock table performance_schema.FILE_INSTANCES read;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'pfs_user_1'@'localhost' for table 'FILE_INSTANCES'
+unlock tables;
+lock table performance_schema.FILE_INSTANCES write;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'pfs_user_1'@'localhost' for table 'FILE_INSTANCES'
+unlock tables;
+#
+# WL#4818, NFS2: Can use grants to give normal user access
+# to view data from _CURRENT and _HISTORY tables
+#
+# Should work as pfs_user_1 and pfs_user_2, but not as pfs_user_3.
+# (Except for EVENTS_WAITS_CURRENT, which is granted.)
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_HISTORY LIMIT 1;
+can select
+can select
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_HISTORY_LONG LIMIT 1;
+can select
+can select
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_CURRENT LIMIT 1;
+can select
+can select
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE LIMIT 1;
+can select
+can select
+SELECT "can select" FROM performance_schema.FILE_SUMMARY_BY_INSTANCE LIMIT 1;
+can select
+can select
+drop table if exists test.t1;
+rename table performance_schema.SETUP_INSTRUMENTS to test.t1;
+ERROR 42000: Access denied for user 'pfs_user_2'@'localhost' to database 'performance_schema'
+rename table performance_schema.EVENTS_WAITS_CURRENT to test.t1;
+ERROR 42000: Access denied for user 'pfs_user_2'@'localhost' to database 'performance_schema'
+rename table performance_schema.FILE_INSTANCES to test.t1;
+ERROR 42000: Access denied for user 'pfs_user_2'@'localhost' to database 'performance_schema'
+rename table performance_schema.SETUP_INSTRUMENTS to performance_schema.t1;
+ERROR 42000: Access denied for user 'pfs_user_2'@'localhost' to database 'performance_schema'
+rename table performance_schema.EVENTS_WAITS_CURRENT to performance_schema.t1;
+ERROR 42000: Access denied for user 'pfs_user_2'@'localhost' to database 'performance_schema'
+rename table performance_schema.FILE_INSTANCES to performance_schema.t1;
+ERROR 42000: Access denied for user 'pfs_user_2'@'localhost' to database 'performance_schema'
+rename table performance_schema.SETUP_INSTRUMENTS
+to performance_schema.EVENTS_WAITS_CURRENT;
+ERROR 42000: Access denied for user 'pfs_user_2'@'localhost' to database 'performance_schema'
+rename table performance_schema.EVENTS_WAITS_CURRENT
+to performance_schema.SETUP_INSTRUMENTS;
+ERROR 42000: Access denied for user 'pfs_user_2'@'localhost' to database 'performance_schema'
+create procedure performance_schema.my_proc() begin end;
+ERROR 42000: Access denied for user 'pfs_user_2'@'localhost' to database 'performance_schema'
+create function performance_schema.my_func() returns int return 0;
+ERROR 42000: Access denied for user 'pfs_user_2'@'localhost' to database 'performance_schema'
+create event performance_schema.my_event on schedule every 15 minute
+do begin end;
+ERROR 42000: Access denied for user 'pfs_user_2'@'localhost' to database 'performance_schema'
+create trigger performance_schema.bi_setup_instruments
+before insert on performance_schema.SETUP_INSTRUMENTS
+for each row begin end;
+ERROR 42000: Access denied for user 'pfs_user_2'@'localhost' to database 'performance_schema'
+create trigger performance_schema.bi_events_waits_current
+before insert on performance_schema.EVENTS_WAITS_CURRENT
+for each row begin end;
+ERROR 42000: Access denied for user 'pfs_user_2'@'localhost' to database 'performance_schema'
+create trigger performance_schema.bi_file_instances
+before insert on performance_schema.FILE_INSTANCES
+for each row begin end;
+ERROR 42000: Access denied for user 'pfs_user_2'@'localhost' to database 'performance_schema'
+create table test.t1(a int) engine=PERFORMANCE_SCHEMA;
+ERROR HY000: Invalid performance_schema usage.
+create table test.t1 like performance_schema.SETUP_INSTRUMENTS;
+ERROR HY000: Invalid performance_schema usage.
+create table test.t1 like performance_schema.EVENTS_WAITS_CURRENT;
+ERROR HY000: Invalid performance_schema usage.
+create table test.t1 like performance_schema.FILE_INSTANCES;
+ERROR HY000: Invalid performance_schema usage.
+insert into performance_schema.SETUP_INSTRUMENTS
+set name="foo";
+ERROR 42000: INSERT command denied to user 'pfs_user_2'@'localhost' for table 'SETUP_INSTRUMENTS'
+insert into performance_schema.EVENTS_WAITS_CURRENT
+set name="foo";
+ERROR 42000: INSERT command denied to user 'pfs_user_2'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+insert into performance_schema.FILE_INSTANCES
+set name="foo";
+ERROR 42000: INSERT command denied to user 'pfs_user_2'@'localhost' for table 'FILE_INSTANCES'
+delete from performance_schema.SETUP_INSTRUMENTS;
+ERROR 42000: DELETE command denied to user 'pfs_user_2'@'localhost' for table 'SETUP_INSTRUMENTS'
+delete from performance_schema.EVENTS_WAITS_CURRENT;
+ERROR 42000: DELETE command denied to user 'pfs_user_2'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+delete from performance_schema.FILE_INSTANCES;
+ERROR 42000: DELETE command denied to user 'pfs_user_2'@'localhost' for table 'FILE_INSTANCES'
+lock table performance_schema.SETUP_INSTRUMENTS read;
+unlock tables;
+lock table performance_schema.SETUP_INSTRUMENTS write;
+unlock tables;
+lock table performance_schema.EVENTS_WAITS_CURRENT read;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'pfs_user_2'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+unlock tables;
+lock table performance_schema.EVENTS_WAITS_CURRENT write;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'pfs_user_2'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+unlock tables;
+lock table performance_schema.FILE_INSTANCES read;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'pfs_user_2'@'localhost' for table 'FILE_INSTANCES'
+unlock tables;
+lock table performance_schema.FILE_INSTANCES write;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'pfs_user_2'@'localhost' for table 'FILE_INSTANCES'
+unlock tables;
+#
+# WL#4818, NFS2: Can use grants to give normal user access
+# to view data from _CURRENT and _HISTORY tables
+#
+# Should work as pfs_user_1 and pfs_user_2, but not as pfs_user_3.
+# (Except for EVENTS_WAITS_CURRENT, which is granted.)
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_HISTORY LIMIT 1;
+can select
+can select
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_HISTORY_LONG LIMIT 1;
+can select
+can select
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_CURRENT LIMIT 1;
+can select
+can select
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE LIMIT 1;
+can select
+can select
+SELECT "can select" FROM performance_schema.FILE_SUMMARY_BY_INSTANCE LIMIT 1;
+can select
+can select
+drop table if exists test.t1;
+rename table performance_schema.SETUP_INSTRUMENTS to test.t1;
+ERROR 42000: Access denied for user 'pfs_user_3'@'localhost' to database 'performance_schema'
+rename table performance_schema.EVENTS_WAITS_CURRENT to test.t1;
+ERROR 42000: Access denied for user 'pfs_user_3'@'localhost' to database 'performance_schema'
+rename table performance_schema.FILE_INSTANCES to test.t1;
+ERROR 42000: Access denied for user 'pfs_user_3'@'localhost' to database 'performance_schema'
+rename table performance_schema.SETUP_INSTRUMENTS to performance_schema.t1;
+ERROR 42000: Access denied for user 'pfs_user_3'@'localhost' to database 'performance_schema'
+rename table performance_schema.EVENTS_WAITS_CURRENT to performance_schema.t1;
+ERROR 42000: Access denied for user 'pfs_user_3'@'localhost' to database 'performance_schema'
+rename table performance_schema.FILE_INSTANCES to performance_schema.t1;
+ERROR 42000: Access denied for user 'pfs_user_3'@'localhost' to database 'performance_schema'
+rename table performance_schema.SETUP_INSTRUMENTS
+to performance_schema.EVENTS_WAITS_CURRENT;
+ERROR 42000: Access denied for user 'pfs_user_3'@'localhost' to database 'performance_schema'
+rename table performance_schema.EVENTS_WAITS_CURRENT
+to performance_schema.SETUP_INSTRUMENTS;
+ERROR 42000: Access denied for user 'pfs_user_3'@'localhost' to database 'performance_schema'
+create procedure performance_schema.my_proc() begin end;
+ERROR 42000: Access denied for user 'pfs_user_3'@'localhost' to database 'performance_schema'
+create function performance_schema.my_func() returns int return 0;
+ERROR 42000: Access denied for user 'pfs_user_3'@'localhost' to database 'performance_schema'
+create event performance_schema.my_event on schedule every 15 minute
+do begin end;
+ERROR 42000: Access denied for user 'pfs_user_3'@'localhost' to database 'performance_schema'
+create trigger performance_schema.bi_setup_instruments
+before insert on performance_schema.SETUP_INSTRUMENTS
+for each row begin end;
+ERROR 42000: Access denied for user 'pfs_user_3'@'localhost' to database 'performance_schema'
+create trigger performance_schema.bi_events_waits_current
+before insert on performance_schema.EVENTS_WAITS_CURRENT
+for each row begin end;
+ERROR 42000: Access denied for user 'pfs_user_3'@'localhost' to database 'performance_schema'
+create trigger performance_schema.bi_file_instances
+before insert on performance_schema.FILE_INSTANCES
+for each row begin end;
+ERROR 42000: Access denied for user 'pfs_user_3'@'localhost' to database 'performance_schema'
+create table test.t1(a int) engine=PERFORMANCE_SCHEMA;
+ERROR HY000: Invalid performance_schema usage.
+create table test.t1 like performance_schema.SETUP_INSTRUMENTS;
+ERROR HY000: Invalid performance_schema usage.
+create table test.t1 like performance_schema.EVENTS_WAITS_CURRENT;
+ERROR HY000: Invalid performance_schema usage.
+create table test.t1 like performance_schema.FILE_INSTANCES;
+ERROR HY000: Invalid performance_schema usage.
+insert into performance_schema.SETUP_INSTRUMENTS
+set name="foo";
+ERROR 42000: INSERT command denied to user 'pfs_user_3'@'localhost' for table 'SETUP_INSTRUMENTS'
+insert into performance_schema.EVENTS_WAITS_CURRENT
+set name="foo";
+ERROR 42000: INSERT command denied to user 'pfs_user_3'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+insert into performance_schema.FILE_INSTANCES
+set name="foo";
+ERROR 42000: INSERT command denied to user 'pfs_user_3'@'localhost' for table 'FILE_INSTANCES'
+delete from performance_schema.SETUP_INSTRUMENTS;
+ERROR 42000: DELETE command denied to user 'pfs_user_3'@'localhost' for table 'SETUP_INSTRUMENTS'
+delete from performance_schema.EVENTS_WAITS_CURRENT;
+ERROR 42000: DELETE command denied to user 'pfs_user_3'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+delete from performance_schema.FILE_INSTANCES;
+ERROR 42000: DELETE command denied to user 'pfs_user_3'@'localhost' for table 'FILE_INSTANCES'
+lock table performance_schema.SETUP_INSTRUMENTS read;
+unlock tables;
+lock table performance_schema.SETUP_INSTRUMENTS write;
+unlock tables;
+lock table performance_schema.EVENTS_WAITS_CURRENT read;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'pfs_user_3'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+unlock tables;
+lock table performance_schema.EVENTS_WAITS_CURRENT write;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'pfs_user_3'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+unlock tables;
+lock table performance_schema.FILE_INSTANCES read;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'pfs_user_3'@'localhost' for table 'FILE_INSTANCES'
+unlock tables;
+lock table performance_schema.FILE_INSTANCES write;
+ERROR 42000: SELECT,LOCK TABL command denied to user 'pfs_user_3'@'localhost' for table 'FILE_INSTANCES'
+unlock tables;
+#
+# WL#4818, NFS2: Can use grants to give normal user access
+# to view data from _CURRENT and _HISTORY tables
+#
+# Should work as pfs_user_1 and pfs_user_2, but not as pfs_user_3.
+# (Except for EVENTS_WAITS_CURRENT, which is granted.)
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_HISTORY LIMIT 1;
+ERROR 42000: SELECT command denied to user 'pfs_user_3'@'localhost' for table 'EVENTS_WAITS_HISTORY'
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_HISTORY_LONG LIMIT 1;
+ERROR 42000: SELECT command denied to user 'pfs_user_3'@'localhost' for table 'EVENTS_WAITS_HISTORY_LONG'
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_CURRENT LIMIT 1;
+can select
+can select
+SELECT "can select" FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE LIMIT 1;
+ERROR 42000: SELECT command denied to user 'pfs_user_3'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_INSTANCE'
+SELECT "can select" FROM performance_schema.FILE_SUMMARY_BY_INSTANCE LIMIT 1;
+ERROR 42000: SELECT command denied to user 'pfs_user_3'@'localhost' for table 'FILE_SUMMARY_BY_INSTANCE'
+revoke all privileges, grant option from 'pfs_user_1'@localhost;
+revoke all privileges, grant option from 'pfs_user_2'@localhost;
+revoke all privileges, grant option from 'pfs_user_3'@localhost;
+drop user 'pfs_user_1'@localhost;
+drop user 'pfs_user_2'@localhost;
+drop user 'pfs_user_3'@localhost;
+flush privileges;
+# Test cases from WL#4818
+# Setup user
+CREATE user pfs_user_4;
+#
+# WL#4818, NFS4: Normal user does not have access to view data
+# without grants
+#
+# Select as pfs_user_4 should fail without grant
+SELECT event_id FROM performance_schema.EVENTS_WAITS_HISTORY;
+ERROR 42000: SELECT command denied to user 'pfs_user_4'@'localhost' for table 'EVENTS_WAITS_HISTORY'
+SELECT event_id FROM performance_schema.EVENTS_WAITS_HISTORY_LONG;
+ERROR 42000: SELECT command denied to user 'pfs_user_4'@'localhost' for table 'EVENTS_WAITS_HISTORY_LONG'
+SELECT event_id FROM performance_schema.EVENTS_WAITS_CURRENT;
+ERROR 42000: SELECT command denied to user 'pfs_user_4'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+SELECT event_name FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+ERROR 42000: SELECT command denied to user 'pfs_user_4'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_INSTANCE'
+SELECT event_name FROM performance_schema.FILE_SUMMARY_BY_INSTANCE;
+ERROR 42000: SELECT command denied to user 'pfs_user_4'@'localhost' for table 'FILE_SUMMARY_BY_INSTANCE'
+#
+# WL#4818, NFS3: Normal user does not have access to change what is
+# instrumented without grants
+#
+# User pfs_user_4 should not be allowed to tweak instrumentation without
+# explicit grant
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'NO', timed = 'YES';
+ERROR 42000: UPDATE command denied to user 'pfs_user_4'@'localhost' for table 'SETUP_INSTRUMENTS'
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'YES'
+WHERE name LIKE 'wait/synch/mutex/%'
+ OR name LIKE 'wait/synch/rwlock/%';
+ERROR 42000: UPDATE command denied to user 'pfs_user_4'@'localhost' for table 'SETUP_INSTRUMENTS'
+UPDATE performance_schema.SETUP_CONSUMERS SET enabled = 'YES';
+ERROR 42000: UPDATE command denied to user 'pfs_user_4'@'localhost' for table 'SETUP_CONSUMERS'
+UPDATE performance_schema.SETUP_TIMERS SET timer_name = 'TICK';
+ERROR 42000: UPDATE command denied to user 'pfs_user_4'@'localhost' for table 'SETUP_TIMERS'
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY_LONG;
+ERROR 42000: DROP command denied to user 'pfs_user_4'@'localhost' for table 'EVENTS_WAITS_HISTORY_LONG'
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY;
+ERROR 42000: DROP command denied to user 'pfs_user_4'@'localhost' for table 'EVENTS_WAITS_HISTORY'
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_CURRENT;
+ERROR 42000: DROP command denied to user 'pfs_user_4'@'localhost' for table 'EVENTS_WAITS_CURRENT'
+#
+# WL#4814, NFS1: Can use grants to give normal user access
+# to turn on and off instrumentation
+#
+# Grant access to change tables with the root account
+GRANT UPDATE ON performance_schema.SETUP_CONSUMERS TO pfs_user_4;
+GRANT UPDATE ON performance_schema.SETUP_TIMERS TO pfs_user_4;
+GRANT UPDATE, SELECT ON performance_schema.SETUP_INSTRUMENTS TO pfs_user_4;
+GRANT DROP ON performance_schema.EVENTS_WAITS_CURRENT TO pfs_user_4;
+GRANT DROP ON performance_schema.EVENTS_WAITS_HISTORY TO pfs_user_4;
+GRANT DROP ON performance_schema.EVENTS_WAITS_HISTORY_LONG TO pfs_user_4;
+# User pfs_user_4 should now be allowed to tweak instrumentation
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'NO', timed = 'YES';
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'YES'
+WHERE name LIKE 'wait/synch/mutex/%'
+ OR name LIKE 'wait/synch/rwlock/%';
+UPDATE performance_schema.SETUP_CONSUMERS SET enabled = 'YES';
+UPDATE performance_schema.SETUP_TIMERS SET timer_name = 'TICK';
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY_LONG;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_CURRENT;
+# Clean up
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM pfs_user_4;
+DROP USER pfs_user_4;
+flush privileges;
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'YES', timed = 'YES';
+UPDATE performance_schema.SETUP_CONSUMERS SET enabled = 'YES';
+UPDATE performance_schema.SETUP_TIMERS SET timer_name = 'CYCLE';
diff --git a/mysql-test/suite/perfschema/r/query_cache.result b/mysql-test/suite/perfschema/r/query_cache.result
new file mode 100644
index 00000000000..06862009493
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/query_cache.result
@@ -0,0 +1,66 @@
+drop table if exists t1;
+create table t1 (a int not null);
+insert into t1 values (1), (2), (3);
+SET GLOBAL query_cache_size=1355776;
+flush query cache;
+reset query cache;
+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 0
+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 1
+select spins from performance_schema.EVENTS_WAITS_CURRENT order by event_name limit 1;
+spins
+NULL
+select name from performance_schema.SETUP_INSTRUMENTS order by name limit 1;
+name
+wait/io/file/csv/data
+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 1
+select spins from performance_schema.EVENTS_WAITS_CURRENT order by event_name limit 1;
+spins
+NULL
+select name from performance_schema.SETUP_INSTRUMENTS order by name limit 1;
+name
+wait/io/file/csv/data
+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 1
+SET GLOBAL query_cache_size= default;
+drop table t1;
diff --git a/mysql-test/suite/perfschema/r/read_only.result b/mysql-test/suite/perfschema/r/read_only.result
new file mode 100644
index 00000000000..6a30eb4ab8b
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/read_only.result
@@ -0,0 +1,49 @@
+use performance_schema;
+set @start_read_only= @@global.read_only;
+grant SELECT, UPDATE on performance_schema.* to pfsuser@localhost;
+flush privileges;
+connect (con1, localhost, pfsuser, , test);
+connection default;
+set global read_only=0;
+connection con1;
+select @@global.read_only;
+@@global.read_only
+0
+show grants;
+Grants for pfsuser@localhost
+GRANT USAGE ON *.* TO 'pfsuser'@'localhost'
+GRANT SELECT, UPDATE ON `performance_schema`.* TO 'pfsuser'@'localhost'
+select * from performance_schema.SETUP_INSTRUMENTS;
+update performance_schema.SETUP_INSTRUMENTS set enabled='NO';
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES';
+connection default;
+set global read_only=1;
+connection con1;
+select @@global.read_only;
+@@global.read_only
+1
+show grants;
+Grants for pfsuser@localhost
+GRANT USAGE ON *.* TO 'pfsuser'@'localhost'
+GRANT SELECT, UPDATE ON `performance_schema`.* TO 'pfsuser'@'localhost'
+select * from performance_schema.SETUP_INSTRUMENTS;
+update performance_schema.SETUP_INSTRUMENTS set enabled='NO';
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES';
+connection default;
+grant super on *.* to pfsuser@localhost;
+flush privileges;
+connect (con1, localhost, pfsuser, , test);
+select @@global.read_only;
+@@global.read_only
+1
+show grants;
+Grants for pfsuser@localhost
+GRANT SUPER ON *.* TO 'pfsuser'@'localhost'
+GRANT SELECT, UPDATE ON `performance_schema`.* TO 'pfsuser'@'localhost'
+select * from performance_schema.SETUP_INSTRUMENTS;
+update performance_schema.SETUP_INSTRUMENTS set enabled='NO';
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES';
+connection default;
+set global read_only= @start_read_only;
+drop user pfsuser@localhost;
+flush privileges;
diff --git a/mysql-test/suite/perfschema/r/schema.result b/mysql-test/suite/perfschema/r/schema.result
new file mode 100644
index 00000000000..d402df70ed5
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/schema.result
@@ -0,0 +1,211 @@
+show databases;
+Database
+information_schema
+mtr
+mysql
+performance_schema
+test
+use performance_schema;
+show tables;
+Tables_in_performance_schema
+COND_INSTANCES
+EVENTS_WAITS_CURRENT
+EVENTS_WAITS_HISTORY
+EVENTS_WAITS_HISTORY_LONG
+EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
+EVENTS_WAITS_SUMMARY_BY_INSTANCE
+EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
+FILE_INSTANCES
+FILE_SUMMARY_BY_EVENT_NAME
+FILE_SUMMARY_BY_INSTANCE
+MUTEX_INSTANCES
+PERFORMANCE_TIMERS
+PROCESSLIST
+RWLOCK_INSTANCES
+SETUP_CONSUMERS
+SETUP_INSTRUMENTS
+SETUP_OBJECTS
+SETUP_TIMERS
+show create table COND_INSTANCES;
+Table Create Table
+COND_INSTANCES CREATE TABLE `COND_INSTANCES` (
+ `NAME` varchar(128) NOT NULL,
+ `OBJECT_INSTANCE_BEGIN` bigint(20) NOT NULL
+) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
+show create table EVENTS_WAITS_CURRENT;
+Table Create Table
+EVENTS_WAITS_CURRENT CREATE TABLE `EVENTS_WAITS_CURRENT` (
+ `THREAD_ID` int(11) NOT NULL,
+ `EVENT_ID` bigint(20) unsigned NOT NULL,
+ `EVENT_NAME` varchar(128) NOT NULL,
+ `SOURCE` varchar(64) DEFAULT NULL,
+ `TIMER_START` bigint(20) unsigned DEFAULT NULL,
+ `TIMER_END` bigint(20) unsigned DEFAULT NULL,
+ `TIMER_WAIT` bigint(20) unsigned DEFAULT NULL,
+ `SPINS` int(10) unsigned DEFAULT NULL,
+ `OBJECT_SCHEMA` varchar(64) DEFAULT NULL,
+ `OBJECT_NAME` varchar(512) DEFAULT NULL,
+ `OBJECT_TYPE` varchar(64) DEFAULT NULL,
+ `OBJECT_INSTANCE_BEGIN` bigint(20) NOT NULL,
+ `NESTING_EVENT_ID` bigint(20) unsigned DEFAULT NULL,
+ `OPERATION` varchar(16) NOT NULL,
+ `NUMBER_OF_BYTES` bigint(20) unsigned DEFAULT NULL,
+ `FLAGS` int(10) unsigned DEFAULT NULL
+) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
+show create table EVENTS_WAITS_HISTORY;
+Table Create Table
+EVENTS_WAITS_HISTORY CREATE TABLE `EVENTS_WAITS_HISTORY` (
+ `THREAD_ID` int(11) NOT NULL,
+ `EVENT_ID` bigint(20) unsigned NOT NULL,
+ `EVENT_NAME` varchar(128) NOT NULL,
+ `SOURCE` varchar(64) DEFAULT NULL,
+ `TIMER_START` bigint(20) unsigned DEFAULT NULL,
+ `TIMER_END` bigint(20) unsigned DEFAULT NULL,
+ `TIMER_WAIT` bigint(20) unsigned DEFAULT NULL,
+ `SPINS` int(10) unsigned DEFAULT NULL,
+ `OBJECT_SCHEMA` varchar(64) DEFAULT NULL,
+ `OBJECT_NAME` varchar(512) DEFAULT NULL,
+ `OBJECT_TYPE` varchar(64) DEFAULT NULL,
+ `OBJECT_INSTANCE_BEGIN` bigint(20) NOT NULL,
+ `NESTING_EVENT_ID` bigint(20) unsigned DEFAULT NULL,
+ `OPERATION` varchar(16) NOT NULL,
+ `NUMBER_OF_BYTES` bigint(20) unsigned DEFAULT NULL,
+ `FLAGS` int(10) unsigned DEFAULT NULL
+) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
+show create table EVENTS_WAITS_HISTORY_LONG;
+Table Create Table
+EVENTS_WAITS_HISTORY_LONG CREATE TABLE `EVENTS_WAITS_HISTORY_LONG` (
+ `THREAD_ID` int(11) NOT NULL,
+ `EVENT_ID` bigint(20) unsigned NOT NULL,
+ `EVENT_NAME` varchar(128) NOT NULL,
+ `SOURCE` varchar(64) DEFAULT NULL,
+ `TIMER_START` bigint(20) unsigned DEFAULT NULL,
+ `TIMER_END` bigint(20) unsigned DEFAULT NULL,
+ `TIMER_WAIT` bigint(20) unsigned DEFAULT NULL,
+ `SPINS` int(10) unsigned DEFAULT NULL,
+ `OBJECT_SCHEMA` varchar(64) DEFAULT NULL,
+ `OBJECT_NAME` varchar(512) DEFAULT NULL,
+ `OBJECT_TYPE` varchar(64) DEFAULT NULL,
+ `OBJECT_INSTANCE_BEGIN` bigint(20) NOT NULL,
+ `NESTING_EVENT_ID` bigint(20) unsigned DEFAULT NULL,
+ `OPERATION` varchar(16) NOT NULL,
+ `NUMBER_OF_BYTES` bigint(20) unsigned DEFAULT NULL,
+ `FLAGS` int(10) unsigned DEFAULT NULL
+) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
+show create table EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+Table Create Table
+EVENTS_WAITS_SUMMARY_BY_EVENT_NAME CREATE TABLE `EVENTS_WAITS_SUMMARY_BY_EVENT_NAME` (
+ `EVENT_NAME` varchar(128) NOT NULL,
+ `COUNT_STAR` bigint(20) unsigned NOT NULL,
+ `SUM_TIMER_WAIT` bigint(20) unsigned NOT NULL,
+ `MIN_TIMER_WAIT` bigint(20) unsigned NOT NULL,
+ `AVG_TIMER_WAIT` bigint(20) unsigned NOT NULL,
+ `MAX_TIMER_WAIT` bigint(20) unsigned NOT NULL
+) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
+show create table EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+Table Create Table
+EVENTS_WAITS_SUMMARY_BY_INSTANCE CREATE TABLE `EVENTS_WAITS_SUMMARY_BY_INSTANCE` (
+ `EVENT_NAME` varchar(128) NOT NULL,
+ `OBJECT_INSTANCE_BEGIN` bigint(20) NOT NULL,
+ `COUNT_STAR` bigint(20) unsigned NOT NULL,
+ `SUM_TIMER_WAIT` bigint(20) unsigned NOT NULL,
+ `MIN_TIMER_WAIT` bigint(20) unsigned NOT NULL,
+ `AVG_TIMER_WAIT` bigint(20) unsigned NOT NULL,
+ `MAX_TIMER_WAIT` bigint(20) unsigned NOT NULL
+) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
+show create table EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+Table Create Table
+EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME CREATE TABLE `EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME` (
+ `THREAD_ID` int(11) NOT NULL,
+ `EVENT_NAME` varchar(128) NOT NULL,
+ `COUNT_STAR` bigint(20) unsigned NOT NULL,
+ `SUM_TIMER_WAIT` bigint(20) unsigned NOT NULL,
+ `MIN_TIMER_WAIT` bigint(20) unsigned NOT NULL,
+ `AVG_TIMER_WAIT` bigint(20) unsigned NOT NULL,
+ `MAX_TIMER_WAIT` bigint(20) unsigned NOT NULL
+) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
+show create table FILE_INSTANCES;
+Table Create Table
+FILE_INSTANCES CREATE TABLE `FILE_INSTANCES` (
+ `FILE_NAME` varchar(512) NOT NULL,
+ `EVENT_NAME` varchar(128) NOT NULL,
+ `OPEN_COUNT` int(10) unsigned NOT NULL
+) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
+show create table FILE_SUMMARY_BY_EVENT_NAME;
+Table Create Table
+FILE_SUMMARY_BY_EVENT_NAME CREATE TABLE `FILE_SUMMARY_BY_EVENT_NAME` (
+ `EVENT_NAME` varchar(128) NOT NULL,
+ `COUNT_READ` bigint(20) unsigned NOT NULL,
+ `COUNT_WRITE` bigint(20) unsigned NOT NULL,
+ `SUM_NUMBER_OF_BYTES_READ` bigint(20) unsigned NOT NULL,
+ `SUM_NUMBER_OF_BYTES_WRITE` bigint(20) unsigned NOT NULL
+) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
+show create table FILE_SUMMARY_BY_INSTANCE;
+Table Create Table
+FILE_SUMMARY_BY_INSTANCE CREATE TABLE `FILE_SUMMARY_BY_INSTANCE` (
+ `FILE_NAME` varchar(512) NOT NULL,
+ `EVENT_NAME` varchar(128) NOT NULL,
+ `COUNT_READ` bigint(20) unsigned NOT NULL,
+ `COUNT_WRITE` bigint(20) unsigned NOT NULL,
+ `SUM_NUMBER_OF_BYTES_READ` bigint(20) unsigned NOT NULL,
+ `SUM_NUMBER_OF_BYTES_WRITE` bigint(20) unsigned NOT NULL
+) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
+show create table MUTEX_INSTANCES;
+Table Create Table
+MUTEX_INSTANCES CREATE TABLE `MUTEX_INSTANCES` (
+ `NAME` varchar(128) NOT NULL,
+ `OBJECT_INSTANCE_BEGIN` bigint(20) NOT NULL,
+ `LOCKED_BY_THREAD_ID` int(11) DEFAULT NULL
+) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
+show create table PERFORMANCE_TIMERS;
+Table Create Table
+PERFORMANCE_TIMERS CREATE TABLE `PERFORMANCE_TIMERS` (
+ `TIMER_NAME` enum('CYCLE','NANOSECOND','MICROSECOND','MILLISECOND','TICK') NOT NULL,
+ `TIMER_FREQUENCY` bigint(20) DEFAULT NULL,
+ `TIMER_RESOLUTION` bigint(20) DEFAULT NULL,
+ `TIMER_OVERHEAD` bigint(20) DEFAULT NULL
+) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
+show create table PROCESSLIST;
+Table Create Table
+PROCESSLIST CREATE TABLE `PROCESSLIST` (
+ `THREAD_ID` int(11) NOT NULL,
+ `ID` int(11) NOT NULL,
+ `NAME` varchar(64) NOT NULL
+) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
+show create table RWLOCK_INSTANCES;
+Table Create Table
+RWLOCK_INSTANCES CREATE TABLE `RWLOCK_INSTANCES` (
+ `NAME` varchar(128) NOT NULL,
+ `OBJECT_INSTANCE_BEGIN` bigint(20) NOT NULL,
+ `WRITE_LOCKED_BY_THREAD_ID` int(11) DEFAULT NULL,
+ `READ_LOCKED_BY_COUNT` int(10) unsigned NOT NULL
+) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
+show create table SETUP_CONSUMERS;
+Table Create Table
+SETUP_CONSUMERS CREATE TABLE `SETUP_CONSUMERS` (
+ `NAME` varchar(64) NOT NULL,
+ `ENABLED` enum('YES','NO') NOT NULL
+) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
+show create table SETUP_INSTRUMENTS;
+Table Create Table
+SETUP_INSTRUMENTS CREATE TABLE `SETUP_INSTRUMENTS` (
+ `NAME` varchar(128) NOT NULL,
+ `ENABLED` enum('YES','NO') NOT NULL,
+ `TIMED` enum('YES','NO') NOT NULL
+) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
+show create table SETUP_OBJECTS;
+Table Create Table
+SETUP_OBJECTS CREATE TABLE `SETUP_OBJECTS` (
+ `OBJECT_TYPE` varchar(64) DEFAULT NULL,
+ `OBJECT_SCHEMA` varchar(64) DEFAULT NULL,
+ `OBJECT_NAME` varchar(64) DEFAULT NULL,
+ `ENABLED` enum('YES','NO') NOT NULL,
+ `TIMED` enum('YES','NO') NOT NULL,
+ `AGGREGATED` enum('YES','NO') NOT NULL
+) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
+show create table SETUP_TIMERS;
+Table Create Table
+SETUP_TIMERS CREATE TABLE `SETUP_TIMERS` (
+ `NAME` varchar(64) NOT NULL,
+ `TIMER_NAME` enum('CYCLE','NANOSECOND','MICROSECOND','MILLISECOND','TICK') NOT NULL
+) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
diff --git a/mysql-test/suite/perfschema/r/selects.result b/mysql-test/suite/perfschema/r/selects.result
new file mode 100644
index 00000000000..b5bef207303
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/selects.result
@@ -0,0 +1,97 @@
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'YES', timed = 'YES';
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (id INT PRIMARY KEY, b CHAR(100) DEFAULT 'initial value')
+ENGINE=MyISAM;
+INSERT INTO t1 (id) VALUES (1), (2), (3), (4), (5), (6), (7), (8);
+SELECT OPERATION, SUM(NUMBER_OF_BYTES) AS TOTAL
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+GROUP BY OPERATION
+HAVING TOTAL IS NOT NULL
+ORDER BY OPERATION
+LIMIT 1;
+OPERATION TOTAL
+chsize [NUM_BYTES]
+SELECT EVENT_ID FROM performance_schema.EVENTS_WAITS_CURRENT
+WHERE THREAD_ID IN
+(SELECT THREAD_ID FROM performance_schema.PROCESSLIST)
+AND EVENT_NAME IN
+(SELECT NAME FROM performance_schema.SETUP_INSTRUMENTS
+WHERE NAME LIKE "wait/synch/%")
+LIMIT 1;
+EVENT_ID
+[EVENT_ID]
+SELECT DISTINCT EVENT_ID
+FROM performance_schema.EVENTS_WAITS_CURRENT
+JOIN performance_schema.EVENTS_WAITS_HISTORY USING (EVENT_ID)
+JOIN performance_schema.EVENTS_WAITS_HISTORY_LONG USING (EVENT_ID)
+ORDER BY EVENT_ID
+LIMIT 1;
+EVENT_ID
+[EVENT_ID]
+SELECT t1.THREAD_ID, t2.EVENT_ID, t3.EVENT_NAME, t4.TIMER_WAIT
+FROM performance_schema.EVENTS_WAITS_HISTORY t1
+JOIN performance_schema.EVENTS_WAITS_HISTORY t2 USING (EVENT_ID)
+JOIN performance_schema.EVENTS_WAITS_HISTORY t3 ON (t2.THREAD_ID = t3.THREAD_ID)
+JOIN performance_schema.EVENTS_WAITS_HISTORY t4 ON (t3.EVENT_NAME = t4.EVENT_NAME)
+ORDER BY t1.EVENT_ID, t2.EVENT_ID
+LIMIT 5;
+THREAD_ID EVENT_ID EVENT_NAME TIMER_WAIT
+[THREAD_ID] [EVENT_ID] [EVENT_NAME] [TIMER_WAIT]
+[THREAD_ID] [EVENT_ID] [EVENT_NAME] [TIMER_WAIT]
+[THREAD_ID] [EVENT_ID] [EVENT_NAME] [TIMER_WAIT]
+[THREAD_ID] [EVENT_ID] [EVENT_NAME] [TIMER_WAIT]
+[THREAD_ID] [EVENT_ID] [EVENT_NAME] [TIMER_WAIT]
+SELECT THREAD_ID, EVENT_ID FROM (
+SELECT THREAD_ID, EVENT_ID FROM performance_schema.EVENTS_WAITS_CURRENT
+UNION
+SELECT THREAD_ID, EVENT_ID FROM performance_schema.EVENTS_WAITS_HISTORY
+UNION
+SELECT THREAD_ID, EVENT_ID FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+) t1 ORDER BY THREAD_ID, EVENT_ID
+LIMIT 5;
+THREAD_ID EVENT_ID
+[THREAD_ID] [EVENT_ID]
+[THREAD_ID] [EVENT_ID]
+[THREAD_ID] [EVENT_ID]
+[THREAD_ID] [EVENT_ID]
+[THREAD_ID] [EVENT_ID]
+CREATE EVENT t_ps_event
+ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 SECOND
+DO SELECT DISTINCT EVENT_ID
+FROM performance_schema.EVENTS_WAITS_CURRENT
+JOIN performance_schema.EVENTS_WAITS_HISTORY USING (EVENT_ID)
+ORDER BY EVENT_ID
+LIMIT 1;
+ALTER TABLE t1 ADD COLUMN c INT;
+CREATE TRIGGER t_ps_trigger BEFORE INSERT ON t1
+FOR EACH ROW BEGIN
+SET NEW.c = (SELECT MAX(EVENT_ID)
+FROM performance_schema.EVENTS_WAITS_CURRENT);
+END;
+|
+INSERT INTO t1 (id) VALUES (11), (12), (13);
+SELECT id, c FROM t1 WHERE id > 10 ORDER BY c;
+id c
+11 [EVENT_ID]
+12 [EVENT_ID]
+13 [EVENT_ID]
+DROP TRIGGER t_ps_trigger;
+CREATE PROCEDURE t_ps_proc(IN tid INT, OUT pid INT)
+BEGIN
+SELECT id FROM performance_schema.PROCESSLIST
+WHERE THREAD_ID = tid INTO pid;
+END;
+|
+CALL t_ps_proc(0, @p_id);
+CREATE FUNCTION t_ps_func(tid INT) RETURNS int
+BEGIN
+return (SELECT id FROM performance_schema.PROCESSLIST
+WHERE THREAD_ID = tid);
+END;
+|
+SELECT t_ps_func(0) = @p_id;
+t_ps_func(0) = @p_id
+1
+DROP PROCEDURE t_ps_proc;
+DROP FUNCTION t_ps_func;
+DROP TABLE t1;
diff --git a/mysql-test/suite/perfschema/r/server_init.result b/mysql-test/suite/perfschema/r/server_init.result
new file mode 100644
index 00000000000..ac340f8eb67
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/server_init.result
@@ -0,0 +1,233 @@
+use performance_schema;
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/mysys/THR_LOCK_threads";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/mysys/THR_LOCK_malloc";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/mysys/THR_LOCK_open";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/mysys/THR_LOCK_isam";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/mysys/THR_LOCK_myisam";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/mysys/THR_LOCK_heap";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/mysys/THR_LOCK_net";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/mysys/THR_LOCK_charset";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/mysys/THR_LOCK_time";
+count(name)
+1
+select count(name) from COND_INSTANCES
+where name like "wait/synch/cond/mysys/THR_COND_threads";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_mysql_create_db";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_open";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_lock_db";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_thread_count";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_mapped_file";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_status";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_error_log";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_delayed_insert";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_uuid_generator";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_delayed_status";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_delayed_create";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_crypt";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_slave_list";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_active_mi";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_manager";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_global_read_lock";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_global_system_variables";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_user_conn";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_prepared_stmt_count";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_connection_count";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_server_started";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_rpl_status";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOG_INFO::lock";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/Query_cache::structure_guard_mutex";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/Event_scheduler::LOCK_scheduler_state";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_event_metadata";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_event_queue";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_user_locks";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/Cversion_lock";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_xid_cache";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_plugin";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/LOCK_gdl";
+count(name)
+1
+select count(name) from MUTEX_INSTANCES
+where name like "wait/synch/mutex/sql/tz_LOCK";
+count(name)
+1
+select count(name) from RWLOCK_INSTANCES
+where name like "wait/synch/rwlock/sql/LOCK_grant";
+count(name)
+1
+select count(name) from RWLOCK_INSTANCES
+where name like "wait/synch/rwlock/sql/LOCK_sys_init_connect";
+count(name)
+1
+select count(name) from RWLOCK_INSTANCES
+where name like "wait/synch/rwlock/sql/LOCK_sys_init_slave";
+count(name)
+1
+select count(name) from RWLOCK_INSTANCES
+where name like "wait/synch/rwlock/sql/LOCK_system_variables_hash";
+count(name)
+1
+select count(name) from COND_INSTANCES
+where name like "wait/synch/cond/sql/COND_server_started";
+count(name)
+1
+select count(name) from COND_INSTANCES
+where name like "wait/synch/cond/sql/COND_refresh";
+count(name)
+1
+select count(name) from COND_INSTANCES
+where name like "wait/synch/cond/sql/COND_thread_count";
+count(name)
+1
+select count(name) from COND_INSTANCES
+where name like "wait/synch/cond/sql/COND_manager";
+count(name)
+1
+select count(name) from COND_INSTANCES
+where name like "wait/synch/cond/sql/COND_global_read_lock";
+count(name)
+1
+select count(name) from COND_INSTANCES
+where name like "wait/synch/cond/sql/COND_thread_cache";
+count(name)
+1
+select count(name) from COND_INSTANCES
+where name like "wait/synch/cond/sql/COND_flush_thread_cache";
+count(name)
+1
+select count(name) from COND_INSTANCES
+where name like "wait/synch/cond/sql/COND_rpl_status";
+count(name)
+1
+select count(name) from COND_INSTANCES
+where name like "wait/synch/cond/sql/Query_cache::COND_cache_status_changed";
+count(name)
+1
+select count(name) from COND_INSTANCES
+where name like "wait/synch/cond/sql/Event_scheduler::COND_state";
+count(name)
+1
+select count(name) from COND_INSTANCES
+where name like "wait/synch/cond/sql/COND_queue_state";
+count(name)
+1
diff --git a/mysql-test/suite/perfschema/r/start_server_no_cond_class.result b/mysql-test/suite/perfschema/r/start_server_no_cond_class.result
new file mode 100644
index 00000000000..d6089139d5a
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/start_server_no_cond_class.result
@@ -0,0 +1,74 @@
+show databases;
+Database
+information_schema
+mtr
+mysql
+performance_schema
+test
+select count(*) from performance_schema.PERFORMANCE_TIMERS;
+count(*)
+5
+select count(*) from performance_schema.SETUP_CONSUMERS;
+count(*)
+8
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS;
+count(*) > 0
+1
+select count(*) from performance_schema.SETUP_TIMERS;
+count(*)
+1
+select * from performance_schema.COND_INSTANCES;
+select * from performance_schema.EVENTS_WAITS_CURRENT;
+select * from performance_schema.EVENTS_WAITS_HISTORY;
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+select * from performance_schema.FILE_INSTANCES;
+select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
+select * from performance_schema.MUTEX_INSTANCES;
+select * from performance_schema.PERFORMANCE_TIMERS;
+select * from performance_schema.PROCESSLIST;
+select * from performance_schema.RWLOCK_INSTANCES;
+select * from performance_schema.SETUP_CONSUMERS;
+select * from performance_schema.SETUP_INSTRUMENTS;
+select * from performance_schema.SETUP_OBJECTS;
+select * from performance_schema.SETUP_TIMERS;
+show variables like "performance_schema%";
+Variable_name Value
+performance_schema ON
+performance_schema_events_waits_history_long_size 10000
+performance_schema_events_waits_history_size 10
+performance_schema_max_cond_classes 0
+performance_schema_max_cond_instances 1000
+performance_schema_max_file_classes 50
+performance_schema_max_file_handles 32768
+performance_schema_max_file_instances 10000
+performance_schema_max_mutex_classes 200
+performance_schema_max_mutex_instances 1000
+performance_schema_max_rwlock_classes 20
+performance_schema_max_rwlock_instances 1000
+performance_schema_max_table_handles 100000
+performance_schema_max_table_instances 50000
+performance_schema_max_thread_classes 50
+performance_schema_max_thread_instances 1000
+show engine PERFORMANCE_SCHEMA status;
+show status like "performance_schema%";
+show variables like "performance_schema_max_cond_classes";
+Variable_name Value
+performance_schema_max_cond_classes 0
+select count(*) from performance_schema.SETUP_INSTRUMENTS
+where name like "wait/synch/cond/%";
+count(*)
+0
+select variable_value > 0 from information_schema.global_status
+where variable_name like 'PERFORMANCE_SCHEMA_COND_CLASSES_LOST';
+variable_value > 0
+1
+select count(*) from performance_schema.COND_INSTANCES;
+count(*)
+0
+show status like "performance_schema_cond_instances_lost";
+Variable_name Value
+Performance_schema_cond_instances_lost 0
diff --git a/mysql-test/suite/perfschema/r/start_server_no_cond_inst.result b/mysql-test/suite/perfschema/r/start_server_no_cond_inst.result
new file mode 100644
index 00000000000..eaa04c7629d
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/start_server_no_cond_inst.result
@@ -0,0 +1,77 @@
+show databases;
+Database
+information_schema
+mtr
+mysql
+performance_schema
+test
+select count(*) from performance_schema.PERFORMANCE_TIMERS;
+count(*)
+5
+select count(*) from performance_schema.SETUP_CONSUMERS;
+count(*)
+8
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS;
+count(*) > 0
+1
+select count(*) from performance_schema.SETUP_TIMERS;
+count(*)
+1
+select * from performance_schema.COND_INSTANCES;
+select * from performance_schema.EVENTS_WAITS_CURRENT;
+select * from performance_schema.EVENTS_WAITS_HISTORY;
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+select * from performance_schema.FILE_INSTANCES;
+select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
+select * from performance_schema.MUTEX_INSTANCES;
+select * from performance_schema.PERFORMANCE_TIMERS;
+select * from performance_schema.PROCESSLIST;
+select * from performance_schema.RWLOCK_INSTANCES;
+select * from performance_schema.SETUP_CONSUMERS;
+select * from performance_schema.SETUP_INSTRUMENTS;
+select * from performance_schema.SETUP_OBJECTS;
+select * from performance_schema.SETUP_TIMERS;
+show variables like "performance_schema%";
+Variable_name Value
+performance_schema ON
+performance_schema_events_waits_history_long_size 10000
+performance_schema_events_waits_history_size 10
+performance_schema_max_cond_classes 80
+performance_schema_max_cond_instances 0
+performance_schema_max_file_classes 50
+performance_schema_max_file_handles 32768
+performance_schema_max_file_instances 10000
+performance_schema_max_mutex_classes 200
+performance_schema_max_mutex_instances 1000
+performance_schema_max_rwlock_classes 20
+performance_schema_max_rwlock_instances 1000
+performance_schema_max_table_handles 100000
+performance_schema_max_table_instances 50000
+performance_schema_max_thread_classes 50
+performance_schema_max_thread_instances 1000
+show engine PERFORMANCE_SCHEMA status;
+show status like "performance_schema%";
+show variables like "performance_schema_max_cond_classes";
+Variable_name Value
+performance_schema_max_cond_classes 80
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS
+where name like "wait/synch/cond/%";
+count(*) > 0
+1
+show status like "performance_schema_cond_classes_lost";
+Variable_name Value
+Performance_schema_cond_classes_lost 0
+show variables like "performance_schema_max_cond_instances";
+Variable_name Value
+performance_schema_max_cond_instances 0
+select count(*) from performance_schema.COND_INSTANCES;
+count(*)
+0
+select variable_value > 0 from information_schema.global_status
+where variable_name like 'PERFORMANCE_SCHEMA_COND_INSTANCES_LOST';
+variable_value > 0
+1
diff --git a/mysql-test/suite/perfschema/r/start_server_no_file_class.result b/mysql-test/suite/perfschema/r/start_server_no_file_class.result
new file mode 100644
index 00000000000..d68ec00a456
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/start_server_no_file_class.result
@@ -0,0 +1,74 @@
+show databases;
+Database
+information_schema
+mtr
+mysql
+performance_schema
+test
+select count(*) from performance_schema.PERFORMANCE_TIMERS;
+count(*)
+5
+select count(*) from performance_schema.SETUP_CONSUMERS;
+count(*)
+8
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS;
+count(*) > 0
+1
+select count(*) from performance_schema.SETUP_TIMERS;
+count(*)
+1
+select * from performance_schema.COND_INSTANCES;
+select * from performance_schema.EVENTS_WAITS_CURRENT;
+select * from performance_schema.EVENTS_WAITS_HISTORY;
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+select * from performance_schema.FILE_INSTANCES;
+select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
+select * from performance_schema.MUTEX_INSTANCES;
+select * from performance_schema.PERFORMANCE_TIMERS;
+select * from performance_schema.PROCESSLIST;
+select * from performance_schema.RWLOCK_INSTANCES;
+select * from performance_schema.SETUP_CONSUMERS;
+select * from performance_schema.SETUP_INSTRUMENTS;
+select * from performance_schema.SETUP_OBJECTS;
+select * from performance_schema.SETUP_TIMERS;
+show variables like "performance_schema%";
+Variable_name Value
+performance_schema ON
+performance_schema_events_waits_history_long_size 10000
+performance_schema_events_waits_history_size 10
+performance_schema_max_cond_classes 80
+performance_schema_max_cond_instances 1000
+performance_schema_max_file_classes 0
+performance_schema_max_file_handles 32768
+performance_schema_max_file_instances 10000
+performance_schema_max_mutex_classes 200
+performance_schema_max_mutex_instances 1000
+performance_schema_max_rwlock_classes 20
+performance_schema_max_rwlock_instances 1000
+performance_schema_max_table_handles 100000
+performance_schema_max_table_instances 50000
+performance_schema_max_thread_classes 50
+performance_schema_max_thread_instances 1000
+show engine PERFORMANCE_SCHEMA status;
+show status like "performance_schema%";
+show variables like "performance_schema_max_file_classes";
+Variable_name Value
+performance_schema_max_file_classes 0
+select count(*) from performance_schema.SETUP_INSTRUMENTS
+where name like "wait/io/file/%";
+count(*)
+0
+select variable_value > 0 from information_schema.global_status
+where variable_name like 'PERFORMANCE_SCHEMA_FILE_CLASSES_LOST';
+variable_value > 0
+1
+select count(*) from performance_schema.FILE_INSTANCES;
+count(*)
+0
+show status like "performance_schema_file_instances_lost";
+Variable_name Value
+Performance_schema_file_instances_lost 0
diff --git a/mysql-test/suite/perfschema/r/start_server_no_file_inst.result b/mysql-test/suite/perfschema/r/start_server_no_file_inst.result
new file mode 100644
index 00000000000..258712ebf68
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/start_server_no_file_inst.result
@@ -0,0 +1,77 @@
+show databases;
+Database
+information_schema
+mtr
+mysql
+performance_schema
+test
+select count(*) from performance_schema.PERFORMANCE_TIMERS;
+count(*)
+5
+select count(*) from performance_schema.SETUP_CONSUMERS;
+count(*)
+8
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS;
+count(*) > 0
+1
+select count(*) from performance_schema.SETUP_TIMERS;
+count(*)
+1
+select * from performance_schema.COND_INSTANCES;
+select * from performance_schema.EVENTS_WAITS_CURRENT;
+select * from performance_schema.EVENTS_WAITS_HISTORY;
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+select * from performance_schema.FILE_INSTANCES;
+select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
+select * from performance_schema.MUTEX_INSTANCES;
+select * from performance_schema.PERFORMANCE_TIMERS;
+select * from performance_schema.PROCESSLIST;
+select * from performance_schema.RWLOCK_INSTANCES;
+select * from performance_schema.SETUP_CONSUMERS;
+select * from performance_schema.SETUP_INSTRUMENTS;
+select * from performance_schema.SETUP_OBJECTS;
+select * from performance_schema.SETUP_TIMERS;
+show variables like "performance_schema%";
+Variable_name Value
+performance_schema ON
+performance_schema_events_waits_history_long_size 10000
+performance_schema_events_waits_history_size 10
+performance_schema_max_cond_classes 80
+performance_schema_max_cond_instances 1000
+performance_schema_max_file_classes 50
+performance_schema_max_file_handles 32768
+performance_schema_max_file_instances 0
+performance_schema_max_mutex_classes 200
+performance_schema_max_mutex_instances 1000
+performance_schema_max_rwlock_classes 20
+performance_schema_max_rwlock_instances 1000
+performance_schema_max_table_handles 100000
+performance_schema_max_table_instances 50000
+performance_schema_max_thread_classes 50
+performance_schema_max_thread_instances 1000
+show engine PERFORMANCE_SCHEMA status;
+show status like "performance_schema%";
+show variables like "performance_schema_max_file_classes";
+Variable_name Value
+performance_schema_max_file_classes 50
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS
+where name like "wait/io/file/%";
+count(*) > 0
+1
+show status like "performance_schema_file_classes_lost";
+Variable_name Value
+Performance_schema_file_classes_lost 0
+show variables like "performance_schema_max_file_instances";
+Variable_name Value
+performance_schema_max_file_instances 0
+select count(*) from performance_schema.FILE_INSTANCES;
+count(*)
+0
+select variable_value > 0 from information_schema.global_status
+where variable_name like 'PERFORMANCE_SCHEMA_FILE_INSTANCES_LOST';
+variable_value > 0
+1
diff --git a/mysql-test/suite/perfschema/r/start_server_no_mutex_class.result b/mysql-test/suite/perfschema/r/start_server_no_mutex_class.result
new file mode 100644
index 00000000000..d221cb2c22a
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/start_server_no_mutex_class.result
@@ -0,0 +1,74 @@
+show databases;
+Database
+information_schema
+mtr
+mysql
+performance_schema
+test
+select count(*) from performance_schema.PERFORMANCE_TIMERS;
+count(*)
+5
+select count(*) from performance_schema.SETUP_CONSUMERS;
+count(*)
+8
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS;
+count(*) > 0
+1
+select count(*) from performance_schema.SETUP_TIMERS;
+count(*)
+1
+select * from performance_schema.COND_INSTANCES;
+select * from performance_schema.EVENTS_WAITS_CURRENT;
+select * from performance_schema.EVENTS_WAITS_HISTORY;
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+select * from performance_schema.FILE_INSTANCES;
+select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
+select * from performance_schema.MUTEX_INSTANCES;
+select * from performance_schema.PERFORMANCE_TIMERS;
+select * from performance_schema.PROCESSLIST;
+select * from performance_schema.RWLOCK_INSTANCES;
+select * from performance_schema.SETUP_CONSUMERS;
+select * from performance_schema.SETUP_INSTRUMENTS;
+select * from performance_schema.SETUP_OBJECTS;
+select * from performance_schema.SETUP_TIMERS;
+show variables like "performance_schema%";
+Variable_name Value
+performance_schema ON
+performance_schema_events_waits_history_long_size 10000
+performance_schema_events_waits_history_size 10
+performance_schema_max_cond_classes 80
+performance_schema_max_cond_instances 1000
+performance_schema_max_file_classes 50
+performance_schema_max_file_handles 32768
+performance_schema_max_file_instances 10000
+performance_schema_max_mutex_classes 0
+performance_schema_max_mutex_instances 1000
+performance_schema_max_rwlock_classes 20
+performance_schema_max_rwlock_instances 1000
+performance_schema_max_table_handles 100000
+performance_schema_max_table_instances 50000
+performance_schema_max_thread_classes 50
+performance_schema_max_thread_instances 1000
+show engine PERFORMANCE_SCHEMA status;
+show status like "performance_schema%";
+show variables like "performance_schema_max_mutex_classes";
+Variable_name Value
+performance_schema_max_mutex_classes 0
+select count(*) from performance_schema.SETUP_INSTRUMENTS
+where name like "wait/synch/mutex/%";
+count(*)
+0
+select variable_value > 0 from information_schema.global_status
+where variable_name like 'PERFORMANCE_SCHEMA_MUTEX_CLASSES_LOST';
+variable_value > 0
+1
+select count(*) from performance_schema.MUTEX_INSTANCES;
+count(*)
+0
+show status like "performance_schema_mutex_instances_lost";
+Variable_name Value
+Performance_schema_mutex_instances_lost 0
diff --git a/mysql-test/suite/perfschema/r/start_server_no_mutex_inst.result b/mysql-test/suite/perfschema/r/start_server_no_mutex_inst.result
new file mode 100644
index 00000000000..adfd4c5ec17
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/start_server_no_mutex_inst.result
@@ -0,0 +1,77 @@
+show databases;
+Database
+information_schema
+mtr
+mysql
+performance_schema
+test
+select count(*) from performance_schema.PERFORMANCE_TIMERS;
+count(*)
+5
+select count(*) from performance_schema.SETUP_CONSUMERS;
+count(*)
+8
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS;
+count(*) > 0
+1
+select count(*) from performance_schema.SETUP_TIMERS;
+count(*)
+1
+select * from performance_schema.COND_INSTANCES;
+select * from performance_schema.EVENTS_WAITS_CURRENT;
+select * from performance_schema.EVENTS_WAITS_HISTORY;
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+select * from performance_schema.FILE_INSTANCES;
+select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
+select * from performance_schema.MUTEX_INSTANCES;
+select * from performance_schema.PERFORMANCE_TIMERS;
+select * from performance_schema.PROCESSLIST;
+select * from performance_schema.RWLOCK_INSTANCES;
+select * from performance_schema.SETUP_CONSUMERS;
+select * from performance_schema.SETUP_INSTRUMENTS;
+select * from performance_schema.SETUP_OBJECTS;
+select * from performance_schema.SETUP_TIMERS;
+show variables like "performance_schema%";
+Variable_name Value
+performance_schema ON
+performance_schema_events_waits_history_long_size 10000
+performance_schema_events_waits_history_size 10
+performance_schema_max_cond_classes 80
+performance_schema_max_cond_instances 1000
+performance_schema_max_file_classes 50
+performance_schema_max_file_handles 32768
+performance_schema_max_file_instances 10000
+performance_schema_max_mutex_classes 200
+performance_schema_max_mutex_instances 0
+performance_schema_max_rwlock_classes 20
+performance_schema_max_rwlock_instances 1000
+performance_schema_max_table_handles 100000
+performance_schema_max_table_instances 50000
+performance_schema_max_thread_classes 50
+performance_schema_max_thread_instances 1000
+show engine PERFORMANCE_SCHEMA status;
+show status like "performance_schema%";
+show variables like "performance_schema_max_mutex_classes";
+Variable_name Value
+performance_schema_max_mutex_classes 200
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS
+where name like "wait/synch/mutex/%";
+count(*) > 0
+1
+show status like "performance_schema_mutex_classes_lost";
+Variable_name Value
+Performance_schema_mutex_classes_lost 0
+show variables like "performance_schema_max_mutex_instances";
+Variable_name Value
+performance_schema_max_mutex_instances 0
+select count(*) from performance_schema.MUTEX_INSTANCES;
+count(*)
+0
+select variable_value > 0 from information_schema.global_status
+where variable_name like 'PERFORMANCE_SCHEMA_MUTEX_INSTANCES_LOST';
+variable_value > 0
+1
diff --git a/mysql-test/suite/perfschema/r/start_server_no_rwlock_class.result b/mysql-test/suite/perfschema/r/start_server_no_rwlock_class.result
new file mode 100644
index 00000000000..5248becf0e5
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/start_server_no_rwlock_class.result
@@ -0,0 +1,74 @@
+show databases;
+Database
+information_schema
+mtr
+mysql
+performance_schema
+test
+select count(*) from performance_schema.PERFORMANCE_TIMERS;
+count(*)
+5
+select count(*) from performance_schema.SETUP_CONSUMERS;
+count(*)
+8
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS;
+count(*) > 0
+1
+select count(*) from performance_schema.SETUP_TIMERS;
+count(*)
+1
+select * from performance_schema.COND_INSTANCES;
+select * from performance_schema.EVENTS_WAITS_CURRENT;
+select * from performance_schema.EVENTS_WAITS_HISTORY;
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+select * from performance_schema.FILE_INSTANCES;
+select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
+select * from performance_schema.MUTEX_INSTANCES;
+select * from performance_schema.PERFORMANCE_TIMERS;
+select * from performance_schema.PROCESSLIST;
+select * from performance_schema.RWLOCK_INSTANCES;
+select * from performance_schema.SETUP_CONSUMERS;
+select * from performance_schema.SETUP_INSTRUMENTS;
+select * from performance_schema.SETUP_OBJECTS;
+select * from performance_schema.SETUP_TIMERS;
+show variables like "performance_schema%";
+Variable_name Value
+performance_schema ON
+performance_schema_events_waits_history_long_size 10000
+performance_schema_events_waits_history_size 10
+performance_schema_max_cond_classes 80
+performance_schema_max_cond_instances 1000
+performance_schema_max_file_classes 50
+performance_schema_max_file_handles 32768
+performance_schema_max_file_instances 10000
+performance_schema_max_mutex_classes 200
+performance_schema_max_mutex_instances 1000
+performance_schema_max_rwlock_classes 0
+performance_schema_max_rwlock_instances 1000
+performance_schema_max_table_handles 100000
+performance_schema_max_table_instances 50000
+performance_schema_max_thread_classes 50
+performance_schema_max_thread_instances 1000
+show engine PERFORMANCE_SCHEMA status;
+show status like "performance_schema%";
+show variables like "performance_schema_max_rwlock_classes";
+Variable_name Value
+performance_schema_max_rwlock_classes 0
+select count(*) from performance_schema.SETUP_INSTRUMENTS
+where name like "wait/synch/rwlock/%";
+count(*)
+0
+select variable_value > 0 from information_schema.global_status
+where variable_name like 'PERFORMANCE_SCHEMA_RWLOCK_CLASSES_LOST';
+variable_value > 0
+1
+select count(*) from performance_schema.RWLOCK_INSTANCES;
+count(*)
+0
+show status like "performance_schema_rwlock_instances_lost";
+Variable_name Value
+Performance_schema_rwlock_instances_lost 0
diff --git a/mysql-test/suite/perfschema/r/start_server_no_rwlock_inst.result b/mysql-test/suite/perfschema/r/start_server_no_rwlock_inst.result
new file mode 100644
index 00000000000..e7a94c4a60d
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/start_server_no_rwlock_inst.result
@@ -0,0 +1,77 @@
+show databases;
+Database
+information_schema
+mtr
+mysql
+performance_schema
+test
+select count(*) from performance_schema.PERFORMANCE_TIMERS;
+count(*)
+5
+select count(*) from performance_schema.SETUP_CONSUMERS;
+count(*)
+8
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS;
+count(*) > 0
+1
+select count(*) from performance_schema.SETUP_TIMERS;
+count(*)
+1
+select * from performance_schema.COND_INSTANCES;
+select * from performance_schema.EVENTS_WAITS_CURRENT;
+select * from performance_schema.EVENTS_WAITS_HISTORY;
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+select * from performance_schema.FILE_INSTANCES;
+select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
+select * from performance_schema.MUTEX_INSTANCES;
+select * from performance_schema.PERFORMANCE_TIMERS;
+select * from performance_schema.PROCESSLIST;
+select * from performance_schema.RWLOCK_INSTANCES;
+select * from performance_schema.SETUP_CONSUMERS;
+select * from performance_schema.SETUP_INSTRUMENTS;
+select * from performance_schema.SETUP_OBJECTS;
+select * from performance_schema.SETUP_TIMERS;
+show variables like "performance_schema%";
+Variable_name Value
+performance_schema ON
+performance_schema_events_waits_history_long_size 10000
+performance_schema_events_waits_history_size 10
+performance_schema_max_cond_classes 80
+performance_schema_max_cond_instances 1000
+performance_schema_max_file_classes 50
+performance_schema_max_file_handles 32768
+performance_schema_max_file_instances 10000
+performance_schema_max_mutex_classes 200
+performance_schema_max_mutex_instances 1000
+performance_schema_max_rwlock_classes 20
+performance_schema_max_rwlock_instances 0
+performance_schema_max_table_handles 100000
+performance_schema_max_table_instances 50000
+performance_schema_max_thread_classes 50
+performance_schema_max_thread_instances 1000
+show engine PERFORMANCE_SCHEMA status;
+show status like "performance_schema%";
+show variables like "performance_schema_max_rwlock_classes";
+Variable_name Value
+performance_schema_max_rwlock_classes 20
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS
+where name like "wait/synch/rwlock/%";
+count(*) > 0
+1
+show status like "performance_schema_rwlock_classes_lost";
+Variable_name Value
+Performance_schema_rwlock_classes_lost 0
+show variables like "performance_schema_max_rwlock_instances";
+Variable_name Value
+performance_schema_max_rwlock_instances 0
+select count(*) from performance_schema.RWLOCK_INSTANCES;
+count(*)
+0
+select variable_value > 0 from information_schema.global_status
+where variable_name like 'PERFORMANCE_SCHEMA_RWLOCK_INSTANCES_LOST';
+variable_value > 0
+1
diff --git a/mysql-test/suite/perfschema/r/start_server_no_thread_class.result b/mysql-test/suite/perfschema/r/start_server_no_thread_class.result
new file mode 100644
index 00000000000..92f1ec29b38
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/start_server_no_thread_class.result
@@ -0,0 +1,74 @@
+show databases;
+Database
+information_schema
+mtr
+mysql
+performance_schema
+test
+select count(*) from performance_schema.PERFORMANCE_TIMERS;
+count(*)
+5
+select count(*) from performance_schema.SETUP_CONSUMERS;
+count(*)
+8
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS;
+count(*) > 0
+1
+select count(*) from performance_schema.SETUP_TIMERS;
+count(*)
+1
+select * from performance_schema.COND_INSTANCES;
+select * from performance_schema.EVENTS_WAITS_CURRENT;
+select * from performance_schema.EVENTS_WAITS_HISTORY;
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+select * from performance_schema.FILE_INSTANCES;
+select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
+select * from performance_schema.MUTEX_INSTANCES;
+select * from performance_schema.PERFORMANCE_TIMERS;
+select * from performance_schema.PROCESSLIST;
+select * from performance_schema.RWLOCK_INSTANCES;
+select * from performance_schema.SETUP_CONSUMERS;
+select * from performance_schema.SETUP_INSTRUMENTS;
+select * from performance_schema.SETUP_OBJECTS;
+select * from performance_schema.SETUP_TIMERS;
+show variables like "performance_schema%";
+Variable_name Value
+performance_schema ON
+performance_schema_events_waits_history_long_size 10000
+performance_schema_events_waits_history_size 10
+performance_schema_max_cond_classes 80
+performance_schema_max_cond_instances 1000
+performance_schema_max_file_classes 50
+performance_schema_max_file_handles 32768
+performance_schema_max_file_instances 10000
+performance_schema_max_mutex_classes 200
+performance_schema_max_mutex_instances 1000
+performance_schema_max_rwlock_classes 20
+performance_schema_max_rwlock_instances 1000
+performance_schema_max_table_handles 100000
+performance_schema_max_table_instances 50000
+performance_schema_max_thread_classes 0
+performance_schema_max_thread_instances 1000
+show engine PERFORMANCE_SCHEMA status;
+show status like "performance_schema%";
+show variables like "performance_schema_max_thread_classes";
+Variable_name Value
+performance_schema_max_thread_classes 0
+select count(*) from performance_schema.SETUP_INSTRUMENTS
+where name like "thread/%";
+count(*)
+0
+select variable_value > 0 from information_schema.global_status
+where variable_name like 'PERFORMANCE_SCHEMA_THREAD_CLASSES_LOST';
+variable_value > 0
+1
+select count(*) from performance_schema.PROCESSLIST;
+count(*)
+0
+show status like "performance_schema_thread_instances_lost";
+Variable_name Value
+Performance_schema_thread_instances_lost 0
diff --git a/mysql-test/suite/perfschema/r/start_server_no_thread_inst.result b/mysql-test/suite/perfschema/r/start_server_no_thread_inst.result
new file mode 100644
index 00000000000..3ecf7fe98db
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/start_server_no_thread_inst.result
@@ -0,0 +1,73 @@
+show databases;
+Database
+information_schema
+mtr
+mysql
+performance_schema
+test
+select count(*) from performance_schema.PERFORMANCE_TIMERS;
+count(*)
+5
+select count(*) from performance_schema.SETUP_CONSUMERS;
+count(*)
+8
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS;
+count(*) > 0
+1
+select count(*) from performance_schema.SETUP_TIMERS;
+count(*)
+1
+select * from performance_schema.COND_INSTANCES;
+select * from performance_schema.EVENTS_WAITS_CURRENT;
+select * from performance_schema.EVENTS_WAITS_HISTORY;
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+select * from performance_schema.FILE_INSTANCES;
+select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
+select * from performance_schema.MUTEX_INSTANCES;
+select * from performance_schema.PERFORMANCE_TIMERS;
+select * from performance_schema.PROCESSLIST;
+select * from performance_schema.RWLOCK_INSTANCES;
+select * from performance_schema.SETUP_CONSUMERS;
+select * from performance_schema.SETUP_INSTRUMENTS;
+select * from performance_schema.SETUP_OBJECTS;
+select * from performance_schema.SETUP_TIMERS;
+show variables like "performance_schema%";
+Variable_name Value
+performance_schema ON
+performance_schema_events_waits_history_long_size 10000
+performance_schema_events_waits_history_size 10
+performance_schema_max_cond_classes 80
+performance_schema_max_cond_instances 1000
+performance_schema_max_file_classes 50
+performance_schema_max_file_handles 32768
+performance_schema_max_file_instances 10000
+performance_schema_max_mutex_classes 200
+performance_schema_max_mutex_instances 1000
+performance_schema_max_rwlock_classes 20
+performance_schema_max_rwlock_instances 1000
+performance_schema_max_table_handles 100000
+performance_schema_max_table_instances 50000
+performance_schema_max_thread_classes 50
+performance_schema_max_thread_instances 0
+show engine PERFORMANCE_SCHEMA status;
+show status like "performance_schema%";
+show variables like "performance_schema_max_thread_classes";
+Variable_name Value
+performance_schema_max_thread_classes 50
+show status like "performance_schema_thread_classes_lost";
+Variable_name Value
+Performance_schema_thread_classes_lost 0
+show variables like "performance_schema_max_thread_instances";
+Variable_name Value
+performance_schema_max_thread_instances 0
+select count(*) from performance_schema.PROCESSLIST;
+count(*)
+0
+select variable_value > 0 from information_schema.global_status
+where variable_name like 'PERFORMANCE_SCHEMA_THREAD_INSTANCES_LOST';
+variable_value > 0
+1
diff --git a/mysql-test/suite/perfschema/r/start_server_off.result b/mysql-test/suite/perfschema/r/start_server_off.result
new file mode 100644
index 00000000000..4ce5aa75ce7
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/start_server_off.result
@@ -0,0 +1,73 @@
+show databases;
+Database
+information_schema
+mtr
+mysql
+performance_schema
+test
+select count(*) from performance_schema.PERFORMANCE_TIMERS;
+count(*)
+5
+select count(*) from performance_schema.SETUP_CONSUMERS;
+count(*)
+8
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS;
+count(*) > 0
+0
+select count(*) from performance_schema.SETUP_TIMERS;
+count(*)
+1
+select * from performance_schema.COND_INSTANCES;
+select * from performance_schema.EVENTS_WAITS_CURRENT;
+select * from performance_schema.EVENTS_WAITS_HISTORY;
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+select * from performance_schema.FILE_INSTANCES;
+select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
+select * from performance_schema.MUTEX_INSTANCES;
+select * from performance_schema.PERFORMANCE_TIMERS;
+select * from performance_schema.PROCESSLIST;
+select * from performance_schema.RWLOCK_INSTANCES;
+select * from performance_schema.SETUP_CONSUMERS;
+select * from performance_schema.SETUP_INSTRUMENTS;
+select * from performance_schema.SETUP_OBJECTS;
+select * from performance_schema.SETUP_TIMERS;
+show variables like "performance_schema%";
+Variable_name Value
+performance_schema OFF
+performance_schema_events_waits_history_long_size 10000
+performance_schema_events_waits_history_size 10
+performance_schema_max_cond_classes 80
+performance_schema_max_cond_instances 1000
+performance_schema_max_file_classes 50
+performance_schema_max_file_handles 32768
+performance_schema_max_file_instances 10000
+performance_schema_max_mutex_classes 200
+performance_schema_max_mutex_instances 1000
+performance_schema_max_rwlock_classes 20
+performance_schema_max_rwlock_instances 1000
+performance_schema_max_table_handles 100000
+performance_schema_max_table_instances 50000
+performance_schema_max_thread_classes 50
+performance_schema_max_thread_instances 1000
+show engine PERFORMANCE_SCHEMA status;
+show status like "performance_schema%";
+show status like "performance_schema%";
+Variable_name Value
+Performance_schema_cond_classes_lost 0
+Performance_schema_cond_instances_lost 0
+Performance_schema_file_classes_lost 0
+Performance_schema_file_handles_lost 0
+Performance_schema_file_instances_lost 0
+Performance_schema_locker_lost 0
+Performance_schema_mutex_classes_lost 0
+Performance_schema_mutex_instances_lost 0
+Performance_schema_rwlock_classes_lost 0
+Performance_schema_rwlock_instances_lost 0
+Performance_schema_table_handles_lost 0
+Performance_schema_table_instances_lost 0
+Performance_schema_thread_classes_lost 0
+Performance_schema_thread_instances_lost 0
diff --git a/mysql-test/suite/perfschema/r/start_server_on.result b/mysql-test/suite/perfschema/r/start_server_on.result
new file mode 100644
index 00000000000..1d9dc731c7b
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/start_server_on.result
@@ -0,0 +1,73 @@
+show databases;
+Database
+information_schema
+mtr
+mysql
+performance_schema
+test
+select count(*) from performance_schema.PERFORMANCE_TIMERS;
+count(*)
+5
+select count(*) from performance_schema.SETUP_CONSUMERS;
+count(*)
+8
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS;
+count(*) > 0
+1
+select count(*) from performance_schema.SETUP_TIMERS;
+count(*)
+1
+select * from performance_schema.COND_INSTANCES;
+select * from performance_schema.EVENTS_WAITS_CURRENT;
+select * from performance_schema.EVENTS_WAITS_HISTORY;
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+select * from performance_schema.FILE_INSTANCES;
+select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
+select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
+select * from performance_schema.MUTEX_INSTANCES;
+select * from performance_schema.PERFORMANCE_TIMERS;
+select * from performance_schema.PROCESSLIST;
+select * from performance_schema.RWLOCK_INSTANCES;
+select * from performance_schema.SETUP_CONSUMERS;
+select * from performance_schema.SETUP_INSTRUMENTS;
+select * from performance_schema.SETUP_OBJECTS;
+select * from performance_schema.SETUP_TIMERS;
+show variables like "performance_schema%";
+Variable_name Value
+performance_schema ON
+performance_schema_events_waits_history_long_size 10000
+performance_schema_events_waits_history_size 10
+performance_schema_max_cond_classes 80
+performance_schema_max_cond_instances 1000
+performance_schema_max_file_classes 50
+performance_schema_max_file_handles 32768
+performance_schema_max_file_instances 10000
+performance_schema_max_mutex_classes 200
+performance_schema_max_mutex_instances 1000
+performance_schema_max_rwlock_classes 20
+performance_schema_max_rwlock_instances 1000
+performance_schema_max_table_handles 100000
+performance_schema_max_table_instances 50000
+performance_schema_max_thread_classes 50
+performance_schema_max_thread_instances 1000
+show engine PERFORMANCE_SCHEMA status;
+show status like "performance_schema%";
+show status like "performance_schema%";
+Variable_name Value
+Performance_schema_cond_classes_lost 0
+Performance_schema_cond_instances_lost 0
+Performance_schema_file_classes_lost 0
+Performance_schema_file_handles_lost 0
+Performance_schema_file_instances_lost 0
+Performance_schema_locker_lost 0
+Performance_schema_mutex_classes_lost 0
+Performance_schema_mutex_instances_lost 0
+Performance_schema_rwlock_classes_lost 0
+Performance_schema_rwlock_instances_lost 0
+Performance_schema_table_handles_lost 0
+Performance_schema_table_instances_lost 0
+Performance_schema_thread_classes_lost 0
+Performance_schema_thread_instances_lost 0
diff --git a/mysql-test/suite/perfschema/r/tampered_perfschema_table1.result b/mysql-test/suite/perfschema/r/tampered_perfschema_table1.result
new file mode 100644
index 00000000000..cdf0029eeb9
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/tampered_perfschema_table1.result
@@ -0,0 +1,6 @@
+call mtr.add_suppression(
+"Column count of mysql.SETUP_INSTRUMENTS is wrong. "
+"Expected 4, found 3. The table is probably corrupted");
+select * from performance_schema.SETUP_INSTRUMENTS limit 1;
+ERROR HY000: Native table 'performance_schema'.'SETUP_INSTRUMENTS' has the wrong structure
+select * from performance_schema.SETUP_CONSUMERS limit 1;
diff --git a/mysql-test/suite/perfschema/t/aggregate.test b/mysql-test/suite/perfschema/t/aggregate.test
new file mode 100644
index 00000000000..7c01bdd0a4b
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/aggregate.test
@@ -0,0 +1,187 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+# Verify that statistics aggregated by different criteria are consistent.
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--echo "General cleanup"
+
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+
+update performance_schema.SETUP_INSTRUMENTS set enabled = 'NO';
+update performance_schema.SETUP_CONSUMERS set enabled = 'NO';
+
+# Cleanup statistics
+truncate table performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
+truncate table performance_schema.FILE_SUMMARY_BY_INSTANCE;
+truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+
+# Start recording data
+update performance_schema.SETUP_CONSUMERS set enabled = 'YES';
+update performance_schema.SETUP_INSTRUMENTS
+ set enabled = 'YES', timed = 'YES';
+
+
+create table t1 (
+ id INT PRIMARY KEY,
+ b CHAR(100) DEFAULT 'initial value')
+ ENGINE=MyISAM;
+
+insert into t1 (id) values (1), (2), (3), (4), (5), (6), (7), (8);
+
+# Stop recording data, so the select below don't add noise.
+update performance_schema.SETUP_INSTRUMENTS SET enabled = 'NO';
+
+# Helper to debug
+set @dump_all=FALSE;
+
+# Note that in general:
+# - COUNT/SUM/MAX(FILE_SUMMARY_BY_EVENT_NAME) >=
+# COUNT/SUM/MAX(FILE_SUMMARY_BY_INSTANCE).
+# - MIN(FILE_SUMMARY_BY_EVENT_NAME) <=
+# MIN(FILE_SUMMARY_BY_INSTANCE).
+# There will be equality only when file instances are not removed,
+# aka when a file is not deleted from the file system,
+# because doing so removes a row in FILE_SUMMARY_BY_INSTANCE.
+
+# Likewise:
+# - COUNT/SUM/MAX(EVENTS_WAITS_SUMMARY_BY_EVENT_NAME) >=
+# COUNT/SUM/MAX(EVENTS_WAITS_SUMMARY_BY_INSTANCE)
+# - MIN(EVENTS_WAITS_SUMMARY_BY_EVENT_NAME) <=
+# MIN(EVENTS_WAITS_SUMMARY_BY_INSTANCE)
+# There will be equality only when an instrument instance
+# is not removed, which is next to impossible to predictably guarantee
+# in the server.
+# For example, a MyISAM table removed from the table cache
+# will cause a mysql_mutex_destroy on myisam/MYISAM_SHARE::intern_lock.
+# Another example, a thread terminating will cause a mysql_mutex_destroy
+# on sql/LOCK_delete
+# Both cause a row to be deleted from EVENTS_WAITS_SUMMARY_BY_INSTANCE.
+
+# Likewise:
+# - COUNT/SUM/MAX(EVENTS_WAITS_SUMMARY_BY_EVENT_NAME) >=
+# COUNT/SUM/MAX(EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME)
+# - MIN(EVENTS_WAITS_SUMMARY_BY_EVENT_NAME) <=
+# MIN(EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME)
+# There will be equality only when no thread is removed,
+# that is if no thread disconnects, or no sub thread (for example insert
+# delayed) ever completes.
+# A thread completing will cause rows in
+# EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME to be removed.
+
+--echo "Verifying file aggregate consistency"
+
+# Since the code generating the load in this test does:
+# - create table
+# - insert
+# - does not cause temporary tables to be used
+# we can test for equality here for file aggregates.
+
+# If any of these queries returns data, the test failed.
+
+SELECT EVENT_NAME, e.COUNT_READ, SUM(i.COUNT_READ)
+FROM performance_schema.FILE_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.FILE_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.COUNT_READ <> SUM(i.COUNT_READ))
+OR @dump_all;
+
+SELECT EVENT_NAME, e.COUNT_WRITE, SUM(i.COUNT_WRITE)
+FROM performance_schema.FILE_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.FILE_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.COUNT_WRITE <> SUM(i.COUNT_WRITE))
+OR @dump_all;
+
+SELECT EVENT_NAME, e.SUM_NUMBER_OF_BYTES_READ, SUM(i.SUM_NUMBER_OF_BYTES_READ)
+FROM performance_schema.FILE_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.FILE_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.SUM_NUMBER_OF_BYTES_READ <> SUM(i.SUM_NUMBER_OF_BYTES_READ))
+OR @dump_all;
+
+SELECT EVENT_NAME, e.SUM_NUMBER_OF_BYTES_WRITE, SUM(i.SUM_NUMBER_OF_BYTES_WRITE)
+FROM performance_schema.FILE_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.FILE_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.SUM_NUMBER_OF_BYTES_WRITE <> SUM(i.SUM_NUMBER_OF_BYTES_WRITE))
+OR @dump_all;
+
+--echo "Verifying waits aggregate consistency (instance)"
+
+SELECT EVENT_NAME, e.SUM_TIMER_WAIT, SUM(i.SUM_TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.SUM_TIMER_WAIT <> SUM(i.SUM_TIMER_WAIT))
+OR @dump_all;
+
+SELECT EVENT_NAME, e.MIN_TIMER_WAIT, MIN(i.MIN_TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.MIN_TIMER_WAIT <> MIN(i.MIN_TIMER_WAIT))
+AND (MIN(i.MIN_TIMER_WAIT) != 0)
+OR @dump_all;
+
+SELECT EVENT_NAME, e.MAX_TIMER_WAIT, MAX(i.MAX_TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.MAX_TIMER_WAIT <> MAX(i.MAX_TIMER_WAIT))
+OR @dump_all;
+
+--echo "Verifying waits aggregate consistency (thread)"
+
+SELECT EVENT_NAME, e.SUM_TIMER_WAIT, SUM(t.SUM_TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
+USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.SUM_TIMER_WAIT <> SUM(t.SUM_TIMER_WAIT))
+OR @dump_all;
+
+SELECT EVENT_NAME, e.MIN_TIMER_WAIT, MIN(t.MIN_TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
+USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.MIN_TIMER_WAIT <> MIN(t.MIN_TIMER_WAIT))
+AND (MIN(t.MIN_TIMER_WAIT) != 0)
+OR @dump_all;
+
+SELECT EVENT_NAME, e.MAX_TIMER_WAIT, MAX(t.MAX_TIMER_WAIT)
+FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
+JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
+USING (EVENT_NAME)
+GROUP BY EVENT_NAME
+HAVING (e.MAX_TIMER_WAIT <> MAX(t.MAX_TIMER_WAIT))
+OR @dump_all;
+
+
+# Cleanup
+
+update performance_schema.SETUP_CONSUMERS set enabled = 'YES';
+update performance_schema.SETUP_INSTRUMENTS
+ set enabled = 'YES', timed = 'YES';
+
+drop table test.t1;
diff --git a/mysql-test/suite/perfschema/t/bad_option_1.test b/mysql-test/suite/perfschema/t/bad_option_1.test
new file mode 100644
index 00000000000..9962f327093
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/bad_option_1.test
@@ -0,0 +1,45 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+# Check error handling for invalid server start options
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--error 7
+--exec $MYSQLD_BOOTSTRAP_CMD --loose-console --performance-schema-enabled=maybe > $MYSQLTEST_VARDIR/tmp/bad_option_1.txt 2>&1
+
+perl;
+ use strict;
+ use warnings;
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/bad_option_1.txt";
+ open(FILE, "<", $fname) or die;
+ my @lines= <FILE>;
+ # those must be in the file for the test to pass
+ my @patterns=
+ ("unknown variable 'performance-schema-enabled=maybe'",
+ "Aborting");
+ foreach my $one_line (@lines)
+ {
+ foreach my $one_pattern (@patterns)
+ {
+ # print pattern, not line, to get a stable output
+ print "Found: $one_pattern\n" if ($one_line =~ /$one_pattern/);
+ }
+ }
+ close FILE;
+EOF
+
diff --git a/mysql-test/suite/perfschema/t/bad_option_2.test b/mysql-test/suite/perfschema/t/bad_option_2.test
new file mode 100644
index 00000000000..a8d15764864
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/bad_option_2.test
@@ -0,0 +1,44 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+# Check error handling for ambiguous server start options
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--error 3
+--exec $MYSQLD_BOOTSTRAP_CMD --loose-console --performance-schema-max_=12 > $MYSQLTEST_VARDIR/tmp/bad_option_2.txt 2>&1
+
+perl;
+ use strict;
+ use warnings;
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/bad_option_2.txt";
+ open(FILE, "<", $fname) or die;
+ my @lines= <FILE>;
+ # those must be in the file for the test to pass
+ my @patterns=
+ ("ambiguous option '--performance-schema-max_=12'");
+ foreach my $one_line (@lines)
+ {
+ foreach my $one_pattern (@patterns)
+ {
+ # print pattern, not line, to get a stable output
+ print "Found: $one_pattern\n" if ($one_line =~ /$one_pattern/);
+ }
+ }
+ close FILE;
+EOF
+
diff --git a/mysql-test/suite/perfschema/t/binlog_mix.test b/mysql-test/suite/perfschema/t/binlog_mix.test
new file mode 100644
index 00000000000..4fe7d68b555
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/binlog_mix.test
@@ -0,0 +1,28 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/have_log_bin.inc
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+# See Bug#46896 binlog: case sensitivity of table names
+--source include/have_lowercase0.inc
+
+set binlog_format=mixed;
+
+--source ../include/binlog_common.inc
+
diff --git a/mysql-test/suite/perfschema/t/binlog_row.test b/mysql-test/suite/perfschema/t/binlog_row.test
new file mode 100644
index 00000000000..c1c1e06d3f0
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/binlog_row.test
@@ -0,0 +1,28 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/have_log_bin.inc
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+# See Bug#46896 binlog: case sensitivity of table names
+--source include/have_lowercase0.inc
+
+set binlog_format=row;
+
+--source ../include/binlog_common.inc
+
diff --git a/mysql-test/suite/perfschema/t/binlog_stmt.test b/mysql-test/suite/perfschema/t/binlog_stmt.test
new file mode 100644
index 00000000000..28e118a36f8
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/binlog_stmt.test
@@ -0,0 +1,26 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/have_log_bin.inc
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+set binlog_format=statement;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
+--source ../include/binlog_common.inc
+
diff --git a/mysql-test/suite/perfschema/t/cnf_option.cnf b/mysql-test/suite/perfschema/t/cnf_option.cnf
new file mode 100644
index 00000000000..2892908fbb6
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/cnf_option.cnf
@@ -0,0 +1,25 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+# Check server start options, read from a .cnf file
+
+# Use default setting for mysqld processes
+!include include/default_mysqld.cnf
+
+[mysqld.1]
+loose-performance-schema-max-thread_instances=318
+loose-performance-schema-max-thread_classes=12
+
diff --git a/mysql-test/suite/perfschema/t/cnf_option.test b/mysql-test/suite/perfschema/t/cnf_option.test
new file mode 100644
index 00000000000..c968307ee00
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/cnf_option.test
@@ -0,0 +1,24 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+# Check server start options, read from a .cnf file
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+show variables like 'performance_schema_max_thread_classes';
+show variables like 'performance_schema_max_thread_instances';
+
diff --git a/mysql-test/suite/perfschema/t/column_privilege.test b/mysql-test/suite/perfschema/t/column_privilege.test
new file mode 100644
index 00000000000..b6bcbdb3396
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/column_privilege.test
@@ -0,0 +1,82 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+# Test how columns privileges can be used on performance schema tables,
+# for very fine control.
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+show grants;
+
+grant usage on *.* to 'pfs_user_5'@localhost with GRANT OPTION;
+
+# Test per column privileges on performance_schema
+
+grant SELECT(thread_id, event_id) on performance_schema.EVENTS_WAITS_CURRENT
+ to 'pfs_user_5'@localhost;
+
+grant UPDATE(enabled) on performance_schema.SETUP_INSTRUMENTS
+ to 'pfs_user_5'@localhost;
+
+flush privileges;
+
+connect (con1, localhost, pfs_user_5, , );
+
+# Commented because the result is not consistent (uppercase/lowercase)
+# show grants;
+
+# For statements that works, we do not look at the output
+--disable_result_log
+
+select thread_id from performance_schema.EVENTS_WAITS_CURRENT;
+
+select thread_id, event_id from performance_schema.EVENTS_WAITS_CURRENT;
+
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES';
+
+--enable_result_log
+
+# For statements that are denied, check the error number and error text.
+
+--replace_result '\'events_waits_current' '\'EVENTS_WAITS_CURRENT'
+--error ER_COLUMNACCESS_DENIED_ERROR
+select event_name from performance_schema.EVENTS_WAITS_CURRENT;
+
+--replace_result '\'events_waits_current' '\'EVENTS_WAITS_CURRENT'
+--error ER_COLUMNACCESS_DENIED_ERROR
+select thread_id, event_id, event_name
+ from performance_schema.EVENTS_WAITS_CURRENT;
+
+--replace_result '\'setup_instruments' '\'SETUP_INSTRUMENTS'
+--error ER_COLUMNACCESS_DENIED_ERROR
+update performance_schema.SETUP_INSTRUMENTS set name='illegal';
+
+--replace_result '\'setup_instruments' '\'SETUP_INSTRUMENTS'
+--error ER_COLUMNACCESS_DENIED_ERROR
+update performance_schema.SETUP_INSTRUMENTS set timed='NO';
+
+# Cleanup
+
+--connection default
+--disconnect con1
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'pfs_user_5'@localhost;
+DROP USER 'pfs_user_5'@localhost;
+flush privileges;
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'YES', timed = 'YES';
+UPDATE performance_schema.SETUP_CONSUMERS SET enabled = 'YES';
+UPDATE performance_schema.SETUP_TIMERS SET timer_name = 'CYCLE';
+
diff --git a/mysql-test/suite/perfschema/t/ddl_cond_instances.test b/mysql-test/suite/perfschema/t/ddl_cond_instances.test
new file mode 100644
index 00000000000..e78429cb181
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/ddl_cond_instances.test
@@ -0,0 +1,32 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+-- error ER_DBACCESS_DENIED_ERROR
+alter table performance_schema.COND_INSTANCES add column foo integer;
+
+-- error ER_WRONG_PERFSCHEMA_USAGE
+truncate table performance_schema.COND_INSTANCES;
+
+-- error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE performance_schema.COND_INSTANCES ADD INDEX test_index(NAME);
+
+-- error ER_DBACCESS_DENIED_ERROR
+CREATE UNIQUE INDEX test_index ON performance_schema.COND_INSTANCES(NAME);
+
diff --git a/mysql-test/suite/perfschema/t/ddl_events_waits_current.test b/mysql-test/suite/perfschema/t/ddl_events_waits_current.test
new file mode 100644
index 00000000000..34f735c1271
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/ddl_events_waits_current.test
@@ -0,0 +1,31 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+-- error ER_DBACCESS_DENIED_ERROR
+alter table performance_schema.EVENTS_WAITS_CURRENT add column foo integer;
+
+truncate table performance_schema.EVENTS_WAITS_CURRENT;
+
+-- error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE performance_schema.EVENTS_WAITS_CURRENT ADD INDEX test_index(EVENT_ID);
+
+-- error ER_DBACCESS_DENIED_ERROR
+CREATE UNIQUE INDEX test_index ON performance_schema.EVENTS_WAITS_CURRENT(EVENT_ID);
+
diff --git a/mysql-test/suite/perfschema/t/ddl_events_waits_history.test b/mysql-test/suite/perfschema/t/ddl_events_waits_history.test
new file mode 100644
index 00000000000..76ebe3d85c4
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/ddl_events_waits_history.test
@@ -0,0 +1,31 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+-- error ER_DBACCESS_DENIED_ERROR
+alter table performance_schema.EVENTS_WAITS_HISTORY add column foo integer;
+
+truncate table performance_schema.EVENTS_WAITS_HISTORY;
+
+-- error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE performance_schema.EVENTS_WAITS_HISTORY ADD INDEX test_index(EVENT_ID);
+
+-- error ER_DBACCESS_DENIED_ERROR
+CREATE UNIQUE INDEX test_index ON performance_schema.EVENTS_WAITS_HISTORY(EVENT_ID);
+
diff --git a/mysql-test/suite/perfschema/t/ddl_events_waits_history_long.test b/mysql-test/suite/perfschema/t/ddl_events_waits_history_long.test
new file mode 100644
index 00000000000..549c5d6880b
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/ddl_events_waits_history_long.test
@@ -0,0 +1,31 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+-- error ER_DBACCESS_DENIED_ERROR
+alter table performance_schema.EVENTS_WAITS_HISTORY_LONG add column foo integer;
+
+truncate table performance_schema.EVENTS_WAITS_HISTORY_LONG;
+
+-- error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE performance_schema.EVENTS_WAITS_HISTORY_LONG ADD INDEX test_index(EVENT_ID);
+
+-- error ER_DBACCESS_DENIED_ERROR
+CREATE UNIQUE INDEX test_index ON performance_schema.EVENTS_WAITS_HISTORY_LONG(EVENT_ID);
+
diff --git a/mysql-test/suite/perfschema/t/ddl_ews_by_event_name.test b/mysql-test/suite/perfschema/t/ddl_ews_by_event_name.test
new file mode 100644
index 00000000000..fbf2d2925a7
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/ddl_ews_by_event_name.test
@@ -0,0 +1,31 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+-- error ER_DBACCESS_DENIED_ERROR
+alter table performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME add column foo integer;
+
+truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+
+-- error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME ADD INDEX test_index(EVENT_NAME);
+
+-- error ER_DBACCESS_DENIED_ERROR
+CREATE UNIQUE INDEX test_index ON performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME(EVENT_NAME);
+
diff --git a/mysql-test/suite/perfschema/t/ddl_ews_by_instance.test b/mysql-test/suite/perfschema/t/ddl_ews_by_instance.test
new file mode 100644
index 00000000000..e6dad07fd63
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/ddl_ews_by_instance.test
@@ -0,0 +1,31 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+-- error ER_DBACCESS_DENIED_ERROR
+alter table performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE add column foo integer;
+
+truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+
+-- error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE ADD INDEX test_index(EVENT_NAME);
+
+-- error ER_DBACCESS_DENIED_ERROR
+CREATE UNIQUE INDEX test_index ON performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE(EVENT_NAME);
+
diff --git a/mysql-test/suite/perfschema/t/ddl_ews_by_thread_by_event_name.test b/mysql-test/suite/perfschema/t/ddl_ews_by_thread_by_event_name.test
new file mode 100644
index 00000000000..5b65ec26064
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/ddl_ews_by_thread_by_event_name.test
@@ -0,0 +1,33 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+-- error ER_DBACCESS_DENIED_ERROR
+alter table performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
+ add column foo integer;
+
+truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+
+-- error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME ADD INDEX test_index(THREAD_ID);
+
+-- error ER_DBACCESS_DENIED_ERROR
+CREATE UNIQUE INDEX test_index
+ ON performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME(THREAD_ID);
+
diff --git a/mysql-test/suite/perfschema/t/ddl_file_instances.test b/mysql-test/suite/perfschema/t/ddl_file_instances.test
new file mode 100644
index 00000000000..a9c9a2a95b6
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/ddl_file_instances.test
@@ -0,0 +1,32 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+-- error ER_DBACCESS_DENIED_ERROR
+alter table performance_schema.FILE_INSTANCES add column foo integer;
+
+-- error ER_WRONG_PERFSCHEMA_USAGE
+truncate table performance_schema.FILE_INSTANCES;
+
+-- error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE performance_schema.FILE_INSTANCES ADD INDEX test_index(FILE_NAME);
+
+-- error ER_DBACCESS_DENIED_ERROR
+CREATE UNIQUE INDEX test_index ON performance_schema.FILE_INSTANCES(FILE_NAME);
+
diff --git a/mysql-test/suite/perfschema/t/ddl_fs_by_event_name.test b/mysql-test/suite/perfschema/t/ddl_fs_by_event_name.test
new file mode 100644
index 00000000000..2581f07c0d2
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/ddl_fs_by_event_name.test
@@ -0,0 +1,31 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+-- error ER_DBACCESS_DENIED_ERROR
+alter table performance_schema.FILE_SUMMARY_BY_EVENT_NAME add column foo integer;
+
+truncate table performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
+
+-- error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE performance_schema.FILE_SUMMARY_BY_EVENT_NAME ADD INDEX test_index(NAME);
+
+-- error ER_DBACCESS_DENIED_ERROR
+CREATE UNIQUE INDEX test_index ON performance_schema.FILE_SUMMARY_BY_EVENT_NAME(NAME);
+
diff --git a/mysql-test/suite/perfschema/t/ddl_fs_by_instance.test b/mysql-test/suite/perfschema/t/ddl_fs_by_instance.test
new file mode 100644
index 00000000000..e06ad2eb7cd
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/ddl_fs_by_instance.test
@@ -0,0 +1,31 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+-- error ER_DBACCESS_DENIED_ERROR
+alter table performance_schema.FILE_SUMMARY_BY_INSTANCE add column foo integer;
+
+truncate table performance_schema.FILE_SUMMARY_BY_INSTANCE;
+
+-- error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE performance_schema.FILE_SUMMARY_BY_INSTANCE ADD INDEX test_index(NAME);
+
+-- error ER_DBACCESS_DENIED_ERROR
+CREATE UNIQUE INDEX test_index ON performance_schema.FILE_SUMMARY_BY_INSTANCE(NAME);
+
diff --git a/mysql-test/suite/perfschema/t/ddl_mutex_instances.test b/mysql-test/suite/perfschema/t/ddl_mutex_instances.test
new file mode 100644
index 00000000000..6489a689620
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/ddl_mutex_instances.test
@@ -0,0 +1,32 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+-- error ER_DBACCESS_DENIED_ERROR
+alter table performance_schema.MUTEX_INSTANCES add column foo integer;
+
+-- error ER_WRONG_PERFSCHEMA_USAGE
+truncate table performance_schema.MUTEX_INSTANCES;
+
+-- error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE performance_schema.MUTEX_INSTANCES ADD INDEX test_index(NAME);
+
+-- error ER_DBACCESS_DENIED_ERROR
+CREATE UNIQUE INDEX test_index ON performance_schema.MUTEX_INSTANCES(NAME);
+
diff --git a/mysql-test/suite/perfschema/t/ddl_performance_timers.test b/mysql-test/suite/perfschema/t/ddl_performance_timers.test
new file mode 100644
index 00000000000..b692291b8cf
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/ddl_performance_timers.test
@@ -0,0 +1,32 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+-- error ER_DBACCESS_DENIED_ERROR
+alter table performance_schema.PERFORMANCE_TIMERS add column foo integer;
+
+-- error ER_WRONG_PERFSCHEMA_USAGE
+truncate table performance_schema.PERFORMANCE_TIMERS;
+
+-- error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE performance_schema.PERFORMANCE_TIMERS ADD INDEX test_index(TIMER_NAME);
+
+-- error ER_DBACCESS_DENIED_ERROR
+CREATE UNIQUE INDEX test_index ON performance_schema.PERFORMANCE_TIMERS(TIMER_NAME);
+
diff --git a/mysql-test/suite/perfschema/t/ddl_processlist.test b/mysql-test/suite/perfschema/t/ddl_processlist.test
new file mode 100644
index 00000000000..fb133b66e26
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/ddl_processlist.test
@@ -0,0 +1,32 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+-- error ER_DBACCESS_DENIED_ERROR
+alter table performance_schema.PROCESSLIST add column foo integer;
+
+-- error ER_WRONG_PERFSCHEMA_USAGE
+truncate table performance_schema.PROCESSLIST;
+
+-- error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE performance_schema.PROCESSLIST ADD INDEX test_index(ID);
+
+-- error ER_DBACCESS_DENIED_ERROR
+CREATE UNIQUE INDEX test_index ON performance_schema.PROCESSLIST(ID);
+
diff --git a/mysql-test/suite/perfschema/t/ddl_rwlock_instances.test b/mysql-test/suite/perfschema/t/ddl_rwlock_instances.test
new file mode 100644
index 00000000000..c07cd1ede48
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/ddl_rwlock_instances.test
@@ -0,0 +1,32 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+-- error ER_DBACCESS_DENIED_ERROR
+alter table performance_schema.RWLOCK_INSTANCES add column foo integer;
+
+-- error ER_WRONG_PERFSCHEMA_USAGE
+truncate table performance_schema.RWLOCK_INSTANCES;
+
+-- error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE performance_schema.RWLOCK_INSTANCES ADD INDEX test_index(NAME);
+
+-- error ER_DBACCESS_DENIED_ERROR
+CREATE UNIQUE INDEX test_index ON performance_schema.RWLOCK_INSTANCES(NAME);
+
diff --git a/mysql-test/suite/perfschema/t/ddl_setup_consumers.test b/mysql-test/suite/perfschema/t/ddl_setup_consumers.test
new file mode 100644
index 00000000000..c44db822145
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/ddl_setup_consumers.test
@@ -0,0 +1,33 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--replace_result '\'setup_consumers' '\'SETUP_CONSUMERS'
+-- error ER_DBACCESS_DENIED_ERROR
+alter table performance_schema.SETUP_CONSUMERS add column foo integer;
+
+-- error ER_WRONG_PERFSCHEMA_USAGE
+truncate table performance_schema.SETUP_CONSUMERS;
+
+-- error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE performance_schema.SETUP_CONSUMERS ADD INDEX test_index(NAME);
+
+-- error ER_DBACCESS_DENIED_ERROR
+CREATE UNIQUE INDEX test_index ON performance_schema.SETUP_CONSUMERS(NAME);
+
diff --git a/mysql-test/suite/perfschema/t/ddl_setup_instruments.test b/mysql-test/suite/perfschema/t/ddl_setup_instruments.test
new file mode 100644
index 00000000000..c20c386447c
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/ddl_setup_instruments.test
@@ -0,0 +1,33 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--replace_result '\'setup_instruments' '\'SETUP_INSTRUMENTS'
+-- error ER_DBACCESS_DENIED_ERROR
+alter table performance_schema.SETUP_INSTRUMENTS add column foo integer;
+
+-- error ER_WRONG_PERFSCHEMA_USAGE
+truncate table performance_schema.SETUP_INSTRUMENTS;
+
+-- error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE performance_schema.SETUP_INSTRUMENTS ADD INDEX test_index(NAME);
+
+-- error ER_DBACCESS_DENIED_ERROR
+CREATE UNIQUE INDEX test_index ON performance_schema.SETUP_INSTRUMENTS(NAME);
+
diff --git a/mysql-test/suite/perfschema/t/ddl_setup_objects.test b/mysql-test/suite/perfschema/t/ddl_setup_objects.test
new file mode 100644
index 00000000000..6ae6156ef00
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/ddl_setup_objects.test
@@ -0,0 +1,32 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--replace_result '\'setup_objects' '\'SETUP_OBJECTS'
+-- error ER_DBACCESS_DENIED_ERROR
+alter table performance_schema.SETUP_OBJECTS add column foo integer;
+
+truncate table performance_schema.SETUP_OBJECTS;
+
+-- error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE performance_schema.SETUP_OBJECTS ADD INDEX test_index(OBJECT_NAME);
+
+-- error ER_DBACCESS_DENIED_ERROR
+CREATE UNIQUE INDEX test_index ON performance_schema.SETUP_OBJECTS(OBJECT_NAME);
+
diff --git a/mysql-test/suite/perfschema/t/ddl_setup_timers.test b/mysql-test/suite/perfschema/t/ddl_setup_timers.test
new file mode 100644
index 00000000000..b9a5c32ecbe
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/ddl_setup_timers.test
@@ -0,0 +1,33 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--replace_result '\'setup_timers' '\'SETUP_TIMERS'
+-- error ER_DBACCESS_DENIED_ERROR
+alter table performance_schema.SETUP_TIMERS add column foo integer;
+
+-- error ER_WRONG_PERFSCHEMA_USAGE
+truncate table performance_schema.SETUP_TIMERS;
+
+-- error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE performance_schema.SETUP_TIMERS ADD INDEX test_index(NAME);
+
+-- error ER_DBACCESS_DENIED_ERROR
+CREATE UNIQUE INDEX test_index ON performance_schema.SETUP_TIMERS(NAME);
+
diff --git a/mysql-test/suite/perfschema/t/disabled.def b/mysql-test/suite/perfschema/t/disabled.def
new file mode 100644
index 00000000000..56bcf811ff6
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/disabled.def
@@ -0,0 +1,27 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+##############################################################################
+#
+# 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.
+#
+##############################################################################
+
diff --git a/mysql-test/suite/perfschema/t/dml_cond_instances.test b/mysql-test/suite/perfschema/t/dml_cond_instances.test
new file mode 100644
index 00000000000..1d1614db73f
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/dml_cond_instances.test
@@ -0,0 +1,55 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--replace_column 1 # 2 #
+select * from performance_schema.COND_INSTANCES limit 1;
+
+select * from performance_schema.COND_INSTANCES
+ where name='FOO';
+
+--replace_result '\'cond_instances' '\'COND_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.COND_INSTANCES
+ set name='FOO', object_instance_begin=12;
+
+--replace_result '\'cond_instances' '\'COND_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.COND_INSTANCES
+ set name='FOO';
+
+--replace_result '\'cond_instances' '\'COND_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.COND_INSTANCES
+ where name like "wait/%";
+
+--replace_result '\'cond_instances' '\'COND_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.COND_INSTANCES;
+
+--replace_result '\'cond_instances' '\'COND_INSTANCES'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.COND_INSTANCES READ;
+UNLOCK TABLES;
+
+--replace_result '\'cond_instances' '\'COND_INSTANCES'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.COND_INSTANCES WRITE;
+UNLOCK TABLES;
+
diff --git a/mysql-test/suite/perfschema/t/dml_events_waits_current.test b/mysql-test/suite/perfschema/t/dml_events_waits_current.test
new file mode 100644
index 00000000000..3a93b98cb57
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/dml_events_waits_current.test
@@ -0,0 +1,62 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 12 # 14 #
+select * from performance_schema.EVENTS_WAITS_CURRENT
+ where event_name like 'Wait/Synch/%' limit 1;
+
+select * from performance_schema.EVENTS_WAITS_CURRENT
+ where event_name='FOO';
+
+--replace_result '\'events_waits_current' '\'EVENTS_WAITS_CURRENT'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.EVENTS_WAITS_CURRENT
+ set thread_id='1', event_id=1,
+ event_name='FOO', timer_start=1, timer_end=2, timer_wait=3;
+
+--replace_result '\'events_waits_current' '\'EVENTS_WAITS_CURRENT'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.EVENTS_WAITS_CURRENT
+ set timer_start=12;
+
+--replace_result '\'events_waits_current' '\'EVENTS_WAITS_CURRENT'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.EVENTS_WAITS_CURRENT
+ set timer_start=12 where thread_id=0;
+
+--replace_result '\'events_waits_current' '\'EVENTS_WAITS_CURRENT'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.EVENTS_WAITS_CURRENT
+ where thread_id=1;
+
+--replace_result '\'events_waits_current' '\'EVENTS_WAITS_CURRENT'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.EVENTS_WAITS_CURRENT;
+
+--replace_result '\'events_waits_current' '\'EVENTS_WAITS_CURRENT'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.EVENTS_WAITS_CURRENT READ;
+UNLOCK TABLES;
+
+--replace_result '\'events_waits_current' '\'EVENTS_WAITS_CURRENT'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.EVENTS_WAITS_CURRENT WRITE;
+UNLOCK TABLES;
+
diff --git a/mysql-test/suite/perfschema/t/dml_events_waits_history.test b/mysql-test/suite/perfschema/t/dml_events_waits_history.test
new file mode 100644
index 00000000000..174ef2147d1
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/dml_events_waits_history.test
@@ -0,0 +1,70 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 12 # 14 #
+select * from performance_schema.EVENTS_WAITS_HISTORY
+ where event_name like 'Wait/Synch/%' limit 1;
+
+select * from performance_schema.EVENTS_WAITS_HISTORY
+ where event_name='FOO';
+
+--replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 12 # 14 #
+select * from performance_schema.EVENTS_WAITS_HISTORY
+ where event_name like 'Wait/Synch/%' order by timer_wait limit 1;
+
+--replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 12 # 14 #
+select * from performance_schema.EVENTS_WAITS_HISTORY
+ where event_name like 'Wait/Synch/%' order by timer_wait desc limit 1;
+
+--replace_result '\'events_waits_history' '\'EVENTS_WAITS_HISTORY'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.EVENTS_WAITS_HISTORY
+ set thread_id='1', event_id=1,
+ event_name='FOO', timer_start=1, timer_end=2, timer_wait=3;
+
+--replace_result '\'events_waits_history' '\'EVENTS_WAITS_HISTORY'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.EVENTS_WAITS_HISTORY
+ set timer_start=12;
+
+--replace_result '\'events_waits_history' '\'EVENTS_WAITS_HISTORY'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.EVENTS_WAITS_HISTORY
+ set timer_start=12 where thread_id=0;
+
+--replace_result '\'events_waits_history' '\'EVENTS_WAITS_HISTORY'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.EVENTS_WAITS_HISTORY
+ where thread_id=1;
+
+--replace_result '\'events_waits_history' '\'EVENTS_WAITS_HISTORY'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.EVENTS_WAITS_HISTORY;
+
+--replace_result '\'events_waits_history' '\'EVENTS_WAITS_HISTORY'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.EVENTS_WAITS_HISTORY READ;
+UNLOCK TABLES;
+
+--replace_result '\'events_waits_history' '\'EVENTS_WAITS_HISTORY'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.EVENTS_WAITS_HISTORY WRITE;
+UNLOCK TABLES;
+
diff --git a/mysql-test/suite/perfschema/t/dml_events_waits_history_long.test b/mysql-test/suite/perfschema/t/dml_events_waits_history_long.test
new file mode 100644
index 00000000000..73dc0aefd06
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/dml_events_waits_history_long.test
@@ -0,0 +1,70 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 12 # 14 #
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG
+ where event_name like 'Wait/Synch/%' limit 1;
+
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG
+ where event_name='FOO';
+
+--replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 12 # 14 #
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG
+ where event_name like 'Wait/Synch/%' order by timer_wait limit 1;
+
+--replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 12 # 14 #
+select * from performance_schema.EVENTS_WAITS_HISTORY_LONG
+ where event_name like 'Wait/Synch/%' order by timer_wait desc limit 1;
+
+--replace_result '\'events_waits_history_long' '\'EVENTS_WAITS_HISTORY_LONG'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.EVENTS_WAITS_HISTORY_LONG
+ set thread_id='1', event_id=1,
+ event_name='FOO', timer_start=1, timer_end=2, timer_wait=3;
+
+--replace_result '\'events_waits_history_long' '\'EVENTS_WAITS_HISTORY_LONG'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.EVENTS_WAITS_HISTORY_LONG
+ set timer_start=12;
+
+--replace_result '\'events_waits_history_long' '\'EVENTS_WAITS_HISTORY_LONG'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.EVENTS_WAITS_HISTORY_LONG
+ set timer_start=12 where thread_id=0;
+
+--replace_result '\'events_waits_history_long' '\'EVENTS_WAITS_HISTORY_LONG'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.EVENTS_WAITS_HISTORY_LONG
+ where thread_id=1;
+
+--replace_result '\'events_waits_history_long' '\'EVENTS_WAITS_HISTORY_LONG'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.EVENTS_WAITS_HISTORY_LONG;
+
+--replace_result '\'events_waits_history_long' '\'EVENTS_WAITS_HISTORY_LONG'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.EVENTS_WAITS_HISTORY_LONG READ;
+UNLOCK TABLES;
+
+--replace_result '\'events_waits_history_long' '\'EVENTS_WAITS_HISTORY_LONG'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.EVENTS_WAITS_HISTORY_LONG WRITE;
+UNLOCK TABLES;
+
diff --git a/mysql-test/suite/perfschema/t/dml_ews_by_event_name.test b/mysql-test/suite/perfschema/t/dml_ews_by_event_name.test
new file mode 100644
index 00000000000..c1fddbe9f87
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/dml_ews_by_event_name.test
@@ -0,0 +1,62 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--replace_column 1 # 2 # 3 # 4 # 5 # 6 #
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
+ where event_name like 'Wait/Synch/%' limit 1;
+
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
+ where event_name='FOO';
+
+--replace_result '\'events_waits_summary_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
+ set event_name='FOO', count_star=1, sum_timer_wait=2, min_timer_wait=3,
+ avg_timer_wait=4, max_timer_wait=5;
+
+--replace_result '\'events_waits_summary_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
+ set count_star=12;
+
+--replace_result '\'events_waits_summary_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
+ set count_star=12 where event_name like "FOO";
+
+--replace_result '\'events_waits_summary_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
+ where count_star=1;
+
+--replace_result '\'events_waits_summary_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+
+--replace_result '\'events_waits_summary_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME READ;
+UNLOCK TABLES;
+
+--replace_result '\'events_waits_summary_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME WRITE;
+UNLOCK TABLES;
+
diff --git a/mysql-test/suite/perfschema/t/dml_ews_by_instance.test b/mysql-test/suite/perfschema/t/dml_ews_by_instance.test
new file mode 100644
index 00000000000..4c386313bc5
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/dml_ews_by_instance.test
@@ -0,0 +1,79 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 #
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+ where event_name like 'Wait/Synch/%' limit 1;
+
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+ where event_name='FOO';
+
+--replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 #
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+ order by count_star limit 1;
+
+--replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 #
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+ order by count_star desc limit 1;
+
+--replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 #
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+ where min_timer_wait > 0 order by count_star limit 1;
+
+--replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 #
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+ where min_timer_wait > 0 order by count_star desc limit 1;
+
+--replace_result '\'events_waits_summary_by_instance' '\'EVENTS_WAITS_SUMMARY_BY_INSTANCE'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+ set event_name='FOO', object_instance_begin=0,
+ count_star=1, sum_timer_wait=2, min_timer_wait=3,
+ avg_timer_wait=4, max_timer_wait=5;
+
+--replace_result '\'events_waits_summary_by_instance' '\'EVENTS_WAITS_SUMMARY_BY_INSTANCE'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+ set count_star=12;
+
+--replace_result '\'events_waits_summary_by_instance' '\'EVENTS_WAITS_SUMMARY_BY_INSTANCE'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+ set count_star=12 where event_name like "FOO";
+
+--replace_result '\'events_waits_summary_by_instance' '\'EVENTS_WAITS_SUMMARY_BY_INSTANCE'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE
+ where count_star=1;
+
+--replace_result '\'events_waits_summary_by_instance' '\'EVENTS_WAITS_SUMMARY_BY_INSTANCE'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+
+--replace_result '\'events_waits_summary_by_instance' '\'EVENTS_WAITS_SUMMARY_BY_INSTANCE'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE READ;
+UNLOCK TABLES;
+
+--replace_result '\'events_waits_summary_by_instance' '\'EVENTS_WAITS_SUMMARY_BY_INSTANCE'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE WRITE;
+UNLOCK TABLES;
+
diff --git a/mysql-test/suite/perfschema/t/dml_ews_by_thread_by_event_name.test b/mysql-test/suite/perfschema/t/dml_ews_by_thread_by_event_name.test
new file mode 100644
index 00000000000..ce29e59d014
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/dml_ews_by_thread_by_event_name.test
@@ -0,0 +1,63 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 #
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
+ where event_name like 'Wait/Synch/%' limit 1;
+
+select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
+ where event_name='FOO';
+
+--replace_result '\'events_waits_summary_by_thread_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
+ set event_name='FOO', thread_id=1,
+ count_star=1, sum_timer_wait=2, min_timer_wait=3,
+ avg_timer_wait=4, max_timer_wait=5;
+
+--replace_result '\'events_waits_summary_by_thread_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
+ set count_star=12;
+
+--replace_result '\'events_waits_summary_by_thread_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
+ set count_star=12 where event_name like "FOO";
+
+--replace_result '\'events_waits_summary_by_thread_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
+ where count_star=1;
+
+--replace_result '\'events_waits_summary_by_thread_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+
+--replace_result '\'events_waits_summary_by_thread_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME READ;
+UNLOCK TABLES;
+
+--replace_result '\'events_waits_summary_by_thread_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME WRITE;
+UNLOCK TABLES;
+
diff --git a/mysql-test/suite/perfschema/t/dml_file_instances.test b/mysql-test/suite/perfschema/t/dml_file_instances.test
new file mode 100644
index 00000000000..71a053c21be
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/dml_file_instances.test
@@ -0,0 +1,55 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--replace_column 1 # 2 # 3 #
+select * from performance_schema.FILE_INSTANCES limit 1;
+
+select * from performance_schema.FILE_INSTANCES
+ where file_name='FOO';
+
+--replace_result '\'file_instances' '\'FILE_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.FILE_INSTANCES
+ set file_name='FOO', event_name='BAR', open_count=12;
+
+--replace_result '\'file_instances' '\'FILE_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.FILE_INSTANCES
+ set file_name='FOO';
+
+--replace_result '\'file_instances' '\'FILE_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.FILE_INSTANCES
+ where event_name like "wait/%";
+
+--replace_result '\'file_instances' '\'FILE_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.FILE_INSTANCES;
+
+--replace_result '\'file_instances' '\'FILE_INSTANCES'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.FILE_INSTANCES READ;
+UNLOCK TABLES;
+
+--replace_result '\'file_instances' '\'FILE_INSTANCES'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.FILE_INSTANCES WRITE;
+UNLOCK TABLES;
+
diff --git a/mysql-test/suite/perfschema/t/dml_file_summary_by_event_name.test b/mysql-test/suite/perfschema/t/dml_file_summary_by_event_name.test
new file mode 100644
index 00000000000..3753f581560
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/dml_file_summary_by_event_name.test
@@ -0,0 +1,62 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--replace_column 1 # 2 # 3 # 4 # 5 #
+select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME
+ where event_name like 'Wait/io/%' limit 1;
+
+select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME
+ where event_name='FOO';
+
+--replace_result '\'file_summary_by_event_name' '\'FILE_SUMMARY_BY_EVENT_NAME'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.FILE_SUMMARY_BY_EVENT_NAME
+ set event_name='FOO', count_read=1, count_write=2,
+ sum_number_of_bytes_read=4, sum_number_of_bytes_write=5;
+
+--replace_result '\'file_summary_by_event_name' '\'FILE_SUMMARY_BY_EVENT_NAME'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.FILE_SUMMARY_BY_EVENT_NAME
+ set count_read=12;
+
+--replace_result '\'file_summary_by_event_name' '\'FILE_SUMMARY_BY_EVENT_NAME'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.FILE_SUMMARY_BY_EVENT_NAME
+ set count_write=12 where event_name like "FOO";
+
+--replace_result '\'file_summary_by_event_name' '\'FILE_SUMMARY_BY_EVENT_NAME'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.FILE_SUMMARY_BY_EVENT_NAME
+ where count_read=1;
+
+--replace_result '\'file_summary_by_event_name' '\'FILE_SUMMARY_BY_EVENT_NAME'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
+
+--replace_result '\'file_summary_by_event_name' '\'FILE_SUMMARY_BY_EVENT_NAME'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.FILE_SUMMARY_BY_EVENT_NAME READ;
+UNLOCK TABLES;
+
+--replace_result '\'file_summary_by_event_name' '\'FILE_SUMMARY_BY_EVENT_NAME'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.FILE_SUMMARY_BY_EVENT_NAME WRITE;
+UNLOCK TABLES;
+
diff --git a/mysql-test/suite/perfschema/t/dml_file_summary_by_instance.test b/mysql-test/suite/perfschema/t/dml_file_summary_by_instance.test
new file mode 100644
index 00000000000..07372af5f36
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/dml_file_summary_by_instance.test
@@ -0,0 +1,62 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--replace_column 1 # 2 # 3 # 4 # 5 # 6 #
+select * from performance_schema.FILE_SUMMARY_BY_INSTANCE
+ where event_name like 'Wait/io/%' limit 1;
+
+select * from performance_schema.FILE_SUMMARY_BY_INSTANCE
+ where event_name='FOO';
+
+--replace_result '\'file_summary_by_instance' '\'FILE_SUMMARY_BY_INSTANCE'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.FILE_SUMMARY_BY_INSTANCE
+ set event_name='FOO', count_read=1, count_write=2,
+ sum_number_of_bytes_read=4, sum_number_of_bytes_write=5;
+
+--replace_result '\'file_summary_by_instance' '\'FILE_SUMMARY_BY_INSTANCE'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.FILE_SUMMARY_BY_INSTANCE
+ set count_read=12;
+
+--replace_result '\'file_summary_by_instance' '\'FILE_SUMMARY_BY_INSTANCE'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.FILE_SUMMARY_BY_INSTANCE
+ set count_write=12 where event_name like "FOO";
+
+--replace_result '\'file_summary_by_instance' '\'FILE_SUMMARY_BY_INSTANCE'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.FILE_SUMMARY_BY_INSTANCE
+ where count_read=1;
+
+--replace_result '\'file_summary_by_instance' '\'FILE_SUMMARY_BY_INSTANCE'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.FILE_SUMMARY_BY_INSTANCE;
+
+--replace_result '\'file_summary_by_instance' '\'FILE_SUMMARY_BY_INSTANCE'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.FILE_SUMMARY_BY_INSTANCE READ;
+UNLOCK TABLES;
+
+--replace_result '\'file_summary_by_instance' '\'FILE_SUMMARY_BY_INSTANCE'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.FILE_SUMMARY_BY_INSTANCE WRITE;
+UNLOCK TABLES;
+
diff --git a/mysql-test/suite/perfschema/t/dml_mutex_instances.test b/mysql-test/suite/perfschema/t/dml_mutex_instances.test
new file mode 100644
index 00000000000..e3062c7b34c
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/dml_mutex_instances.test
@@ -0,0 +1,55 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--replace_column 1 # 2 #
+select * from performance_schema.MUTEX_INSTANCES limit 1;
+
+select * from performance_schema.MUTEX_INSTANCES
+ where name='FOO';
+
+--replace_result '\'mutex_instances' '\'MUTEX_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.MUTEX_INSTANCES
+ set name='FOO', object_instance_begin=12;
+
+--replace_result '\'mutex_instances' '\'MUTEX_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.MUTEX_INSTANCES
+ set name='FOO';
+
+--replace_result '\'mutex_instances' '\'MUTEX_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.MUTEX_INSTANCES
+ where name like "wait/%";
+
+--replace_result '\'mutex_instances' '\'MUTEX_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.MUTEX_INSTANCES;
+
+--replace_result '\'mutex_instances' '\'MUTEX_INSTANCES'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.MUTEX_INSTANCES READ;
+UNLOCK TABLES;
+
+--replace_result '\'mutex_instances' '\'MUTEX_INSTANCES'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.MUTEX_INSTANCES WRITE;
+UNLOCK TABLES;
+
diff --git a/mysql-test/suite/perfschema/t/dml_performance_timers.test b/mysql-test/suite/perfschema/t/dml_performance_timers.test
new file mode 100644
index 00000000000..9c2efb6f709
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/dml_performance_timers.test
@@ -0,0 +1,57 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--replace_column 2 <frequency> 3 <resolution> 4 <overhead>
+select * from performance_schema.PERFORMANCE_TIMERS;
+
+--replace_column 2 <frequency> 3 <resolution> 4 <overhead>
+select * from performance_schema.PERFORMANCE_TIMERS
+ where timer_name='CYCLE';
+
+--replace_result '\'performance_timers' '\'PERFORMANCE_TIMERS'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.PERFORMANCE_TIMERS
+ set timer_name='FOO', timer_frequency=1,
+ timer_resolution=2, timer_overhead=3;
+
+--replace_result '\'performance_timers' '\'PERFORMANCE_TIMERS'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.PERFORMANCE_TIMERS
+ set timer_frequency=12 where timer_name='CYCLE';
+
+--replace_result '\'performance_timers' '\'PERFORMANCE_TIMERS'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.PERFORMANCE_TIMERS;
+
+--replace_result '\'performance_timers' '\'PERFORMANCE_TIMERS'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.PERFORMANCE_TIMERS
+ where timer_name='CYCLE';
+
+--replace_result '\'performance_timers' '\'PERFORMANCE_TIMERS'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.PERFORMANCE_TIMERS READ;
+UNLOCK TABLES;
+
+--replace_result '\'performance_timers' '\'PERFORMANCE_TIMERS'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.PERFORMANCE_TIMERS WRITE;
+UNLOCK TABLES;
+
diff --git a/mysql-test/suite/perfschema/t/dml_processlist.test b/mysql-test/suite/perfschema/t/dml_processlist.test
new file mode 100644
index 00000000000..6062b8481f0
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/dml_processlist.test
@@ -0,0 +1,61 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--replace_column 1 # 2 # 3 #
+select * from performance_schema.PROCESSLIST
+ where name like 'Thread/%' limit 1;
+
+select * from performance_schema.PROCESSLIST
+ where name='FOO';
+
+--replace_result '\'processlist' '\'PROCESSLIST'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.PROCESSLIST
+ set name='FOO', thread_id=1, id=2;
+
+--replace_result '\'processlist' '\'PROCESSLIST'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.PROCESSLIST
+ set thread_id=12;
+
+--replace_result '\'processlist' '\'PROCESSLIST'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.PROCESSLIST
+ set thread_id=12 where name like "FOO";
+
+--replace_result '\'processlist' '\'PROCESSLIST'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.PROCESSLIST
+ where id=1;
+
+--replace_result '\'processlist' '\'PROCESSLIST'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.PROCESSLIST;
+
+--replace_result '\'processlist' '\'PROCESSLIST'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.PROCESSLIST READ;
+UNLOCK TABLES;
+
+--replace_result '\'processlist' '\'PROCESSLIST'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.PROCESSLIST WRITE;
+UNLOCK TABLES;
+
diff --git a/mysql-test/suite/perfschema/t/dml_rwlock_instances.test b/mysql-test/suite/perfschema/t/dml_rwlock_instances.test
new file mode 100644
index 00000000000..251168237eb
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/dml_rwlock_instances.test
@@ -0,0 +1,55 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--replace_column 1 # 2 #
+select * from performance_schema.RWLOCK_INSTANCES limit 1;
+
+select * from performance_schema.RWLOCK_INSTANCES
+ where name='FOO';
+
+--replace_result '\'rwlock_instances' '\'RWLOCK_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.RWLOCK_INSTANCES
+ set name='FOO', object_instance_begin=12;
+
+--replace_result '\'rwlock_instances' '\'RWLOCK_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+update performance_schema.RWLOCK_INSTANCES
+ set name='FOO';
+
+--replace_result '\'rwlock_instances' '\'RWLOCK_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.RWLOCK_INSTANCES
+ where name like "wait/%";
+
+--replace_result '\'rwlock_instances' '\'RWLOCK_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.RWLOCK_INSTANCES;
+
+--replace_result '\'rwlock_instances' '\'RWLOCK_INSTANCES'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.RWLOCK_INSTANCES READ;
+UNLOCK TABLES;
+
+--replace_result '\'rwlock_instances' '\'RWLOCK_INSTANCES'
+-- error ER_TABLEACCESS_DENIED_ERROR
+LOCK TABLES performance_schema.RWLOCK_INSTANCES WRITE;
+UNLOCK TABLES;
+
diff --git a/mysql-test/suite/perfschema/t/dml_setup_consumers.test b/mysql-test/suite/perfschema/t/dml_setup_consumers.test
new file mode 100644
index 00000000000..85b65864f91
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/dml_setup_consumers.test
@@ -0,0 +1,59 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+select * from performance_schema.SETUP_CONSUMERS;
+
+select * from performance_schema.SETUP_CONSUMERS
+ where name='events_waits_current';
+
+select * from performance_schema.SETUP_CONSUMERS
+ where enabled='YES';
+
+select * from performance_schema.SETUP_CONSUMERS
+ where enabled='NO';
+
+--replace_result '\'setup_consumers' '\'SETUP_CONSUMERS'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.SETUP_CONSUMERS
+ set name='FOO', enabled='YES';
+
+--replace_result '\'setup_consumers' '\'SETUP_CONSUMERS'
+--error ER_WRONG_PERFSCHEMA_USAGE
+update performance_schema.SETUP_CONSUMERS
+ set name='FOO';
+
+update performance_schema.SETUP_CONSUMERS
+ set enabled='YES';
+
+--replace_result '\'setup_consumers' '\'SETUP_CONSUMERS'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.SETUP_CONSUMERS;
+
+--replace_result '\'setup_consumers' '\'SETUP_CONSUMERS'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.SETUP_CONSUMERS
+ where name='events_waits_current';
+
+LOCK TABLES performance_schema.SETUP_CONSUMERS READ;
+UNLOCK TABLES;
+
+LOCK TABLES performance_schema.SETUP_CONSUMERS WRITE;
+UNLOCK TABLES;
+
diff --git a/mysql-test/suite/perfschema/t/dml_setup_instruments.test b/mysql-test/suite/perfschema/t/dml_setup_instruments.test
new file mode 100644
index 00000000000..f737160cebd
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/dml_setup_instruments.test
@@ -0,0 +1,100 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+# The query result are not re producible,
+# due to variations in platforms and plugins
+# We still execute the select statement, for:
+# - code coverage
+# - make sure it does not crash
+# - valgrind coverage
+
+--disable_result_log
+select * from performance_schema.SETUP_INSTRUMENTS;
+--enable_result_log
+
+# DEBUG_SYNC::mutex is dependent on the build (DEBUG only)
+
+select * from performance_schema.SETUP_INSTRUMENTS
+ where name like 'Wait/Synch/Mutex/sql/%'
+ and name not in ('wait/synch/mutex/sql/DEBUG_SYNC::mutex')
+ order by name limit 10;
+
+select * from performance_schema.SETUP_INSTRUMENTS
+ where name like 'Wait/Synch/Rwlock/sql/%'
+ order by name limit 10;
+
+# COND_handler_count is dependent on the build (Windows only)
+# DEBUG_SYNC::cond is dependent on the build (DEBUG only)
+
+select * from performance_schema.SETUP_INSTRUMENTS
+ where name like 'Wait/Synch/Cond/sql/%'
+ and name not in (
+ 'wait/synch/cond/sql/COND_handler_count',
+ 'wait/synch/cond/sql/DEBUG_SYNC::cond')
+ order by name limit 10;
+
+--disable_result_log
+select * from performance_schema.SETUP_INSTRUMENTS
+ where name='Wait';
+--enable_result_log
+
+--disable_result_log
+select * from performance_schema.SETUP_INSTRUMENTS
+ where enabled='YES';
+--enable_result_log
+
+--replace_result '\'setup_instruments' '\'SETUP_INSTRUMENTS'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.SETUP_INSTRUMENTS
+ set name='FOO', enabled='YES', timed='YES';
+
+--replace_result '\'setup_instruments' '\'SETUP_INSTRUMENTS'
+--error ER_WRONG_PERFSCHEMA_USAGE
+update performance_schema.SETUP_INSTRUMENTS
+ set name='FOO';
+
+update performance_schema.SETUP_INSTRUMENTS
+ set enabled='NO';
+
+update performance_schema.SETUP_INSTRUMENTS
+ set timed='NO';
+
+--disable_result_log
+select * from performance_schema.SETUP_INSTRUMENTS;
+--enable_result_log
+
+update performance_schema.SETUP_INSTRUMENTS
+ set enabled='YES', timed='YES';
+
+--replace_result '\'setup_instruments' '\'SETUP_INSTRUMENTS'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.SETUP_INSTRUMENTS;
+
+--replace_result '\'setup_instruments' '\'SETUP_INSTRUMENTS'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.SETUP_INSTRUMENTS
+ where name like 'Wait/Synch/%';
+
+LOCK TABLES performance_schema.SETUP_INSTRUMENTS READ;
+UNLOCK TABLES;
+
+LOCK TABLES performance_schema.SETUP_INSTRUMENTS WRITE;
+UNLOCK TABLES;
+
diff --git a/mysql-test/suite/perfschema/t/dml_setup_objects.test b/mysql-test/suite/perfschema/t/dml_setup_objects.test
new file mode 100644
index 00000000000..21fac64d924
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/dml_setup_objects.test
@@ -0,0 +1,75 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+select * from performance_schema.SETUP_OBJECTS;
+
+select * from performance_schema.SETUP_OBJECTS
+ where object_type = 'TABLE';
+
+select * from performance_schema.SETUP_OBJECTS
+ where enabled='YES';
+
+# Not implemented yet
+--replace_result '\'setup_objects' '\'SETUP_OBJECTS'
+--error ER_ILLEGAL_HA
+insert into performance_schema.SETUP_OBJECTS
+ set object_type='TABLE', object_schema='FOO', object_name='BAR',
+ enabled='YES', timed='YES', aggregated='YES';
+
+# Not implemented yet
+# --error ER_ILLEGAL_HA
+update performance_schema.SETUP_OBJECTS
+ set object_type='TABLE';
+
+# Not implemented yet
+# --error ER_ILLEGAL_HA
+update performance_schema.SETUP_OBJECTS
+ set object_schema='ILLEGAL';
+
+# Not implemented yet
+# --error ER_ILLEGAL_HA
+update performance_schema.SETUP_OBJECTS
+ set object_name='ILLEGAL';
+
+update performance_schema.SETUP_OBJECTS
+ set enabled='NO';
+
+update performance_schema.SETUP_OBJECTS
+ set timed='NO';
+
+update performance_schema.SETUP_OBJECTS
+ set aggregated='NO';
+
+select * from performance_schema.SETUP_OBJECTS;
+
+update performance_schema.SETUP_OBJECTS
+ set enabled='YES', timed='YES', aggregated='YES';
+
+delete from performance_schema.SETUP_OBJECTS
+ where object_type = 'TABLE';
+
+delete from performance_schema.SETUP_OBJECTS;
+
+LOCK TABLES performance_schema.SETUP_OBJECTS READ;
+UNLOCK TABLES;
+
+LOCK TABLES performance_schema.SETUP_OBJECTS WRITE;
+UNLOCK TABLES;
+
diff --git a/mysql-test/suite/perfschema/t/dml_setup_timers.test b/mysql-test/suite/perfschema/t/dml_setup_timers.test
new file mode 100644
index 00000000000..5b5850db575
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/dml_setup_timers.test
@@ -0,0 +1,61 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+select * from performance_schema.SETUP_TIMERS;
+
+select * from performance_schema.SETUP_TIMERS
+ where name='Wait';
+
+select * from performance_schema.SETUP_TIMERS
+ where timer_name='CYCLE';
+
+--replace_result '\'setup_timers' '\'SETUP_TIMERS'
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.SETUP_TIMERS
+ set name='FOO', timer_name='CYCLE';
+
+--replace_result '\'setup_timers' '\'SETUP_TIMERS'
+--error ER_WRONG_PERFSCHEMA_USAGE
+update performance_schema.SETUP_TIMERS
+ set name='FOO';
+
+update performance_schema.SETUP_TIMERS
+ set timer_name='MILLISECOND';
+
+select * from performance_schema.SETUP_TIMERS;
+
+update performance_schema.SETUP_TIMERS
+ set timer_name='CYCLE';
+
+--replace_result '\'setup_timers' '\'SETUP_TIMERS'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.SETUP_TIMERS;
+
+--replace_result '\'setup_timers' '\'SETUP_TIMERS'
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.SETUP_TIMERS
+ where name='Wait';
+
+LOCK TABLES performance_schema.SETUP_TIMERS READ;
+UNLOCK TABLES;
+
+LOCK TABLES performance_schema.SETUP_TIMERS WRITE;
+UNLOCK TABLES;
+
diff --git a/mysql-test/suite/perfschema/t/func_file_io.test b/mysql-test/suite/perfschema/t/func_file_io.test
new file mode 100644
index 00000000000..4317f68d13b
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/func_file_io.test
@@ -0,0 +1,192 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+##
+## WL#4814, 4.1.4 FILE IO
+##
+## Functional testing of File IO
+##
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'NO', timed = 'YES';
+
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'YES'
+WHERE name LIKE 'wait/io/file/%';
+
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+
+#
+# TODO: Change to InnoDB when it gets instrumentation
+#
+
+CREATE TABLE t1 (id INT PRIMARY KEY, b CHAR(100) DEFAULT 'initial value')
+ENGINE=MyISAM;
+
+INSERT INTO t1 (id) VALUES (1), (2), (3), (4), (5), (6), (7), (8);
+
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY_LONG;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_CURRENT;
+
+#
+# FF1: Count for file should increase with instrumentation enabled and
+# FF2: Count for file should not increase with instrumentation disabled
+#
+
+SELECT * FROM t1 WHERE id = 1;
+
+SET @before_count = (SELECT SUM(TIMER_WAIT)
+ FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+ WHERE (EVENT_NAME = 'wait/io/file/myisam/dfile')
+ AND (OBJECT_NAME LIKE '%t1.MYD'));
+
+SELECT IF(@before_count > 0, 'Success', 'Failure') has_instrumentation;
+
+SELECT * FROM t1 WHERE id < 4;
+
+SET @after_count = (SELECT SUM(TIMER_WAIT)
+ FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+ WHERE (EVENT_NAME = 'wait/io/file/myisam/dfile')
+ AND (OBJECT_NAME LIKE '%t1.MYD') AND (1 = 1));
+
+SELECT IF((@after_count - @before_count) > 0, 'Success', 'Failure') test_ff1_timed;
+
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled='NO';
+
+SET @before_count = (SELECT SUM(TIMER_WAIT)
+ FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+ WHERE (EVENT_NAME = 'wait/io/file/myisam/dfile')
+ AND (OBJECT_NAME LIKE '%t1.MYD') AND (2 = 2));
+
+SELECT * FROM t1 WHERE id < 6;
+
+SET @after_count = (SELECT SUM(TIMER_WAIT)
+ FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+ WHERE (EVENT_NAME = 'wait/io/file/myisam/dfile')
+ AND (OBJECT_NAME LIKE '%t1.MYD') AND (3 = 3));
+
+SELECT IF((COALESCE(@after_count, 0) - COALESCE(@before_count, 0)) = 0, 'Success', 'Failure') test_ff2_timed;
+
+#
+# Check not timed measurements
+#
+
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'YES'
+WHERE name LIKE 'wait/io/file/%';
+
+UPDATE performance_schema.SETUP_INSTRUMENTS SET timed = 'NO';
+
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY_LONG;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_CURRENT;
+
+SELECT * FROM t1 WHERE id > 4;
+
+SELECT * FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+WHERE TIMER_WAIT != NULL
+ OR TIMER_START != NULL
+ OR TIMER_END != NULL;
+
+SELECT * FROM performance_schema.EVENTS_WAITS_HISTORY
+WHERE TIMER_WAIT != NULL
+ OR TIMER_START != NULL
+ OR TIMER_END != NULL;
+
+SELECT * FROM performance_schema.EVENTS_WAITS_CURRENT
+WHERE TIMER_WAIT != NULL
+ OR TIMER_START != NULL
+ OR TIMER_END != NULL;
+
+UPDATE performance_schema.SETUP_INSTRUMENTS SET timed = 'YES';
+
+SELECT * FROM t1 WHERE id < 4;
+
+DROP TABLE t1;
+
+#
+# FF4: Use-case from Enterprise Monitor
+#
+
+--disable_result_log
+SELECT SUM(COUNT_READ) AS sum_count_read,
+ SUM(COUNT_WRITE) AS sum_count_write,
+ SUM(SUM_NUMBER_OF_BYTES_READ) AS sum_num_bytes_read,
+ SUM(SUM_NUMBER_OF_BYTES_WRITE) AS sum_num_bytes_write
+FROM performance_schema.FILE_SUMMARY_BY_INSTANCE
+WHERE FILE_NAME LIKE CONCAT('%', @@tmpdir, '%') ORDER BY NULL;
+--enable_result_log
+
+#
+# FF5: Troubleshooting tasks
+#
+# These queries will give different results based on timing,
+# but at least they should not crash.
+#
+
+#
+# Total and average wait time for different events on system level
+#
+--disable_result_log
+SELECT EVENT_NAME, COUNT_STAR, AVG_TIMER_WAIT, SUM_TIMER_WAIT
+FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
+WHERE COUNT_STAR > 0
+ORDER BY SUM_TIMER_WAIT DESC
+LIMIT 10;
+--enable_result_log
+
+#
+# Total and average wait time for different users
+#
+
+--disable_result_log
+SELECT i.user, SUM(TIMER_WAIT) SUM_WAIT
+# ((TIME_TO_SEC(TIMEDIFF(NOW(), i.startup_time)) * 1000) / SUM(TIMER_WAIT)) * 100 WAIT_PERCENTAGE
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG h
+INNER JOIN performance_schema.PROCESSLIST p USING (THREAD_ID)
+LEFT JOIN information_schema.PROCESSLIST i USING (ID)
+GROUP BY i.user
+ORDER BY SUM_WAIT DESC
+LIMIT 20;
+--enable_result_log
+
+#
+# Total and average wait times for different events for a session
+#
+--disable_result_log
+SELECT h.EVENT_NAME, SUM(h.TIMER_WAIT) TOTAL_WAIT
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG h
+INNER JOIN performance_schema.PROCESSLIST p USING (THREAD_ID)
+WHERE p.ID = 1
+GROUP BY h.EVENT_NAME
+HAVING TOTAL_WAIT > 0;
+--enable_result_log
+
+#
+# Which user reads and writes data
+#
+
+--disable_result_log
+SELECT i.user, h.operation, SUM(NUMBER_OF_BYTES) bytes
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG h
+INNER JOIN performance_schema.PROCESSLIST p USING (THREAD_ID)
+LEFT JOIN information_schema.PROCESSLIST i USING (ID)
+GROUP BY i.user, h.operation
+HAVING BYTES > 0
+ORDER BY i.user, h.operation;
+--enable_result_log
diff --git a/mysql-test/suite/perfschema/t/func_mutex.test b/mysql-test/suite/perfschema/t/func_mutex.test
new file mode 100644
index 00000000000..98cb905c67c
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/func_mutex.test
@@ -0,0 +1,131 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+##
+## WL#4818, 4.1.3 MUTEXES, RW-LOCKS, ...
+##
+## Functional testing of mutexes and RW-locks
+##
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'NO', timed = 'YES';
+
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'YES'
+WHERE name LIKE 'wait/synch/mutex/%'
+ OR name LIKE 'wait/synch/rwlock/%';
+
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+
+#
+# TODO: Change to InnoDB when it gets instrumentation
+#
+
+CREATE TABLE t1 (id INT PRIMARY KEY, b CHAR(100) DEFAULT 'initial value')
+ENGINE=MyISAM;
+
+INSERT INTO t1 (id) VALUES (1), (2), (3), (4), (5), (6), (7), (8);
+
+#
+# FM1: Count for mutex should increase with instrumentation enabled and
+# FM2: Count for mutex should not increase with instrumentation disabled
+#
+
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY_LONG;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_CURRENT;
+
+SELECT * FROM t1 WHERE id = 1;
+
+SET @before_count = (SELECT SUM(TIMER_WAIT)
+ FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+ WHERE (EVENT_NAME = 'wait/synch/mutex/sql/LOCK_open'));
+
+SELECT * FROM t1;
+
+SET @after_count = (SELECT SUM(TIMER_WAIT)
+ FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+ WHERE (EVENT_NAME = 'wait/synch/mutex/sql/LOCK_open'));
+
+SELECT IF((@after_count - @before_count) > 0, 'Success', 'Failure') test_fm1_timed;
+
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'NO'
+WHERE NAME = 'wait/synch/mutex/sql/LOCK_open';
+
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY_LONG;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_CURRENT;
+
+SELECT * FROM t1 WHERE id = 1;
+
+SET @before_count = (SELECT SUM(TIMER_WAIT)
+ FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+ WHERE (EVENT_NAME = 'wait/synch/mutex/sql/LOCK_open'));
+
+SELECT * FROM t1;
+
+SET @after_count = (SELECT SUM(TIMER_WAIT)
+ FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+ WHERE (EVENT_NAME = 'wait/synch/mutex/sql/LOCK_open'));
+
+SELECT IF((COALESCE(@after_count, 0) - COALESCE(@before_count, 0)) = 0, 'Success', 'Failure') test_fm2_timed;
+
+#
+# Repeat for RW-lock
+#
+
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY_LONG;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_CURRENT;
+
+SELECT * FROM t1 WHERE id = 1;
+
+SET @before_count = (SELECT SUM(TIMER_WAIT)
+ FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+ WHERE (EVENT_NAME = 'wait/synch/rwlock/sql/LOCK_grant'));
+
+SELECT * FROM t1;
+
+SET @after_count = (SELECT SUM(TIMER_WAIT)
+ FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+ WHERE (EVENT_NAME = 'wait/synch/rwlock/sql/LOCK_grant'));
+
+SELECT IF((@after_count - @before_count) > 0, 'Success', 'Failure') test_fm1_rw_timed;
+
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'NO'
+WHERE NAME = 'wait/synch/rwlock/sql/LOCK_grant';
+
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY_LONG;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_CURRENT;
+
+SELECT * FROM t1 WHERE id = 1;
+
+SET @before_count = (SELECT SUM(TIMER_WAIT)
+ FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+ WHERE (EVENT_NAME = 'wait/synch/rwlock/sql/LOCK_grant'));
+
+SELECT * FROM t1;
+
+SET @after_count = (SELECT SUM(TIMER_WAIT)
+ FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+ WHERE (EVENT_NAME = 'wait/synch/rwlock/sql/LOCK_grant'));
+
+SELECT IF((COALESCE(@after_count, 0) - COALESCE(@before_count, 0)) = 0, 'Success', 'Failure') test_fm2_rw_timed;
+
+DROP TABLE t1;
diff --git a/mysql-test/suite/perfschema/t/global_read_lock.test b/mysql-test/suite/perfschema/t/global_read_lock.test
new file mode 100644
index 00000000000..16971023cbb
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/global_read_lock.test
@@ -0,0 +1,90 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+#
+# Test the effect of a flush tables with read lock on SETUP_ tables.
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+use performance_schema;
+
+grant SELECT, UPDATE, LOCK TABLES on performance_schema.* to pfsuser@localhost;
+flush privileges;
+
+--echo connect (con1, localhost, pfsuser, , test);
+connect (con1, localhost, pfsuser, , test);
+
+lock tables performance_schema.SETUP_INSTRUMENTS read;
+--disable_result_log
+select * from performance_schema.SETUP_INSTRUMENTS;
+--enable_result_log
+unlock tables;
+
+lock tables performance_schema.SETUP_INSTRUMENTS write;
+update performance_schema.SETUP_INSTRUMENTS set enabled='NO';
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES';
+unlock tables;
+
+--echo connection default;
+connection default;
+
+flush tables with read lock;
+
+--echo connection con1;
+connection con1;
+
+lock tables performance_schema.SETUP_INSTRUMENTS read;
+--disable_result_log
+select * from performance_schema.SETUP_INSTRUMENTS;
+--enable_result_log
+unlock tables;
+
+# This will block
+--send
+lock tables performance_schema.SETUP_INSTRUMENTS write;
+
+--echo connection default;
+connection default;
+
+let $wait_condition= select 1 from performance_schema.EVENTS_WAITS_CURRENT where event_name like "wait/synch/cond/sql/COND_global_read_lock";
+
+--source include/wait_condition.inc
+
+# Observe the blocked thread in the performance schema :)
+select event_name,
+ left(source, locate(":", source)) as short_source,
+ timer_end, timer_wait, operation
+ from performance_schema.EVENTS_WAITS_CURRENT
+ where event_name like "wait/synch/cond/sql/COND_global_read_lock";
+
+unlock tables;
+
+connection con1;
+--reap
+
+update performance_schema.SETUP_INSTRUMENTS set enabled='NO';
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES';
+unlock tables;
+
+disconnect con1;
+
+--echo connection default;
+connection default;
+
+drop user pfsuser@localhost;
+flush privileges;
+
diff --git a/mysql-test/suite/perfschema/t/information_schema.test b/mysql-test/suite/perfschema/t/information_schema.test
new file mode 100644
index 00000000000..3d2822a1db3
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/information_schema.test
@@ -0,0 +1,67 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+# Several selects so the output is readable
+
+# Note that TABLE_NAME is in uppercase is some platforms,
+# and in lowercase in others.
+# Using upper(TABLE_NAME) to have consistent results.
+
+select TABLE_SCHEMA, upper(TABLE_NAME), TABLE_CATALOG
+ from information_schema.tables
+ where TABLE_SCHEMA='performance_schema';
+
+select upper(TABLE_NAME), TABLE_TYPE, ENGINE
+ from information_schema.tables
+ where TABLE_SCHEMA='performance_schema';
+
+select upper(TABLE_NAME), VERSION, ROW_FORMAT
+ from information_schema.tables
+ where TABLE_SCHEMA='performance_schema';
+
+select upper(TABLE_NAME), TABLE_ROWS, AVG_ROW_LENGTH
+ from information_schema.tables
+ where TABLE_SCHEMA='performance_schema';
+
+select upper(TABLE_NAME), DATA_LENGTH, MAX_DATA_LENGTH
+ from information_schema.tables
+ where TABLE_SCHEMA='performance_schema';
+
+select upper(TABLE_NAME), INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT
+ from information_schema.tables
+ where TABLE_SCHEMA='performance_schema';
+
+select upper(TABLE_NAME), CREATE_TIME, UPDATE_TIME, CHECK_TIME
+ from information_schema.tables
+ where TABLE_SCHEMA='performance_schema';
+
+select upper(TABLE_NAME), TABLE_COLLATION, CHECKSUM
+ from information_schema.tables
+ where TABLE_SCHEMA='performance_schema';
+
+# TABLESPACE_NAME does not exist in 5.4
+# select upper(TABLE_NAME), CREATE_OPTIONS, TABLESPACE_NAME
+# from information_schema.tables
+# where TABLE_SCHEMA='performance_schema';
+
+select upper(TABLE_NAME), TABLE_COMMENT
+ from information_schema.tables
+ where TABLE_SCHEMA='performance_schema';
+
diff --git a/mysql-test/suite/perfschema/t/misc.test b/mysql-test/suite/perfschema/t/misc.test
new file mode 100644
index 00000000000..d9b97d8441e
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/misc.test
@@ -0,0 +1,57 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+# Miscelaneous
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Bug#45496 Performance schema: assertion fails in
+# ha_perfschema::rnd_init:223
+#
+
+--disable_result_log
+SELECT EVENT_ID FROM performance_schema.EVENTS_WAITS_CURRENT
+WHERE THREAD_ID IN
+ (SELECT THREAD_ID FROM performance_schema.PROCESSLIST)
+AND EVENT_NAME IN
+ (SELECT NAME FROM performance_schema.SETUP_INSTRUMENTS
+ WHERE NAME LIKE "wait/synch/%")
+LIMIT 1;
+--enable_result_log
+
+#
+# Bug#45088 Should not be able to create tables of engine PERFORMANCE_SCHEMA
+#
+
+--error ER_WRONG_PERFSCHEMA_USAGE
+create table test.t1(a int) engine=performance_schema;
+
+#
+# Bug#44897 Performance Schema: can create a ghost table in another database
+#
+
+--error ER_WRONG_PERFSCHEMA_USAGE
+create table test.t1 like performance_schema.EVENTS_WAITS_CURRENT;
+
+#
+# Bug#44898 PerformanceSchema: can create a table in db performance_schema, cannot insert
+#
+
+--error ER_TABLEACCESS_DENIED_ERROR
+create table performance_schema.t1(a int);
+
diff --git a/mysql-test/suite/perfschema/t/myisam_file_io.opt b/mysql-test/suite/perfschema/t/myisam_file_io.opt
new file mode 100644
index 00000000000..f2e233bd4ab
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/myisam_file_io.opt
@@ -0,0 +1 @@
+--performance_schema_events_waits_history_long_size=5000
diff --git a/mysql-test/suite/perfschema/t/myisam_file_io.test b/mysql-test/suite/perfschema/t/myisam_file_io.test
new file mode 100644
index 00000000000..53d2ea6dbe6
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/myisam_file_io.test
@@ -0,0 +1,63 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+# Setup
+
+update performance_schema.SETUP_INSTRUMENTS set enabled='NO';
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES'
+ where name like "wait/io/file/myisam/%";
+
+update performance_schema.SETUP_CONSUMERS
+ set enabled='YES';
+
+truncate table performance_schema.EVENTS_WAITS_HISTORY_LONG;
+
+# Code to test
+
+--disable_warnings
+drop table if exists test.no_index_tab;
+--enable_warnings
+
+create table test.no_index_tab ( a varchar(255), b int ) engine=myisam;
+insert into no_index_tab set a = 'foo', b = 1;
+insert into no_index_tab set a = 'foo', b = 1;
+insert into no_index_tab set a = 'foo', b = 1;
+
+# Verification
+# Note that mi_create.c contains mysql_file_tell() calls in debug only,
+# so the result are filtered to remove 'tell'.
+
+select event_name,
+ left(source, locate(":", source)) as short_source,
+ operation, number_of_bytes,
+ substring(object_name, locate("no_index_tab", object_name)) as short_name
+ from performance_schema.EVENTS_WAITS_HISTORY_LONG
+ where operation not like "tell"
+ order by thread_id, event_id;
+
+# In case of failures, this will tell if file io are lost.
+show status like 'performance_schema_%';
+
+# Cleanup
+
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES';
+
+drop table test.no_index_tab;
+
diff --git a/mysql-test/suite/perfschema/t/no_threads-master.opt b/mysql-test/suite/perfschema/t/no_threads-master.opt
new file mode 100644
index 00000000000..b15ab02821d
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/no_threads-master.opt
@@ -0,0 +1 @@
+--one-thread --thread-handling=no-threads --loose-performance-schema-max-thread_instances=10
diff --git a/mysql-test/suite/perfschema/t/no_threads.test b/mysql-test/suite/perfschema/t/no_threads.test
new file mode 100644
index 00000000000..3d3f712e364
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/no_threads.test
@@ -0,0 +1,69 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+
+# Setup : in this main thread
+
+update performance_schema.SETUP_INSTRUMENTS set enabled='NO';
+update performance_schema.SETUP_CONSUMERS set enabled='YES';
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES'
+ where name like "wait/synch/mutex/mysys/THR_LOCK_myisam";
+
+--disable_warnings
+drop table if exists test.t1;
+--enable_warnings
+
+truncate table performance_schema.EVENTS_WAITS_CURRENT;
+truncate table performance_schema.EVENTS_WAITS_HISTORY;
+truncate table performance_schema.EVENTS_WAITS_HISTORY_LONG;
+
+show variables like "thread_handling";
+
+# Code to test : in this main thread
+
+create table test.t1(a int) engine=MYISAM;
+
+show variables like "performance_schema";
+show variables like "performance_schema_max_thread%";
+
+# Verification : in this main thread
+
+select count(*) from performance_schema.PROCESSLIST
+ where name like "thread/sql/main";
+
+select count(*) from performance_schema.PROCESSLIST
+ where name like "thread/sql/OneConnection";
+
+select event_name, operation,
+ left(source, locate(":", source)) as short_source
+ from performance_schema.EVENTS_WAITS_CURRENT;
+
+select event_name, operation,
+ left(source, locate(":", source)) as short_source
+ from performance_schema.EVENTS_WAITS_HISTORY;
+
+select event_name, operation,
+ left(source, locate(":", source)) as short_source
+ from performance_schema.EVENTS_WAITS_HISTORY_LONG;
+
+# Cleanup
+
+drop table test.t1;
+
diff --git a/mysql-test/suite/perfschema/t/one_thread_per_con-master.opt b/mysql-test/suite/perfschema/t/one_thread_per_con-master.opt
new file mode 100644
index 00000000000..d6685208673
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/one_thread_per_con-master.opt
@@ -0,0 +1 @@
+--thread_handling=one-thread-per-connection
diff --git a/mysql-test/suite/perfschema/t/one_thread_per_con.test b/mysql-test/suite/perfschema/t/one_thread_per_con.test
new file mode 100644
index 00000000000..7d0daffe228
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/one_thread_per_con.test
@@ -0,0 +1,94 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+# Setup
+
+--source ../include/setup_helper.inc
+
+# We use a myisam table here because CREATE TABLE has a known,
+# stable behavior (it will lock THR_LOCK_myisam once).
+# The point is not to test myisam, but to test that each
+# connection is properly instrumented, with one-thread-per-connection
+
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES'
+ where name like "wait/synch/mutex/mysys/THR_LOCK_myisam";
+
+--disable_warnings
+drop table if exists test.t1;
+drop table if exists test.t2;
+drop table if exists test.t3;
+--enable_warnings
+
+truncate table performance_schema.EVENTS_WAITS_HISTORY_LONG;
+
+show variables like "thread_handling";
+
+# Code to test
+
+connection con1;
+
+-- echo "----------------- Connection 1"
+create table test.t1(a int) engine=MYISAM;
+
+connection con2;
+
+-- echo "----------------- Connection 2"
+create table test.t2(a int) engine=MYISAM;
+
+connection con3;
+
+-- echo "----------------- Connection 3"
+create table test.t3(a int) engine=MYISAM;
+
+# Verification
+
+connection default;
+
+-- echo "----------------- Connection default"
+
+--disable_query_log
+eval set @tid= $con1_THREAD_ID;
+--enable_query_log
+
+execute stmt_dump_events using @tid;
+execute stmt_dump_thread using @tid;
+
+--disable_query_log
+eval set @tid= $con2_THREAD_ID;
+--enable_query_log
+
+execute stmt_dump_events using @tid;
+execute stmt_dump_thread using @tid;
+
+--disable_query_log
+eval set @tid= $con3_THREAD_ID;
+--enable_query_log
+
+execute stmt_dump_events using @tid;
+execute stmt_dump_thread using @tid;
+
+# Cleanup
+
+drop table test.t1;
+drop table test.t2;
+drop table test.t3;
+
+--source ../include/cleanup_helper.inc
+
diff --git a/mysql-test/suite/perfschema/t/pool_of_threads-master.opt b/mysql-test/suite/perfschema/t/pool_of_threads-master.opt
new file mode 100644
index 00000000000..75a5cd77203
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/pool_of_threads-master.opt
@@ -0,0 +1 @@
+--loose-pool-of-threads
diff --git a/mysql-test/suite/perfschema/t/privilege.test b/mysql-test/suite/perfschema/t/privilege.test
new file mode 100644
index 00000000000..d2f3c2a9e6b
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/privilege.test
@@ -0,0 +1,362 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+show grants;
+
+grant ALL on *.* to 'pfs_user_1'@localhost with GRANT OPTION;
+
+# Test denied privileges on performance_schema.*
+
+--error ER_DBACCESS_DENIED_ERROR
+grant ALL on performance_schema.* to 'pfs_user_2'@localhost
+ with GRANT OPTION;
+
+# will be ER_DBACCESS_DENIED_ERROR once .FRM are removed
+grant CREATE on performance_schema.* to 'pfs_user_2'@localhost;
+
+# will be ER_DBACCESS_DENIED_ERROR once .FRM are removed
+grant DROP on performance_schema.* to 'pfs_user_2'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant REFERENCES on performance_schema.* to 'pfs_user_2'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant INDEX on performance_schema.* to 'pfs_user_2'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant ALTER on performance_schema.* to 'pfs_user_2'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant CREATE TEMPORARY TABLES on performance_schema.* to 'pfs_user_2'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant EXECUTE on performance_schema.* to 'pfs_user_2'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant CREATE VIEW on performance_schema.* to 'pfs_user_2'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant SHOW VIEW on performance_schema.* to 'pfs_user_2'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant CREATE ROUTINE on performance_schema.* to 'pfs_user_2'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant ALTER ROUTINE on performance_schema.* to 'pfs_user_2'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant EVENT on performance_schema.* to 'pfs_user_2'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant TRIGGER on performance_schema.* to 'pfs_user_2'@localhost;
+
+# Test allowed privileges on performance_schema.*
+
+grant SELECT on performance_schema.* to 'pfs_user_2'@localhost;
+grant INSERT on performance_schema.* to 'pfs_user_2'@localhost;
+grant UPDATE on performance_schema.* to 'pfs_user_2'@localhost;
+grant DELETE on performance_schema.* to 'pfs_user_2'@localhost;
+grant LOCK TABLES on performance_schema.* to 'pfs_user_2'@localhost;
+
+# Test denied privileges on specific performance_schema tables.
+# SETUP_INSTRUMENT : example of PFS_updatable_acl
+# EVENTS_WAITS_CURRENT : example of PFS_truncatable_acl
+# FILE_INSTANCES : example of PFS_readonly_acl
+
+--error ER_DBACCESS_DENIED_ERROR
+grant ALL on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost
+ with GRANT OPTION;
+
+# will be ER_DBACCESS_DENIED_ERROR once .FRM are removed
+grant CREATE on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+
+# will be ER_DBACCESS_DENIED_ERROR once .FRM are removed
+grant DROP on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant REFERENCES on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant INDEX on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant ALTER on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant CREATE VIEW on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant SHOW VIEW on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant TRIGGER on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+
+--replace_result '\'setup_instruments' '\'SETUP_INSTRUMENTS'
+--error ER_TABLEACCESS_DENIED_ERROR
+grant INSERT on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+
+--replace_result '\'setup_instruments' '\'SETUP_INSTRUMENTS'
+--error ER_TABLEACCESS_DENIED_ERROR
+grant DELETE on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost;
+
+grant SELECT on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost
+ with GRANT OPTION;
+
+grant UPDATE on performance_schema.SETUP_INSTRUMENTS to 'pfs_user_3'@localhost
+ with GRANT OPTION;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant ALL on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost
+ with GRANT OPTION;
+
+# will be ER_DBACCESS_DENIED_ERROR once .FRM are removed
+grant CREATE on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+
+# will be ER_DBACCESS_DENIED_ERROR once .FRM are removed
+grant DROP on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant REFERENCES on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant INDEX on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant ALTER on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant CREATE VIEW on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant SHOW VIEW on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant TRIGGER on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+
+--replace_result '\'events_waits_current' '\'EVENTS_WAITS_CURRENT'
+--error ER_TABLEACCESS_DENIED_ERROR
+grant INSERT on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+
+--replace_result '\'events_waits_current' '\'EVENTS_WAITS_CURRENT'
+--error ER_TABLEACCESS_DENIED_ERROR
+grant UPDATE on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+
+--replace_result '\'events_waits_current' '\'EVENTS_WAITS_CURRENT'
+--error ER_TABLEACCESS_DENIED_ERROR
+grant DELETE on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost;
+
+grant SELECT on performance_schema.EVENTS_WAITS_CURRENT to 'pfs_user_3'@localhost
+ with GRANT OPTION;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant ALL on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost
+ with GRANT OPTION;
+
+# will be ER_DBACCESS_DENIED_ERROR once .FRM are removed
+grant CREATE on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+
+# will be ER_DBACCESS_DENIED_ERROR once .FRM are removed
+grant DROP on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant REFERENCES on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant INDEX on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant ALTER on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant CREATE VIEW on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant SHOW VIEW on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+
+--error ER_DBACCESS_DENIED_ERROR
+grant TRIGGER on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+
+--replace_result '\'file_instances' '\'FILE_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+grant INSERT on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+
+--replace_result '\'file_instances' '\'FILE_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+grant UPDATE on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+
+--replace_result '\'file_instances' '\'FILE_INSTANCES'
+--error ER_TABLEACCESS_DENIED_ERROR
+grant DELETE on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost;
+
+grant SELECT on performance_schema.FILE_INSTANCES to 'pfs_user_3'@localhost
+ with GRANT OPTION;
+
+# See bug#45354 LOCK TABLES is not a TABLE privilege
+grant LOCK TABLES on performance_schema.* to 'pfs_user_3'@localhost
+ with GRANT OPTION;
+
+flush privileges;
+
+--source ../include/privilege.inc
+
+connect (con1, localhost, pfs_user_1, , );
+
+--source ../include/privilege.inc
+
+--disconnect con1
+
+connect (con2, localhost, pfs_user_2, , );
+
+--source ../include/privilege.inc
+
+--disconnect con2
+
+connect (con3, localhost, pfs_user_3, , );
+
+--source ../include/privilege.inc
+
+--disconnect con3
+
+--connection default
+
+revoke all privileges, grant option from 'pfs_user_1'@localhost;
+revoke all privileges, grant option from 'pfs_user_2'@localhost;
+revoke all privileges, grant option from 'pfs_user_3'@localhost;
+drop user 'pfs_user_1'@localhost;
+drop user 'pfs_user_2'@localhost;
+drop user 'pfs_user_3'@localhost;
+flush privileges;
+
+--echo # Test cases from WL#4818
+--echo # Setup user
+
+CREATE user pfs_user_4;
+--connect (pfs_user_4, localhost, pfs_user_4, , )
+
+--echo #
+--echo # WL#4818, NFS4: Normal user does not have access to view data
+--echo # without grants
+--echo #
+
+--connection pfs_user_4
+--echo # Select as pfs_user_4 should fail without grant
+
+--replace_result '\'events_waits_history' '\'EVENTS_WAITS_HISTORY'
+--error ER_TABLEACCESS_DENIED_ERROR
+SELECT event_id FROM performance_schema.EVENTS_WAITS_HISTORY;
+
+--replace_result '\'events_waits_history_long' '\'EVENTS_WAITS_HISTORY_LONG'
+--error ER_TABLEACCESS_DENIED_ERROR
+SELECT event_id FROM performance_schema.EVENTS_WAITS_HISTORY_LONG;
+
+--replace_result '\'events_waits_current' '\'EVENTS_WAITS_CURRENT'
+--error ER_TABLEACCESS_DENIED_ERROR
+SELECT event_id FROM performance_schema.EVENTS_WAITS_CURRENT;
+
+--replace_result '\'events_waits_summary_by_instance' '\'EVENTS_WAITS_SUMMARY_BY_INSTANCE'
+--error ER_TABLEACCESS_DENIED_ERROR
+SELECT event_name FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+
+--replace_result '\'file_summary_by_instance' '\'FILE_SUMMARY_BY_INSTANCE'
+--error ER_TABLEACCESS_DENIED_ERROR
+SELECT event_name FROM performance_schema.FILE_SUMMARY_BY_INSTANCE;
+
+--echo #
+--echo # WL#4818, NFS3: Normal user does not have access to change what is
+--echo # instrumented without grants
+--echo #
+
+--connection pfs_user_4
+--echo # User pfs_user_4 should not be allowed to tweak instrumentation without
+--echo # explicit grant
+
+--replace_result '\'setup_instruments' '\'SETUP_INSTRUMENTS'
+--error ER_TABLEACCESS_DENIED_ERROR
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'NO', timed = 'YES';
+
+--replace_result '\'setup_instruments' '\'SETUP_INSTRUMENTS'
+--error ER_TABLEACCESS_DENIED_ERROR
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'YES'
+WHERE name LIKE 'wait/synch/mutex/%'
+ OR name LIKE 'wait/synch/rwlock/%';
+
+--replace_result '\'setup_consumers' '\'SETUP_CONSUMERS'
+--error ER_TABLEACCESS_DENIED_ERROR
+UPDATE performance_schema.SETUP_CONSUMERS SET enabled = 'YES';
+
+--replace_result '\'setup_timers' '\'SETUP_TIMERS'
+--error ER_TABLEACCESS_DENIED_ERROR
+UPDATE performance_schema.SETUP_TIMERS SET timer_name = 'TICK';
+
+--replace_result '\'events_waits_history_long' '\'EVENTS_WAITS_HISTORY_LONG'
+--error ER_TABLEACCESS_DENIED_ERROR
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY_LONG;
+
+--replace_result '\'events_waits_history' '\'EVENTS_WAITS_HISTORY'
+--error ER_TABLEACCESS_DENIED_ERROR
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY;
+
+--replace_result '\'events_waits_current' '\'EVENTS_WAITS_CURRENT'
+--error ER_TABLEACCESS_DENIED_ERROR
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_CURRENT;
+
+--echo #
+--echo # WL#4814, NFS1: Can use grants to give normal user access
+--echo # to turn on and off instrumentation
+--echo #
+
+--connection default
+--echo # Grant access to change tables with the root account
+
+GRANT UPDATE ON performance_schema.SETUP_CONSUMERS TO pfs_user_4;
+GRANT UPDATE ON performance_schema.SETUP_TIMERS TO pfs_user_4;
+GRANT UPDATE, SELECT ON performance_schema.SETUP_INSTRUMENTS TO pfs_user_4;
+GRANT DROP ON performance_schema.EVENTS_WAITS_CURRENT TO pfs_user_4;
+GRANT DROP ON performance_schema.EVENTS_WAITS_HISTORY TO pfs_user_4;
+GRANT DROP ON performance_schema.EVENTS_WAITS_HISTORY_LONG TO pfs_user_4;
+
+--connection pfs_user_4
+--echo # User pfs_user_4 should now be allowed to tweak instrumentation
+
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'NO', timed = 'YES';
+
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'YES'
+WHERE name LIKE 'wait/synch/mutex/%'
+ OR name LIKE 'wait/synch/rwlock/%';
+
+UPDATE performance_schema.SETUP_CONSUMERS SET enabled = 'YES';
+
+UPDATE performance_schema.SETUP_TIMERS SET timer_name = 'TICK';
+
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY_LONG;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY;
+TRUNCATE TABLE performance_schema.EVENTS_WAITS_CURRENT;
+
+--echo # Clean up
+
+--connection default
+--disconnect pfs_user_4
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM pfs_user_4;
+DROP USER pfs_user_4;
+flush privileges;
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'YES', timed = 'YES';
+UPDATE performance_schema.SETUP_CONSUMERS SET enabled = 'YES';
+UPDATE performance_schema.SETUP_TIMERS SET timer_name = 'CYCLE';
+
diff --git a/mysql-test/suite/perfschema/t/query_cache.test b/mysql-test/suite/perfschema/t/query_cache.test
new file mode 100644
index 00000000000..a50b3b99650
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/query_cache.test
@@ -0,0 +1,68 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+# This test verifies that performance schema tables, because they contain
+# data that is volatile, are never cached in the query cache.
+
+--source include/have_query_cache.inc
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+
+create table t1 (a int not null);
+insert into t1 values (1), (2), (3);
+
+SET GLOBAL query_cache_size=1355776;
+
+flush query cache;
+reset query cache;
+
+select * from t1;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+select * from t1;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+select spins from performance_schema.EVENTS_WAITS_CURRENT order by event_name limit 1;
+
+select name from performance_schema.SETUP_INSTRUMENTS order by name limit 1;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+select spins from performance_schema.EVENTS_WAITS_CURRENT order by event_name limit 1;
+
+select name from performance_schema.SETUP_INSTRUMENTS order by name limit 1;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+SET GLOBAL query_cache_size= default;
+
+drop table t1;
+
diff --git a/mysql-test/suite/perfschema/t/read_only.test b/mysql-test/suite/perfschema/t/read_only.test
new file mode 100644
index 00000000000..62631fa048f
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/read_only.test
@@ -0,0 +1,96 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+#
+# Check that
+# - a regular user can not update SETUP_ tables under --read-only
+# - a user with SUPER privileges cam
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+use performance_schema;
+
+set @start_read_only= @@global.read_only;
+
+grant SELECT, UPDATE on performance_schema.* to pfsuser@localhost;
+flush privileges;
+
+--echo connect (con1, localhost, pfsuser, , test);
+connect (con1, localhost, pfsuser, , test);
+
+--echo connection default;
+connection default;
+
+set global read_only=0;
+
+--echo connection con1;
+connection con1;
+
+select @@global.read_only;
+show grants;
+--disable_result_log
+select * from performance_schema.SETUP_INSTRUMENTS;
+update performance_schema.SETUP_INSTRUMENTS set enabled='NO';
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES';
+--enable_result_log
+
+--echo connection default;
+connection default;
+
+set global read_only=1;
+
+--echo connection con1;
+connection con1;
+
+select @@global.read_only;
+show grants;
+--disable_result_log
+select * from performance_schema.SETUP_INSTRUMENTS;
+--error ER_OPTION_PREVENTS_STATEMENT
+update performance_schema.SETUP_INSTRUMENTS set enabled='NO';
+--error ER_OPTION_PREVENTS_STATEMENT
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES';
+--enable_result_log
+
+--echo connection default;
+connection default;
+
+grant super on *.* to pfsuser@localhost;
+flush privileges;
+
+disconnect con1;
+--echo connect (con1, localhost, pfsuser, , test);
+connect (con1, localhost, pfsuser, , test);
+
+select @@global.read_only;
+show grants;
+--disable_result_log
+select * from performance_schema.SETUP_INSTRUMENTS;
+update performance_schema.SETUP_INSTRUMENTS set enabled='NO';
+update performance_schema.SETUP_INSTRUMENTS set enabled='YES';
+--enable_result_log
+
+disconnect con1;
+
+--echo connection default;
+connection default;
+
+set global read_only= @start_read_only;
+
+drop user pfsuser@localhost;
+flush privileges;
+
diff --git a/mysql-test/suite/perfschema/t/schema.test b/mysql-test/suite/perfschema/t/schema.test
new file mode 100644
index 00000000000..d13c399a97b
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/schema.test
@@ -0,0 +1,46 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+--source include/have_lowercase0.inc
+
+show databases;
+
+use performance_schema;
+
+show tables;
+
+show create table COND_INSTANCES;
+show create table EVENTS_WAITS_CURRENT;
+show create table EVENTS_WAITS_HISTORY;
+show create table EVENTS_WAITS_HISTORY_LONG;
+show create table EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
+show create table EVENTS_WAITS_SUMMARY_BY_INSTANCE;
+show create table EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
+show create table FILE_INSTANCES;
+show create table FILE_SUMMARY_BY_EVENT_NAME;
+show create table FILE_SUMMARY_BY_INSTANCE;
+show create table MUTEX_INSTANCES;
+show create table PERFORMANCE_TIMERS;
+show create table PROCESSLIST;
+show create table RWLOCK_INSTANCES;
+show create table SETUP_CONSUMERS;
+show create table SETUP_INSTRUMENTS;
+show create table SETUP_OBJECTS;
+show create table SETUP_TIMERS;
+
diff --git a/mysql-test/suite/perfschema/t/selects.test b/mysql-test/suite/perfschema/t/selects.test
new file mode 100644
index 00000000000..d5268e8465c
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/selects.test
@@ -0,0 +1,156 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# WL#4814, 4.1.2 STORAGE ENGINE, FSE8: Selects
+#
+
+# Make some data that we can work on:
+
+UPDATE performance_schema.SETUP_INSTRUMENTS SET enabled = 'YES', timed = 'YES';
+
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+CREATE TABLE t1 (id INT PRIMARY KEY, b CHAR(100) DEFAULT 'initial value')
+ENGINE=MyISAM;
+INSERT INTO t1 (id) VALUES (1), (2), (3), (4), (5), (6), (7), (8);
+
+# ORDER BY, GROUP BY and HAVING
+
+--replace_column 2 [NUM_BYTES]
+SELECT OPERATION, SUM(NUMBER_OF_BYTES) AS TOTAL
+FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+GROUP BY OPERATION
+HAVING TOTAL IS NOT NULL
+ORDER BY OPERATION
+LIMIT 1;
+
+# Sub SELECT
+--replace_column 1 [EVENT_ID]
+SELECT EVENT_ID FROM performance_schema.EVENTS_WAITS_CURRENT
+WHERE THREAD_ID IN
+ (SELECT THREAD_ID FROM performance_schema.PROCESSLIST)
+AND EVENT_NAME IN
+ (SELECT NAME FROM performance_schema.SETUP_INSTRUMENTS
+ WHERE NAME LIKE "wait/synch/%")
+LIMIT 1;
+
+# JOIN
+
+--replace_column 1 [EVENT_ID]
+SELECT DISTINCT EVENT_ID
+FROM performance_schema.EVENTS_WAITS_CURRENT
+JOIN performance_schema.EVENTS_WAITS_HISTORY USING (EVENT_ID)
+JOIN performance_schema.EVENTS_WAITS_HISTORY_LONG USING (EVENT_ID)
+ORDER BY EVENT_ID
+LIMIT 1;
+
+# Self JOIN
+
+--replace_column 1 [THREAD_ID] 2 [EVENT_ID] 3 [EVENT_NAME] 4 [TIMER_WAIT]
+SELECT t1.THREAD_ID, t2.EVENT_ID, t3.EVENT_NAME, t4.TIMER_WAIT
+FROM performance_schema.EVENTS_WAITS_HISTORY t1
+JOIN performance_schema.EVENTS_WAITS_HISTORY t2 USING (EVENT_ID)
+JOIN performance_schema.EVENTS_WAITS_HISTORY t3 ON (t2.THREAD_ID = t3.THREAD_ID)
+JOIN performance_schema.EVENTS_WAITS_HISTORY t4 ON (t3.EVENT_NAME = t4.EVENT_NAME)
+ORDER BY t1.EVENT_ID, t2.EVENT_ID
+LIMIT 5;
+
+# UNION
+--replace_column 1 [THREAD_ID] 2 [EVENT_ID]
+SELECT THREAD_ID, EVENT_ID FROM (
+SELECT THREAD_ID, EVENT_ID FROM performance_schema.EVENTS_WAITS_CURRENT
+UNION
+SELECT THREAD_ID, EVENT_ID FROM performance_schema.EVENTS_WAITS_HISTORY
+UNION
+SELECT THREAD_ID, EVENT_ID FROM performance_schema.EVENTS_WAITS_HISTORY_LONG
+) t1 ORDER BY THREAD_ID, EVENT_ID
+LIMIT 5;
+
+# EVENT
+
+CREATE EVENT t_ps_event
+ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 SECOND
+DO SELECT DISTINCT EVENT_ID
+ FROM performance_schema.EVENTS_WAITS_CURRENT
+ JOIN performance_schema.EVENTS_WAITS_HISTORY USING (EVENT_ID)
+ ORDER BY EVENT_ID
+ LIMIT 1;
+
+--sleep 2
+
+# TRIGGER
+
+ALTER TABLE t1 ADD COLUMN c INT;
+
+delimiter |;
+
+CREATE TRIGGER t_ps_trigger BEFORE INSERT ON t1
+ FOR EACH ROW BEGIN
+ SET NEW.c = (SELECT MAX(EVENT_ID)
+ FROM performance_schema.EVENTS_WAITS_CURRENT);
+ END;
+|
+
+delimiter ;|
+
+INSERT INTO t1 (id) VALUES (11), (12), (13);
+
+--replace_column 2 [EVENT_ID]
+SELECT id, c FROM t1 WHERE id > 10 ORDER BY c;
+
+DROP TRIGGER t_ps_trigger;
+
+# PROCEDURE
+
+delimiter |;
+
+CREATE PROCEDURE t_ps_proc(IN tid INT, OUT pid INT)
+BEGIN
+ SELECT id FROM performance_schema.PROCESSLIST
+ WHERE THREAD_ID = tid INTO pid;
+END;
+
+|
+
+delimiter ;|
+
+CALL t_ps_proc(0, @p_id);
+
+# FUNCTION
+
+delimiter |;
+
+CREATE FUNCTION t_ps_func(tid INT) RETURNS int
+BEGIN
+ return (SELECT id FROM performance_schema.PROCESSLIST
+ WHERE THREAD_ID = tid);
+END;
+
+|
+
+delimiter ;|
+
+SELECT t_ps_func(0) = @p_id;
+
+DROP PROCEDURE t_ps_proc;
+DROP FUNCTION t_ps_func;
+
+# Clean up
+DROP TABLE t1;
diff --git a/mysql-test/suite/perfschema/t/server_init.test b/mysql-test/suite/perfschema/t/server_init.test
new file mode 100644
index 00000000000..cd9357cce67
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/server_init.test
@@ -0,0 +1,263 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+# This test verifies that the mysys and server instruments are properly
+# initialized and recorded by the performance schema during the bootstrap
+# sequence in mysqld main().
+# Note that some globals mutexes/rwlocks/conds that depend on #ifdef options
+# or runtime options are not tested here, to have a predictable result.
+
+use performance_schema;
+
+# Verify that these global mutexes have been properly initilized in mysys
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/mysys/THR_LOCK_threads";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/mysys/THR_LOCK_malloc";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/mysys/THR_LOCK_open";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/mysys/THR_LOCK_isam";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/mysys/THR_LOCK_myisam";
+
+# Does not exist in mysql 5.5, 6.0 only
+# select count(name) from MUTEX_INSTANCES
+# where name like "wait/synch/mutex/mysys/THR_LOCK_myisam_log";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/mysys/THR_LOCK_heap";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/mysys/THR_LOCK_net";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/mysys/THR_LOCK_charset";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/mysys/THR_LOCK_time";
+
+# There are no global rwlock in mysys
+
+# Verify that these global conditions have been properly initilized in mysys
+
+select count(name) from COND_INSTANCES
+ where name like "wait/synch/cond/mysys/THR_COND_threads";
+
+# Verify that these global mutexes have been properly initilized in sql
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_mysql_create_db";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_open";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_lock_db";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_thread_count";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_mapped_file";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_status";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_error_log";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_delayed_insert";
+
+# Named LOCK_uuid_short in 6.0 only
+# select count(name) from MUTEX_INSTANCES
+# where name like "wait/synch/mutex/sql/LOCK_uuid_short";
+
+# Named LOCK_uuid_generator in 5.5, LOCK_uuid_short in 6.0
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_uuid_generator";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_delayed_status";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_delayed_create";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_crypt";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_slave_list";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_active_mi";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_manager";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_global_read_lock";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_global_system_variables";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_user_conn";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_prepared_stmt_count";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_connection_count";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_server_started";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_rpl_status";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOG_INFO::lock";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/Query_cache::structure_guard_mutex";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/Event_scheduler::LOCK_scheduler_state";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_event_metadata";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_event_queue";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_user_locks";
+
+# Does not exist in mysql 5.5, 6.0 only
+# select count(name) from MUTEX_INSTANCES
+# where name like "wait/synch/mutex/sql/LOCK_mdl";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/Cversion_lock";
+
+# Does not exist in mysql 5.5, 6.0 only
+# select count(name) from MUTEX_INSTANCES
+# where name like "wait/synch/mutex/sql/LOCK_audit_mask";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_xid_cache";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_plugin";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/LOCK_gdl";
+
+select count(name) from MUTEX_INSTANCES
+ where name like "wait/synch/mutex/sql/tz_LOCK";
+
+# Does not exist in mysql 5.5, 6.0 only
+# select count(name) from MUTEX_INSTANCES
+# where name like "wait/synch/mutex/sql/slave_start";
+
+# Does not exist in mysql 5.5, 6.0 only
+# select count(name) from MUTEX_INSTANCES
+# where name like "wait/synch/mutex/sql/BML_class::THR_LOCK_BML";
+
+# Does not exist in mysql 5.5, 6.0 only
+# select count(name) from MUTEX_INSTANCES
+# where name like "wait/synch/mutex/sql/BML_class::THR_LOCK_BML_active";
+
+# Does not exist in mysql 5.5, 6.0 only
+# select count(name) from MUTEX_INSTANCES
+# where name like "wait/synch/mutex/sql/BML_class::THR_LOCK_BML_get";
+
+# Verify that these global rwlocks have been properly initilized in sql
+
+select count(name) from RWLOCK_INSTANCES
+ where name like "wait/synch/rwlock/sql/LOCK_grant";
+
+select count(name) from RWLOCK_INSTANCES
+ where name like "wait/synch/rwlock/sql/LOCK_sys_init_connect";
+
+select count(name) from RWLOCK_INSTANCES
+ where name like "wait/synch/rwlock/sql/LOCK_sys_init_slave";
+
+select count(name) from RWLOCK_INSTANCES
+ where name like "wait/synch/rwlock/sql/LOCK_system_variables_hash";
+
+# Verify that these global conditions have been properly initilized in sql
+
+select count(name) from COND_INSTANCES
+ where name like "wait/synch/cond/sql/COND_server_started";
+
+select count(name) from COND_INSTANCES
+ where name like "wait/synch/cond/sql/COND_refresh";
+
+select count(name) from COND_INSTANCES
+ where name like "wait/synch/cond/sql/COND_thread_count";
+
+select count(name) from COND_INSTANCES
+ where name like "wait/synch/cond/sql/COND_manager";
+
+select count(name) from COND_INSTANCES
+ where name like "wait/synch/cond/sql/COND_global_read_lock";
+
+select count(name) from COND_INSTANCES
+ where name like "wait/synch/cond/sql/COND_thread_cache";
+
+select count(name) from COND_INSTANCES
+ where name like "wait/synch/cond/sql/COND_flush_thread_cache";
+
+select count(name) from COND_INSTANCES
+ where name like "wait/synch/cond/sql/COND_rpl_status";
+
+select count(name) from COND_INSTANCES
+ where name like "wait/synch/cond/sql/Query_cache::COND_cache_status_changed";
+
+select count(name) from COND_INSTANCES
+ where name like "wait/synch/cond/sql/Event_scheduler::COND_state";
+
+select count(name) from COND_INSTANCES
+ where name like "wait/synch/cond/sql/COND_queue_state";
+
+# Does not exist in mysql 5.5, 6.0 only
+# select count(name) from COND_INSTANCES
+# where name like "wait/synch/cond/sql/COND_mdl";
+
+# Does not exist in mysql 5.5, 6.0 only
+# select count(name) from COND_INSTANCES
+# where name like "wait/synch/cond/sql/BML_class::COND_BML";
+
+# Does not exist in mysql 5.5, 6.0 only
+# select count(name) from COND_INSTANCES
+# where name like "wait/synch/cond/sql/BML_class::COND_BML_registered";
+
+# Does not exist in mysql 5.5, 6.0 only
+# select count(name) from COND_INSTANCES
+# where name like "wait/synch/cond/sql/BML_class::COND_BML_release";
+
diff --git a/mysql-test/suite/perfschema/t/start_server_no_cond_class-master.opt b/mysql-test/suite/perfschema/t/start_server_no_cond_class-master.opt
new file mode 100644
index 00000000000..714888a6de1
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_cond_class-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance_schema_max_cond_classes=0
diff --git a/mysql-test/suite/perfschema/t/start_server_no_cond_class.test b/mysql-test/suite/perfschema/t/start_server_no_cond_class.test
new file mode 100644
index 00000000000..34ff61c358e
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_cond_class.test
@@ -0,0 +1,38 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--source ../include/start_server_common.inc
+
+# Expect no classes
+show variables like "performance_schema_max_cond_classes";
+
+select count(*) from performance_schema.SETUP_INSTRUMENTS
+ where name like "wait/synch/cond/%";
+
+# We lost all the classes
+select variable_value > 0 from information_schema.global_status
+ where variable_name like 'PERFORMANCE_SCHEMA_COND_CLASSES_LOST';
+
+# Expect no instances
+select count(*) from performance_schema.COND_INSTANCES;
+
+# Expect no instances lost
+show status like "performance_schema_cond_instances_lost";
+
diff --git a/mysql-test/suite/perfschema/t/start_server_no_cond_inst-master.opt b/mysql-test/suite/perfschema/t/start_server_no_cond_inst-master.opt
new file mode 100644
index 00000000000..4b33152f89a
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_cond_inst-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance_schema_max_cond_instances=0
diff --git a/mysql-test/suite/perfschema/t/start_server_no_cond_inst.test b/mysql-test/suite/perfschema/t/start_server_no_cond_inst.test
new file mode 100644
index 00000000000..fe2177adb82
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_cond_inst.test
@@ -0,0 +1,41 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--source ../include/start_server_common.inc
+
+# Expect classes
+show variables like "performance_schema_max_cond_classes";
+
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS
+ where name like "wait/synch/cond/%";
+
+# Expect no class lost
+show status like "performance_schema_cond_classes_lost";
+
+# Expect no instances
+show variables like "performance_schema_max_cond_instances";
+
+select count(*) from performance_schema.COND_INSTANCES;
+
+# Expect instances lost
+select variable_value > 0 from information_schema.global_status
+ where variable_name like 'PERFORMANCE_SCHEMA_COND_INSTANCES_LOST';
+
+
diff --git a/mysql-test/suite/perfschema/t/start_server_no_file_class-master.opt b/mysql-test/suite/perfschema/t/start_server_no_file_class-master.opt
new file mode 100644
index 00000000000..f4b6d1ec893
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_file_class-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance_schema_max_file_classes=0
diff --git a/mysql-test/suite/perfschema/t/start_server_no_file_class.test b/mysql-test/suite/perfschema/t/start_server_no_file_class.test
new file mode 100644
index 00000000000..ca84fbbdcf2
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_file_class.test
@@ -0,0 +1,38 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--source ../include/start_server_common.inc
+
+# Expect no classes
+show variables like "performance_schema_max_file_classes";
+
+select count(*) from performance_schema.SETUP_INSTRUMENTS
+ where name like "wait/io/file/%";
+
+# We lost all the classes
+select variable_value > 0 from information_schema.global_status
+ where variable_name like 'PERFORMANCE_SCHEMA_FILE_CLASSES_LOST';
+
+# Expect no instances
+select count(*) from performance_schema.FILE_INSTANCES;
+
+# Expect no instances lost
+show status like "performance_schema_file_instances_lost";
+
diff --git a/mysql-test/suite/perfschema/t/start_server_no_file_inst-master.opt b/mysql-test/suite/perfschema/t/start_server_no_file_inst-master.opt
new file mode 100644
index 00000000000..7f0d246f97a
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_file_inst-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance_schema_max_file_instances=0
diff --git a/mysql-test/suite/perfschema/t/start_server_no_file_inst.test b/mysql-test/suite/perfschema/t/start_server_no_file_inst.test
new file mode 100644
index 00000000000..dbbba7bbe4a
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_file_inst.test
@@ -0,0 +1,41 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--source ../include/start_server_common.inc
+
+# Expect classes
+show variables like "performance_schema_max_file_classes";
+
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS
+ where name like "wait/io/file/%";
+
+# Expect no class lost
+show status like "performance_schema_file_classes_lost";
+
+# Expect no instances
+show variables like "performance_schema_max_file_instances";
+
+select count(*) from performance_schema.FILE_INSTANCES;
+
+# Expect instances lost
+select variable_value > 0 from information_schema.global_status
+ where variable_name like 'PERFORMANCE_SCHEMA_FILE_INSTANCES_LOST';
+
+
diff --git a/mysql-test/suite/perfschema/t/start_server_no_mutex_class-master.opt b/mysql-test/suite/perfschema/t/start_server_no_mutex_class-master.opt
new file mode 100644
index 00000000000..173851434eb
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_mutex_class-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance_schema_max_mutex_classes=0
diff --git a/mysql-test/suite/perfschema/t/start_server_no_mutex_class.test b/mysql-test/suite/perfschema/t/start_server_no_mutex_class.test
new file mode 100644
index 00000000000..142e150ede6
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_mutex_class.test
@@ -0,0 +1,38 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--source ../include/start_server_common.inc
+
+# Expect no classes
+show variables like "performance_schema_max_mutex_classes";
+
+select count(*) from performance_schema.SETUP_INSTRUMENTS
+ where name like "wait/synch/mutex/%";
+
+# We lost all the classes
+select variable_value > 0 from information_schema.global_status
+ where variable_name like 'PERFORMANCE_SCHEMA_MUTEX_CLASSES_LOST';
+
+# Expect no instances
+select count(*) from performance_schema.MUTEX_INSTANCES;
+
+# Expect no instances lost
+show status like "performance_schema_mutex_instances_lost";
+
diff --git a/mysql-test/suite/perfschema/t/start_server_no_mutex_inst-master.opt b/mysql-test/suite/perfschema/t/start_server_no_mutex_inst-master.opt
new file mode 100644
index 00000000000..5bdd7d39b4a
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_mutex_inst-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance_schema_max_mutex_instances=0
diff --git a/mysql-test/suite/perfschema/t/start_server_no_mutex_inst.test b/mysql-test/suite/perfschema/t/start_server_no_mutex_inst.test
new file mode 100644
index 00000000000..5a03251d97a
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_mutex_inst.test
@@ -0,0 +1,41 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--source ../include/start_server_common.inc
+
+# Expect classes
+show variables like "performance_schema_max_mutex_classes";
+
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS
+ where name like "wait/synch/mutex/%";
+
+# Expect no class lost
+show status like "performance_schema_mutex_classes_lost";
+
+# Expect no instances
+show variables like "performance_schema_max_mutex_instances";
+
+select count(*) from performance_schema.MUTEX_INSTANCES;
+
+# Expect instances lost
+select variable_value > 0 from information_schema.global_status
+ where variable_name like 'PERFORMANCE_SCHEMA_MUTEX_INSTANCES_LOST';
+
+
diff --git a/mysql-test/suite/perfschema/t/start_server_no_rwlock_class-master.opt b/mysql-test/suite/perfschema/t/start_server_no_rwlock_class-master.opt
new file mode 100644
index 00000000000..f0d15c86ddc
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_rwlock_class-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance_schema_max_rwlock_classes=0
diff --git a/mysql-test/suite/perfschema/t/start_server_no_rwlock_class.test b/mysql-test/suite/perfschema/t/start_server_no_rwlock_class.test
new file mode 100644
index 00000000000..e4dfe121fcf
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_rwlock_class.test
@@ -0,0 +1,38 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--source ../include/start_server_common.inc
+
+# Expect no classes
+show variables like "performance_schema_max_rwlock_classes";
+
+select count(*) from performance_schema.SETUP_INSTRUMENTS
+ where name like "wait/synch/rwlock/%";
+
+# We lost all the classes
+select variable_value > 0 from information_schema.global_status
+ where variable_name like 'PERFORMANCE_SCHEMA_RWLOCK_CLASSES_LOST';
+
+# Expect no instances
+select count(*) from performance_schema.RWLOCK_INSTANCES;
+
+# Expect no instances lost
+show status like "performance_schema_rwlock_instances_lost";
+
diff --git a/mysql-test/suite/perfschema/t/start_server_no_rwlock_inst-master.opt b/mysql-test/suite/perfschema/t/start_server_no_rwlock_inst-master.opt
new file mode 100644
index 00000000000..fc1f5f89902
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_rwlock_inst-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance_schema_max_rwlock_instances=0
diff --git a/mysql-test/suite/perfschema/t/start_server_no_rwlock_inst.test b/mysql-test/suite/perfschema/t/start_server_no_rwlock_inst.test
new file mode 100644
index 00000000000..1d79d2d3991
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_rwlock_inst.test
@@ -0,0 +1,41 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--source ../include/start_server_common.inc
+
+# Expect classes
+show variables like "performance_schema_max_rwlock_classes";
+
+select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS
+ where name like "wait/synch/rwlock/%";
+
+# Expect no class lost
+show status like "performance_schema_rwlock_classes_lost";
+
+# Expect no instances
+show variables like "performance_schema_max_rwlock_instances";
+
+select count(*) from performance_schema.RWLOCK_INSTANCES;
+
+# Expect instances lost
+select variable_value > 0 from information_schema.global_status
+ where variable_name like 'PERFORMANCE_SCHEMA_RWLOCK_INSTANCES_LOST';
+
+
diff --git a/mysql-test/suite/perfschema/t/start_server_no_thread_class-master.opt b/mysql-test/suite/perfschema/t/start_server_no_thread_class-master.opt
new file mode 100644
index 00000000000..91286cef859
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_thread_class-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance_schema_max_thread_classes=0
diff --git a/mysql-test/suite/perfschema/t/start_server_no_thread_class.test b/mysql-test/suite/perfschema/t/start_server_no_thread_class.test
new file mode 100644
index 00000000000..ba214ba9966
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_thread_class.test
@@ -0,0 +1,38 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--source ../include/start_server_common.inc
+
+# Expect no classes
+show variables like "performance_schema_max_thread_classes";
+
+select count(*) from performance_schema.SETUP_INSTRUMENTS
+ where name like "thread/%";
+
+# We lost all the classes
+select variable_value > 0 from information_schema.global_status
+ where variable_name like 'PERFORMANCE_SCHEMA_THREAD_CLASSES_LOST';
+
+# Expect no instances
+select count(*) from performance_schema.PROCESSLIST;
+
+# Expect no instances lost
+show status like "performance_schema_thread_instances_lost";
+
diff --git a/mysql-test/suite/perfschema/t/start_server_no_thread_inst-master.opt b/mysql-test/suite/perfschema/t/start_server_no_thread_inst-master.opt
new file mode 100644
index 00000000000..6e9d13c2b4c
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_thread_inst-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance_schema_max_thread_instances=0
diff --git a/mysql-test/suite/perfschema/t/start_server_no_thread_inst.test b/mysql-test/suite/perfschema/t/start_server_no_thread_inst.test
new file mode 100644
index 00000000000..7d8a44ebcd5
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_no_thread_inst.test
@@ -0,0 +1,42 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--source ../include/start_server_common.inc
+
+# Expect classes
+show variables like "performance_schema_max_thread_classes";
+
+# Not observable yet
+# select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS
+# where name like "thread/%";
+
+# Expect no class lost
+show status like "performance_schema_thread_classes_lost";
+
+# Expect no instances
+show variables like "performance_schema_max_thread_instances";
+
+select count(*) from performance_schema.PROCESSLIST;
+
+# Expect instances lost
+select variable_value > 0 from information_schema.global_status
+ where variable_name like 'PERFORMANCE_SCHEMA_THREAD_INSTANCES_LOST';
+
+
diff --git a/mysql-test/suite/perfschema/t/start_server_off-master.opt b/mysql-test/suite/perfschema/t/start_server_off-master.opt
new file mode 100644
index 00000000000..600566e870b
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_off-master.opt
@@ -0,0 +1 @@
+--loose-disable-performance-schema
diff --git a/mysql-test/suite/perfschema/t/start_server_off.test b/mysql-test/suite/perfschema/t/start_server_off.test
new file mode 100644
index 00000000000..bd9db97840d
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_off.test
@@ -0,0 +1,25 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--source ../include/start_server_common.inc
+
+# Expecting all off / zero
+show status like "performance_schema%";
+
diff --git a/mysql-test/suite/perfschema/t/start_server_on-master.opt b/mysql-test/suite/perfschema/t/start_server_on-master.opt
new file mode 100644
index 00000000000..542720c44d7
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_on-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema
diff --git a/mysql-test/suite/perfschema/t/start_server_on.test b/mysql-test/suite/perfschema/t/start_server_on.test
new file mode 100644
index 00000000000..54714616a08
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/start_server_on.test
@@ -0,0 +1,25 @@
+# Copyright (C) 2008-2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--source ../include/start_server_common.inc
+
+# Expecting nothing lost with default parameters
+
+show status like "performance_schema%";
diff --git a/mysql-test/suite/perfschema/t/tampered_perfschema_table1-master.opt b/mysql-test/suite/perfschema/t/tampered_perfschema_table1-master.opt
new file mode 100644
index 00000000000..5f094e68be7
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/tampered_perfschema_table1-master.opt
@@ -0,0 +1 @@
+--loose-debug=+d,tampered_perfschema_table1
diff --git a/mysql-test/suite/perfschema/t/tampered_perfschema_table1.test b/mysql-test/suite/perfschema/t/tampered_perfschema_table1.test
new file mode 100644
index 00000000000..be079bacfbf
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/tampered_perfschema_table1.test
@@ -0,0 +1,44 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for PERFORMANCE_SCHEMA
+
+# This test uses error injection,
+# see PFS_engine_table_share::check_all_tables()
+
+# Verify that the server starts even when a performance schema table
+# is corrupted, with an incompatible change.
+# Verify that using that table nicely fails.
+# Verify that other tables are not affected.
+
+--source include/have_debug.inc
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+# The message prints 'mysql.SETUP_INSTRUMENTS'
+# instead of 'performance_schema.SETUP_INSTRUMENTS',
+# due to Bug#46792
+
+call mtr.add_suppression(
+"Column count of mysql.SETUP_INSTRUMENTS is wrong. "
+"Expected 4, found 3. The table is probably corrupted");
+
+--error ER_WRONG_NATIVE_TABLE_STRUCTURE
+select * from performance_schema.SETUP_INSTRUMENTS limit 1;
+
+--disable_result_log
+select * from performance_schema.SETUP_CONSUMERS limit 1;
+--enable_result_log
+
diff --git a/mysql-test/suite/perfschema_stress/README b/mysql-test/suite/perfschema_stress/README
new file mode 100644
index 00000000000..53f6f1daf35
--- /dev/null
+++ b/mysql-test/suite/perfschema_stress/README
@@ -0,0 +1,34 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+WL#4818 - Stress testing of PERFORMANCE_SCHEMA
+
+The performance schema storage engine is backed by data structures, we
+want to be sure that these data structures are not fragile under
+load.
+
+NFS1: 20 threads doing read of performance data (both mutex and
+disk), 5 threads changing what is being instrumented, 25 threads doing
+DML and DDL so that the statistics are updated. Connections should frequently
+disconnect or be KILLed, and reconnect.
+
+The database should not crash under any circumstance.
+
+How to run:
+
+MTR_VERSION=1 ./mtr --stress \
+ --stress-suite=perfschema_stress \
+ --stress-threads=50 \
+ --stress-test-duration=3600
diff --git a/mysql-test/suite/perfschema_stress/include/settings.inc b/mysql-test/suite/perfschema_stress/include/settings.inc
new file mode 100644
index 00000000000..fb886a86df2
--- /dev/null
+++ b/mysql-test/suite/perfschema_stress/include/settings.inc
@@ -0,0 +1,17 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+let $num_stress_rows= 5000;
+let $default_engine_type= myisam;
diff --git a/mysql-test/suite/perfschema_stress/r/modify.result b/mysql-test/suite/perfschema_stress/r/modify.result
new file mode 100644
index 00000000000..e1a79c9be2a
--- /dev/null
+++ b/mysql-test/suite/perfschema_stress/r/modify.result
@@ -0,0 +1,17 @@
+UPDATE performance_schema.SETUP_INSTRUMENTS SET TIMED = 'NO';
+UPDATE performance_schema.SETUP_INSTRUMENTS SET ENABLED = 'NO';
+UPDATE performance_schema.SETUP_TIMERS
+SET TIMER_NAME = 'NANOSECOND' WHERE NAME = 'Wait';
+UPDATE performance_schema.SETUP_TIMERS
+SET TIMER_NAME = 'CYCLE' WHERE NAME = 'Wait';
+UPDATE performance_schema.SETUP_INSTRUMENTS SET TIMED = 'YES';
+UPDATE performance_schema.SETUP_INSTRUMENTS SET ENABLED = 'YES'
+WHERE NAME IN ('wait/io/file/sql/FRM',
+'thread/sql/Connection',
+'wait/synch/cond/sql/COND_mdl',
+'wait/synch/rwlock/sql/LOCK_sys_init_connect',
+'wait/synch/mutex/sql/LOCK_mdl');
+UPDATE performance_schema.SETUP_CONSUMERS SET ENABLED = 'NO'
+WHERE NAME = 'events_waits_history';
+UPDATE performance_schema.SETUP_CONSUMERS SET ENABLED = 'YES'
+WHERE NAME = 'events_waits_history';
diff --git a/mysql-test/suite/perfschema_stress/r/read.result b/mysql-test/suite/perfschema_stress/r/read.result
new file mode 100644
index 00000000000..eee3067ddb8
--- /dev/null
+++ b/mysql-test/suite/perfschema_stress/r/read.result
@@ -0,0 +1,29 @@
+SELECT * FROM performance_schema.SETUP_INSTRUMENTS
+WHERE ENABLED='NO' AND TIMED='NO';
+NAME ENABLED TIMED
+SELECT * FROM performance_schema.EVENTS_WAITS_CURRENT
+WHERE (TIMER_END - TIMER_START != TIMER_WAIT);
+THREAD_ID EVENT_ID EVENT_NAME SOURCE TIMER_START TIMER_END TIMER_WAIT SPINS OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE OBJECT_INSTANCE_BEGIN NESTING_EVENT_ID OPERATION NUMBER_OF_BYTES FLAGS
+SELECT * FROM performance_schema.EVENTS_WAITS_HISTORY
+WHERE SPINS != NULL;
+THREAD_ID EVENT_ID EVENT_NAME SOURCE TIMER_START TIMER_END TIMER_WAIT SPINS OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE OBJECT_INSTANCE_BEGIN NESTING_EVENT_ID OPERATION NUMBER_OF_BYTES FLAGS
+SELECT * FROM performance_schema.PROCESSLIST p,
+performance_schema.EVENTS_WAITS_CURRENT e
+WHERE p.THREAD_ID = e.THREAD_ID
+AND TIMER_START = 0
+ORDER BY e.EVENT_ID;
+THREAD_ID ID NAME THREAD_ID EVENT_ID EVENT_NAME SOURCE TIMER_START TIMER_END TIMER_WAIT SPINS OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE OBJECT_INSTANCE_BEGIN NESTING_EVENT_ID OPERATION NUMBER_OF_BYTES FLAGS
+SELECT * FROM performance_schema.EVENTS_WAITS_CURRENT
+WHERE THREAD_ID IN (SELECT THREAD_ID
+FROM performance_schema.PROCESSLIST
+ORDER BY THREAD_ID)
+AND TIMER_END = 0
+AND TIMER_WAIT != NULL
+ORDER BY EVENT_ID;
+THREAD_ID EVENT_ID EVENT_NAME SOURCE TIMER_START TIMER_END TIMER_WAIT SPINS OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE OBJECT_INSTANCE_BEGIN NESTING_EVENT_ID OPERATION NUMBER_OF_BYTES FLAGS
+SELECT SUM(COUNT_READ) AS sum_count_read,
+SUM(COUNT_WRITE) AS sum_count_write,
+SUM(SUM_NUMBER_OF_BYTES_READ) AS sum_num_bytes_read,
+SUM(SUM_NUMBER_OF_BYTES_WRITE) AS sum_num_bytes_write
+FROM performance_schema.FILE_SUMMARY_BY_INSTANCE
+WHERE FILE_NAME LIKE CONCAT('%', @@tmpdir, '%') ORDER BY NULL;
diff --git a/mysql-test/suite/perfschema_stress/r/work.result b/mysql-test/suite/perfschema_stress/r/work.result
new file mode 100644
index 00000000000..c782b45fdf9
--- /dev/null
+++ b/mysql-test/suite/perfschema_stress/r/work.result
@@ -0,0 +1,16 @@
+SET @rowid = ROUND(RAND() * <num_stress_rows>);
+START TRANSACTION;
+UPDATE t1 SET b = 'changed' WHERE id=@rowid;
+SELECT b FROM t1 WHERE id=@rowid;
+b
+changed
+COMMIT;
+START TRANSACTION;
+DELETE FROM t1 WHERE id=@rowid;
+INSERT INTO t1 (id, b) VALUES (@rowid, 'newly_inserted');
+SELECT b FROM t1 WHERE id=@rowid;
+b
+newly_inserted
+COMMIT;
+CREATE TABLE tw_<conn_nr> AS SELECT * FROM t1;
+DROP TABLE tw_<conn_nr>;
diff --git a/mysql-test/suite/perfschema_stress/stress_init.txt b/mysql-test/suite/perfschema_stress/stress_init.txt
new file mode 100644
index 00000000000..146f275e098
--- /dev/null
+++ b/mysql-test/suite/perfschema_stress/stress_init.txt
@@ -0,0 +1 @@
+setup
diff --git a/mysql-test/suite/perfschema_stress/stress_tests.txt b/mysql-test/suite/perfschema_stress/stress_tests.txt
new file mode 100644
index 00000000000..a17a30cb551
--- /dev/null
+++ b/mysql-test/suite/perfschema_stress/stress_tests.txt
@@ -0,0 +1,10 @@
+read
+read
+read
+read
+modify
+work
+work
+work
+work
+work
diff --git a/mysql-test/suite/perfschema_stress/t/modify.test b/mysql-test/suite/perfschema_stress/t/modify.test
new file mode 100644
index 00000000000..08b0699ace6
--- /dev/null
+++ b/mysql-test/suite/perfschema_stress/t/modify.test
@@ -0,0 +1,55 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+--source include/not_embedded.inc
+--source suite/perfschema_stress/include/settings.inc
+
+let $have_table= `SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES
+ WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1'`;
+
+if (`SELECT ($have_table = 0)`) {
+ --source suite/perfschema_stress/t/setup.test
+}
+
+UPDATE performance_schema.SETUP_INSTRUMENTS SET TIMED = 'NO';
+
+UPDATE performance_schema.SETUP_INSTRUMENTS SET ENABLED = 'NO';
+
+UPDATE performance_schema.SETUP_TIMERS
+SET TIMER_NAME = 'NANOSECOND' WHERE NAME = 'Wait';
+
+# Let it run some time with the new timer name and instruments
+--sleep 1
+
+UPDATE performance_schema.SETUP_TIMERS
+SET TIMER_NAME = 'CYCLE' WHERE NAME = 'Wait';
+
+UPDATE performance_schema.SETUP_INSTRUMENTS SET TIMED = 'YES';
+
+UPDATE performance_schema.SETUP_INSTRUMENTS SET ENABLED = 'YES'
+WHERE NAME IN ('wait/io/file/sql/FRM',
+ 'thread/sql/Connection',
+ 'wait/synch/cond/sql/COND_mdl',
+ 'wait/synch/rwlock/sql/LOCK_sys_init_connect',
+ 'wait/synch/mutex/sql/LOCK_mdl');
+
+# Two short lived changes to see that switching does not lead
+# to havoc.
+
+UPDATE performance_schema.SETUP_CONSUMERS SET ENABLED = 'NO'
+WHERE NAME = 'events_waits_history';
+
+UPDATE performance_schema.SETUP_CONSUMERS SET ENABLED = 'YES'
+WHERE NAME = 'events_waits_history';
diff --git a/mysql-test/suite/perfschema_stress/t/read.test b/mysql-test/suite/perfschema_stress/t/read.test
new file mode 100644
index 00000000000..28ba4d8d887
--- /dev/null
+++ b/mysql-test/suite/perfschema_stress/t/read.test
@@ -0,0 +1,49 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+--source include/not_embedded.inc
+
+SELECT * FROM performance_schema.SETUP_INSTRUMENTS
+WHERE ENABLED='NO' AND TIMED='NO';
+
+SELECT * FROM performance_schema.EVENTS_WAITS_CURRENT
+WHERE (TIMER_END - TIMER_START != TIMER_WAIT);
+
+SELECT * FROM performance_schema.EVENTS_WAITS_HISTORY
+WHERE SPINS != NULL;
+
+SELECT * FROM performance_schema.PROCESSLIST p,
+ performance_schema.EVENTS_WAITS_CURRENT e
+WHERE p.THREAD_ID = e.THREAD_ID
+ AND TIMER_START = 0
+ORDER BY e.EVENT_ID;
+
+SELECT * FROM performance_schema.EVENTS_WAITS_CURRENT
+WHERE THREAD_ID IN (SELECT THREAD_ID
+ FROM performance_schema.PROCESSLIST
+ ORDER BY THREAD_ID)
+ AND TIMER_END = 0
+ AND TIMER_WAIT != NULL
+ORDER BY EVENT_ID;
+
+--disable_result_log
+SELECT SUM(COUNT_READ) AS sum_count_read,
+ SUM(COUNT_WRITE) AS sum_count_write,
+ SUM(SUM_NUMBER_OF_BYTES_READ) AS sum_num_bytes_read,
+ SUM(SUM_NUMBER_OF_BYTES_WRITE) AS sum_num_bytes_write
+FROM performance_schema.FILE_SUMMARY_BY_INSTANCE
+WHERE FILE_NAME LIKE CONCAT('%', @@tmpdir, '%') ORDER BY NULL;
+--enable_result_log
+
diff --git a/mysql-test/suite/perfschema_stress/t/setup.test b/mysql-test/suite/perfschema_stress/t/setup.test
new file mode 100644
index 00000000000..9f643edfebe
--- /dev/null
+++ b/mysql-test/suite/perfschema_stress/t/setup.test
@@ -0,0 +1,64 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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 (`SELECT VERSION() LIKE '%embedded%'`)
+{
+ --skip This test cannot run with the embedded server.
+}
+
+--source suite/perfschema_stress/include/settings.inc
+
+--disable_query_log
+--disable_result_log
+
+if (`SELECT LENGTH('$engine_type') = 0`) {
+ let $engine_type= $default_engine_type;
+}
+if (`SELECT '$engine_type' = 'Falcon'`) {
+ --source include/have_falcon.inc
+}
+
+--replace_result $engine_type <engine_type>
+eval CREATE TABLE t1 (id INT PRIMARY KEY, b CHAR(100) DEFAULT 'initial value')
+ ENGINE=$engine_type;
+
+# Need something to start with
+INSERT INTO t1(id) VALUES (1), (2), (3), (4), (5), (6), (7), (8);
+
+# Bulk load the correct number of rows
+while (`SELECT MAX(id) < $num_stress_rows FROM t1`)
+{
+ SELECT MAX(id) FROM t1 INTO @max;
+--replace_result $num_stress_rows <num_stress_rows>
+ eval INSERT INTO t1(id) SELECT id + @max FROM t1
+ WHERE id + @max <= $num_stress_rows;
+}
+
+# Turn on some instruments
+
+UPDATE performance_schema.SETUP_INSTRUMENTS SET TIMED = 'YES';
+
+UPDATE performance_schema.SETUP_INSTRUMENTS SET ENABLED = 'NO';
+UPDATE performance_schema.SETUP_INSTRUMENTS SET ENABLED = 'YES'
+WHERE NAME IN ('wait/io/file/sql/FRM',
+ 'thread/sql/Connection',
+ 'wait/synch/cond/sql/COND_mdl',
+ 'wait/synch/rwlock/sql/LOCK_sys_init_connect',
+ 'wait/synch/mutex/sql/LOCK_mdl');
+
+UPDATE performance_schema.SETUP_CONSUMERS SET ENABLED = 'YES';
+
+--enable_result_log
+--enable_query_log
diff --git a/mysql-test/suite/perfschema_stress/t/work.test b/mysql-test/suite/perfschema_stress/t/work.test
new file mode 100644
index 00000000000..8f1bc42c5bc
--- /dev/null
+++ b/mysql-test/suite/perfschema_stress/t/work.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# 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
+
+--source include/not_embedded.inc
+--source suite/perfschema_stress/include/settings.inc
+
+let $have_table= `SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES
+ WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1'`;
+
+if (`SELECT ($have_table = 0)`) {
+ --source suite/perfschema_stress/t/setup.test
+}
+
+--replace_result $num_stress_rows <num_stress_rows>
+eval SET @rowid = ROUND(RAND() * $num_stress_rows);
+
+let $conn_id= `SELECT CONNECTION_ID()`;
+let $conn_nr= conn_$conn_id;
+
+START TRANSACTION;
+UPDATE t1 SET b = 'changed' WHERE id=@rowid;
+SELECT b FROM t1 WHERE id=@rowid;
+COMMIT;
+
+START TRANSACTION;
+DELETE FROM t1 WHERE id=@rowid;
+INSERT INTO t1 (id, b) VALUES (@rowid, 'newly_inserted');
+SELECT b FROM t1 WHERE id=@rowid;
+COMMIT;
+
+--replace_result $conn_nr <conn_nr>
+eval CREATE TABLE tw_$conn_nr AS SELECT * FROM t1;
+
+--replace_result $conn_nr <conn_nr>
+eval DROP TABLE tw_$conn_nr;
diff --git a/mysql-test/suite/rpl/my.cnf b/mysql-test/suite/rpl/my.cnf
index ea4caeb2ddd..74233b056c7 100644
--- a/mysql-test/suite/rpl/my.cnf
+++ b/mysql-test/suite/rpl/my.cnf
@@ -1,14 +1,8 @@
# Use settings from rpl_1slave_base.cnf
# add setting to connect the slave to the master by default
!include rpl_1slave_base.cnf
+!include include/default_client.cnf
+
[mysqld.2]
-# Hardcode the host to 127.0.0.1 until running on more
-# than one host and it need to be masked
-# master-host= @mysqld.1.#host
-master-host= 127.0.0.1
-master-port= @mysqld.1.port
-master-password= @mysqld.1.#password
-master-user= @mysqld.1.#user
-master-connect-retry= 1
diff --git a/mysql-test/suite/rpl/r/rpl000017.result b/mysql-test/suite/rpl/r/rpl000017.result
index 1c611357e64..403f4d4d4fe 100644
--- a/mysql-test/suite/rpl/r/rpl000017.result
+++ b/mysql-test/suite/rpl/r/rpl000017.result
@@ -1,10 +1,7 @@
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;
-stop slave;
grant replication slave on *.* to replicate@localhost identified by 'aaaaaaaaaaaaaaab';
grant replication slave on *.* to replicate@127.0.0.1 identified by 'aaaaaaaaaaaaaaab';
start slave;
diff --git a/mysql-test/suite/rpl/r/rpl_000015.result b/mysql-test/suite/rpl/r/rpl_000015.result
index 03b96d5870b..1b1249bc979 100644
--- a/mysql-test/suite/rpl/r/rpl_000015.result
+++ b/mysql-test/suite/rpl/r/rpl_000015.result
@@ -4,48 +4,8 @@ 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;
+master_password='',master_port=MASTER_PORT, MASTER_CONNECT_RETRY=7;
SHOW SLAVE STATUS;
Slave_IO_State #
Master_Host 127.0.0.1
@@ -85,6 +45,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 0
start slave;
SHOW SLAVE STATUS;
Slave_IO_State #
@@ -125,6 +87,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
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/rpl/r/rpl_EE_err.result b/mysql-test/suite/rpl/r/rpl_EE_err.result
index 16fa931e303..8c1277445b2 100644
--- a/mysql-test/suite/rpl/r/rpl_EE_err.result
+++ b/mysql-test/suite/rpl/r/rpl_EE_err.result
@@ -8,4 +8,4 @@ create table t1 (a int) engine=myisam;
flush tables;
drop table if exists t1;
Warnings:
-Error 2 Can't find file: 't1' (errno: 2)
+Warning 2 Can't find file: 't1' (errno: 2)
diff --git a/mysql-test/suite/rpl/r/rpl_begin_commit_rollback.result b/mysql-test/suite/rpl/r/rpl_begin_commit_rollback.result
index 23736804784..5be69177550 100644
--- a/mysql-test/suite/rpl/r/rpl_begin_commit_rollback.result
+++ b/mysql-test/suite/rpl/r/rpl_begin_commit_rollback.result
@@ -4,6 +4,8 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
DROP DATABASE IF EXISTS db1;
CREATE DATABASE db1;
use db1;
@@ -67,6 +69,8 @@ before call db1.p1()
INSERT INTO db1.t2 VALUES ('before call db1.p2()');
BEGIN;
CALL db1.p2();
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
ROLLBACK;
INSERT INTO db1.t2 VALUES ('after call db1.p2()');
SELECT * FROM db1.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..2a7e4401500 100644
--- a/mysql-test/suite/rpl/r/rpl_binlog_grant.result
+++ b/mysql-test/suite/rpl/r/rpl_binlog_grant.result
@@ -17,16 +17,15 @@ 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;
+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 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 # Query # # drop database if exists d1
+master-bin.000001 # Query # # create database d1
+master-bin.000001 # Query # # use `d1`; create table t (s1 int) engine=innodb
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `d1`; insert into t values (1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # 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 +37,18 @@ s1
show grants for x@y;
Grants for x@y
GRANT USAGE ON *.* TO 'x'@'y'
-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 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
+master-bin.000001 # Query # # drop database if exists d1
+master-bin.000001 # Query # # create database d1
+master-bin.000001 # Query # # use `d1`; create table t (s1 int) engine=innodb
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `d1`; insert into t values (1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `d1`; grant select on t to x@y
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `d1`; insert into t values (2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # 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_blackhole.result b/mysql-test/suite/rpl/r/rpl_blackhole.result
index 954589267c5..6482d132521 100644
--- a/mysql-test/suite/rpl/r/rpl_blackhole.result
+++ b/mysql-test/suite/rpl/r/rpl_blackhole.result
@@ -4,6 +4,7 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
CREATE TABLE t1 (a INT, b INT, c INT);
CREATE TABLE t2 (a INT, b INT, c INT);
ALTER TABLE t1 ENGINE=BLACKHOLE;
@@ -40,14 +41,6 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
>>> Something was written to binary log <<<
-[on master]
-INSERT INTO t2 SELECT * FROM t1;
-[on slave]
-# Expect 0
-SELECT COUNT(*) FROM t1;
-COUNT(*)
-0
->>> Something was written to binary log <<<
ALTER TABLE t1 ADD PRIMARY KEY pk_t1 (a,b);
[on master]
INSERT INTO t1 VALUES (1,2,1),(2,2,2),(3,2,3),(4,2,4);
diff --git a/mysql-test/suite/rpl/r/rpl_bug31076.result b/mysql-test/suite/rpl/r/rpl_bug31076.result
index fd66ca85d57..76bce39fc43 100644
--- a/mysql-test/suite/rpl/r/rpl_bug31076.result
+++ b/mysql-test/suite/rpl/r/rpl_bug31076.result
@@ -4,6 +4,8 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
+SET @saved_slave_type_conversions = @@slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
CREATE DATABASE track;
USE track;
CREATE TABLE `visits` (
@@ -65,5 +67,6 @@ visits_id myid src ip cc org ref time host entry visit_exit user_id visit_start
SELECT * FROM visits_events;
event_id visit_id timestamp src data visits_events_id
20000 21231038 2007-09-18 03:59:02 Downloads/MySQL-4.1/mysql-4.1.12a-win32.zip 33712207
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
DROP DATABASE track;
End of 5.1 tests
diff --git a/mysql-test/suite/rpl/r/rpl_bug33931.result b/mysql-test/suite/rpl/r/rpl_bug33931.result
index a17941f6ba9..256238d35cd 100644
--- a/mysql-test/suite/rpl/r/rpl_bug33931.result
+++ b/mysql-test/suite/rpl/r/rpl_bug33931.result
@@ -1,7 +1,6 @@
reset master;
-call mtr.add_suppression("Failed during slave I/O thread initialization");
-stop slave;
reset slave;
+call mtr.add_suppression("Failed during slave I/O thread initialization");
SET GLOBAL debug="d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init";
start slave;
show slave status;
@@ -43,4 +42,6 @@ Last_IO_Errno 0
Last_IO_Error
Last_SQL_Errno #
Last_SQL_Error Failed during slave thread initialization
+Replicate_Ignore_Server_Ids
+Master_Server_Id 0
SET GLOBAL debug="";
diff --git a/mysql-test/suite/rpl/r/rpl_bug41902.result b/mysql-test/suite/rpl/r/rpl_bug41902.result
new file mode 100644
index 00000000000..c65773708cc
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_bug41902.result
@@ -0,0 +1,34 @@
+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;
+stop slave;
+SET @@debug="d,simulate_find_log_pos_error";
+reset slave;
+ERROR HY000: Target log not found in binlog index
+show warnings;
+Level Code Message
+Error 1373 Target log not found in binlog index
+Error 1371 Failed purging old relay logs: Failed during log reset
+SET @@debug="";
+reset slave;
+change master to master_host='dummy';
+SET @@debug="d,simulate_find_log_pos_error";
+change master to master_host='dummy';
+ERROR HY000: Target log not found in binlog index
+SET @@debug="";
+reset slave;
+change master to master_host='dummy';
+SET @@debug="d,simulate_find_log_pos_error";
+reset master;
+ERROR HY000: Target log not found in binlog index
+SET @@debug="";
+reset master;
+SET @@debug="d,simulate_find_log_pos_error";
+purge binary logs to 'master-bin.000001';
+ERROR HY000: Target log not found in binlog index
+SET @@debug="";
+purge binary logs to 'master-bin.000001';
+End of the tests
diff --git a/mysql-test/suite/rpl/r/rpl_change_master.result b/mysql-test/suite/rpl/r/rpl_change_master.result
index c06c1201e3d..a51ba50475b 100644
--- a/mysql-test/suite/rpl/r/rpl_change_master.result
+++ b/mysql-test/suite/rpl/r/rpl_change_master.result
@@ -50,6 +50,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
change master to master_user='root';
SHOW SLAVE STATUS;
Slave_IO_State #
@@ -90,9 +92,28 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
start slave;
select * from t1;
n
1
2
drop table t1;
+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 (a int);
+insert into t1 values (1);
+flush logs;
+insert into t1 values (2);
+include/stop_slave.inc
+delete from t1 where a=2;
+CHANGE MASTER TO relay_log_file='slave-relay-bin.000005', relay_log_pos=4;
+start slave sql_thread;
+start slave io_thread;
+set global relay_log_purge=1;
+drop table t1;
diff --git a/mysql-test/suite/rpl/r/rpl_charset.result b/mysql-test/suite/rpl/r/rpl_charset.result
index ae5cf3b0fd1..a4841b0baf3 100644
--- a/mysql-test/suite/rpl/r/rpl_charset.result
+++ b/mysql-test/suite/rpl/r/rpl_charset.result
@@ -116,8 +116,7 @@ latin5
select @@character_set_server;
@@character_set_server
latin5
-set one_shot max_join_size=10;
-ERROR HY000: The 'SET ONE_SHOT' syntax is reserved for purposes internal to the MySQL server
+set one_shot max_join_size=1000000;
set character_set_client=9999999;
ERROR 42000: Unknown character set: '9999999'
set collation_server=9999998;
diff --git a/mysql-test/suite/rpl/r/rpl_colSize.result b/mysql-test/suite/rpl/r/rpl_colSize.result
index 91456742833..ae1ac3c7fed 100644
--- a/mysql-test/suite/rpl/r/rpl_colSize.result
+++ b/mysql-test/suite/rpl/r/rpl_colSize.result
@@ -9,6 +9,8 @@ DROP TABLE IF EXISTS t1;
*** Create "wider" table on slave ***
STOP SLAVE;
RESET SLAVE;
+SET @saved_slave_type_conversions = @@slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
CREATE TABLE t1 (
a float (47),
b double (143,9),
@@ -177,3 +179,4 @@ t1 CREATE TABLE `t1` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1
*** Cleanup ***
DROP TABLE t1;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
diff --git a/mysql-test/suite/rpl/r/rpl_concurrency_error.result b/mysql-test/suite/rpl/r/rpl_concurrency_error.result
index 83e5f66a9c4..ae4fab7325c 100644
--- a/mysql-test/suite/rpl/r/rpl_concurrency_error.result
+++ b/mysql-test/suite/rpl/r/rpl_concurrency_error.result
@@ -4,6 +4,7 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
########################################################################
# Environment
########################################################################
@@ -20,12 +21,16 @@ INSERT INTO t VALUES (4,'black'), (2,'red'), (3,'yelow'), (1,'cyan');
SET AUTOCOMMIT = 1;
BEGIN;
UPDATE t SET f = 'yellow 2' WHERE i = 3;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
SET AUTOCOMMIT = 1;
BEGIN;
UPDATE t SET f = 'magenta 2' WHERE f = 'red';
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
INSERT INTO t VALUES (5 + (2 * 10),"brown");
INSERT INTO n VALUES (now(),"brown");
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
COMMIT;
ROLLBACK;
Warnings:
@@ -43,12 +48,16 @@ master-bin.000001 # Query # # ROLLBACK
SET AUTOCOMMIT = 1;
BEGIN;
UPDATE t SET f = 'gray 2' WHERE i = 3;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
SET AUTOCOMMIT = 1;
BEGIN;
UPDATE t SET f = 'dark blue 2' WHERE f = 'red';
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
INSERT INTO t VALUES (6 + (2 * 10),"brown");
INSERT INTO n VALUES (now(),"brown");
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
COMMIT;
COMMIT;
show binlog events from <binlog_start>;
@@ -63,11 +72,15 @@ master-bin.000001 # Query # # use `test`; INSERT INTO n VALUES (now(),"brown")
master-bin.000001 # Xid # # COMMIT /* XID */
SET AUTOCOMMIT = 0;
UPDATE t SET f = 'yellow 1' WHERE i = 3;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
SET AUTOCOMMIT = 0;
UPDATE t SET f = 'magenta 1' WHERE f = 'red';
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
INSERT INTO t VALUES (5 + (1 * 10),"brown");
INSERT INTO n VALUES (now(),"brown");
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
COMMIT;
ROLLBACK;
Warnings:
@@ -84,11 +97,15 @@ master-bin.000001 # Query # # use `test`; INSERT INTO n VALUES (now(),"brown")
master-bin.000001 # Query # # ROLLBACK
SET AUTOCOMMIT = 0;
UPDATE t SET f = 'gray 1' WHERE i = 3;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
SET AUTOCOMMIT = 0;
UPDATE t SET f = 'dark blue 1' WHERE f = 'red';
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
INSERT INTO t VALUES (6 + (1 * 10),"brown");
INSERT INTO n VALUES (now(),"brown");
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
COMMIT;
COMMIT;
show binlog events from <binlog_start>;
diff --git a/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result b/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result
index 6c8d35619e5..25c31675b53 100644
--- a/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result
@@ -89,6 +89,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
*** Test lock wait timeout ***
include/stop_slave.inc
@@ -151,13 +153,15 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
*** 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=441;
BEGIN;
SELECT * FROM t1 FOR UPDATE;
a
@@ -218,6 +222,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
*** Clean up ***
DROP TABLE t1,t2,t3;
diff --git a/mysql-test/suite/rpl/r/rpl_empty_master_crash.result b/mysql-test/suite/rpl/r/rpl_empty_master_crash.result
deleted file mode 100644
index f0d84f85069..00000000000
--- a/mysql-test/suite/rpl/r/rpl_empty_master_crash.result
+++ /dev/null
@@ -1,11 +0,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;
-SHOW SLAVE STATUS;
-load table t1 from master;
-ERROR 08S01: Error connecting to master: Master is not configured
-load table t1 from master;
-ERROR HY000: Error from master: 'Table 'test.t1' doesn't exist'
diff --git a/mysql-test/suite/rpl/r/rpl_empty_master_host.result b/mysql-test/suite/rpl/r/rpl_empty_master_host.result
new file mode 100644
index 00000000000..46ef32d415b
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_empty_master_host.result
@@ -0,0 +1,16 @@
+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;
+STOP SLAVE;
+Master_Host = '127.0.0.1' (expected '127.0.0.1')
+CHANGE MASTER TO MASTER_HOST="";
+ERROR HY000: Incorrect arguments to MASTER_HOST
+Master_Host = '127.0.0.1' (expected '127.0.0.1')
+CHANGE MASTER TO MASTER_HOST="foo";
+Master_Host = 'foo' (expected 'foo')
+CHANGE MASTER TO MASTER_HOST="127.0.0.1";
+Master_Host = '127.0.0.1' (expected '127.0.0.1')
+START SLAVE;
diff --git a/mysql-test/suite/rpl/r/rpl_err_ignoredtable.result b/mysql-test/suite/rpl/r/rpl_err_ignoredtable.result
index 75fefdad2a2..f211d5d9a2f 100644
--- a/mysql-test/suite/rpl/r/rpl_err_ignoredtable.result
+++ b/mysql-test/suite/rpl/r/rpl_err_ignoredtable.result
@@ -4,7 +4,6 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
create table t1 (a int primary key);
create table t4 (a int primary key);
insert into t1 values (1),(1);
diff --git a/mysql-test/suite/rpl/r/rpl_events.result b/mysql-test/suite/rpl/r/rpl_events.result
index b3fd85d7e28..11ebb760e86 100644
--- a/mysql-test/suite/rpl/r/rpl_events.result
+++ b/mysql-test/suite/rpl/r/rpl_events.result
@@ -6,96 +6,6 @@ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
SET @old_event_scheduler = @@global.event_scheduler;
set global event_scheduler=1;
-set binlog_format=row;
-DROP EVENT IF EXISTS test.justonce;
-drop table if exists t1,t2;
-CREATE TABLE `t1` (
-`id` INT(10) UNSIGNED NOT NULL,
-`c` VARCHAR(50) NOT NULL,
-`ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-PRIMARY KEY (`id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-INSERT INTO t1 (id, c) VALUES (1, 'manually');
-"Creating event test.justonce on the master"
-CREATE EVENT test.justonce ON SCHEDULE EVERY 2 SECOND DO
-INSERT IGNORE INTO t1 (id, c) VALUES (2, 'from justonce');
-"Checking event is active on master"
-SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'justonce';
-db name status originator
-test justonce ENABLED 1
-"Checking event data on the master"
-ONE
-1
-"Checking event data on the slave"
-ZERO
-0
-"Checking event is inactive on slave"
-SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'justonce';
-db name status originator
-test justonce SLAVESIDE_DISABLED 1
-"Dropping event test.slave_once on the slave"
-DROP EVENT IF EXISTS test.slave_once;
-CREATE EVENT test.slave_once ON SCHEDULE EVERY 5 MINUTE STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
-INSERT IGNORE INTO t1(id, c) VALUES (3, 'from slave_once');
-"Checking event status on the slave for originator value = slave's server_id"
-SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_once';
-db name status originator
-test slave_once ENABLED 2
-"Dropping event test.slave_once on the slave"
-DROP EVENT IF EXISTS test.slave_once;
-"Dropping event test.justonce on the master"
-DROP EVENT IF EXISTS test.justonce;
-"Creating event test.er on the master"
-CREATE EVENT test.er ON SCHEDULE EVERY 3 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
-INSERT IGNORE INTO t1(id, c) VALUES (4, 'from er');
-"Checking event status on the master"
-SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
-db name status originator body
-test er ENABLED 1 INSERT IGNORE INTO t1(id, c) VALUES (4, 'from er')
-"Checking event status on the slave"
-SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
-db name status originator body
-test er SLAVESIDE_DISABLED 1 INSERT IGNORE INTO t1(id, c) VALUES (4, 'from er')
-"Altering event test.er on the master"
-ALTER EVENT test.er ON SCHEDULE EVERY 5 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
-INSERT IGNORE INTO t1(id, c) VALUES (5, 'from alter er');
-"Checking event status on the master"
-SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
-db name status originator body
-test er ENABLED 1 INSERT IGNORE INTO t1(id, c) VALUES (5, 'from alter er')
-"Checking event status on the slave"
-SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
-db name status originator body
-test er SLAVESIDE_DISABLED 1 INSERT IGNORE INTO t1(id, c) VALUES (5, 'from alter er')
-"Dropping event test.er on the master"
-DROP EVENT test.er;
-"Checking event status on the master"
-SELECT db, name, status, originator FROM mysql.event WHERE db = 'test';
-db name status originator
-"Checking event status on the slave"
-SELECT db, name, status, originator FROM mysql.event WHERE db = 'test';
-db name status originator
-"Creating event test.slave_terminate on the slave"
-CREATE EVENT test.slave_terminate ON SCHEDULE EVERY 3 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
-INSERT IGNORE INTO t1(id, c) VALUES (6, 'from slave_terminate');
-"Checking event status on the slave"
-SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_terminate';
-db name status originator
-test slave_terminate ENABLED 2
-"Dropping event test.slave_terminate on the slave"
-DROP EVENT test.slave_terminate;
-"Creating event test.slave_terminate with DISABLE ON SLAVE on the slave"
-CREATE EVENT test.slave_terminate ON SCHEDULE EVERY 3 SECOND DISABLE ON SLAVE DO
-INSERT IGNORE INTO t1(c) VALUES (7, 'from slave_terminate');
-"Checking event status on the slave"
-SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_terminate';
-db name status originator
-test slave_terminate SLAVESIDE_DISABLED 2
-"Dropping event test.slave_terminate on the slave"
-DROP EVENT test.slave_terminate;
-"Cleanup"
-DROP TABLE t1;
-set binlog_format=statement;
DROP EVENT IF EXISTS test.justonce;
drop table if exists t1,t2;
CREATE TABLE `t1` (
diff --git a/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result b/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result
index 63154383e8c..2a38ad05d0d 100644
--- a/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result
@@ -9,6 +9,8 @@ call mtr.add_suppression("Slave: Unknown table 't6' Error_code: 1051");
*** On Slave ***
STOP SLAVE;
RESET SLAVE;
+SET @saved_slave_type_conversions = @@slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
CREATE TABLE t1 (a INT, b INT PRIMARY KEY, c CHAR(20),
d FLOAT DEFAULT '2.00',
e CHAR(4) DEFAULT 'TEST')
@@ -32,6 +34,7 @@ a b c d e
1 2 TEXAS 2 TEST
2 1 AUSTIN 2 TEST
3 4 QA 2 TEST
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
*** Drop t1 ***
DROP TABLE t1;
*** Create t2 on slave ***
@@ -54,45 +57,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.
+Slave failed with Error 1677
STOP SLAVE;
RESET SLAVE;
SELECT * FROM t2 ORDER BY a;
@@ -119,47 +84,9 @@ 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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
*** Drop t3 ***
@@ -181,47 +108,9 @@ 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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
*** Drop t4 ***
@@ -243,47 +132,9 @@ 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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
*** Drop t5 ***
@@ -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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
*** Drop t6 ***
DROP TABLE t6;
@@ -440,47 +253,9 @@ 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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
*** Drop t10 ***
@@ -488,7 +263,7 @@ DROP TABLE t10;
*** Create t11 on slave ***
STOP SLAVE;
RESET SLAVE;
-CREATE TABLE t11 (a INT KEY, b BLOB, f TEXT,
+CREATE TABLE t11 (a INT KEY, b BLOB, f INT,
c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='InnoDB';
*** Create t11 on Master ***
CREATE TABLE t11 (a INT PRIMARY KEY, b BLOB, c VARCHAR(254)
@@ -501,47 +276,9 @@ 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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
*** Drop t11 ***
@@ -753,45 +490,7 @@ 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'
+Slave failed with Error 1060
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;
*** Try to insert in master ****
@@ -891,47 +590,9 @@ 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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
** 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..d2b6ff60feb 100644
--- a/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result
+++ b/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result
@@ -9,6 +9,8 @@ call mtr.add_suppression("Slave: Unknown table 't6' Error_code: 1051");
*** On Slave ***
STOP SLAVE;
RESET SLAVE;
+SET @saved_slave_type_conversions = @@slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
CREATE TABLE t1 (a INT, b INT PRIMARY KEY, c CHAR(20),
d FLOAT DEFAULT '2.00',
e CHAR(4) DEFAULT 'TEST')
@@ -32,6 +34,7 @@ a b c d e
1 2 TEXAS 2 TEST
2 1 AUSTIN 2 TEST
3 4 QA 2 TEST
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
*** Drop t1 ***
DROP TABLE t1;
*** Create t2 on slave ***
@@ -54,45 +57,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.
+Slave failed with Error 1677
STOP SLAVE;
RESET SLAVE;
SELECT * FROM t2 ORDER BY a;
@@ -119,47 +84,9 @@ 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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
*** Drop t3 ***
@@ -181,47 +108,9 @@ 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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
*** Drop t4 ***
@@ -243,47 +132,9 @@ 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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
*** Drop t5 ***
@@ -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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
*** Drop t6 ***
DROP TABLE t6;
@@ -440,47 +253,9 @@ 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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
*** Drop t10 ***
@@ -488,7 +263,7 @@ DROP TABLE t10;
*** Create t11 on slave ***
STOP SLAVE;
RESET SLAVE;
-CREATE TABLE t11 (a INT KEY, b BLOB, f TEXT,
+CREATE TABLE t11 (a INT KEY, b BLOB, f INT,
c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='MyISAM';
*** Create t11 on Master ***
CREATE TABLE t11 (a INT PRIMARY KEY, b BLOB, c VARCHAR(254)
@@ -501,47 +276,9 @@ 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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
*** Drop t11 ***
@@ -753,45 +490,7 @@ 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'
+Slave failed with Error 1060
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;
*** Try to insert in master ****
@@ -891,47 +590,9 @@ 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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
** 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..6399e384d72 100644
--- a/mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result
@@ -4,7 +4,6 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-set binlog_format=row;
***********************************************************
***********************************************************
@@ -133,6 +132,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
***** Testing Altering table def scenario *****
@@ -509,6 +510,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
****************************************
* columns in master at middle of table *
@@ -563,8 +566,8 @@ 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
+Last_Errno 1677
+Last_Error Column 2 of table 'test.t10' cannot be converted from type 'double' to type 'char(5)'
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
@@ -581,8 +584,10 @@ 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
+Last_SQL_Errno 1677
+Last_SQL_Error Column 2 of table 'test.t10' cannot be converted from type 'double' to type 'char(5)'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
@@ -638,8 +643,8 @@ 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
+Last_Errno 1677
+Last_Error Column 2 of table 'test.t11' cannot be converted from type 'tinyblob' to type 'varchar(254)'
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
@@ -656,2290 +661,10 @@ 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;
-
-*** Drop t11 ***
-DROP TABLE t11;
-
-*********************************************
-* More columns in master at middle of table *
-* Expect: This one should pass blob-text *
-*********************************************
-
-*** Create t12 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t12 (a INT PRIMARY KEY, b BLOB, c BLOB
-) ENGINE='InnoDB';
-
-*** Create t12 on Master ***
-CREATE TABLE t12 (a INT KEY, b BLOB, f TEXT,
-c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='InnoDB';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t12 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
-(2,@b1,'JOE',DEFAULT,DEFAULT),
-(3,@b1,'QA',DEFAULT,DEFAULT);
-
-SELECT a,hex(b),f,c,e FROM t12 ORDER BY a;
-a hex(b) f c e
-1 62316231623162316231623162316231 Kyle test 1
-2 62316231623162316231623162316231 JOE test 1
-3 62316231623162316231623162316231 QA test 1
-
-*** Select on Slave ***
-SELECT a,hex(b),c FROM t12 ORDER BY a;
-a hex(b) c
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-3 62316231623162316231623162316231 QA
-
-*** Drop t12 ***
-DROP TABLE t12;
-
-****************************************************
-* - Alter Master adding columns at middle of table *
-* Expect: columns added *
-****************************************************
-
-
-*** Create t14 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t14 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='InnoDB';
-
-*** Create t14 on Master ***
-CREATE TABLE t14 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='InnoDB';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-ALTER TABLE t14 ADD COLUMN c2 DECIMAL(8,2) AFTER c1;
-ALTER TABLE t14 ADD COLUMN c3 TEXT AFTER c2;
-
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t14 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle',DEFAULT,DEFAULT),
-(2,2.00,'This Test Should work',@b1,'JOE',DEFAULT,DEFAULT),
-(3,3.00,'If is does not, I will open a bug',@b1,'QA',DEFAULT,DEFAULT);
-
-SELECT c1,c2,c3,hex(c4),c5,c6,c7 FROM t14 ORDER BY c1;
-c1 c2 c3 hex(c4) c5 c6 c7
-1 1.00 Replication Testing Extra Col 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 2.00 This Test Should work 62316231623162316231623162316231 JOE 1 CURRENT_TIMESTAMP
-3 3.00 If is does not, I will open a bug 62316231623162316231623162316231 QA 1 CURRENT_TIMESTAMP
-
-*** Select on Slave ****
-SELECT c1,c2,c3,hex(c4),c5 FROM t14 ORDER BY c1;
-c1 c2 c3 hex(c4) c5
-1 1.00 Replication Testing Extra Col 62316231623162316231623162316231 Kyle
-2 2.00 This Test Should work 62316231623162316231623162316231 JOE
-3 3.00 If is does not, I will open a bug 62316231623162316231623162316231 QA
-
-****************************************************
-* - Alter Master Dropping columns from the middle. *
-* Expect: columns dropped *
-****************************************************
-
-*** connect to master and drop columns ***
-ALTER TABLE t14 DROP COLUMN c2;
-ALTER TABLE t14 DROP COLUMN c7;
-
-*** Select from Master ***
-SELECT c1,c3,hex(c4),c5,c6 FROM t14 ORDER BY c1;
-c1 c3 hex(c4) c5 c6
-1 Replication Testing Extra Col 62316231623162316231623162316231 Kyle 1
-2 This Test Should work 62316231623162316231623162316231 JOE 1
-3 If is does not, I will open a bug 62316231623162316231623162316231 QA 1
-
-************
-* 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'
-STOP SLAVE;
-RESET SLAVE;
-
-*** Drop t14 ***
-DROP TABLE t14;
-DROP TABLE t14;
-RESET MASTER;
-START SLAVE;
-
-*************************************************
-* - Alter Master adding columns at end of table *
-* Expect: Error 1054 *
-*************************************************
-
-*** Create t15 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t15 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='InnoDB';
-
-*** Create t15 on Master ***
-CREATE TABLE t15 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='InnoDB';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7;
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t15 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT,3.00),
-(2,@b1,'JOE',DEFAULT,DEFAULT,3.00),
-(3,@b1,'QA',DEFAULT,DEFAULT,3.00);
-SELECT c1,hex(c4),c5,c6,c7,c2 FROM t15 ORDER BY c1;
-c1 hex(c4) c5 c6 c7 c2
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP 3.00
-2 62316231623162316231623162316231 JOE 1 CURRENT_TIMESTAMP 3.00
-3 62316231623162316231623162316231 QA 1 CURRENT_TIMESTAMP 3.00
-
-********************************************
-*** 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'
-STOP SLAVE;
-RESET SLAVE;
-
-*** Drop t15 ***
-DROP TABLE t15;
-DROP TABLE t15;
-RESET MASTER;
-START SLAVE;
-
-************************************************
-* - Create index on Master column not on slave *
-* Expect:Warning *
-************************************************
-
-*** Create t16 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t16 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='InnoDB';
-
-*** Create t16 on Master ***
-CREATE TABLE t16 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='InnoDB';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Create Index and Data Insert ***
-CREATE INDEX part_of_c6 ON t16 (c6);
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t16 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
-(2,@b1,'JOE',2,DEFAULT),
-(3,@b1,'QA',3,DEFAULT);
-SELECT c1,hex(c4),c5,c6,c7 FROM t16 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP
-
-*****************
-*** 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)'
-STOP SLAVE;
-RESET SLAVE;
-
-*** Drop t16 ***
-DROP TABLE t16;
-DROP TABLE t16;
-RESET MASTER;
-START SLAVE;
-
-*****************************************************
-* - Delete rows using column on Master not on slave *
-* Expect: Rows Deleted *
-*****************************************************
-
-*** Create t17 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t17 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='InnoDB';
-
-*** Create t17 on Master ***
-CREATE TABLE t17 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='InnoDB';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t17 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
-(2,@b1,'JOE',2,DEFAULT),
-(3,@b1,'QA',3,DEFAULT);
-SELECT c1,hex(c4),c5,c6,c7 FROM t17 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP
-
-** Select * from Slave **
-SELECT c1,hex(c4),c5 FROM t17 ORDER BY c1;
-c1 hex(c4) c5
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-3 62316231623162316231623162316231 QA
-
-** Delete from master **
-DELETE FROM t17 WHERE c6 = 3;
-SELECT c1,hex(c4),c5,c6,c7 FROM t17 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-
-** Check slave **
-SELECT c1,hex(c4),c5 FROM t17 ORDER BY c1;
-c1 hex(c4) c5
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-DROP TABLE t17;
-
-
-*****************************************************
-* - Update row using column on Master not on slave *
-* Expect: Rows updated *
-*****************************************************
-
-** Bug30674 **
-
-*** Create t18 on slave ***
-
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t18 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='InnoDB';
-
-*** Create t18 on Master ***
-CREATE TABLE t18 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='InnoDB';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t18 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
-(2,@b1,'JOE',2,DEFAULT),
-(3,@b1,'QA',3,DEFAULT);
-SELECT c1,hex(c4),c5,c6,c7 FROM t18 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP
-
-** Select * from Slave **
-SELECT c1,hex(c4),c5 FROM t18 ORDER BY c1;
-c1 hex(c4) c5
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-3 62316231623162316231623162316231 QA
-
-** update from master **
-UPDATE t18 SET c5 = 'TEST' WHERE c6 = 3;
-SELECT c1,hex(c4),c5,c6,c7 FROM t18 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-3 62316231623162316231623162316231 TEST 3 CURRENT_TIMESTAMP
-
-** Check slave **
-SELECT c1,hex(c4),c5 FROM t18 ORDER BY c1;
-c1 hex(c4) c5
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-3 62316231623162316231623162316231 TEST
-DROP TABLE t18;
-
-
-*****************************************************
-* - Insert UUID column on Master not on slave *
-* Expect: Rows inserted *
-*****************************************************
-
-*** Create t5 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t5 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='InnoDB';
-
-*** Create t5 on Master ***
-CREATE TABLE t5 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 LONG,
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='InnoDB';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-INSERT INTO t5 () VALUES(1,@b1,'Kyle',UUID(),DEFAULT),
-(2,@b1,'JOE',UUID(),DEFAULT),
-(3,@b1,'QA',UUID(),DEFAULT);
-SELECT c1,hex(c4),c5,c6,c7 FROM t5 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 6231623162316231 Kyle UUID TIME
-2 6231623162316231 JOE UUID TIME
-3 6231623162316231 QA UUID TIME
-
-** Select * from Slave **
-SELECT c1,hex(c4),c5 FROM t5 ORDER BY c1;
-c1 hex(c4) c5
-1 6231623162316231 Kyle
-2 6231623162316231 JOE
-3 6231623162316231 QA
-DROP TABLE t5;
-
-set binlog_format=statement;
-
-***********************************************************
-***********************************************************
-***************** Start of Testing ************************
-***********************************************************
-***********************************************************
-* This test format == binlog_format STATEMENT and engine == 'InnoDB'
-***********************************************************
-***********************************************************
-
-***** Testing more columns on the Master *****
-
-CREATE TABLE t1 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 FLOAT DEFAULT '2.00',
-f6 CHAR(4) DEFAULT 'TEST',
-f7 INT DEFAULT '0',
-f8 TEXT,
-f9 LONGBLOB,
-f10 BIT(63),
-f11 VARBINARY(64))ENGINE='InnoDB';
-
-* Alter Table on Slave and drop columns f5 through f11 *
-
-alter table t1 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11;
-
-* Insert data in Master then update and delete some rows*
-
-* Select count and 20 rows from Master *
-
-SELECT COUNT(*) FROM t1;
-COUNT(*)
-40
-
-SELECT f1,f2,f3,f4,f5,f6,f7,f8,f9,
-hex(f10),hex(f11) FROM t1 ORDER BY f3 LIMIT 20;
-f1 f2 f3 f4 f5 f6 f7 f8 f9 hex(f10) hex(f11)
-2 2 2 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-3 3 3 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-5 5 5 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-6 6 6 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-8 8 8 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-9 9 9 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-11 11 11 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-12 12 12 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-14 14 14 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-15 15 15 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-17 17 17 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-18 18 18 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-20 20 20 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-21 21 21 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-23 23 23 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-24 24 24 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-26 26 26 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-27 27 27 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-29 29 29 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-30 30 30 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-
-* Select count and 20 rows from Slave *
-
-SELECT COUNT(*) FROM t1;
-COUNT(*)
-40
-
-SELECT * FROM t1 ORDER BY f3 LIMIT 20;
-f1 f2 f3 f4
-2 2 2 second
-3 3 3 next
-5 5 5 second
-6 6 6 next
-8 8 8 second
-9 9 9 next
-11 11 11 second
-12 12 12 next
-14 14 14 second
-15 15 15 next
-17 17 17 second
-18 18 18 next
-20 20 20 second
-21 21 21 next
-23 23 23 second
-24 24 24 next
-26 26 26 second
-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
-
-
-***** Testing Altering table def scenario *****
-
-CREATE TABLE t2 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 DOUBLE DEFAULT '2.00',
-f6 ENUM('a', 'b', 'c') default 'a',
-f7 DECIMAL(17,9) default '1000.00',
-f8 MEDIUMBLOB,
-f9 NUMERIC(6,4) default '2000.00',
-f10 VARCHAR(1024),
-f11 BINARY(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-f12 SET('a', 'b', 'c') default 'b')
-ENGINE='InnoDB';
-Warnings:
-Warning 1264 Out of range value for column 'f9' at row 1
-
-CREATE TABLE t3 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 DOUBLE DEFAULT '2.00',
-f6 ENUM('a', 'b', 'c') default 'a',
-f8 MEDIUMBLOB,
-f10 VARCHAR(1024),
-f11 BINARY(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-f12 SET('a', 'b', 'c') default 'b')
-ENGINE='InnoDB';
-
-CREATE TABLE t4 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 DOUBLE DEFAULT '2.00',
-f6 DECIMAL(17,9) default '1000.00',
-f7 MEDIUMBLOB,
-f8 NUMERIC(6,4) default '2000.00',
-f9 VARCHAR(1024),
-f10 BINARY(20) not null default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-f11 CHAR(255))
-ENGINE='InnoDB';
-Warnings:
-Warning 1264 Out of range value for column 'f8' at row 1
-
-CREATE TABLE t31 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 BIGINT,
-f6 BLOB,
-f7 DATE,
-f8 DATETIME,
-f9 FLOAT,
-f10 INT,
-f11 LONGBLOB,
-f12 LONGTEXT,
-f13 MEDIUMBLOB,
-f14 MEDIUMINT,
-f15 MEDIUMTEXT,
-f16 REAL,
-f17 SMALLINT,
-f18 TEXT,
-f19 TIME,
-f20 TIMESTAMP,
-f21 TINYBLOB,
-f22 TINYINT,
-f23 TINYTEXT,
-f24 YEAR,
-f25 BINARY(255),
-f26 BIT(64),
-f27 CHAR(255),
-f28 DECIMAL(30,7),
-f29 DOUBLE,
-f30 ENUM ('a','b', 'c') default 'a',
-f31 FLOAT,
-f32 NUMERIC(17,9),
-f33 SET ('a', 'b', 'c') default 'b',
-f34 VARBINARY(1025),
-f35 VARCHAR(257)
-) ENGINE='InnoDB';
-
-** Alter tables on slave and drop columns **
-
-alter table t2 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11, drop
-f12;
-alter table t3 drop f5, drop f6, drop f8, drop f10, drop f11, drop f12;
-alter table t4 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11;
-alter table t31
-drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11,
-drop f12, drop f13, drop f14, drop f15, drop f16, drop f17, drop f18,
-drop f19, drop f20, drop f21, drop f22, drop f23, drop f24, drop f25,
-drop f26, drop f27, drop f28, drop f29, drop f30, drop f31, drop f32,
-drop f33, drop f34, drop f35;
-
-** Insert Data into Master **
-INSERT into t2 set f1=1, f2=1, f3=1, f4='first', f8='f8: medium size blob', f10='f10:
-some var char';
-INSERT into t2 values (2, 2, 2, 'second',
-2.0, 'b', 2000.0002, 'f8: medium size blob', 2000, 'f10: some var char',
-'01234567', 'c'),
-(3, 3, 3, 'third',
-3.0, 'b', 3000.0003, 'f8: medium size blob', 3000, 'f10: some var char',
-'01234567', 'c');
-Warnings:
-Warning 1264 Out of range value for column 'f9' at row 1
-Warning 1264 Out of range value for column 'f9' at row 2
-INSERT into t3 set f1=1, f2=1, f3=1, f4='first', f10='f10: some var char';
-INSERT into t4 set f1=1, f2=1, f3=1, f4='first', f7='f7: medium size blob', f10='f10:
-binary data';
-INSERT into t31 set f1=1, f2=1, f3=1, f4='first';
-INSERT into t31 set f1=1, f2=1, f3=2, f4='second',
-f9=2.2, f10='seven samurai', f28=222.222, f35='222';
-Warnings:
-Warning 1366 Incorrect integer value: 'seven samurai' for column 'f10' at row 1
-INSERT into t31 values (1, 1, 3, 'third',
-/* f5 BIGINT, */ 333333333333333333333333,
-/* f6 BLOB, */ '3333333333333333333333',
-/* f7 DATE, */ '2007-07-18',
-/* f8 DATETIME, */ "2007-07-18",
-/* f9 FLOAT, */ 3.33333333,
-/* f10 INT, */ 333333333,
-/* f11 LONGBLOB, */ '3333333333333333333',
-/* f12 LONGTEXT, */ '3333333333333333333',
-/* f13 MEDIUMBLOB, */ '3333333333333333333',
-/* f14 MEDIUMINT, */ 33,
-/* f15 MEDIUMTEXT, */ 3.3,
-/* f16 REAL, */ 3.3,
-/* f17 SMALLINT, */ 3,
-/* f18 TEXT, */ '33',
-/* f19 TIME, */ '2:59:58.999',
-/* f20 TIMESTAMP, */ 20000303000000,
-/* f21 TINYBLOB, */ '3333',
-/* f22 TINYINT, */ 3,
-/* f23 TINYTEXT, */ '3',
-/* f24 YEAR, */ 3000,
-/* f25 BINARY(255), */ 'three_33333',
-/* f26 BIT(64), */ b'011',
-/* f27 CHAR(255), */ 'three',
-/* f28 DECIMAL(30,7), */ 3.333,
-/* f29 DOUBLE, */ 3.333333333333333333333333333,
-/* f30 ENUM ('a','b','c')*/ 'c',
-/* f31 FLOAT, */ 3.0,
-/* f32 NUMERIC(17,9), */ 3.3333,
-/* f33 SET ('a','b','c'),*/ 'c',
-/*f34 VARBINARY(1025),*/ '3333 minus 3',
-/*f35 VARCHAR(257),*/ 'three times three'
- );
-Warnings:
-Warning 1264 Out of range value for column 'f5' at row 1
-Warning 1264 Out of range value for column 'f24' at row 1
-INSERT into t31 values (1, 1, 4, 'fourth',
-/* f5 BIGINT, */ 333333333333333333333333,
-/* f6 BLOB, */ '3333333333333333333333',
-/* f7 DATE, */ '2007-07-18',
-/* f8 DATETIME, */ "2007-07-18",
-/* f9 FLOAT, */ 3.33333333,
-/* f10 INT, */ 333333333,
-/* f11 LONGBLOB, */ '3333333333333333333',
-/* f12 LONGTEXT, */ '3333333333333333333',
-/* f13 MEDIUMBLOB, */ '3333333333333333333',
-/* f14 MEDIUMINT, */ 33,
-/* f15 MEDIUMTEXT, */ 3.3,
-/* f16 REAL, */ 3.3,
-/* f17 SMALLINT, */ 3,
-/* f18 TEXT, */ '33',
-/* f19 TIME, */ '2:59:58.999',
-/* f20 TIMESTAMP, */ 20000303000000,
-/* f21 TINYBLOB, */ '3333',
-/* f22 TINYINT, */ 3,
-/* f23 TINYTEXT, */ '3',
-/* f24 YEAR, */ 3000,
-/* f25 BINARY(255), */ 'three_33333',
-/* f26 BIT(64), */ b'011',
-/* f27 CHAR(255), */ 'three',
-/* f28 DECIMAL(30,7), */ 3.333,
-/* f29 DOUBLE, */ 3.333333333333333333333333333,
-/* f30 ENUM ('a','b','c')*/ 'c',
-/* f31 FLOAT, */ 3.0,
-/* f32 NUMERIC(17,9), */ 3.3333,
-/* f33 SET ('a','b','c'),*/ 'c',
-/*f34 VARBINARY(1025),*/ '3333 minus 3',
-/*f35 VARCHAR(257),*/ 'three times three'
- ),
-(1, 1, 5, 'fifth',
-/* f5 BIGINT, */ 333333333333333333333333,
-/* f6 BLOB, */ '3333333333333333333333',
-/* f7 DATE, */ '2007-07-18',
-/* f8 DATETIME, */ "2007-07-18",
-/* f9 FLOAT, */ 3.33333333,
-/* f10 INT, */ 333333333,
-/* f11 LONGBLOB, */ '3333333333333333333',
-/* f12 LONGTEXT, */ '3333333333333333333',
-/* f13 MEDIUMBLOB, */ '3333333333333333333',
-/* f14 MEDIUMINT, */ 33,
-/* f15 MEDIUMTEXT, */ 3.3,
-/* f16 REAL, */ 3.3,
-/* f17 SMALLINT, */ 3,
-/* f18 TEXT, */ '33',
-/* f19 TIME, */ '2:59:58.999',
-/* f20 TIMESTAMP, */ 20000303000000,
-/* f21 TINYBLOB, */ '3333',
-/* f22 TINYINT, */ 3,
-/* f23 TINYTEXT, */ '3',
-/* f24 YEAR, */ 3000,
-/* f25 BINARY(255), */ 'three_33333',
-/* f26 BIT(64), */ b'011',
-/* f27 CHAR(255), */ 'three',
-/* f28 DECIMAL(30,7), */ 3.333,
-/* f29 DOUBLE, */ 3.333333333333333333333333333,
-/* f30 ENUM ('a','b','c')*/ 'c',
-/* f31 FLOAT, */ 3.0,
-/* f32 NUMERIC(17,9), */ 3.3333,
-/* f33 SET ('a','b','c'),*/ 'c',
-/*f34 VARBINARY(1025),*/ '3333 minus 3',
-/*f35 VARCHAR(257),*/ 'three times three'
- ),
-(1, 1, 6, 'sixth',
-/* f5 BIGINT, */ NULL,
-/* f6 BLOB, */ '3333333333333333333333',
-/* f7 DATE, */ '2007-07-18',
-/* f8 DATETIME, */ "2007-07-18",
-/* f9 FLOAT, */ 3.33333333,
-/* f10 INT, */ 333333333,
-/* f11 LONGBLOB, */ '3333333333333333333',
-/* f12 LONGTEXT, */ '3333333333333333333',
-/* f13 MEDIUMBLOB, */ '3333333333333333333',
-/* f14 MEDIUMINT, */ 33,
-/* f15 MEDIUMTEXT, */ 3.3,
-/* f16 REAL, */ 3.3,
-/* f17 SMALLINT, */ 3,
-/* f18 TEXT, */ '33',
-/* f19 TIME, */ '2:59:58.999',
-/* f20 TIMESTAMP, */ 20000303000000,
-/* f21 TINYBLOB, */ '3333',
-/* f22 TINYINT, */ 3,
-/* f23 TINYTEXT, */ '3',
-/* f24 YEAR, */ 3000,
-/* f25 BINARY(255), */ 'three_33333',
-/* f26 BIT(64), */ b'011',
-/* f27 CHAR(255), */ 'three',
-/* f28 DECIMAL(30,7), */ 3.333,
-/* f29 DOUBLE, */ 3.333333333333333333333333333,
-/* f30 ENUM ('a','b','c')*/ 'c',
-/* f31 FLOAT, */ 3.0,
-/* f32 NUMERIC(17,9), */ 3.3333,
-/* f33 SET ('a','b','c'),*/ 'c',
-/*f34 VARBINARY(1025),*/ '3333 minus 3',
-/*f35 VARCHAR(257),*/ NULL
-);
-Warnings:
-Warning 1264 Out of range value for column 'f5' at row 1
-Warning 1264 Out of range value for column 'f24' at row 1
-Warning 1264 Out of range value for column 'f5' at row 2
-Warning 1264 Out of range value for column 'f24' at row 2
-Warning 1264 Out of range value for column 'f24' at row 3
-
-** Sync slave with master **
-** Do selects from tables **
-
-select * from t1 order by f3;
-f1 f2 f3 f4
-2 2 2 second
-3 3 3 next
-5 5 5 second
-6 6 6 next
-8 8 8 second
-9 9 9 next
-11 11 11 second
-12 12 12 next
-14 14 14 second
-15 15 15 next
-17 17 17 second
-18 18 18 next
-20 20 20 second
-21 21 21 next
-23 23 23 second
-24 24 24 next
-26 26 26 second
-27 27 27 next
-29 29 29 second
-30 30 30 next
-31 31 31 second
-32 32 32 second
-33 33 33 second
-34 34 34 second
-35 35 35 second
-36 36 36 second
-37 37 37 second
-38 38 38 second
-39 39 39 second
-40 40 40 second
-41 41 41 second
-42 42 42 second
-43 43 43 second
-44 44 44 second
-45 45 45 second
-46 46 46 second
-47 47 47 second
-48 48 48 second
-49 49 49 second
-50 50 50 second
-select * from t2 order by f1;
-f1 f2 f3 f4
-1 1 1 first
-2 2 2 second
-3 3 3 third
-select * from t3 order by f1;
-f1 f2 f3 f4
-1 1 1 first
-select * from t4 order by f1;
-f1 f2 f3 f4
-1 1 1 first
-select * from t31 order by f3;
-f1 f2 f3 f4
-1 1 1 first
-1 1 2 second
-1 1 3 third
-1 1 4 fourth
-1 1 5 fifth
-1 1 6 sixth
-
-** Do updates master **
-
-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=NULL, f27=NULL, f35='f35 new value' where f3=3;
-Warnings:
-Warning 1048 Column 'f3' cannot be null
-
-** Delete from Master **
-
-delete from t1;
-delete from t2;
-delete from t3;
-delete from t4;
-delete from t31;
-
-** 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
-
-****************************************
-* columns in master at middle of table *
-* Expect: Proper error message *
-****************************************
-
-** Stop and Reset Slave **
-
-STOP SLAVE;
-RESET SLAVE;
-
-** create table slave side **
-CREATE TABLE t10 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
-) ENGINE='InnoDB';
-
-** Connect to master and create table **
-
-CREATE TABLE t10 (a INT KEY, b BLOB, f DOUBLE DEFAULT '233',
-c CHAR(5), e INT DEFAULT '1')ENGINE='InnoDB';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT),
-(2,@b1,DEFAULT,'JOE',DEFAULT),
-(3,@b1,DEFAULT,'QA',DEFAULT);
-
-********************************************
-*** Expect slave to fail with Error 1523 ***
-********************************************
-
-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;
-
-*** Drop t10 ***
-DROP TABLE t10;
-
-*********************************************
-* More columns in master at middle of table *
-* Expect: Proper error message *
-*********************************************
-
-*** Create t11 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t11 (a INT PRIMARY KEY, b BLOB, c VARCHAR(254)
-) ENGINE='InnoDB';
-
-*** Create t11 on Master ***
-CREATE TABLE t11 (a INT KEY, b BLOB, f TEXT,
-c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='InnoDB';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT),
-(2,@b1,'Testing is cool','JOE',DEFAULT),
-(3,@b1,DEFAULT,'QA',DEFAULT);
-
-********************************************
-*** Expect slave to fail with Error 1523 ***
-********************************************
-
-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;
-
-*** Drop t11 ***
-DROP TABLE t11;
-
-*********************************************
-* More columns in master at middle of table *
-* Expect: This one should pass blob-text *
-*********************************************
-
-*** Create t12 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t12 (a INT PRIMARY KEY, b BLOB, c BLOB
-) ENGINE='InnoDB';
-
-*** Create t12 on Master ***
-CREATE TABLE t12 (a INT KEY, b BLOB, f TEXT,
-c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='InnoDB';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t12 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
-(2,@b1,'JOE',DEFAULT,DEFAULT),
-(3,@b1,'QA',DEFAULT,DEFAULT);
-
-SELECT a,hex(b),f,c,e FROM t12 ORDER BY a;
-a hex(b) f c e
-1 62316231623162316231623162316231 Kyle test 1
-2 62316231623162316231623162316231 JOE test 1
-3 62316231623162316231623162316231 QA test 1
-
-*** Select on Slave ***
-SELECT a,hex(b),c FROM t12 ORDER BY a;
-a hex(b) c
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-3 62316231623162316231623162316231 QA
-
-*** Drop t12 ***
-DROP TABLE t12;
-
-****************************************************
-* - Alter Master adding columns at middle of table *
-* Expect: columns added *
-****************************************************
-
-
-*** Create t14 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t14 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='InnoDB';
-
-*** Create t14 on Master ***
-CREATE TABLE t14 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='InnoDB';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-ALTER TABLE t14 ADD COLUMN c2 DECIMAL(8,2) AFTER c1;
-ALTER TABLE t14 ADD COLUMN c3 TEXT AFTER c2;
-
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t14 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle',DEFAULT,DEFAULT),
-(2,2.00,'This Test Should work',@b1,'JOE',DEFAULT,DEFAULT),
-(3,3.00,'If is does not, I will open a bug',@b1,'QA',DEFAULT,DEFAULT);
-
-SELECT c1,c2,c3,hex(c4),c5,c6,c7 FROM t14 ORDER BY c1;
-c1 c2 c3 hex(c4) c5 c6 c7
-1 1.00 Replication Testing Extra Col 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 2.00 This Test Should work 62316231623162316231623162316231 JOE 1 CURRENT_TIMESTAMP
-3 3.00 If is does not, I will open a bug 62316231623162316231623162316231 QA 1 CURRENT_TIMESTAMP
-
-*** Select on Slave ****
-SELECT c1,c2,c3,hex(c4),c5 FROM t14 ORDER BY c1;
-c1 c2 c3 hex(c4) c5
-1 1.00 Replication Testing Extra Col 62316231623162316231623162316231 Kyle
-2 2.00 This Test Should work 62316231623162316231623162316231 JOE
-3 3.00 If is does not, I will open a bug 62316231623162316231623162316231 QA
-
-****************************************************
-* - Alter Master Dropping columns from the middle. *
-* Expect: columns dropped *
-****************************************************
-
-*** connect to master and drop columns ***
-ALTER TABLE t14 DROP COLUMN c2;
-ALTER TABLE t14 DROP COLUMN c7;
-
-*** Select from Master ***
-SELECT c1,c3,hex(c4),c5,c6 FROM t14 ORDER BY c1;
-c1 c3 hex(c4) c5 c6
-1 Replication Testing Extra Col 62316231623162316231623162316231 Kyle 1
-2 This Test Should work 62316231623162316231623162316231 JOE 1
-3 If is does not, I will open a bug 62316231623162316231623162316231 QA 1
-
-************
-* 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'
-STOP SLAVE;
-RESET SLAVE;
-
-*** Drop t14 ***
-DROP TABLE t14;
-DROP TABLE t14;
-RESET MASTER;
-START SLAVE;
-
-*************************************************
-* - Alter Master adding columns at end of table *
-* Expect: Error 1054 *
-*************************************************
-
-*** Create t15 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t15 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='InnoDB';
-
-*** Create t15 on Master ***
-CREATE TABLE t15 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='InnoDB';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7;
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t15 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT,3.00),
-(2,@b1,'JOE',DEFAULT,DEFAULT,3.00),
-(3,@b1,'QA',DEFAULT,DEFAULT,3.00);
-SELECT c1,hex(c4),c5,c6,c7,c2 FROM t15 ORDER BY c1;
-c1 hex(c4) c5 c6 c7 c2
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP 3.00
-2 62316231623162316231623162316231 JOE 1 CURRENT_TIMESTAMP 3.00
-3 62316231623162316231623162316231 QA 1 CURRENT_TIMESTAMP 3.00
-
-********************************************
-*** 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'
-STOP SLAVE;
-RESET SLAVE;
-
-*** Drop t15 ***
-DROP TABLE t15;
-DROP TABLE t15;
-RESET MASTER;
-START SLAVE;
-
-************************************************
-* - Create index on Master column not on slave *
-* Expect:Warning *
-************************************************
-
-*** Create t16 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t16 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='InnoDB';
-
-*** Create t16 on Master ***
-CREATE TABLE t16 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='InnoDB';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Create Index and Data Insert ***
-CREATE INDEX part_of_c6 ON t16 (c6);
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t16 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
-(2,@b1,'JOE',2,DEFAULT),
-(3,@b1,'QA',3,DEFAULT);
-SELECT c1,hex(c4),c5,c6,c7 FROM t16 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP
-
-*****************
-*** 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)'
-STOP SLAVE;
-RESET SLAVE;
-
-*** Drop t16 ***
-DROP TABLE t16;
-DROP TABLE t16;
-RESET MASTER;
-START SLAVE;
-
-*****************************************************
-* - Delete rows using column on Master not on slave *
-* Expect: Rows Deleted *
-*****************************************************
-
-*** Create t17 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t17 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='InnoDB';
-
-*** Create t17 on Master ***
-CREATE TABLE t17 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='InnoDB';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t17 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
-(2,@b1,'JOE',2,DEFAULT),
-(3,@b1,'QA',3,DEFAULT);
-SELECT c1,hex(c4),c5,c6,c7 FROM t17 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP
-
-** Select * from Slave **
-SELECT c1,hex(c4),c5 FROM t17 ORDER BY c1;
-c1 hex(c4) c5
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-3 62316231623162316231623162316231 QA
-
-** Delete from master **
-DELETE FROM t17 WHERE c6 = 3;
-SELECT c1,hex(c4),c5,c6,c7 FROM t17 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-
-** Check slave **
-SELECT c1,hex(c4),c5 FROM t17 ORDER BY c1;
-c1 hex(c4) c5
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-DROP TABLE t17;
-
-
-*****************************************************
-* - Update row using column on Master not on slave *
-* Expect: Rows updated *
-*****************************************************
-
-** Bug30674 **
-
-*** Create t18 on slave ***
-
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t18 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='InnoDB';
-
-*** Create t18 on Master ***
-CREATE TABLE t18 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='InnoDB';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t18 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
-(2,@b1,'JOE',2,DEFAULT),
-(3,@b1,'QA',3,DEFAULT);
-SELECT c1,hex(c4),c5,c6,c7 FROM t18 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP
-
-** Select * from Slave **
-SELECT c1,hex(c4),c5 FROM t18 ORDER BY c1;
-c1 hex(c4) c5
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-3 62316231623162316231623162316231 QA
-
-** update from master **
-UPDATE t18 SET c5 = 'TEST' WHERE c6 = 3;
-SELECT c1,hex(c4),c5,c6,c7 FROM t18 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-3 62316231623162316231623162316231 TEST 3 CURRENT_TIMESTAMP
-
-** Check slave **
-SELECT c1,hex(c4),c5 FROM t18 ORDER BY c1;
-c1 hex(c4) c5
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-3 62316231623162316231623162316231 TEST
-DROP TABLE t18;
-
-
-*****************************************************
-* - Insert UUID column on Master not on slave *
-* Expect: Rows inserted *
-*****************************************************
-
-*** Create t5 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t5 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='InnoDB';
-
-*** Create t5 on Master ***
-CREATE TABLE t5 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 LONG,
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='InnoDB';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-INSERT INTO t5 () VALUES(1,@b1,'Kyle',UUID(),DEFAULT),
-(2,@b1,'JOE',UUID(),DEFAULT),
-(3,@b1,'QA',UUID(),DEFAULT);
-SELECT c1,hex(c4),c5,c6,c7 FROM t5 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 6231623162316231 Kyle UUID TIME
-2 6231623162316231 JOE UUID TIME
-3 6231623162316231 QA UUID TIME
-
-** Select * from Slave **
-SELECT c1,hex(c4),c5 FROM t5 ORDER BY c1;
-c1 hex(c4) c5
-1 6231623162316231 Kyle
-2 6231623162316231 JOE
-3 6231623162316231 QA
-DROP TABLE t5;
-
-set binlog_format=mixed;
-
-***********************************************************
-***********************************************************
-***************** Start of Testing ************************
-***********************************************************
-***********************************************************
-* This test format == binlog_format MIXED and engine == 'InnoDB'
-***********************************************************
-***********************************************************
-
-***** Testing more columns on the Master *****
-
-CREATE TABLE t1 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 FLOAT DEFAULT '2.00',
-f6 CHAR(4) DEFAULT 'TEST',
-f7 INT DEFAULT '0',
-f8 TEXT,
-f9 LONGBLOB,
-f10 BIT(63),
-f11 VARBINARY(64))ENGINE='InnoDB';
-
-* Alter Table on Slave and drop columns f5 through f11 *
-
-alter table t1 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11;
-
-* Insert data in Master then update and delete some rows*
-
-* Select count and 20 rows from Master *
-
-SELECT COUNT(*) FROM t1;
-COUNT(*)
-40
-
-SELECT f1,f2,f3,f4,f5,f6,f7,f8,f9,
-hex(f10),hex(f11) FROM t1 ORDER BY f3 LIMIT 20;
-f1 f2 f3 f4 f5 f6 f7 f8 f9 hex(f10) hex(f11)
-2 2 2 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-3 3 3 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-5 5 5 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-6 6 6 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-8 8 8 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-9 9 9 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-11 11 11 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-12 12 12 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-14 14 14 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-15 15 15 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-17 17 17 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-18 18 18 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-20 20 20 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-21 21 21 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-23 23 23 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-24 24 24 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-26 26 26 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-27 27 27 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-29 29 29 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-30 30 30 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-
-* Select count and 20 rows from Slave *
-
-SELECT COUNT(*) FROM t1;
-COUNT(*)
-40
-
-SELECT * FROM t1 ORDER BY f3 LIMIT 20;
-f1 f2 f3 f4
-2 2 2 second
-3 3 3 next
-5 5 5 second
-6 6 6 next
-8 8 8 second
-9 9 9 next
-11 11 11 second
-12 12 12 next
-14 14 14 second
-15 15 15 next
-17 17 17 second
-18 18 18 next
-20 20 20 second
-21 21 21 next
-23 23 23 second
-24 24 24 next
-26 26 26 second
-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
-
-
-***** Testing Altering table def scenario *****
-
-CREATE TABLE t2 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 DOUBLE DEFAULT '2.00',
-f6 ENUM('a', 'b', 'c') default 'a',
-f7 DECIMAL(17,9) default '1000.00',
-f8 MEDIUMBLOB,
-f9 NUMERIC(6,4) default '2000.00',
-f10 VARCHAR(1024),
-f11 BINARY(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-f12 SET('a', 'b', 'c') default 'b')
-ENGINE='InnoDB';
-Warnings:
-Warning 1264 Out of range value for column 'f9' at row 1
-
-CREATE TABLE t3 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 DOUBLE DEFAULT '2.00',
-f6 ENUM('a', 'b', 'c') default 'a',
-f8 MEDIUMBLOB,
-f10 VARCHAR(1024),
-f11 BINARY(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-f12 SET('a', 'b', 'c') default 'b')
-ENGINE='InnoDB';
-
-CREATE TABLE t4 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 DOUBLE DEFAULT '2.00',
-f6 DECIMAL(17,9) default '1000.00',
-f7 MEDIUMBLOB,
-f8 NUMERIC(6,4) default '2000.00',
-f9 VARCHAR(1024),
-f10 BINARY(20) not null default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-f11 CHAR(255))
-ENGINE='InnoDB';
-Warnings:
-Warning 1264 Out of range value for column 'f8' at row 1
-
-CREATE TABLE t31 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 BIGINT,
-f6 BLOB,
-f7 DATE,
-f8 DATETIME,
-f9 FLOAT,
-f10 INT,
-f11 LONGBLOB,
-f12 LONGTEXT,
-f13 MEDIUMBLOB,
-f14 MEDIUMINT,
-f15 MEDIUMTEXT,
-f16 REAL,
-f17 SMALLINT,
-f18 TEXT,
-f19 TIME,
-f20 TIMESTAMP,
-f21 TINYBLOB,
-f22 TINYINT,
-f23 TINYTEXT,
-f24 YEAR,
-f25 BINARY(255),
-f26 BIT(64),
-f27 CHAR(255),
-f28 DECIMAL(30,7),
-f29 DOUBLE,
-f30 ENUM ('a','b', 'c') default 'a',
-f31 FLOAT,
-f32 NUMERIC(17,9),
-f33 SET ('a', 'b', 'c') default 'b',
-f34 VARBINARY(1025),
-f35 VARCHAR(257)
-) ENGINE='InnoDB';
-
-** Alter tables on slave and drop columns **
-
-alter table t2 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11, drop
-f12;
-alter table t3 drop f5, drop f6, drop f8, drop f10, drop f11, drop f12;
-alter table t4 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11;
-alter table t31
-drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11,
-drop f12, drop f13, drop f14, drop f15, drop f16, drop f17, drop f18,
-drop f19, drop f20, drop f21, drop f22, drop f23, drop f24, drop f25,
-drop f26, drop f27, drop f28, drop f29, drop f30, drop f31, drop f32,
-drop f33, drop f34, drop f35;
-
-** Insert Data into Master **
-INSERT into t2 set f1=1, f2=1, f3=1, f4='first', f8='f8: medium size blob', f10='f10:
-some var char';
-INSERT into t2 values (2, 2, 2, 'second',
-2.0, 'b', 2000.0002, 'f8: medium size blob', 2000, 'f10: some var char',
-'01234567', 'c'),
-(3, 3, 3, 'third',
-3.0, 'b', 3000.0003, 'f8: medium size blob', 3000, 'f10: some var char',
-'01234567', 'c');
-Warnings:
-Warning 1264 Out of range value for column 'f9' at row 1
-Warning 1264 Out of range value for column 'f9' at row 2
-INSERT into t3 set f1=1, f2=1, f3=1, f4='first', f10='f10: some var char';
-INSERT into t4 set f1=1, f2=1, f3=1, f4='first', f7='f7: medium size blob', f10='f10:
-binary data';
-INSERT into t31 set f1=1, f2=1, f3=1, f4='first';
-INSERT into t31 set f1=1, f2=1, f3=2, f4='second',
-f9=2.2, f10='seven samurai', f28=222.222, f35='222';
-Warnings:
-Warning 1366 Incorrect integer value: 'seven samurai' for column 'f10' at row 1
-INSERT into t31 values (1, 1, 3, 'third',
-/* f5 BIGINT, */ 333333333333333333333333,
-/* f6 BLOB, */ '3333333333333333333333',
-/* f7 DATE, */ '2007-07-18',
-/* f8 DATETIME, */ "2007-07-18",
-/* f9 FLOAT, */ 3.33333333,
-/* f10 INT, */ 333333333,
-/* f11 LONGBLOB, */ '3333333333333333333',
-/* f12 LONGTEXT, */ '3333333333333333333',
-/* f13 MEDIUMBLOB, */ '3333333333333333333',
-/* f14 MEDIUMINT, */ 33,
-/* f15 MEDIUMTEXT, */ 3.3,
-/* f16 REAL, */ 3.3,
-/* f17 SMALLINT, */ 3,
-/* f18 TEXT, */ '33',
-/* f19 TIME, */ '2:59:58.999',
-/* f20 TIMESTAMP, */ 20000303000000,
-/* f21 TINYBLOB, */ '3333',
-/* f22 TINYINT, */ 3,
-/* f23 TINYTEXT, */ '3',
-/* f24 YEAR, */ 3000,
-/* f25 BINARY(255), */ 'three_33333',
-/* f26 BIT(64), */ b'011',
-/* f27 CHAR(255), */ 'three',
-/* f28 DECIMAL(30,7), */ 3.333,
-/* f29 DOUBLE, */ 3.333333333333333333333333333,
-/* f30 ENUM ('a','b','c')*/ 'c',
-/* f31 FLOAT, */ 3.0,
-/* f32 NUMERIC(17,9), */ 3.3333,
-/* f33 SET ('a','b','c'),*/ 'c',
-/*f34 VARBINARY(1025),*/ '3333 minus 3',
-/*f35 VARCHAR(257),*/ 'three times three'
- );
-Warnings:
-Warning 1264 Out of range value for column 'f5' at row 1
-Warning 1264 Out of range value for column 'f24' at row 1
-INSERT into t31 values (1, 1, 4, 'fourth',
-/* f5 BIGINT, */ 333333333333333333333333,
-/* f6 BLOB, */ '3333333333333333333333',
-/* f7 DATE, */ '2007-07-18',
-/* f8 DATETIME, */ "2007-07-18",
-/* f9 FLOAT, */ 3.33333333,
-/* f10 INT, */ 333333333,
-/* f11 LONGBLOB, */ '3333333333333333333',
-/* f12 LONGTEXT, */ '3333333333333333333',
-/* f13 MEDIUMBLOB, */ '3333333333333333333',
-/* f14 MEDIUMINT, */ 33,
-/* f15 MEDIUMTEXT, */ 3.3,
-/* f16 REAL, */ 3.3,
-/* f17 SMALLINT, */ 3,
-/* f18 TEXT, */ '33',
-/* f19 TIME, */ '2:59:58.999',
-/* f20 TIMESTAMP, */ 20000303000000,
-/* f21 TINYBLOB, */ '3333',
-/* f22 TINYINT, */ 3,
-/* f23 TINYTEXT, */ '3',
-/* f24 YEAR, */ 3000,
-/* f25 BINARY(255), */ 'three_33333',
-/* f26 BIT(64), */ b'011',
-/* f27 CHAR(255), */ 'three',
-/* f28 DECIMAL(30,7), */ 3.333,
-/* f29 DOUBLE, */ 3.333333333333333333333333333,
-/* f30 ENUM ('a','b','c')*/ 'c',
-/* f31 FLOAT, */ 3.0,
-/* f32 NUMERIC(17,9), */ 3.3333,
-/* f33 SET ('a','b','c'),*/ 'c',
-/*f34 VARBINARY(1025),*/ '3333 minus 3',
-/*f35 VARCHAR(257),*/ 'three times three'
- ),
-(1, 1, 5, 'fifth',
-/* f5 BIGINT, */ 333333333333333333333333,
-/* f6 BLOB, */ '3333333333333333333333',
-/* f7 DATE, */ '2007-07-18',
-/* f8 DATETIME, */ "2007-07-18",
-/* f9 FLOAT, */ 3.33333333,
-/* f10 INT, */ 333333333,
-/* f11 LONGBLOB, */ '3333333333333333333',
-/* f12 LONGTEXT, */ '3333333333333333333',
-/* f13 MEDIUMBLOB, */ '3333333333333333333',
-/* f14 MEDIUMINT, */ 33,
-/* f15 MEDIUMTEXT, */ 3.3,
-/* f16 REAL, */ 3.3,
-/* f17 SMALLINT, */ 3,
-/* f18 TEXT, */ '33',
-/* f19 TIME, */ '2:59:58.999',
-/* f20 TIMESTAMP, */ 20000303000000,
-/* f21 TINYBLOB, */ '3333',
-/* f22 TINYINT, */ 3,
-/* f23 TINYTEXT, */ '3',
-/* f24 YEAR, */ 3000,
-/* f25 BINARY(255), */ 'three_33333',
-/* f26 BIT(64), */ b'011',
-/* f27 CHAR(255), */ 'three',
-/* f28 DECIMAL(30,7), */ 3.333,
-/* f29 DOUBLE, */ 3.333333333333333333333333333,
-/* f30 ENUM ('a','b','c')*/ 'c',
-/* f31 FLOAT, */ 3.0,
-/* f32 NUMERIC(17,9), */ 3.3333,
-/* f33 SET ('a','b','c'),*/ 'c',
-/*f34 VARBINARY(1025),*/ '3333 minus 3',
-/*f35 VARCHAR(257),*/ 'three times three'
- ),
-(1, 1, 6, 'sixth',
-/* f5 BIGINT, */ NULL,
-/* f6 BLOB, */ '3333333333333333333333',
-/* f7 DATE, */ '2007-07-18',
-/* f8 DATETIME, */ "2007-07-18",
-/* f9 FLOAT, */ 3.33333333,
-/* f10 INT, */ 333333333,
-/* f11 LONGBLOB, */ '3333333333333333333',
-/* f12 LONGTEXT, */ '3333333333333333333',
-/* f13 MEDIUMBLOB, */ '3333333333333333333',
-/* f14 MEDIUMINT, */ 33,
-/* f15 MEDIUMTEXT, */ 3.3,
-/* f16 REAL, */ 3.3,
-/* f17 SMALLINT, */ 3,
-/* f18 TEXT, */ '33',
-/* f19 TIME, */ '2:59:58.999',
-/* f20 TIMESTAMP, */ 20000303000000,
-/* f21 TINYBLOB, */ '3333',
-/* f22 TINYINT, */ 3,
-/* f23 TINYTEXT, */ '3',
-/* f24 YEAR, */ 3000,
-/* f25 BINARY(255), */ 'three_33333',
-/* f26 BIT(64), */ b'011',
-/* f27 CHAR(255), */ 'three',
-/* f28 DECIMAL(30,7), */ 3.333,
-/* f29 DOUBLE, */ 3.333333333333333333333333333,
-/* f30 ENUM ('a','b','c')*/ 'c',
-/* f31 FLOAT, */ 3.0,
-/* f32 NUMERIC(17,9), */ 3.3333,
-/* f33 SET ('a','b','c'),*/ 'c',
-/*f34 VARBINARY(1025),*/ '3333 minus 3',
-/*f35 VARCHAR(257),*/ NULL
-);
-Warnings:
-Warning 1264 Out of range value for column 'f5' at row 1
-Warning 1264 Out of range value for column 'f24' at row 1
-Warning 1264 Out of range value for column 'f5' at row 2
-Warning 1264 Out of range value for column 'f24' at row 2
-Warning 1264 Out of range value for column 'f24' at row 3
-
-** Sync slave with master **
-** Do selects from tables **
-
-select * from t1 order by f3;
-f1 f2 f3 f4
-2 2 2 second
-3 3 3 next
-5 5 5 second
-6 6 6 next
-8 8 8 second
-9 9 9 next
-11 11 11 second
-12 12 12 next
-14 14 14 second
-15 15 15 next
-17 17 17 second
-18 18 18 next
-20 20 20 second
-21 21 21 next
-23 23 23 second
-24 24 24 next
-26 26 26 second
-27 27 27 next
-29 29 29 second
-30 30 30 next
-31 31 31 second
-32 32 32 second
-33 33 33 second
-34 34 34 second
-35 35 35 second
-36 36 36 second
-37 37 37 second
-38 38 38 second
-39 39 39 second
-40 40 40 second
-41 41 41 second
-42 42 42 second
-43 43 43 second
-44 44 44 second
-45 45 45 second
-46 46 46 second
-47 47 47 second
-48 48 48 second
-49 49 49 second
-50 50 50 second
-select * from t2 order by f1;
-f1 f2 f3 f4
-1 1 1 first
-2 2 2 second
-3 3 3 third
-select * from t3 order by f1;
-f1 f2 f3 f4
-1 1 1 first
-select * from t4 order by f1;
-f1 f2 f3 f4
-1 1 1 first
-select * from t31 order by f3;
-f1 f2 f3 f4
-1 1 1 first
-1 1 2 second
-1 1 3 third
-1 1 4 fourth
-1 1 5 fifth
-1 1 6 sixth
-
-** Do updates master **
-
-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=NULL, f27=NULL, f35='f35 new value' where f3=3;
-Warnings:
-Warning 1048 Column 'f3' cannot be null
-
-** Delete from Master **
-
-delete from t1;
-delete from t2;
-delete from t3;
-delete from t4;
-delete from t31;
-
-** 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
-
-****************************************
-* columns in master at middle of table *
-* Expect: Proper error message *
-****************************************
-
-** Stop and Reset Slave **
-
-STOP SLAVE;
-RESET SLAVE;
-
-** create table slave side **
-CREATE TABLE t10 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
-) ENGINE='InnoDB';
-
-** Connect to master and create table **
-
-CREATE TABLE t10 (a INT KEY, b BLOB, f DOUBLE DEFAULT '233',
-c CHAR(5), e INT DEFAULT '1')ENGINE='InnoDB';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT),
-(2,@b1,DEFAULT,'JOE',DEFAULT),
-(3,@b1,DEFAULT,'QA',DEFAULT);
-
-********************************************
-*** Expect slave to fail with Error 1523 ***
-********************************************
-
-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;
-
-*** Drop t10 ***
-DROP TABLE t10;
-
-*********************************************
-* More columns in master at middle of table *
-* Expect: Proper error message *
-*********************************************
-
-*** Create t11 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t11 (a INT PRIMARY KEY, b BLOB, c VARCHAR(254)
-) ENGINE='InnoDB';
-
-*** Create t11 on Master ***
-CREATE TABLE t11 (a INT KEY, b BLOB, f TEXT,
-c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='InnoDB';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT),
-(2,@b1,'Testing is cool','JOE',DEFAULT),
-(3,@b1,DEFAULT,'QA',DEFAULT);
-
-********************************************
-*** Expect slave to fail with Error 1523 ***
-********************************************
-
-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
+Last_SQL_Errno 1677
+Last_SQL_Error Column 2 of table 'test.t11' cannot be converted from type 'tinyblob' to type 'varchar(254)'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
@@ -3091,6 +816,8 @@ 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'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
STOP SLAVE;
RESET SLAVE;
@@ -3177,6 +904,8 @@ 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'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
STOP SLAVE;
RESET SLAVE;
@@ -3263,6 +992,8 @@ 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)'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
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..f55df71d532 100644
--- a/mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result
+++ b/mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result
@@ -4,7 +4,6 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-set binlog_format=row;
***********************************************************
***********************************************************
@@ -133,6 +132,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
***** Testing Altering table def scenario *****
@@ -509,6 +510,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
****************************************
* columns in master at middle of table *
@@ -563,8 +566,8 @@ 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
+Last_Errno 1677
+Last_Error Column 2 of table 'test.t10' cannot be converted from type 'double' to type 'char(5)'
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
@@ -581,8 +584,10 @@ 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
+Last_SQL_Errno 1677
+Last_SQL_Error Column 2 of table 'test.t10' cannot be converted from type 'double' to type 'char(5)'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
@@ -638,8 +643,8 @@ 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
+Last_Errno 1677
+Last_Error Column 2 of table 'test.t11' cannot be converted from type 'tinyblob' to type 'varchar(254)'
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
@@ -656,2290 +661,10 @@ 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;
-
-*** Drop t11 ***
-DROP TABLE t11;
-
-*********************************************
-* More columns in master at middle of table *
-* Expect: This one should pass blob-text *
-*********************************************
-
-*** Create t12 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t12 (a INT PRIMARY KEY, b BLOB, c BLOB
-) ENGINE='MyISAM';
-
-*** Create t12 on Master ***
-CREATE TABLE t12 (a INT KEY, b BLOB, f TEXT,
-c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='MyISAM';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t12 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
-(2,@b1,'JOE',DEFAULT,DEFAULT),
-(3,@b1,'QA',DEFAULT,DEFAULT);
-
-SELECT a,hex(b),f,c,e FROM t12 ORDER BY a;
-a hex(b) f c e
-1 62316231623162316231623162316231 Kyle test 1
-2 62316231623162316231623162316231 JOE test 1
-3 62316231623162316231623162316231 QA test 1
-
-*** Select on Slave ***
-SELECT a,hex(b),c FROM t12 ORDER BY a;
-a hex(b) c
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-3 62316231623162316231623162316231 QA
-
-*** Drop t12 ***
-DROP TABLE t12;
-
-****************************************************
-* - Alter Master adding columns at middle of table *
-* Expect: columns added *
-****************************************************
-
-
-*** Create t14 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t14 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='MyISAM';
-
-*** Create t14 on Master ***
-CREATE TABLE t14 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='MyISAM';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-ALTER TABLE t14 ADD COLUMN c2 DECIMAL(8,2) AFTER c1;
-ALTER TABLE t14 ADD COLUMN c3 TEXT AFTER c2;
-
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t14 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle',DEFAULT,DEFAULT),
-(2,2.00,'This Test Should work',@b1,'JOE',DEFAULT,DEFAULT),
-(3,3.00,'If is does not, I will open a bug',@b1,'QA',DEFAULT,DEFAULT);
-
-SELECT c1,c2,c3,hex(c4),c5,c6,c7 FROM t14 ORDER BY c1;
-c1 c2 c3 hex(c4) c5 c6 c7
-1 1.00 Replication Testing Extra Col 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 2.00 This Test Should work 62316231623162316231623162316231 JOE 1 CURRENT_TIMESTAMP
-3 3.00 If is does not, I will open a bug 62316231623162316231623162316231 QA 1 CURRENT_TIMESTAMP
-
-*** Select on Slave ****
-SELECT c1,c2,c3,hex(c4),c5 FROM t14 ORDER BY c1;
-c1 c2 c3 hex(c4) c5
-1 1.00 Replication Testing Extra Col 62316231623162316231623162316231 Kyle
-2 2.00 This Test Should work 62316231623162316231623162316231 JOE
-3 3.00 If is does not, I will open a bug 62316231623162316231623162316231 QA
-
-****************************************************
-* - Alter Master Dropping columns from the middle. *
-* Expect: columns dropped *
-****************************************************
-
-*** connect to master and drop columns ***
-ALTER TABLE t14 DROP COLUMN c2;
-ALTER TABLE t14 DROP COLUMN c7;
-
-*** Select from Master ***
-SELECT c1,c3,hex(c4),c5,c6 FROM t14 ORDER BY c1;
-c1 c3 hex(c4) c5 c6
-1 Replication Testing Extra Col 62316231623162316231623162316231 Kyle 1
-2 This Test Should work 62316231623162316231623162316231 JOE 1
-3 If is does not, I will open a bug 62316231623162316231623162316231 QA 1
-
-************
-* 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'
-STOP SLAVE;
-RESET SLAVE;
-
-*** Drop t14 ***
-DROP TABLE t14;
-DROP TABLE t14;
-RESET MASTER;
-START SLAVE;
-
-*************************************************
-* - Alter Master adding columns at end of table *
-* Expect: Error 1054 *
-*************************************************
-
-*** Create t15 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t15 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='MyISAM';
-
-*** Create t15 on Master ***
-CREATE TABLE t15 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='MyISAM';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7;
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t15 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT,3.00),
-(2,@b1,'JOE',DEFAULT,DEFAULT,3.00),
-(3,@b1,'QA',DEFAULT,DEFAULT,3.00);
-SELECT c1,hex(c4),c5,c6,c7,c2 FROM t15 ORDER BY c1;
-c1 hex(c4) c5 c6 c7 c2
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP 3.00
-2 62316231623162316231623162316231 JOE 1 CURRENT_TIMESTAMP 3.00
-3 62316231623162316231623162316231 QA 1 CURRENT_TIMESTAMP 3.00
-
-********************************************
-*** 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'
-STOP SLAVE;
-RESET SLAVE;
-
-*** Drop t15 ***
-DROP TABLE t15;
-DROP TABLE t15;
-RESET MASTER;
-START SLAVE;
-
-************************************************
-* - Create index on Master column not on slave *
-* Expect:Warning *
-************************************************
-
-*** Create t16 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t16 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='MyISAM';
-
-*** Create t16 on Master ***
-CREATE TABLE t16 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='MyISAM';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Create Index and Data Insert ***
-CREATE INDEX part_of_c6 ON t16 (c6);
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t16 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
-(2,@b1,'JOE',2,DEFAULT),
-(3,@b1,'QA',3,DEFAULT);
-SELECT c1,hex(c4),c5,c6,c7 FROM t16 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP
-
-*****************
-*** 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)'
-STOP SLAVE;
-RESET SLAVE;
-
-*** Drop t16 ***
-DROP TABLE t16;
-DROP TABLE t16;
-RESET MASTER;
-START SLAVE;
-
-*****************************************************
-* - Delete rows using column on Master not on slave *
-* Expect: Rows Deleted *
-*****************************************************
-
-*** Create t17 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t17 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='MyISAM';
-
-*** Create t17 on Master ***
-CREATE TABLE t17 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='MyISAM';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t17 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
-(2,@b1,'JOE',2,DEFAULT),
-(3,@b1,'QA',3,DEFAULT);
-SELECT c1,hex(c4),c5,c6,c7 FROM t17 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP
-
-** Select * from Slave **
-SELECT c1,hex(c4),c5 FROM t17 ORDER BY c1;
-c1 hex(c4) c5
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-3 62316231623162316231623162316231 QA
-
-** Delete from master **
-DELETE FROM t17 WHERE c6 = 3;
-SELECT c1,hex(c4),c5,c6,c7 FROM t17 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-
-** Check slave **
-SELECT c1,hex(c4),c5 FROM t17 ORDER BY c1;
-c1 hex(c4) c5
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-DROP TABLE t17;
-
-
-*****************************************************
-* - Update row using column on Master not on slave *
-* Expect: Rows updated *
-*****************************************************
-
-** Bug30674 **
-
-*** Create t18 on slave ***
-
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t18 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='MyISAM';
-
-*** Create t18 on Master ***
-CREATE TABLE t18 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='MyISAM';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t18 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
-(2,@b1,'JOE',2,DEFAULT),
-(3,@b1,'QA',3,DEFAULT);
-SELECT c1,hex(c4),c5,c6,c7 FROM t18 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP
-
-** Select * from Slave **
-SELECT c1,hex(c4),c5 FROM t18 ORDER BY c1;
-c1 hex(c4) c5
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-3 62316231623162316231623162316231 QA
-
-** update from master **
-UPDATE t18 SET c5 = 'TEST' WHERE c6 = 3;
-SELECT c1,hex(c4),c5,c6,c7 FROM t18 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-3 62316231623162316231623162316231 TEST 3 CURRENT_TIMESTAMP
-
-** Check slave **
-SELECT c1,hex(c4),c5 FROM t18 ORDER BY c1;
-c1 hex(c4) c5
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-3 62316231623162316231623162316231 TEST
-DROP TABLE t18;
-
-
-*****************************************************
-* - Insert UUID column on Master not on slave *
-* Expect: Rows inserted *
-*****************************************************
-
-*** Create t5 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t5 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='MyISAM';
-
-*** Create t5 on Master ***
-CREATE TABLE t5 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 LONG,
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='MyISAM';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-INSERT INTO t5 () VALUES(1,@b1,'Kyle',UUID(),DEFAULT),
-(2,@b1,'JOE',UUID(),DEFAULT),
-(3,@b1,'QA',UUID(),DEFAULT);
-SELECT c1,hex(c4),c5,c6,c7 FROM t5 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 6231623162316231 Kyle UUID TIME
-2 6231623162316231 JOE UUID TIME
-3 6231623162316231 QA UUID TIME
-
-** Select * from Slave **
-SELECT c1,hex(c4),c5 FROM t5 ORDER BY c1;
-c1 hex(c4) c5
-1 6231623162316231 Kyle
-2 6231623162316231 JOE
-3 6231623162316231 QA
-DROP TABLE t5;
-
-set binlog_format=statement;
-
-***********************************************************
-***********************************************************
-***************** Start of Testing ************************
-***********************************************************
-***********************************************************
-* This test format == binlog_format STATEMENT and engine == 'MyISAM'
-***********************************************************
-***********************************************************
-
-***** Testing more columns on the Master *****
-
-CREATE TABLE t1 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 FLOAT DEFAULT '2.00',
-f6 CHAR(4) DEFAULT 'TEST',
-f7 INT DEFAULT '0',
-f8 TEXT,
-f9 LONGBLOB,
-f10 BIT(63),
-f11 VARBINARY(64))ENGINE='MyISAM';
-
-* Alter Table on Slave and drop columns f5 through f11 *
-
-alter table t1 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11;
-
-* Insert data in Master then update and delete some rows*
-
-* Select count and 20 rows from Master *
-
-SELECT COUNT(*) FROM t1;
-COUNT(*)
-40
-
-SELECT f1,f2,f3,f4,f5,f6,f7,f8,f9,
-hex(f10),hex(f11) FROM t1 ORDER BY f3 LIMIT 20;
-f1 f2 f3 f4 f5 f6 f7 f8 f9 hex(f10) hex(f11)
-2 2 2 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-3 3 3 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-5 5 5 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-6 6 6 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-8 8 8 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-9 9 9 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-11 11 11 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-12 12 12 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-14 14 14 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-15 15 15 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-17 17 17 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-18 18 18 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-20 20 20 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-21 21 21 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-23 23 23 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-24 24 24 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-26 26 26 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-27 27 27 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-29 29 29 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-30 30 30 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-
-* Select count and 20 rows from Slave *
-
-SELECT COUNT(*) FROM t1;
-COUNT(*)
-40
-
-SELECT * FROM t1 ORDER BY f3 LIMIT 20;
-f1 f2 f3 f4
-2 2 2 second
-3 3 3 next
-5 5 5 second
-6 6 6 next
-8 8 8 second
-9 9 9 next
-11 11 11 second
-12 12 12 next
-14 14 14 second
-15 15 15 next
-17 17 17 second
-18 18 18 next
-20 20 20 second
-21 21 21 next
-23 23 23 second
-24 24 24 next
-26 26 26 second
-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
-
-
-***** Testing Altering table def scenario *****
-
-CREATE TABLE t2 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 DOUBLE DEFAULT '2.00',
-f6 ENUM('a', 'b', 'c') default 'a',
-f7 DECIMAL(17,9) default '1000.00',
-f8 MEDIUMBLOB,
-f9 NUMERIC(6,4) default '2000.00',
-f10 VARCHAR(1024),
-f11 BINARY(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-f12 SET('a', 'b', 'c') default 'b')
-ENGINE='MyISAM';
-Warnings:
-Warning 1264 Out of range value for column 'f9' at row 1
-
-CREATE TABLE t3 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 DOUBLE DEFAULT '2.00',
-f6 ENUM('a', 'b', 'c') default 'a',
-f8 MEDIUMBLOB,
-f10 VARCHAR(1024),
-f11 BINARY(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-f12 SET('a', 'b', 'c') default 'b')
-ENGINE='MyISAM';
-
-CREATE TABLE t4 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 DOUBLE DEFAULT '2.00',
-f6 DECIMAL(17,9) default '1000.00',
-f7 MEDIUMBLOB,
-f8 NUMERIC(6,4) default '2000.00',
-f9 VARCHAR(1024),
-f10 BINARY(20) not null default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-f11 CHAR(255))
-ENGINE='MyISAM';
-Warnings:
-Warning 1264 Out of range value for column 'f8' at row 1
-
-CREATE TABLE t31 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 BIGINT,
-f6 BLOB,
-f7 DATE,
-f8 DATETIME,
-f9 FLOAT,
-f10 INT,
-f11 LONGBLOB,
-f12 LONGTEXT,
-f13 MEDIUMBLOB,
-f14 MEDIUMINT,
-f15 MEDIUMTEXT,
-f16 REAL,
-f17 SMALLINT,
-f18 TEXT,
-f19 TIME,
-f20 TIMESTAMP,
-f21 TINYBLOB,
-f22 TINYINT,
-f23 TINYTEXT,
-f24 YEAR,
-f25 BINARY(255),
-f26 BIT(64),
-f27 CHAR(255),
-f28 DECIMAL(30,7),
-f29 DOUBLE,
-f30 ENUM ('a','b', 'c') default 'a',
-f31 FLOAT,
-f32 NUMERIC(17,9),
-f33 SET ('a', 'b', 'c') default 'b',
-f34 VARBINARY(1025),
-f35 VARCHAR(257)
-) ENGINE='MyISAM';
-
-** Alter tables on slave and drop columns **
-
-alter table t2 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11, drop
-f12;
-alter table t3 drop f5, drop f6, drop f8, drop f10, drop f11, drop f12;
-alter table t4 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11;
-alter table t31
-drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11,
-drop f12, drop f13, drop f14, drop f15, drop f16, drop f17, drop f18,
-drop f19, drop f20, drop f21, drop f22, drop f23, drop f24, drop f25,
-drop f26, drop f27, drop f28, drop f29, drop f30, drop f31, drop f32,
-drop f33, drop f34, drop f35;
-
-** Insert Data into Master **
-INSERT into t2 set f1=1, f2=1, f3=1, f4='first', f8='f8: medium size blob', f10='f10:
-some var char';
-INSERT into t2 values (2, 2, 2, 'second',
-2.0, 'b', 2000.0002, 'f8: medium size blob', 2000, 'f10: some var char',
-'01234567', 'c'),
-(3, 3, 3, 'third',
-3.0, 'b', 3000.0003, 'f8: medium size blob', 3000, 'f10: some var char',
-'01234567', 'c');
-Warnings:
-Warning 1264 Out of range value for column 'f9' at row 1
-Warning 1264 Out of range value for column 'f9' at row 2
-INSERT into t3 set f1=1, f2=1, f3=1, f4='first', f10='f10: some var char';
-INSERT into t4 set f1=1, f2=1, f3=1, f4='first', f7='f7: medium size blob', f10='f10:
-binary data';
-INSERT into t31 set f1=1, f2=1, f3=1, f4='first';
-INSERT into t31 set f1=1, f2=1, f3=2, f4='second',
-f9=2.2, f10='seven samurai', f28=222.222, f35='222';
-Warnings:
-Warning 1366 Incorrect integer value: 'seven samurai' for column 'f10' at row 1
-INSERT into t31 values (1, 1, 3, 'third',
-/* f5 BIGINT, */ 333333333333333333333333,
-/* f6 BLOB, */ '3333333333333333333333',
-/* f7 DATE, */ '2007-07-18',
-/* f8 DATETIME, */ "2007-07-18",
-/* f9 FLOAT, */ 3.33333333,
-/* f10 INT, */ 333333333,
-/* f11 LONGBLOB, */ '3333333333333333333',
-/* f12 LONGTEXT, */ '3333333333333333333',
-/* f13 MEDIUMBLOB, */ '3333333333333333333',
-/* f14 MEDIUMINT, */ 33,
-/* f15 MEDIUMTEXT, */ 3.3,
-/* f16 REAL, */ 3.3,
-/* f17 SMALLINT, */ 3,
-/* f18 TEXT, */ '33',
-/* f19 TIME, */ '2:59:58.999',
-/* f20 TIMESTAMP, */ 20000303000000,
-/* f21 TINYBLOB, */ '3333',
-/* f22 TINYINT, */ 3,
-/* f23 TINYTEXT, */ '3',
-/* f24 YEAR, */ 3000,
-/* f25 BINARY(255), */ 'three_33333',
-/* f26 BIT(64), */ b'011',
-/* f27 CHAR(255), */ 'three',
-/* f28 DECIMAL(30,7), */ 3.333,
-/* f29 DOUBLE, */ 3.333333333333333333333333333,
-/* f30 ENUM ('a','b','c')*/ 'c',
-/* f31 FLOAT, */ 3.0,
-/* f32 NUMERIC(17,9), */ 3.3333,
-/* f33 SET ('a','b','c'),*/ 'c',
-/*f34 VARBINARY(1025),*/ '3333 minus 3',
-/*f35 VARCHAR(257),*/ 'three times three'
- );
-Warnings:
-Warning 1264 Out of range value for column 'f5' at row 1
-Warning 1264 Out of range value for column 'f24' at row 1
-INSERT into t31 values (1, 1, 4, 'fourth',
-/* f5 BIGINT, */ 333333333333333333333333,
-/* f6 BLOB, */ '3333333333333333333333',
-/* f7 DATE, */ '2007-07-18',
-/* f8 DATETIME, */ "2007-07-18",
-/* f9 FLOAT, */ 3.33333333,
-/* f10 INT, */ 333333333,
-/* f11 LONGBLOB, */ '3333333333333333333',
-/* f12 LONGTEXT, */ '3333333333333333333',
-/* f13 MEDIUMBLOB, */ '3333333333333333333',
-/* f14 MEDIUMINT, */ 33,
-/* f15 MEDIUMTEXT, */ 3.3,
-/* f16 REAL, */ 3.3,
-/* f17 SMALLINT, */ 3,
-/* f18 TEXT, */ '33',
-/* f19 TIME, */ '2:59:58.999',
-/* f20 TIMESTAMP, */ 20000303000000,
-/* f21 TINYBLOB, */ '3333',
-/* f22 TINYINT, */ 3,
-/* f23 TINYTEXT, */ '3',
-/* f24 YEAR, */ 3000,
-/* f25 BINARY(255), */ 'three_33333',
-/* f26 BIT(64), */ b'011',
-/* f27 CHAR(255), */ 'three',
-/* f28 DECIMAL(30,7), */ 3.333,
-/* f29 DOUBLE, */ 3.333333333333333333333333333,
-/* f30 ENUM ('a','b','c')*/ 'c',
-/* f31 FLOAT, */ 3.0,
-/* f32 NUMERIC(17,9), */ 3.3333,
-/* f33 SET ('a','b','c'),*/ 'c',
-/*f34 VARBINARY(1025),*/ '3333 minus 3',
-/*f35 VARCHAR(257),*/ 'three times three'
- ),
-(1, 1, 5, 'fifth',
-/* f5 BIGINT, */ 333333333333333333333333,
-/* f6 BLOB, */ '3333333333333333333333',
-/* f7 DATE, */ '2007-07-18',
-/* f8 DATETIME, */ "2007-07-18",
-/* f9 FLOAT, */ 3.33333333,
-/* f10 INT, */ 333333333,
-/* f11 LONGBLOB, */ '3333333333333333333',
-/* f12 LONGTEXT, */ '3333333333333333333',
-/* f13 MEDIUMBLOB, */ '3333333333333333333',
-/* f14 MEDIUMINT, */ 33,
-/* f15 MEDIUMTEXT, */ 3.3,
-/* f16 REAL, */ 3.3,
-/* f17 SMALLINT, */ 3,
-/* f18 TEXT, */ '33',
-/* f19 TIME, */ '2:59:58.999',
-/* f20 TIMESTAMP, */ 20000303000000,
-/* f21 TINYBLOB, */ '3333',
-/* f22 TINYINT, */ 3,
-/* f23 TINYTEXT, */ '3',
-/* f24 YEAR, */ 3000,
-/* f25 BINARY(255), */ 'three_33333',
-/* f26 BIT(64), */ b'011',
-/* f27 CHAR(255), */ 'three',
-/* f28 DECIMAL(30,7), */ 3.333,
-/* f29 DOUBLE, */ 3.333333333333333333333333333,
-/* f30 ENUM ('a','b','c')*/ 'c',
-/* f31 FLOAT, */ 3.0,
-/* f32 NUMERIC(17,9), */ 3.3333,
-/* f33 SET ('a','b','c'),*/ 'c',
-/*f34 VARBINARY(1025),*/ '3333 minus 3',
-/*f35 VARCHAR(257),*/ 'three times three'
- ),
-(1, 1, 6, 'sixth',
-/* f5 BIGINT, */ NULL,
-/* f6 BLOB, */ '3333333333333333333333',
-/* f7 DATE, */ '2007-07-18',
-/* f8 DATETIME, */ "2007-07-18",
-/* f9 FLOAT, */ 3.33333333,
-/* f10 INT, */ 333333333,
-/* f11 LONGBLOB, */ '3333333333333333333',
-/* f12 LONGTEXT, */ '3333333333333333333',
-/* f13 MEDIUMBLOB, */ '3333333333333333333',
-/* f14 MEDIUMINT, */ 33,
-/* f15 MEDIUMTEXT, */ 3.3,
-/* f16 REAL, */ 3.3,
-/* f17 SMALLINT, */ 3,
-/* f18 TEXT, */ '33',
-/* f19 TIME, */ '2:59:58.999',
-/* f20 TIMESTAMP, */ 20000303000000,
-/* f21 TINYBLOB, */ '3333',
-/* f22 TINYINT, */ 3,
-/* f23 TINYTEXT, */ '3',
-/* f24 YEAR, */ 3000,
-/* f25 BINARY(255), */ 'three_33333',
-/* f26 BIT(64), */ b'011',
-/* f27 CHAR(255), */ 'three',
-/* f28 DECIMAL(30,7), */ 3.333,
-/* f29 DOUBLE, */ 3.333333333333333333333333333,
-/* f30 ENUM ('a','b','c')*/ 'c',
-/* f31 FLOAT, */ 3.0,
-/* f32 NUMERIC(17,9), */ 3.3333,
-/* f33 SET ('a','b','c'),*/ 'c',
-/*f34 VARBINARY(1025),*/ '3333 minus 3',
-/*f35 VARCHAR(257),*/ NULL
-);
-Warnings:
-Warning 1264 Out of range value for column 'f5' at row 1
-Warning 1264 Out of range value for column 'f24' at row 1
-Warning 1264 Out of range value for column 'f5' at row 2
-Warning 1264 Out of range value for column 'f24' at row 2
-Warning 1264 Out of range value for column 'f24' at row 3
-
-** Sync slave with master **
-** Do selects from tables **
-
-select * from t1 order by f3;
-f1 f2 f3 f4
-2 2 2 second
-3 3 3 next
-5 5 5 second
-6 6 6 next
-8 8 8 second
-9 9 9 next
-11 11 11 second
-12 12 12 next
-14 14 14 second
-15 15 15 next
-17 17 17 second
-18 18 18 next
-20 20 20 second
-21 21 21 next
-23 23 23 second
-24 24 24 next
-26 26 26 second
-27 27 27 next
-29 29 29 second
-30 30 30 next
-31 31 31 second
-32 32 32 second
-33 33 33 second
-34 34 34 second
-35 35 35 second
-36 36 36 second
-37 37 37 second
-38 38 38 second
-39 39 39 second
-40 40 40 second
-41 41 41 second
-42 42 42 second
-43 43 43 second
-44 44 44 second
-45 45 45 second
-46 46 46 second
-47 47 47 second
-48 48 48 second
-49 49 49 second
-50 50 50 second
-select * from t2 order by f1;
-f1 f2 f3 f4
-1 1 1 first
-2 2 2 second
-3 3 3 third
-select * from t3 order by f1;
-f1 f2 f3 f4
-1 1 1 first
-select * from t4 order by f1;
-f1 f2 f3 f4
-1 1 1 first
-select * from t31 order by f3;
-f1 f2 f3 f4
-1 1 1 first
-1 1 2 second
-1 1 3 third
-1 1 4 fourth
-1 1 5 fifth
-1 1 6 sixth
-
-** Do updates master **
-
-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=NULL, f27=NULL, f35='f35 new value' where f3=3;
-Warnings:
-Warning 1048 Column 'f3' cannot be null
-
-** Delete from Master **
-
-delete from t1;
-delete from t2;
-delete from t3;
-delete from t4;
-delete from t31;
-
-** 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
-
-****************************************
-* columns in master at middle of table *
-* Expect: Proper error message *
-****************************************
-
-** Stop and Reset Slave **
-
-STOP SLAVE;
-RESET SLAVE;
-
-** create table slave side **
-CREATE TABLE t10 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
-) ENGINE='MyISAM';
-
-** Connect to master and create table **
-
-CREATE TABLE t10 (a INT KEY, b BLOB, f DOUBLE DEFAULT '233',
-c CHAR(5), e INT DEFAULT '1')ENGINE='MyISAM';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT),
-(2,@b1,DEFAULT,'JOE',DEFAULT),
-(3,@b1,DEFAULT,'QA',DEFAULT);
-
-********************************************
-*** Expect slave to fail with Error 1523 ***
-********************************************
-
-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;
-
-*** Drop t10 ***
-DROP TABLE t10;
-
-*********************************************
-* More columns in master at middle of table *
-* Expect: Proper error message *
-*********************************************
-
-*** Create t11 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t11 (a INT PRIMARY KEY, b BLOB, c VARCHAR(254)
-) ENGINE='MyISAM';
-
-*** Create t11 on Master ***
-CREATE TABLE t11 (a INT KEY, b BLOB, f TEXT,
-c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='MyISAM';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT),
-(2,@b1,'Testing is cool','JOE',DEFAULT),
-(3,@b1,DEFAULT,'QA',DEFAULT);
-
-********************************************
-*** Expect slave to fail with Error 1523 ***
-********************************************
-
-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;
-
-*** Drop t11 ***
-DROP TABLE t11;
-
-*********************************************
-* More columns in master at middle of table *
-* Expect: This one should pass blob-text *
-*********************************************
-
-*** Create t12 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t12 (a INT PRIMARY KEY, b BLOB, c BLOB
-) ENGINE='MyISAM';
-
-*** Create t12 on Master ***
-CREATE TABLE t12 (a INT KEY, b BLOB, f TEXT,
-c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='MyISAM';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t12 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
-(2,@b1,'JOE',DEFAULT,DEFAULT),
-(3,@b1,'QA',DEFAULT,DEFAULT);
-
-SELECT a,hex(b),f,c,e FROM t12 ORDER BY a;
-a hex(b) f c e
-1 62316231623162316231623162316231 Kyle test 1
-2 62316231623162316231623162316231 JOE test 1
-3 62316231623162316231623162316231 QA test 1
-
-*** Select on Slave ***
-SELECT a,hex(b),c FROM t12 ORDER BY a;
-a hex(b) c
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-3 62316231623162316231623162316231 QA
-
-*** Drop t12 ***
-DROP TABLE t12;
-
-****************************************************
-* - Alter Master adding columns at middle of table *
-* Expect: columns added *
-****************************************************
-
-
-*** Create t14 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t14 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='MyISAM';
-
-*** Create t14 on Master ***
-CREATE TABLE t14 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='MyISAM';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-ALTER TABLE t14 ADD COLUMN c2 DECIMAL(8,2) AFTER c1;
-ALTER TABLE t14 ADD COLUMN c3 TEXT AFTER c2;
-
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t14 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle',DEFAULT,DEFAULT),
-(2,2.00,'This Test Should work',@b1,'JOE',DEFAULT,DEFAULT),
-(3,3.00,'If is does not, I will open a bug',@b1,'QA',DEFAULT,DEFAULT);
-
-SELECT c1,c2,c3,hex(c4),c5,c6,c7 FROM t14 ORDER BY c1;
-c1 c2 c3 hex(c4) c5 c6 c7
-1 1.00 Replication Testing Extra Col 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 2.00 This Test Should work 62316231623162316231623162316231 JOE 1 CURRENT_TIMESTAMP
-3 3.00 If is does not, I will open a bug 62316231623162316231623162316231 QA 1 CURRENT_TIMESTAMP
-
-*** Select on Slave ****
-SELECT c1,c2,c3,hex(c4),c5 FROM t14 ORDER BY c1;
-c1 c2 c3 hex(c4) c5
-1 1.00 Replication Testing Extra Col 62316231623162316231623162316231 Kyle
-2 2.00 This Test Should work 62316231623162316231623162316231 JOE
-3 3.00 If is does not, I will open a bug 62316231623162316231623162316231 QA
-
-****************************************************
-* - Alter Master Dropping columns from the middle. *
-* Expect: columns dropped *
-****************************************************
-
-*** connect to master and drop columns ***
-ALTER TABLE t14 DROP COLUMN c2;
-ALTER TABLE t14 DROP COLUMN c7;
-
-*** Select from Master ***
-SELECT c1,c3,hex(c4),c5,c6 FROM t14 ORDER BY c1;
-c1 c3 hex(c4) c5 c6
-1 Replication Testing Extra Col 62316231623162316231623162316231 Kyle 1
-2 This Test Should work 62316231623162316231623162316231 JOE 1
-3 If is does not, I will open a bug 62316231623162316231623162316231 QA 1
-
-************
-* 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'
-STOP SLAVE;
-RESET SLAVE;
-
-*** Drop t14 ***
-DROP TABLE t14;
-DROP TABLE t14;
-RESET MASTER;
-START SLAVE;
-
-*************************************************
-* - Alter Master adding columns at end of table *
-* Expect: Error 1054 *
-*************************************************
-
-*** Create t15 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t15 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='MyISAM';
-
-*** Create t15 on Master ***
-CREATE TABLE t15 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='MyISAM';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7;
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t15 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT,3.00),
-(2,@b1,'JOE',DEFAULT,DEFAULT,3.00),
-(3,@b1,'QA',DEFAULT,DEFAULT,3.00);
-SELECT c1,hex(c4),c5,c6,c7,c2 FROM t15 ORDER BY c1;
-c1 hex(c4) c5 c6 c7 c2
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP 3.00
-2 62316231623162316231623162316231 JOE 1 CURRENT_TIMESTAMP 3.00
-3 62316231623162316231623162316231 QA 1 CURRENT_TIMESTAMP 3.00
-
-********************************************
-*** 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'
-STOP SLAVE;
-RESET SLAVE;
-
-*** Drop t15 ***
-DROP TABLE t15;
-DROP TABLE t15;
-RESET MASTER;
-START SLAVE;
-
-************************************************
-* - Create index on Master column not on slave *
-* Expect:Warning *
-************************************************
-
-*** Create t16 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t16 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='MyISAM';
-
-*** Create t16 on Master ***
-CREATE TABLE t16 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='MyISAM';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Create Index and Data Insert ***
-CREATE INDEX part_of_c6 ON t16 (c6);
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t16 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
-(2,@b1,'JOE',2,DEFAULT),
-(3,@b1,'QA',3,DEFAULT);
-SELECT c1,hex(c4),c5,c6,c7 FROM t16 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP
-
-*****************
-*** 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)'
-STOP SLAVE;
-RESET SLAVE;
-
-*** Drop t16 ***
-DROP TABLE t16;
-DROP TABLE t16;
-RESET MASTER;
-START SLAVE;
-
-*****************************************************
-* - Delete rows using column on Master not on slave *
-* Expect: Rows Deleted *
-*****************************************************
-
-*** Create t17 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t17 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='MyISAM';
-
-*** Create t17 on Master ***
-CREATE TABLE t17 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='MyISAM';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t17 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
-(2,@b1,'JOE',2,DEFAULT),
-(3,@b1,'QA',3,DEFAULT);
-SELECT c1,hex(c4),c5,c6,c7 FROM t17 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP
-
-** Select * from Slave **
-SELECT c1,hex(c4),c5 FROM t17 ORDER BY c1;
-c1 hex(c4) c5
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-3 62316231623162316231623162316231 QA
-
-** Delete from master **
-DELETE FROM t17 WHERE c6 = 3;
-SELECT c1,hex(c4),c5,c6,c7 FROM t17 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-
-** Check slave **
-SELECT c1,hex(c4),c5 FROM t17 ORDER BY c1;
-c1 hex(c4) c5
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-DROP TABLE t17;
-
-
-*****************************************************
-* - Update row using column on Master not on slave *
-* Expect: Rows updated *
-*****************************************************
-
-** Bug30674 **
-
-*** Create t18 on slave ***
-
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t18 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='MyISAM';
-
-*** Create t18 on Master ***
-CREATE TABLE t18 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 INT DEFAULT '1',
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='MyISAM';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t18 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
-(2,@b1,'JOE',2,DEFAULT),
-(3,@b1,'QA',3,DEFAULT);
-SELECT c1,hex(c4),c5,c6,c7 FROM t18 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP
-
-** Select * from Slave **
-SELECT c1,hex(c4),c5 FROM t18 ORDER BY c1;
-c1 hex(c4) c5
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-3 62316231623162316231623162316231 QA
-
-** update from master **
-UPDATE t18 SET c5 = 'TEST' WHERE c6 = 3;
-SELECT c1,hex(c4),c5,c6,c7 FROM t18 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
-2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
-3 62316231623162316231623162316231 TEST 3 CURRENT_TIMESTAMP
-
-** Check slave **
-SELECT c1,hex(c4),c5 FROM t18 ORDER BY c1;
-c1 hex(c4) c5
-1 62316231623162316231623162316231 Kyle
-2 62316231623162316231623162316231 JOE
-3 62316231623162316231623162316231 TEST
-DROP TABLE t18;
-
-
-*****************************************************
-* - Insert UUID column on Master not on slave *
-* Expect: Rows inserted *
-*****************************************************
-
-*** Create t5 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t5 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
-) ENGINE='MyISAM';
-
-*** Create t5 on Master ***
-CREATE TABLE t5 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
-c6 LONG,
-c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
-)ENGINE='MyISAM';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-INSERT INTO t5 () VALUES(1,@b1,'Kyle',UUID(),DEFAULT),
-(2,@b1,'JOE',UUID(),DEFAULT),
-(3,@b1,'QA',UUID(),DEFAULT);
-SELECT c1,hex(c4),c5,c6,c7 FROM t5 ORDER BY c1;
-c1 hex(c4) c5 c6 c7
-1 6231623162316231 Kyle UUID TIME
-2 6231623162316231 JOE UUID TIME
-3 6231623162316231 QA UUID TIME
-
-** Select * from Slave **
-SELECT c1,hex(c4),c5 FROM t5 ORDER BY c1;
-c1 hex(c4) c5
-1 6231623162316231 Kyle
-2 6231623162316231 JOE
-3 6231623162316231 QA
-DROP TABLE t5;
-
-set binlog_format=mixed;
-
-***********************************************************
-***********************************************************
-***************** Start of Testing ************************
-***********************************************************
-***********************************************************
-* This test format == binlog_format MIXED and engine == 'MyISAM'
-***********************************************************
-***********************************************************
-
-***** Testing more columns on the Master *****
-
-CREATE TABLE t1 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 FLOAT DEFAULT '2.00',
-f6 CHAR(4) DEFAULT 'TEST',
-f7 INT DEFAULT '0',
-f8 TEXT,
-f9 LONGBLOB,
-f10 BIT(63),
-f11 VARBINARY(64))ENGINE='MyISAM';
-
-* Alter Table on Slave and drop columns f5 through f11 *
-
-alter table t1 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11;
-
-* Insert data in Master then update and delete some rows*
-
-* Select count and 20 rows from Master *
-
-SELECT COUNT(*) FROM t1;
-COUNT(*)
-40
-
-SELECT f1,f2,f3,f4,f5,f6,f7,f8,f9,
-hex(f10),hex(f11) FROM t1 ORDER BY f3 LIMIT 20;
-f1 f2 f3 f4 f5 f6 f7 f8 f9 hex(f10) hex(f11)
-2 2 2 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-3 3 3 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-5 5 5 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-6 6 6 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-8 8 8 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-9 9 9 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-11 11 11 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-12 12 12 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-14 14 14 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-15 15 15 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-17 17 17 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-18 18 18 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-20 20 20 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-21 21 21 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-23 23 23 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-24 24 24 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-26 26 26 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-27 27 27 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-29 29 29 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-30 30 30 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
-
-* Select count and 20 rows from Slave *
-
-SELECT COUNT(*) FROM t1;
-COUNT(*)
-40
-
-SELECT * FROM t1 ORDER BY f3 LIMIT 20;
-f1 f2 f3 f4
-2 2 2 second
-3 3 3 next
-5 5 5 second
-6 6 6 next
-8 8 8 second
-9 9 9 next
-11 11 11 second
-12 12 12 next
-14 14 14 second
-15 15 15 next
-17 17 17 second
-18 18 18 next
-20 20 20 second
-21 21 21 next
-23 23 23 second
-24 24 24 next
-26 26 26 second
-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
-
-
-***** Testing Altering table def scenario *****
-
-CREATE TABLE t2 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 DOUBLE DEFAULT '2.00',
-f6 ENUM('a', 'b', 'c') default 'a',
-f7 DECIMAL(17,9) default '1000.00',
-f8 MEDIUMBLOB,
-f9 NUMERIC(6,4) default '2000.00',
-f10 VARCHAR(1024),
-f11 BINARY(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-f12 SET('a', 'b', 'c') default 'b')
-ENGINE='MyISAM';
-Warnings:
-Warning 1264 Out of range value for column 'f9' at row 1
-
-CREATE TABLE t3 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 DOUBLE DEFAULT '2.00',
-f6 ENUM('a', 'b', 'c') default 'a',
-f8 MEDIUMBLOB,
-f10 VARCHAR(1024),
-f11 BINARY(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-f12 SET('a', 'b', 'c') default 'b')
-ENGINE='MyISAM';
-
-CREATE TABLE t4 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 DOUBLE DEFAULT '2.00',
-f6 DECIMAL(17,9) default '1000.00',
-f7 MEDIUMBLOB,
-f8 NUMERIC(6,4) default '2000.00',
-f9 VARCHAR(1024),
-f10 BINARY(20) not null default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-f11 CHAR(255))
-ENGINE='MyISAM';
-Warnings:
-Warning 1264 Out of range value for column 'f8' at row 1
-
-CREATE TABLE t31 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
-/* extra */
-f5 BIGINT,
-f6 BLOB,
-f7 DATE,
-f8 DATETIME,
-f9 FLOAT,
-f10 INT,
-f11 LONGBLOB,
-f12 LONGTEXT,
-f13 MEDIUMBLOB,
-f14 MEDIUMINT,
-f15 MEDIUMTEXT,
-f16 REAL,
-f17 SMALLINT,
-f18 TEXT,
-f19 TIME,
-f20 TIMESTAMP,
-f21 TINYBLOB,
-f22 TINYINT,
-f23 TINYTEXT,
-f24 YEAR,
-f25 BINARY(255),
-f26 BIT(64),
-f27 CHAR(255),
-f28 DECIMAL(30,7),
-f29 DOUBLE,
-f30 ENUM ('a','b', 'c') default 'a',
-f31 FLOAT,
-f32 NUMERIC(17,9),
-f33 SET ('a', 'b', 'c') default 'b',
-f34 VARBINARY(1025),
-f35 VARCHAR(257)
-) ENGINE='MyISAM';
-
-** Alter tables on slave and drop columns **
-
-alter table t2 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11, drop
-f12;
-alter table t3 drop f5, drop f6, drop f8, drop f10, drop f11, drop f12;
-alter table t4 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11;
-alter table t31
-drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11,
-drop f12, drop f13, drop f14, drop f15, drop f16, drop f17, drop f18,
-drop f19, drop f20, drop f21, drop f22, drop f23, drop f24, drop f25,
-drop f26, drop f27, drop f28, drop f29, drop f30, drop f31, drop f32,
-drop f33, drop f34, drop f35;
-
-** Insert Data into Master **
-INSERT into t2 set f1=1, f2=1, f3=1, f4='first', f8='f8: medium size blob', f10='f10:
-some var char';
-INSERT into t2 values (2, 2, 2, 'second',
-2.0, 'b', 2000.0002, 'f8: medium size blob', 2000, 'f10: some var char',
-'01234567', 'c'),
-(3, 3, 3, 'third',
-3.0, 'b', 3000.0003, 'f8: medium size blob', 3000, 'f10: some var char',
-'01234567', 'c');
-Warnings:
-Warning 1264 Out of range value for column 'f9' at row 1
-Warning 1264 Out of range value for column 'f9' at row 2
-INSERT into t3 set f1=1, f2=1, f3=1, f4='first', f10='f10: some var char';
-INSERT into t4 set f1=1, f2=1, f3=1, f4='first', f7='f7: medium size blob', f10='f10:
-binary data';
-INSERT into t31 set f1=1, f2=1, f3=1, f4='first';
-INSERT into t31 set f1=1, f2=1, f3=2, f4='second',
-f9=2.2, f10='seven samurai', f28=222.222, f35='222';
-Warnings:
-Warning 1366 Incorrect integer value: 'seven samurai' for column 'f10' at row 1
-INSERT into t31 values (1, 1, 3, 'third',
-/* f5 BIGINT, */ 333333333333333333333333,
-/* f6 BLOB, */ '3333333333333333333333',
-/* f7 DATE, */ '2007-07-18',
-/* f8 DATETIME, */ "2007-07-18",
-/* f9 FLOAT, */ 3.33333333,
-/* f10 INT, */ 333333333,
-/* f11 LONGBLOB, */ '3333333333333333333',
-/* f12 LONGTEXT, */ '3333333333333333333',
-/* f13 MEDIUMBLOB, */ '3333333333333333333',
-/* f14 MEDIUMINT, */ 33,
-/* f15 MEDIUMTEXT, */ 3.3,
-/* f16 REAL, */ 3.3,
-/* f17 SMALLINT, */ 3,
-/* f18 TEXT, */ '33',
-/* f19 TIME, */ '2:59:58.999',
-/* f20 TIMESTAMP, */ 20000303000000,
-/* f21 TINYBLOB, */ '3333',
-/* f22 TINYINT, */ 3,
-/* f23 TINYTEXT, */ '3',
-/* f24 YEAR, */ 3000,
-/* f25 BINARY(255), */ 'three_33333',
-/* f26 BIT(64), */ b'011',
-/* f27 CHAR(255), */ 'three',
-/* f28 DECIMAL(30,7), */ 3.333,
-/* f29 DOUBLE, */ 3.333333333333333333333333333,
-/* f30 ENUM ('a','b','c')*/ 'c',
-/* f31 FLOAT, */ 3.0,
-/* f32 NUMERIC(17,9), */ 3.3333,
-/* f33 SET ('a','b','c'),*/ 'c',
-/*f34 VARBINARY(1025),*/ '3333 minus 3',
-/*f35 VARCHAR(257),*/ 'three times three'
- );
-Warnings:
-Warning 1264 Out of range value for column 'f5' at row 1
-Warning 1264 Out of range value for column 'f24' at row 1
-INSERT into t31 values (1, 1, 4, 'fourth',
-/* f5 BIGINT, */ 333333333333333333333333,
-/* f6 BLOB, */ '3333333333333333333333',
-/* f7 DATE, */ '2007-07-18',
-/* f8 DATETIME, */ "2007-07-18",
-/* f9 FLOAT, */ 3.33333333,
-/* f10 INT, */ 333333333,
-/* f11 LONGBLOB, */ '3333333333333333333',
-/* f12 LONGTEXT, */ '3333333333333333333',
-/* f13 MEDIUMBLOB, */ '3333333333333333333',
-/* f14 MEDIUMINT, */ 33,
-/* f15 MEDIUMTEXT, */ 3.3,
-/* f16 REAL, */ 3.3,
-/* f17 SMALLINT, */ 3,
-/* f18 TEXT, */ '33',
-/* f19 TIME, */ '2:59:58.999',
-/* f20 TIMESTAMP, */ 20000303000000,
-/* f21 TINYBLOB, */ '3333',
-/* f22 TINYINT, */ 3,
-/* f23 TINYTEXT, */ '3',
-/* f24 YEAR, */ 3000,
-/* f25 BINARY(255), */ 'three_33333',
-/* f26 BIT(64), */ b'011',
-/* f27 CHAR(255), */ 'three',
-/* f28 DECIMAL(30,7), */ 3.333,
-/* f29 DOUBLE, */ 3.333333333333333333333333333,
-/* f30 ENUM ('a','b','c')*/ 'c',
-/* f31 FLOAT, */ 3.0,
-/* f32 NUMERIC(17,9), */ 3.3333,
-/* f33 SET ('a','b','c'),*/ 'c',
-/*f34 VARBINARY(1025),*/ '3333 minus 3',
-/*f35 VARCHAR(257),*/ 'three times three'
- ),
-(1, 1, 5, 'fifth',
-/* f5 BIGINT, */ 333333333333333333333333,
-/* f6 BLOB, */ '3333333333333333333333',
-/* f7 DATE, */ '2007-07-18',
-/* f8 DATETIME, */ "2007-07-18",
-/* f9 FLOAT, */ 3.33333333,
-/* f10 INT, */ 333333333,
-/* f11 LONGBLOB, */ '3333333333333333333',
-/* f12 LONGTEXT, */ '3333333333333333333',
-/* f13 MEDIUMBLOB, */ '3333333333333333333',
-/* f14 MEDIUMINT, */ 33,
-/* f15 MEDIUMTEXT, */ 3.3,
-/* f16 REAL, */ 3.3,
-/* f17 SMALLINT, */ 3,
-/* f18 TEXT, */ '33',
-/* f19 TIME, */ '2:59:58.999',
-/* f20 TIMESTAMP, */ 20000303000000,
-/* f21 TINYBLOB, */ '3333',
-/* f22 TINYINT, */ 3,
-/* f23 TINYTEXT, */ '3',
-/* f24 YEAR, */ 3000,
-/* f25 BINARY(255), */ 'three_33333',
-/* f26 BIT(64), */ b'011',
-/* f27 CHAR(255), */ 'three',
-/* f28 DECIMAL(30,7), */ 3.333,
-/* f29 DOUBLE, */ 3.333333333333333333333333333,
-/* f30 ENUM ('a','b','c')*/ 'c',
-/* f31 FLOAT, */ 3.0,
-/* f32 NUMERIC(17,9), */ 3.3333,
-/* f33 SET ('a','b','c'),*/ 'c',
-/*f34 VARBINARY(1025),*/ '3333 minus 3',
-/*f35 VARCHAR(257),*/ 'three times three'
- ),
-(1, 1, 6, 'sixth',
-/* f5 BIGINT, */ NULL,
-/* f6 BLOB, */ '3333333333333333333333',
-/* f7 DATE, */ '2007-07-18',
-/* f8 DATETIME, */ "2007-07-18",
-/* f9 FLOAT, */ 3.33333333,
-/* f10 INT, */ 333333333,
-/* f11 LONGBLOB, */ '3333333333333333333',
-/* f12 LONGTEXT, */ '3333333333333333333',
-/* f13 MEDIUMBLOB, */ '3333333333333333333',
-/* f14 MEDIUMINT, */ 33,
-/* f15 MEDIUMTEXT, */ 3.3,
-/* f16 REAL, */ 3.3,
-/* f17 SMALLINT, */ 3,
-/* f18 TEXT, */ '33',
-/* f19 TIME, */ '2:59:58.999',
-/* f20 TIMESTAMP, */ 20000303000000,
-/* f21 TINYBLOB, */ '3333',
-/* f22 TINYINT, */ 3,
-/* f23 TINYTEXT, */ '3',
-/* f24 YEAR, */ 3000,
-/* f25 BINARY(255), */ 'three_33333',
-/* f26 BIT(64), */ b'011',
-/* f27 CHAR(255), */ 'three',
-/* f28 DECIMAL(30,7), */ 3.333,
-/* f29 DOUBLE, */ 3.333333333333333333333333333,
-/* f30 ENUM ('a','b','c')*/ 'c',
-/* f31 FLOAT, */ 3.0,
-/* f32 NUMERIC(17,9), */ 3.3333,
-/* f33 SET ('a','b','c'),*/ 'c',
-/*f34 VARBINARY(1025),*/ '3333 minus 3',
-/*f35 VARCHAR(257),*/ NULL
-);
-Warnings:
-Warning 1264 Out of range value for column 'f5' at row 1
-Warning 1264 Out of range value for column 'f24' at row 1
-Warning 1264 Out of range value for column 'f5' at row 2
-Warning 1264 Out of range value for column 'f24' at row 2
-Warning 1264 Out of range value for column 'f24' at row 3
-
-** Sync slave with master **
-** Do selects from tables **
-
-select * from t1 order by f3;
-f1 f2 f3 f4
-2 2 2 second
-3 3 3 next
-5 5 5 second
-6 6 6 next
-8 8 8 second
-9 9 9 next
-11 11 11 second
-12 12 12 next
-14 14 14 second
-15 15 15 next
-17 17 17 second
-18 18 18 next
-20 20 20 second
-21 21 21 next
-23 23 23 second
-24 24 24 next
-26 26 26 second
-27 27 27 next
-29 29 29 second
-30 30 30 next
-31 31 31 second
-32 32 32 second
-33 33 33 second
-34 34 34 second
-35 35 35 second
-36 36 36 second
-37 37 37 second
-38 38 38 second
-39 39 39 second
-40 40 40 second
-41 41 41 second
-42 42 42 second
-43 43 43 second
-44 44 44 second
-45 45 45 second
-46 46 46 second
-47 47 47 second
-48 48 48 second
-49 49 49 second
-50 50 50 second
-select * from t2 order by f1;
-f1 f2 f3 f4
-1 1 1 first
-2 2 2 second
-3 3 3 third
-select * from t3 order by f1;
-f1 f2 f3 f4
-1 1 1 first
-select * from t4 order by f1;
-f1 f2 f3 f4
-1 1 1 first
-select * from t31 order by f3;
-f1 f2 f3 f4
-1 1 1 first
-1 1 2 second
-1 1 3 third
-1 1 4 fourth
-1 1 5 fifth
-1 1 6 sixth
-
-** Do updates master **
-
-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=NULL, f27=NULL, f35='f35 new value' where f3=3;
-Warnings:
-Warning 1048 Column 'f3' cannot be null
-
-** Delete from Master **
-
-delete from t1;
-delete from t2;
-delete from t3;
-delete from t4;
-delete from t31;
-
-** 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
-
-****************************************
-* columns in master at middle of table *
-* Expect: Proper error message *
-****************************************
-
-** Stop and Reset Slave **
-
-STOP SLAVE;
-RESET SLAVE;
-
-** create table slave side **
-CREATE TABLE t10 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
-) ENGINE='MyISAM';
-
-** Connect to master and create table **
-
-CREATE TABLE t10 (a INT KEY, b BLOB, f DOUBLE DEFAULT '233',
-c CHAR(5), e INT DEFAULT '1')ENGINE='MyISAM';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT),
-(2,@b1,DEFAULT,'JOE',DEFAULT),
-(3,@b1,DEFAULT,'QA',DEFAULT);
-
-********************************************
-*** Expect slave to fail with Error 1523 ***
-********************************************
-
-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;
-
-*** Drop t10 ***
-DROP TABLE t10;
-
-*********************************************
-* More columns in master at middle of table *
-* Expect: Proper error message *
-*********************************************
-
-*** Create t11 on slave ***
-STOP SLAVE;
-RESET SLAVE;
-CREATE TABLE t11 (a INT PRIMARY KEY, b BLOB, c VARCHAR(254)
-) ENGINE='MyISAM';
-
-*** Create t11 on Master ***
-CREATE TABLE t11 (a INT KEY, b BLOB, f TEXT,
-c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='MyISAM';
-RESET MASTER;
-
-*** Start Slave ***
-START SLAVE;
-
-*** Master Data Insert ***
-set @b1 = 'b1b1b1b1';
-set @b1 = concat(@b1,@b1);
-INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT),
-(2,@b1,'Testing is cool','JOE',DEFAULT),
-(3,@b1,DEFAULT,'QA',DEFAULT);
-
-********************************************
-*** Expect slave to fail with Error 1523 ***
-********************************************
-
-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
+Last_SQL_Errno 1677
+Last_SQL_Error Column 2 of table 'test.t11' cannot be converted from type 'tinyblob' to type 'varchar(254)'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
@@ -3091,6 +816,8 @@ 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'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
STOP SLAVE;
RESET SLAVE;
@@ -3177,6 +904,8 @@ 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'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
STOP SLAVE;
RESET SLAVE;
@@ -3263,6 +992,8 @@ 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)'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
STOP SLAVE;
RESET SLAVE;
diff --git a/mysql-test/suite/rpl/r/rpl_flush_logs.result b/mysql-test/suite/rpl/r/rpl_flush_logs.result
new file mode 100644
index 00000000000..7f50ce0cdd0
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_flush_logs.result
@@ -0,0 +1,67 @@
+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 sure the 'master_log.err-old' file does not
+# exist before execute 'flush error logs' statement.
+# Test if support 'flush error logs' statement.
+flush error logs;
+# Check the 'master_log.err-old' file is created
+# after executed 'flush error logs' statement.
+# Make sure binary logs was not be flushed
+# after execute 'flush error logs' statement.
+# Make sure relay logs was not be flushed
+# after execute 'flush error logs' statement.
+# Make sure the 'slave-relay-bin.000004' file does not
+# exist before execute 'flush relay logs' statement.
+# Test if support 'flush relay logs' statement.
+flush relay logs;
+# Check the 'slave-relay-bin.000004' file is created
+# after executed 'flush relay logs' statement.
+# Make sure binary logs was not be flushed
+# after execute 'flush relay logs' statement.
+# Test if support 'flush slow logs' statement.
+flush slow logs;
+# Make sure binary logs was not be flushed
+# after execute 'flush slow logs' statement.
+# Test if support 'flush general logs' statement.
+flush general logs;
+# Make sure binary logs was not be flushed
+# after execute 'flush general logs' statement.
+# Test if support 'flush engine logs' statement.
+flush engine logs;
+# Make sure binary logs was not be flushed
+# after execute 'flush engine logs' statement.
+# Make sure the 'master-bin.000002' file does not
+# exist before execute 'flush binary logs' statement.
+# Test if support 'flush binary logs' statement.
+flush binary logs;
+# Check the 'master-bin.000002' file is created
+# after executed 'flush binary logs' statement.
+# Make sure the 'slave-relay-bin.000007' file does not exist
+# exist before execute 'flush error logs, relay logs' statement.
+# Make sure the 'master_log.err-old' file does not exist
+# before execute 'flush error logs, relay logs' statement.
+# Test if support to combine all kinds of logs into one statement.
+flush error logs, relay logs;
+# Check the 'master_log.err-old' file is created
+# after executed 'flush error logs, relay logs' statement.
+# Make sure binary logs was not be flushed
+# after execute 'flush error logs, relay logs' statement.
+# Check the 'slave-relay-bin.000007' file is created after
+# execute 'flush error logs, relay logs' statement.
+# Make sure the 'slave-relay-bin.000008' and 'slave-relay-bin.000009'
+# files do not exist before execute 'flush error logs, relay logs'
+# statement.
+# Make sure the 'master_log.err-old' file does not exist
+# before execute 'flush logs' statement.
+# Test if 'flush logs' statement works fine and flush all the logs.
+flush logs;
+# Check the 'master_log.err-old' file is created
+# after executed 'flush logs' statement.
+# Check 'master-bin.000003' is created
+# after execute 'flush logs' statement.
+# Check the 'slave-relay-bin.000008' and 'slave-relay-bin.000009'
+# files are created after execute 'flush logs' statement.
diff --git a/mysql-test/suite/rpl/r/rpl_flushlog_loop.result b/mysql-test/suite/rpl/r/rpl_flushlog_loop.result
index 600ac44fc86..5e74a4eb999 100644
--- a/mysql-test/suite/rpl/r/rpl_flushlog_loop.result
+++ b/mysql-test/suite/rpl/r/rpl_flushlog_loop.result
@@ -10,6 +10,7 @@ relay_log MYSQLD_DATADIR/relay-log
relay_log_index
relay_log_info_file relay-log.info
relay_log_purge ON
+relay_log_recovery OFF
relay_log_space_limit 0
stop slave;
change master to master_host='127.0.0.1',master_user='root',
@@ -59,3 +60,5 @@ Last_IO_Errno #
Last_IO_Error
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 2
diff --git a/mysql-test/suite/rpl/r/rpl_foreign_key_innodb.result b/mysql-test/suite/rpl/r/rpl_foreign_key_innodb.result
index e7a912b75fa..960833b85d8 100644
--- a/mysql-test/suite/rpl/r/rpl_foreign_key_innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_foreign_key_innodb.result
@@ -46,7 +46,6 @@ engine = INNODB;
insert into t1 set b=1;
insert into t2 set a=1, b=1;
set foreign_key_checks=0;
-set @@session.binlog_format=row;
delete from t1;
must sync w/o a problem (could not with the buggy code)
select count(*) from t1 /* must be zero */;
diff --git a/mysql-test/suite/rpl/r/rpl_get_lock.result b/mysql-test/suite/rpl/r/rpl_get_lock.result
index cbad759b17f..8f1a0fc25b9 100644
--- a/mysql-test/suite/rpl/r/rpl_get_lock.result
+++ b/mysql-test/suite/rpl/r/rpl_get_lock.result
@@ -4,7 +4,7 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
+CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
create table t1(n int);
insert into t1 values(get_lock("lock",2));
select get_lock("lock",2);
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 d054cb573d3..9f0988041af 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
@@ -5,6 +5,7 @@ reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
call mtr.add_suppression("Slave I/O: Master command COM_REGISTER_SLAVE failed: .*");
+call mtr.add_suppression("Slave I/O: .* failed with error: Lost connection to MySQL server at 'reading initial communication packet'");
call mtr.add_suppression("Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; .*");
call mtr.add_suppression("Slave I/O thread .* register on master");
SELECT IS_FREE_LOCK("debug_lock.before_get_UNIX_TIMESTAMP");
diff --git a/mysql-test/suite/rpl/r/rpl_grant.result b/mysql-test/suite/rpl/r/rpl_grant.result
index 1bed6101e3c..fc32dcefec7 100644
--- a/mysql-test/suite/rpl/r/rpl_grant.result
+++ b/mysql-test/suite/rpl/r/rpl_grant.result
@@ -80,3 +80,5 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
diff --git a/mysql-test/suite/rpl/r/rpl_heartbeat.result b/mysql-test/suite/rpl/r/rpl_heartbeat.result
new file mode 100644
index 00000000000..44b3964f632
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_heartbeat.result
@@ -0,0 +1,143 @@
+reset master;
+set @restore_slave_net_timeout= @@global.slave_net_timeout;
+set @@global.slave_net_timeout= 10;
+change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root';
+show status like 'Slave_heartbeat_period';;
+Variable_name Slave_heartbeat_period
+Value 5.000
+change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root', master_heartbeat_period= 4294968;
+ERROR HY000: The requested value for the heartbeat period is negative or exceeds the maximum 4294967 seconds
+show status like 'Slave_heartbeat_period';;
+Variable_name Slave_heartbeat_period
+Value 5.000
+change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root', master_heartbeat_period= 0.0009999;
+Warnings:
+Warning 1624 The requested value for the heartbeat period is less than 1 msec. The period is reset to zero which means no heartbeats will be sending
+show status like 'Slave_heartbeat_period';;
+Variable_name Slave_heartbeat_period
+Value 0.000
+change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root', master_heartbeat_period= 4294967;
+Warnings:
+Warning 1624 The requested value for the heartbeat period exceeds the value of `slave_net_timeout' sec. A sensible value for the period should be less than the timeout.
+show status like 'Slave_heartbeat_period';;
+Variable_name Slave_heartbeat_period
+Value 4294967.000
+change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root', master_heartbeat_period= 0.001;
+show status like 'Slave_heartbeat_period';;
+Variable_name Slave_heartbeat_period
+Value 0.001
+reset slave;
+set @@global.slave_net_timeout= 5;
+change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root', master_heartbeat_period= 5.001;
+Warnings:
+Warning 1624 The requested value for the heartbeat period exceeds the value of `slave_net_timeout' sec. A sensible value for the period should be less than the timeout.
+show status like 'Slave_heartbeat_period';;
+Variable_name Slave_heartbeat_period
+Value 5.001
+reset slave;
+set @@global.slave_net_timeout= 5;
+change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root', master_heartbeat_period= 4;
+show status like 'Slave_heartbeat_period';;
+Variable_name Slave_heartbeat_period
+Value 4.000
+set @@global.slave_net_timeout= 3 /* must be a warning */;
+Warnings:
+Warning 1624 The current value for master_heartbeat_period exceeds the new value of `slave_net_timeout' sec. A sensible value for the period should be less than the timeout.
+reset slave;
+drop table if exists t1;
+set @@global.slave_net_timeout= 10;
+change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root', master_heartbeat_period= 0.5;
+show status like 'Slave_heartbeat_period';;
+Variable_name Slave_heartbeat_period
+Value 0.500
+start slave;
+create table t1 (f1 int);
+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 280
+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 280
+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
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
+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 280
+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 280
+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
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
+show status like 'Slave_heartbeat_period';;
+Variable_name Slave_heartbeat_period
+Value 0.500
+A heartbeat has been received by the slave
+drop table t1;
+set @@global.slave_net_timeout= @restore_slave_net_timeout;
+End of tests
diff --git a/mysql-test/suite/rpl/r/rpl_heartbeat_2slaves.result b/mysql-test/suite/rpl/r/rpl_heartbeat_2slaves.result
new file mode 100644
index 00000000000..ecb7c62c488
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_heartbeat_2slaves.result
@@ -0,0 +1,55 @@
+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;
+
+*** Preparing ***
+[on slave]
+include/stop_slave.inc
+RESET SLAVE;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.1, MASTER_LOG_FILE='MASTER_BINLOG';
+include/start_slave.inc
+[on slave1]
+STOP SLAVE;
+RESET SLAVE;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=1, MASTER_LOG_FILE='MASTER_BINLOG';
+include/start_slave.inc
+
+*** 2 slaves ***
+Slave has received heartbeat event
+Slave1 has received heartbeat event
+Slave has received more heartbeats than Slave1 (1 means 'yes'): 1
+
+*** Master->data->Slave1->heartbeat->Slave: ***
+[on slave1]
+RESET MASTER;
+[on slave]
+include/stop_slave.inc
+RESET SLAVE;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=SLAVE1_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.2, MASTER_LOG_FILE='SLAVE1_BINLOG';
+include/start_slave.inc
+Slave has received heartbeat event
+[on master]
+CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(10), c LONGTEXT);
+INSERT INTO t1 VALUES (1, 'on master', '');
+SHOW TABLES;
+Tables_in_test
+t1
+[on slave1]
+SHOW TABLES;
+Tables_in_test
+t1
+[on slave]
+SHOW TABLES;
+Tables_in_test
+[on master]
+creating updates on master and send to slave1 during 5 second
+[on slave]
+Slave has received heartbeats (1 means 'yes'): 1
+
+*** Clean up ***
+DROP TABLE t1;
+
+End of 6.0 test
diff --git a/mysql-test/suite/rpl/r/rpl_heartbeat_basic.result b/mysql-test/suite/rpl/r/rpl_heartbeat_basic.result
new file mode 100644
index 00000000000..60d1eca1213
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_heartbeat_basic.result
@@ -0,0 +1,300 @@
+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;
+
+*** Preparing ***
+include/stop_slave.inc
+RESET SLAVE;
+SET @restore_slave_net_timeout=@@global.slave_net_timeout;
+RESET MASTER;
+SET @restore_slave_net_timeout=@@global.slave_net_timeout;
+SET @restore_event_scheduler=@@global.event_scheduler;
+
+*** Default value ***
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root';
+slave_net_timeout/slave_heartbeat_timeout=2.0000
+RESET SLAVE;
+
+*** Reset slave affect ***
+SET @@global.slave_net_timeout=30;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=5;
+RESET SLAVE;
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+Variable_name Value
+Slave_heartbeat_period 15.000
+
+*** Default value if slave_net_timeout changed ***
+SET @@global.slave_net_timeout=50;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root';
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+Variable_name Value
+Slave_heartbeat_period 25.000
+SET @@global.slave_net_timeout=@restore_slave_net_timeout;
+RESET SLAVE;
+
+*** Warning if updated slave_net_timeout < slave_heartbeat_timeout ***
+SET @@global.slave_net_timeout=FLOOR(SLAVE_HEARTBEAT_TIMEOUT)-1;
+Warnings:
+Warning 1624 The current value for master_heartbeat_period exceeds the new value of `slave_net_timeout' sec. A sensible value for the period should be less than the timeout.
+SET @@global.slave_net_timeout=@restore_slave_net_timeout;
+RESET SLAVE;
+
+*** Warning if updated slave_heartbeat_timeout > slave_net_timeout ***
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=SLAVE_NET_TIMEOUT;
+Warnings:
+Warning 1624 The requested value for the heartbeat period exceeds the value of `slave_net_timeout' sec. A sensible value for the period should be less than the timeout.
+RESET SLAVE;
+
+*** CHANGE MASTER statement only updates slave_heartbeat_period ***
+SET @@global.slave_net_timeout=20;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=5;
+SHOW VARIABLES LIKE 'slave_net_timeout';
+Variable_name Value
+slave_net_timeout 20
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+Variable_name Value
+Slave_heartbeat_period 5.000
+SET @@global.slave_net_timeout=2*@@global.slave_net_timeout;
+SHOW VARIABLES LIKE 'slave_net_timeout';
+Variable_name Value
+slave_net_timeout 40
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+Variable_name Value
+Slave_heartbeat_period 5.000
+SET @@global.slave_net_timeout=@restore_slave_net_timeout;
+RESET SLAVE;
+
+*** Update slave_net_timeout on master ***
+SET @@global.slave_net_timeout=500;
+SET @@global.slave_net_timeout=200;
+RESET SLAVE;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root';
+include/start_slave.inc
+SHOW VARIABLES LIKE 'slave_net_timeout';
+Variable_name Value
+slave_net_timeout 200
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+Variable_name Value
+Slave_heartbeat_period 100.000
+SET @@global.slave_net_timeout=@restore_slave_net_timeout;
+include/stop_slave.inc
+RESET SLAVE;
+SET @@global.slave_net_timeout=@restore_slave_net_timeout;
+
+*** Start/stop slave ***
+SET @@global.slave_net_timeout=100;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=20;
+include/start_slave.inc
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+Variable_name Value
+Slave_heartbeat_period 20.000
+include/stop_slave.inc
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+Variable_name Value
+Slave_heartbeat_period 20.000
+
+*** Reload slave ***
+SET @@global.slave_net_timeout=50;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=30;
+Reload slave
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+Variable_name Value
+Slave_heartbeat_period 30.000
+SET @restore_slave_net_timeout=@@global.slave_net_timeout;
+
+*** Disable heartbeat ***
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0;
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+Variable_name Value
+Slave_heartbeat_period 0.000
+SHOW STATUS LIKE 'slave_received_heartbeats';
+Variable_name Value
+Slave_received_heartbeats 0
+include/start_slave.inc
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+Variable_name Value
+Slave_heartbeat_period 0.000
+SHOW STATUS LIKE 'slave_received_heartbeats';
+Variable_name Value
+Slave_received_heartbeats 0
+include/stop_slave.inc
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+Variable_name Value
+Slave_heartbeat_period 0.000
+SHOW STATUS LIKE 'slave_received_heartbeats';
+Variable_name Value
+Slave_received_heartbeats 0
+RESET SLAVE;
+SELECT SLAVE_HEARTBEAT_TIMEOUT = 0 AS Result;
+Result
+0
+
+*** Min slave_heartbeat_timeout ***
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.001;
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+Variable_name Value
+Slave_heartbeat_period 0.001
+RESET SLAVE;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.0009;
+Warnings:
+Warning 1624 The requested value for the heartbeat period is less than 1 msec. The period is reset to zero which means no heartbeats will be sending
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+Variable_name Value
+Slave_heartbeat_period 0.000
+RESET SLAVE;
+
+*** Max slave_heartbeat_timeout ***
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=4294967;
+Warnings:
+Warning 1624 The requested value for the heartbeat period exceeds the value of `slave_net_timeout' sec. A sensible value for the period should be less than the timeout.
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+Variable_name Value
+Slave_heartbeat_period 4294967.000
+RESET SLAVE;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=4294968;
+ERROR HY000: The requested value for the heartbeat period is negative or exceeds the maximum 4294967 seconds
+RESET SLAVE;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=8589935;
+ERROR HY000: The requested value for the heartbeat period is negative or exceeds the maximum 4294967 seconds
+RESET SLAVE;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=4294967296;
+ERROR HY000: The requested value for the heartbeat period is negative or exceeds the maximum 4294967 seconds
+RESET SLAVE;
+
+*** Misc incorrect values ***
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD='-1';
+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 ''-1'' at line 1
+RESET SLAVE;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD='123abc';
+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 ''123abc'' at line 1
+RESET SLAVE;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD='';
+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 '''' at line 1
+RESET SLAVE;
+
+*** Running slave ***
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.1;
+include/start_slave.inc
+Heartbeat event received
+
+*** Stopped slave ***
+include/stop_slave.inc
+Number of received heartbeat events while slave stopped: 0
+
+*** Started slave ***
+include/start_slave.inc
+Heartbeat event received
+
+*** Stopped IO thread ***
+STOP SLAVE IO_THREAD;
+Number of received heartbeat events while io thread stopped: 0
+
+*** Started IO thread ***
+START SLAVE IO_THREAD;
+Heartbeat event received
+
+*** Stopped SQL thread ***
+STOP SLAVE SQL_THREAD;
+Heartbeat events are received while sql thread stopped (1 means 'yes'): 1
+
+*** Started SQL thread ***
+START SLAVE SQL_THREAD;
+Heartbeat event received
+
+*** Stopped SQL thread by error ***
+CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(10), c LONGTEXT);
+INSERT INTO t1 VALUES (1, 'on slave', NULL);
+INSERT INTO t1 VALUES (1, 'on master', NULL);
+Heartbeat events are received while sql thread stopped (1 means 'yes'): 1
+include/stop_slave.inc
+DROP TABLE t1;
+
+*** Master send to slave ***
+CREATE EVENT e1
+ON SCHEDULE EVERY 1 SECOND
+DO
+BEGIN
+UPDATE test.t1 SET a = a + 1 WHERE a < 10;
+END|
+RESET SLAVE;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=5;
+include/start_slave.inc
+SET @@global.event_scheduler=1;
+Number of received heartbeat events: 0
+DELETE FROM t1;
+DROP EVENT e1;
+
+*** Flush logs on slave ***
+STOP SLAVE;
+RESET SLAVE;
+DROP TABLE t1;
+DROP TABLE t1;
+RESET MASTER;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.5;
+include/start_slave.inc
+Heartbeat events are received while rotation of relay logs (1 means 'yes'): 1
+
+*** Compressed protocol ***
+SET @@global.slave_compressed_protocol=1;
+include/stop_slave.inc
+RESET SLAVE;
+SET @@global.slave_compressed_protocol=1;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.1;
+include/start_slave.inc
+Heartbeat event received
+SET @@global.slave_compressed_protocol=0;
+SET @@global.slave_compressed_protocol=0;
+
+*** Reset master ***
+STOP SLAVE;
+RESET SLAVE;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.1;
+include/start_slave.inc
+RESET MASTER;
+Heartbeat events are received after reset of master (1 means 'yes'): 1
+
+*** Reload master ***
+STOP SLAVE;
+RESET SLAVE;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.1;
+include/start_slave.inc
+Heartbeat event received
+Reload master
+Heartbeat event received
+
+*** Circular 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;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=SLAVE_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=1, MASTER_LOG_FILE='SLAVE_BINLOG';
+include/start_slave.inc
+CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(10));
+INSERT INTO t1 VALUES(1, 'on master');
+include/start_slave.inc
+INSERT INTO t1 VALUES(2, 'on slave');
+SELECT * FROM t1 ORDER BY a;
+a b
+1 on master
+2 on slave
+SELECT * FROM t1 ORDER BY a;
+a b
+1 on master
+2 on slave
+Heartbeat event received on master
+Heartbeat event received on slave
+Slave has received more events than master (1 means 'yes'): 1
+
+*** Clean up ***
+include/stop_slave.inc
+DROP TABLE t1;
+include/stop_slave.inc
+SET @@global.slave_net_timeout=@restore_slave_net_timeout;
+
+End of 6.0 test
diff --git a/mysql-test/suite/rpl/r/rpl_heartbeat_ssl.result b/mysql-test/suite/rpl/r/rpl_heartbeat_ssl.result
new file mode 100644
index 00000000000..42de3c459cb
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_heartbeat_ssl.result
@@ -0,0 +1,27 @@
+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;
+
+*** Heartbeat over SSL ***
+include/stop_slave.inc
+RESET SLAVE;
+CHANGE MASTER TO
+MASTER_HOST='127.0.0.1',
+MASTER_PORT=MASTER_PORT,
+MASTER_USER='root',
+MASTER_HEARTBEAT_PERIOD=0.1,
+MASTER_LOG_FILE='MASTER_BINLOG',
+MASTER_SSL=1,
+MASTER_SSL_CA='MYSQL_TEST_DIR/std_data/cacert.pem',
+MASTER_SSL_CERT='MYSQL_TEST_DIR/std_data/client-cert.pem',
+MASTER_SSL_KEY='MYSQL_TEST_DIR/std_data/client-key.pem';
+include/start_slave.inc
+Master_SSL_Allowed: Yes
+Heartbeat event has received
+
+*** Clean up ***
+
+End of 6.0 test
diff --git a/mysql-test/suite/rpl/r/rpl_idempotency.result b/mysql-test/suite/rpl/r/rpl_idempotency.result
index bfdcbc6fa23..5e37e7a1f5e 100644
--- a/mysql-test/suite/rpl/r/rpl_idempotency.result
+++ b/mysql-test/suite/rpl/r/rpl_idempotency.result
@@ -7,11 +7,12 @@ start slave;
call mtr.add_suppression("Slave: Can't find record in 't.' Error_code: 1032");
call mtr.add_suppression("Slave: Cannot delete or update a parent row: a foreign key constraint fails .* Error_code: 1451");
call mtr.add_suppression("Slave: Cannot add or update a child row: a foreign key constraint fails .* Error_code: 1452");
-SET @old_slave_exec_mode= @@global.slave_exec_mode;
CREATE TABLE t1 (a INT PRIMARY KEY);
CREATE TABLE t2 (a INT);
INSERT INTO t1 VALUES (-1),(-2),(-3);
INSERT INTO t2 VALUES (-1),(-2),(-3);
+SET @old_slave_exec_mode= @@global.slave_exec_mode;
+SET @@global.slave_exec_mode= IDEMPOTENT;
DELETE FROM t1 WHERE a = -2;
DELETE FROM t2 WHERE a = -2;
DELETE FROM t1 WHERE a = -2;
@@ -73,158 +74,4 @@ a
Last_SQL_Error
0
DROP TABLE t1, t2;
-select @@global.slave_exec_mode /* must be IDEMPOTENT */;
-@@global.slave_exec_mode
-IDEMPOTENT
-create table ti1 (b int primary key) engine = innodb;
-create table ti2 (a int primary key, b int, foreign key (b) references ti1(b))
-engine = innodb;
-set foreign_key_checks=1 /* ensure the check */;
-insert into ti1 values (1),(2),(3);
-insert into ti2 set a=2, b=2;
-select * from ti1 order by b /* must be (1),(2),(3) */;
-b
-1
-2
-3
-insert into ti2 set a=1, b=1;
-select * from ti2 order by b /* must be (1,1) (2,2) */;
-a b
-1 1
-2 2
-set @save_binlog_format= @@session.binlog_format;
-set @@session.binlog_format= row;
-delete from ti1 where b=1;
-select * from ti1 order by b /* must be (2),(3) */;
-b
-2
-3
-select * from ti1 order by b /* must stays as were on master (1),(2),(3) */;
-b
-1
-2
-3
-delete from ti1 where b=3;
-insert into ti2 set a=3, b=3;
-select * from ti2 order by b /* must be (1,1),(2,2) - not inserted */;
-a b
-1 1
-2 2
-set global slave_exec_mode='IDEMPOTENT';
-set global slave_exec_mode='STRICT';
-set global slave_exec_mode='IDEMPOTENT,STRICT';
-ERROR HY000: Ambiguous slave modes combination.
-select @@global.slave_exec_mode /* must be STRICT */;
-@@global.slave_exec_mode
-STRICT
-*** foreign keys errors as above now forces to stop
-set foreign_key_checks=0;
-drop table ti2, ti1;
-create table ti1 (b int primary key) engine = innodb;
-create table ti2 (a int primary key, b int, foreign key (b) references ti1(b))
-engine = innodb;
-set foreign_key_checks=1 /* ensure the check */;
-insert into ti1 values (1),(2),(3);
-insert into ti2 set a=2, b=2;
-select * from ti1 order by b /* must be (1),(2),(3) */;
-b
-1
-2
-3
-*** conspire future problem
-insert into ti2 set a=1, b=1;
-select * from ti2 order by b /* must be (1,1) (2,2) */;
-a b
-1 1
-2 2
-delete from ti1 where b=1 /* offending delete event */;
-select * from ti1 order by b /* must be (2),(3) */;
-b
-2
-3
-*** slave must stop (Trying to delete a referenced foreing key)
-Last_SQL_Error
-1451
-select * from ti1 order by b /* must be (1),(2),(3) - not deleted */;
-b
-1
-2
-3
-set foreign_key_checks= 0;
-delete from ti2 where b=1;
-set foreign_key_checks= 1;
-set global slave_exec_mode='IDEMPOTENT';
-start slave sql_thread;
-set global slave_exec_mode='STRICT';
-*** conspire the following insert failure
-*** conspire future problem
-delete from ti1 where b=3;
-insert into ti2 set a=3, b=3 /* offending write event */;
-*** slave must stop (Trying to insert an invalid foreign key)
-Last_SQL_Error
-1452
-select * from ti2 order by b /* must be (2,2) */;
-a b
-2 2
-set foreign_key_checks= 0;
-insert into ti1 set b=3;
-set foreign_key_checks= 1;
-set global slave_exec_mode='IDEMPOTENT';
-start slave sql_thread;
-set global slave_exec_mode='STRICT';
-select * from ti2 order by b /* must be (2,2),(3,3) */;
-a b
-2 2
-3 3
-*** other errors
-*** conspiring query
-insert into ti1 set b=1;
-insert into ti1 set b=1 /* offending write event */;
-*** slave must stop (Trying to insert a dupliacte key)
-Last_SQL_Error
-1062
-set foreign_key_checks= 0;
-delete from ti1 where b=1;
-set foreign_key_checks= 1;
-set global slave_exec_mode='IDEMPOTENT';
-start slave sql_thread;
-set global slave_exec_mode='STRICT';
-CREATE TABLE t1 (a INT PRIMARY KEY);
-CREATE TABLE t2 (a INT);
-INSERT INTO t1 VALUES (-1),(-2),(-3);
-INSERT INTO t2 VALUES (-1),(-2),(-3);
-DELETE FROM t1 WHERE a = -2;
-DELETE FROM t2 WHERE a = -2;
-DELETE FROM t1 WHERE a = -2;
-*** slave must stop (Key was not found)
-Last_SQL_Error
-1032
-set global slave_exec_mode='IDEMPOTENT';
-start slave sql_thread;
-set global slave_exec_mode='STRICT';
-DELETE FROM t2 WHERE a = -2;
-*** slave must stop (Key was not found)
-Last_SQL_Error
-1032
-set global slave_exec_mode='IDEMPOTENT';
-start slave sql_thread;
-set global slave_exec_mode='STRICT';
-UPDATE t1 SET a = 1 WHERE a = -1;
-UPDATE t2 SET a = 1 WHERE a = -1;
-UPDATE t1 SET a = 1 WHERE a = -1;
-*** slave must stop (Key was not found)
-Last_SQL_Error
-1032
-set global slave_exec_mode='IDEMPOTENT';
-start slave sql_thread;
-set global slave_exec_mode='STRICT';
-UPDATE t2 SET a = 1 WHERE a = -1;
-*** slave must stop (Key was not found)
-Last_SQL_Error
-1032
-set global slave_exec_mode='IDEMPOTENT';
-start slave sql_thread;
SET @@global.slave_exec_mode= @old_slave_exec_mode;
-set @@session.binlog_format= @save_binlog_format;
-drop table t1,t2,ti2,ti1;
-*** end of tests
diff --git a/mysql-test/suite/rpl/r/rpl_incident.result b/mysql-test/suite/rpl/r/rpl_incident.result
index c3baabbdbc3..a9b641b243b 100644
--- a/mysql-test/suite/rpl/r/rpl_incident.result
+++ b/mysql-test/suite/rpl/r/rpl_incident.result
@@ -64,6 +64,8 @@ Last_IO_Errno 0
Last_IO_Error
Last_SQL_Errno 1590
Last_SQL_Error The incident LOST_EVENTS occured on the master. Message: <none>
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;
SELECT * FROM t1;
@@ -111,4 +113,6 @@ Last_IO_Errno 0
Last_IO_Error
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
DROP TABLE t1;
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 fbfebbaa590..88fe7bce4f6 100644
--- a/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result
+++ b/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result
@@ -963,9 +963,7 @@ 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 # #
diff --git a/mysql-test/suite/rpl/r/rpl_insert_id.result b/mysql-test/suite/rpl/r/rpl_insert_id.result
index e171e247b6c..5b793a4967a 100644
--- a/mysql-test/suite/rpl/r/rpl_insert_id.result
+++ b/mysql-test/suite/rpl/r/rpl_insert_id.result
@@ -1,3 +1,4 @@
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
#
# Setup
#
@@ -97,6 +98,7 @@ drop table t1;
#
# Bug#14553: NULL in WHERE resets LAST_INSERT_ID
#
+set @@session.sql_auto_is_null=1;
create table t1(a int auto_increment, key(a)) engine=myisam;
create table t2(a int) engine=myisam;
insert into t1 (a) values (null);
@@ -531,3 +533,5 @@ id last_id
drop table t1, t2;
drop procedure foo;
SET @@global.concurrent_insert= @old_concurrent_insert;
+set @@session.sql_auto_is_null=default;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
diff --git a/mysql-test/suite/rpl/r/rpl_insert_ignore.result b/mysql-test/suite/rpl/r/rpl_insert_ignore.result
index da24c86627c..8c6ce5d590a 100644
--- a/mysql-test/suite/rpl/r/rpl_insert_ignore.result
+++ b/mysql-test/suite/rpl/r/rpl_insert_ignore.result
@@ -4,6 +4,7 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
CREATE TABLE t1 (
a int unsigned not null auto_increment primary key,
b int unsigned,
diff --git a/mysql-test/suite/rpl/r/rpl_ip_mix.result b/mysql-test/suite/rpl/r/rpl_ip_mix.result
new file mode 100644
index 00000000000..11aa5a46cfa
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_ip_mix.result
@@ -0,0 +1,164 @@
+#################### IP: ::1 ###########################
+connect (master,::1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: No such row
+change master to master_host='::1';
+Master-Host: ::1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0000:0000:0000:0000:0000:0000:0000:0001 ###########################
+connect (master,0000:0000:0000:0000:0000:0000:0000:0001,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: ::1
+change master to master_host='0000:0000:0000:0000:0000:0000:0000:0001';
+Master-Host: 0000:0000:0000:0000:0000:0000:0000:0001
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0:0:0:0:0:0:0:1 ###########################
+connect (master,0:0:0:0:0:0:0:1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 0000:0000:0000:0000:0000:0000:0000:0001
+change master to master_host='0:0:0:0:0:0:0:1';
+Master-Host: 0:0:0:0:0:0:0:1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 127.0.0.1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 0:0:0:0:0:0:0:1
+change master to master_host='127.0.0.1';
+Master-Host: 127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0:0:0:0:0:FFFF:127.0.0.1 ###########################
+connect (master,0:0:0:0:0:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 127.0.0.1
+change master to master_host='0:0:0:0:0:FFFF:127.0.0.1';
+Master-Host: 0:0:0:0:0:FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0000:0000:0000:0000:0000:FFFF:127.0.0.1 ###########################
+connect (master,0000:0000:0000:0000:0000:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 0:0:0:0:0:FFFF:127.0.0.1
+change master to master_host='0000:0000:0000:0000:0000:FFFF:127.0.0.1';
+Master-Host: 0000:0000:0000:0000:0000:FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0:0000:0000:0:0000:FFFF:127.0.0.1 ###########################
+connect (master,0:0000:0000:0:0000:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 0000:0000:0000:0000:0000:FFFF:127.0.0.1
+change master to master_host='0:0000:0000:0:0000:FFFF:127.0.0.1';
+Master-Host: 0:0000:0000:0:0000:FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0::0000:FFFF:127.0.0.1 ###########################
+connect (master,0::0000:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 0:0000:0000:0:0000:FFFF:127.0.0.1
+change master to master_host='0::0000:FFFF:127.0.0.1';
+Master-Host: 0::0000:FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: ::FFFF:127.0.0.1 ###########################
+connect (master,::FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 0::0000:FFFF:127.0.0.1
+change master to master_host='::FFFF:127.0.0.1';
+Master-Host: ::FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: ::1 mix #######################
+connect (master,::1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: ::FFFF:127.0.0.1
+change master to master_host='::1';
+Master-Host: ::1
+change master to master_host='::FFFF:127.0.0.1';
+Master-Host: ::FFFF:127.0.0.1
+change master to master_host='0:0:0:0:0:0:0:1';
+Master-Host: 0:0:0:0:0:0:0:1
+disconnect slave;
+disconnect master;
+connection default;
diff --git a/mysql-test/suite/rpl/r/rpl_ip_mix2.result b/mysql-test/suite/rpl/r/rpl_ip_mix2.result
new file mode 100644
index 00000000000..e5cc3e1621d
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_ip_mix2.result
@@ -0,0 +1,180 @@
+#################### IP: ::1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,::1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: No such row
+change master to master_host='::1';
+Master-Host: ::1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: ::1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,::1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: ::1
+change master to master_host='::1';
+Master-Host: ::1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0000:0000:0000:0000:0000:0000:0000:0001 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,0000:0000:0000:0000:0000:0000:0000:0001,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: ::1
+change master to master_host='0000:0000:0000:0000:0000:0000:0000:0001';
+Master-Host: 0000:0000:0000:0000:0000:0000:0000:0001
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0:0:0:0:0:0:0:1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,0:0:0:0:0:0:0:1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 0000:0000:0000:0000:0000:0000:0000:0001
+change master to master_host='0:0:0:0:0:0:0:1';
+Master-Host: 0:0:0:0:0:0:0:1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 127.0.0.1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 0:0:0:0:0:0:0:1
+change master to master_host='127.0.0.1';
+Master-Host: 127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0:0:0:0:0:FFFF:127.0.0.1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,0:0:0:0:0:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 127.0.0.1
+change master to master_host='0:0:0:0:0:FFFF:127.0.0.1';
+Master-Host: 0:0:0:0:0:FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0000:0000:0000:0000:0000:FFFF:127.0.0.1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,0000:0000:0000:0000:0000:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 0:0:0:0:0:FFFF:127.0.0.1
+change master to master_host='0000:0000:0000:0000:0000:FFFF:127.0.0.1';
+Master-Host: 0000:0000:0000:0000:0000:FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0:0000:0000:0:0000:FFFF:127.0.0.1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,0:0000:0000:0:0000:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 0000:0000:0000:0000:0000:FFFF:127.0.0.1
+change master to master_host='0:0000:0000:0:0000:FFFF:127.0.0.1';
+Master-Host: 0:0000:0000:0:0000:FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0::0000:FFFF:127.0.0.1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,0::0000:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 0:0000:0000:0:0000:FFFF:127.0.0.1
+change master to master_host='0::0000:FFFF:127.0.0.1';
+Master-Host: 0::0000:FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: ::FFFF:127.0.0.1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,::FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 0::0000:FFFF:127.0.0.1
+change master to master_host='::FFFF:127.0.0.1';
+Master-Host: ::FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: ::1 mix #######################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,::1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: ::FFFF:127.0.0.1
+change master to master_host='::1';
+Master-Host: ::1
+change master to master_host='::FFFF:127.0.0.1';
+Master-Host: ::FFFF:127.0.0.1
+change master to master_host='0:0:0:0:0:0:0:1';
+Master-Host: 0:0:0:0:0:0:0:1
+disconnect slave;
+disconnect master;
+connection default;
diff --git a/mysql-test/suite/rpl/r/rpl_ip_mix2_win.result b/mysql-test/suite/rpl/r/rpl_ip_mix2_win.result
new file mode 100644
index 00000000000..c7cec70ed6c
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_ip_mix2_win.result
@@ -0,0 +1,84 @@
+#################### IP: ::1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,::1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: No such row
+change master to master_host='::1';
+Master-Host: ::1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0000:0000:0000:0000:0000:0000:0000:0001 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,0000:0000:0000:0000:0000:0000:0000:0001,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: ::1
+change master to master_host='0000:0000:0000:0000:0000:0000:0000:0001';
+Master-Host: 0000:0000:0000:0000:0000:0000:0000:0001
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0:0:0:0:0:0:0:1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,0:0:0:0:0:0:0:1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 0000:0000:0000:0000:0000:0000:0000:0001
+change master to master_host='0:0:0:0:0:0:0:1';
+Master-Host: 0:0:0:0:0:0:0:1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 127.0.0.1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 0:0:0:0:0:0:0:1
+change master to master_host='127.0.0.1';
+Master-Host: 127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: ::1 mix #######################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,::1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 127.0.0.1
+change master to master_host='::1';
+Master-Host: ::1
+change master to master_host='127.0.0.1';
+Master-Host: 127.0.0.1
+change master to master_host='0:0:0:0:0:0:0:1';
+Master-Host: 0:0:0:0:0:0:0:1
+disconnect slave;
+disconnect master;
+connection default;
diff --git a/mysql-test/suite/rpl/r/rpl_ip_mix_win.result b/mysql-test/suite/rpl/r/rpl_ip_mix_win.result
new file mode 100644
index 00000000000..a1d11e109e5
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_ip_mix_win.result
@@ -0,0 +1,84 @@
+#################### IP: ::1 ###########################
+connect (master,::1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: No such row
+change master to master_host='::1';
+Master-Host: ::1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0000:0000:0000:0000:0000:0000:0000:0001 ###########################
+connect (master,0000:0000:0000:0000:0000:0000:0000:0001,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: ::1
+change master to master_host='0000:0000:0000:0000:0000:0000:0000:0001';
+Master-Host: 0000:0000:0000:0000:0000:0000:0000:0001
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0:0:0:0:0:0:0:1 ###########################
+connect (master,0:0:0:0:0:0:0:1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 0000:0000:0000:0000:0000:0000:0000:0001
+change master to master_host='0:0:0:0:0:0:0:1';
+Master-Host: 0:0:0:0:0:0:0:1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 127.0.0.1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 0:0:0:0:0:0:0:1
+change master to master_host='127.0.0.1';
+Master-Host: 127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: ::1 mix #######################
+connect (master,::1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 127.0.0.1
+change master to master_host='::1';
+Master-Host: ::1
+change master to master_host='127.0.0.1';
+Master-Host: 127.0.0.1
+change master to master_host='0:0:0:0:0:0:0:1';
+Master-Host: 0:0:0:0:0:0:0:1
+disconnect slave;
+disconnect master;
+connection default;
diff --git a/mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6.result b/mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6.result
new file mode 100644
index 00000000000..4168cff1e97
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6.result
@@ -0,0 +1,110 @@
+#################### IP: 127.0.0.1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='127.0.0.1';
+Master-Host: 127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0:0:0:0:0:FFFF:127.0.0.1 ###########################
+connect (master,0:0:0:0:0:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,0:0:0:0:0:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='0:0:0:0:0:FFFF:127.0.0.1';
+Master-Host: 0:0:0:0:0:FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0000:0000:0000:0000:0000:FFFF:127.0.0.1 ###########################
+connect (master,0000:0000:0000:0000:0000:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,0000:0000:0000:0000:0000:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='0000:0000:0000:0000:0000:FFFF:127.0.0.1';
+Master-Host: 0000:0000:0000:0000:0000:FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0:0000:0000:0:0000:FFFF:127.0.0.1 ###########################
+connect (master,0:0000:0000:0:0000:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,0:0000:0000:0:0000:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='0:0000:0000:0:0000:FFFF:127.0.0.1';
+Master-Host: 0:0000:0000:0:0000:FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0::0000:FFFF:127.0.0.1 ###########################
+connect (master,0::0000:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,0::0000:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='0::0000:FFFF:127.0.0.1';
+Master-Host: 0::0000:FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: ::FFFF:127.0.0.1 ###########################
+connect (master,::FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,::FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='::FFFF:127.0.0.1';
+Master-Host: ::FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: ::1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: ::FFFF:127.0.0.1
+change master to master_host='::1';
+Master-Host: ::1
+change master to master_host='::FFFF:127.0.0.1';
+Master-Host: ::FFFF:127.0.0.1
+change master to master_host='0:0:0:0:0:0:0:1';
+Master-Host: 0:0:0:0:0:0:0:1
+disconnect slave;
+disconnect master;
+connection default;
diff --git a/mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6_win.result b/mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6_win.result
new file mode 100644
index 00000000000..a1e48ea6610
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6_win.result
@@ -0,0 +1,35 @@
+#################### IP: 127.0.0.1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='127.0.0.1';
+Master-Host: 127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: ::1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 127.0.0.1
+change master to master_host='::1';
+Master-Host: ::1
+change master to master_host='127.0.0.1';
+Master-Host: 127.0.0.1
+change master to master_host='0:0:0:0:0:0:0:1';
+Master-Host: 0:0:0:0:0:0:0:1
+disconnect slave;
+disconnect master;
+connection default;
diff --git a/mysql-test/suite/rpl/r/rpl_ipv6.result b/mysql-test/suite/rpl/r/rpl_ipv6.result
new file mode 100644
index 00000000000..f46e60548a6
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_ipv6.result
@@ -0,0 +1,155 @@
+#################### IP: ::1 ###########################
+connect (master,::1,root,,test,MASTER_MYPORT);
+connect (slave,::1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='::1';
+Master-Host: ::1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0000:0000:0000:0000:0000:0000:0000:0001 ###########################
+connect (master,0000:0000:0000:0000:0000:0000:0000:0001,root,,test,MASTER_MYPORT);
+connect (slave,0000:0000:0000:0000:0000:0000:0000:0001,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='0000:0000:0000:0000:0000:0000:0000:0001';
+Master-Host: 0000:0000:0000:0000:0000:0000:0000:0001
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0:0:0:0:0:0:0:1 ###########################
+connect (master,0:0:0:0:0:0:0:1,root,,test,MASTER_MYPORT);
+connect (slave,0:0:0:0:0:0:0:1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='0:0:0:0:0:0:0:1';
+Master-Host: 0:0:0:0:0:0:0:1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 127.0.0.1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='127.0.0.1';
+Master-Host: 127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0:0:0:0:0:FFFF:127.0.0.1 ###########################
+connect (master,0:0:0:0:0:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,0:0:0:0:0:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='0:0:0:0:0:FFFF:127.0.0.1';
+Master-Host: 0:0:0:0:0:FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0000:0000:0000:0000:0000:FFFF:127.0.0.1 ###########################
+connect (master,0000:0000:0000:0000:0000:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,0000:0000:0000:0000:0000:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='0000:0000:0000:0000:0000:FFFF:127.0.0.1';
+Master-Host: 0000:0000:0000:0000:0000:FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0:0000:0000:0:0000:FFFF:127.0.0.1 ###########################
+connect (master,0:0000:0000:0:0000:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,0:0000:0000:0:0000:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='0:0000:0000:0:0000:FFFF:127.0.0.1';
+Master-Host: 0:0000:0000:0:0000:FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0::0000:FFFF:127.0.0.1 ###########################
+connect (master,0::0000:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,0::0000:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='0::0000:FFFF:127.0.0.1';
+Master-Host: 0::0000:FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: ::FFFF:127.0.0.1 ###########################
+connect (master,::FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,::FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='::FFFF:127.0.0.1';
+Master-Host: ::FFFF:127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: ::1 mix #######################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: ::FFFF:127.0.0.1
+change master to master_host='::1';
+Master-Host: ::1
+change master to master_host='::FFFF:127.0.0.1';
+Master-Host: ::FFFF:127.0.0.1
+change master to master_host='0:0:0:0:0:0:0:1';
+Master-Host: 0:0:0:0:0:0:0:1
+disconnect slave;
+disconnect master;
+connection default;
diff --git a/mysql-test/suite/rpl/r/rpl_ipv6_win.result b/mysql-test/suite/rpl/r/rpl_ipv6_win.result
new file mode 100644
index 00000000000..79dc8422161
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_ipv6_win.result
@@ -0,0 +1,80 @@
+#################### IP: ::1 ###########################
+connect (master,::1,root,,test,MASTER_MYPORT);
+connect (slave,::1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='::1';
+Master-Host: ::1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0000:0000:0000:0000:0000:0000:0000:0001 ###########################
+connect (master,0000:0000:0000:0000:0000:0000:0000:0001,root,,test,MASTER_MYPORT);
+connect (slave,0000:0000:0000:0000:0000:0000:0000:0001,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='0000:0000:0000:0000:0000:0000:0000:0001';
+Master-Host: 0000:0000:0000:0000:0000:0000:0000:0001
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 0:0:0:0:0:0:0:1 ###########################
+connect (master,0:0:0:0:0:0:0:1,root,,test,MASTER_MYPORT);
+connect (slave,0:0:0:0:0:0:0:1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='0:0:0:0:0:0:0:1';
+Master-Host: 0:0:0:0:0:0:0:1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: 127.0.0.1 ###########################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+change master to master_host='127.0.0.1';
+Master-Host: 127.0.0.1
+disconnect slave;
+disconnect master;
+connection default;
+#################### IP: ::1 mix #######################
+connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connection master;
+reset master;
+show master status;
+File Position Binlog_Do_DB Binlog_Ignore_DB
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+connection slave;
+reset slave;
+Master-Host: 127.0.0.1
+change master to master_host='::1';
+Master-Host: ::1
+change master to master_host='127.0.0.1';
+Master-Host: 127.0.0.1
+change master to master_host='0:0:0:0:0:0:0:1';
+Master-Host: 0:0:0:0:0:0:0:1
+disconnect slave;
+disconnect master;
+connection default;
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..cc7cfa144ee 100644
--- a/mysql-test/suite/rpl/r/rpl_known_bugs_detection.result
+++ b/mysql-test/suite/rpl/r/rpl_known_bugs_detection.result
@@ -33,7 +33,7 @@ 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
+Exec_Master_Log_Pos 247
Relay_Log_Space #
Until_Condition None
Until_Log_File
@@ -50,6 +50,8 @@ 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'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SELECT * FROM t1;
a b
stop slave;
@@ -120,7 +122,7 @@ FROM t2
ON DUPLICATE KEY UPDATE
t1.field_3 = t2.field_c'
Skip_Counter 0
-Exec_Master_Log_Pos 1278
+Exec_Master_Log_Pos 1964
Relay_Log_Space #
Until_Condition None
Until_Log_File
@@ -141,6 +143,8 @@ SELECT t2.field_a, t2.field_b, t2.field_c
FROM t2
ON DUPLICATE KEY UPDATE
t1.field_3 = t2.field_c'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SELECT * FROM t1;
id field_1 field_2 field_3
drop table t1, t2;
diff --git a/mysql-test/suite/rpl/r/rpl_load_from_master.result b/mysql-test/suite/rpl/r/rpl_load_from_master.result
deleted file mode 100644
index e1c2ecb35be..00000000000
--- a/mysql-test/suite/rpl/r/rpl_load_from_master.result
+++ /dev/null
@@ -1,133 +0,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;
-drop database if exists mysqltest;
-drop database if exists mysqltest2;
-drop database if exists mysqltest3;
-drop database if exists mysqltest;
-drop database if exists mysqltest2;
-drop database if exists mysqltest3;
-create database mysqltest2;
-create database mysqltest;
-create database mysqltest2;
-create table mysqltest2.foo (n int)ENGINE=MyISAM;
-insert into mysqltest2.foo values(4);
-create table mysqltest2.foo (n int)ENGINE=MyISAM;
-insert into mysqltest2.foo values(5);
-create table mysqltest.bar (m int)ENGINE=MyISAM;
-insert into mysqltest.bar values(15);
-select mysqltest2.foo.n,mysqltest.bar.m from mysqltest2.foo,mysqltest.bar;
-n m
-4 15
-drop database mysqltest;
-drop database if exists mysqltest2;
-drop database mysqltest;
-ERROR HY000: Can't drop database 'mysqltest'; database doesn't exist
-drop database mysqltest2;
-set sql_log_bin = 0;
-create database mysqltest2;
-create database mysqltest;
-show databases like 'mysql%';
-Database (mysql%)
-mysql
-mysqltest
-mysqltest2
-create table mysqltest2.t1(n int, s char(20))ENGINE=MyISAM;
-create table mysqltest2.t2(n int, s text)ENGINE=MyISAM;
-insert into mysqltest2.t1 values (1, 'one'), (2, 'two'), (3, 'three');
-insert into mysqltest2.t2 values (11, 'eleven'), (12, 'twelve'), (13, 'thirteen');
-create table mysqltest.t1(n int, s char(20))ENGINE=MyISAM;
-create table mysqltest.t2(n int, s text)ENGINE=MyISAM;
-insert into mysqltest.t1 values (1, 'one test'), (2, 'two test'), (3, 'three test');
-insert into mysqltest.t2 values (11, 'eleven test'), (12, 'twelve test'),
-(13, 'thirteen test');
-set sql_log_bin = 1;
-show databases like 'mysql%';
-Database (mysql%)
-mysql
-create database mysqltest2;
-create table mysqltest2.t1(n int, s char(20))ENGINE=MyISAM;
-insert into mysqltest2.t1 values (1, 'original foo.t1');
-create table mysqltest2.t3(n int, s char(20))ENGINE=MyISAM;
-insert into mysqltest2.t3 values (1, 'original foo.t3');
-create database mysqltest3;
-create table mysqltest3.t1(n int, s char(20))ENGINE=MyISAM;
-insert into mysqltest3.t1 values (1, 'original foo2.t1');
-create database mysqltest;
-create table mysqltest.t1(n int, s char(20))ENGINE=MyISAM;
-insert into mysqltest.t1 values (1, 'original bar.t1');
-create table mysqltest.t3(n int, s char(20))ENGINE=MyISAM;
-insert into mysqltest.t3 values (1, 'original bar.t3');
-load data from master;
-show databases like 'mysql%';
-Database (mysql%)
-mysql
-mysqltest
-mysqltest2
-mysqltest3
-use mysqltest2;
-show tables;
-Tables_in_mysqltest2
-t1
-t3
-select * from t1;
-n s
-1 original foo.t1
-use mysqltest3;
-show tables;
-Tables_in_mysqltest3
-t1
-select * from t1;
-n s
-1 original foo2.t1
-use mysqltest;
-show tables;
-Tables_in_mysqltest
-t1
-t2
-t3
-select * from mysqltest.t1;
-n s
-1 one test
-2 two test
-3 three test
-select * from mysqltest.t2;
-n s
-11 eleven test
-12 twelve test
-13 thirteen test
-select * from mysqltest.t3;
-n s
-1 original bar.t3
-insert into mysqltest.t1 values (4, 'four test');
-select * from mysqltest.t1;
-n s
-1 one test
-2 two test
-3 three test
-4 four test
-stop slave;
-reset slave;
-load data from master;
-start slave;
-insert into mysqltest.t1 values (5, 'five bar');
-select * from mysqltest.t1;
-n s
-1 one test
-2 two test
-3 three test
-4 four test
-5 five bar
-load table mysqltest.t1 from master;
-ERROR 42S01: Table 't1' already exists
-drop table mysqltest.t1;
-load table mysqltest.t1 from master;
-load table bar.t1 from master;
-ERROR HY000: Error from master: 'Table 'bar.t1' doesn't exist'
-drop database mysqltest;
-drop database mysqltest2;
-drop database mysqltest2;
-drop database mysqltest3;
diff --git a/mysql-test/suite/rpl/r/rpl_load_table_from_master.result b/mysql-test/suite/rpl/r/rpl_load_table_from_master.result
deleted file mode 100644
index 9d9a1d7d6cb..00000000000
--- a/mysql-test/suite/rpl/r/rpl_load_table_from_master.result
+++ /dev/null
@@ -1,51 +0,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;
-"******************** Test Requirment 1 *************"
-SET SQL_LOG_BIN=0,timestamp=200006;
-CREATE TABLE t1(t TIMESTAMP NOT NULL,a CHAR(1))ENGINE=MyISAM;
-INSERT INTO t1 ( a) VALUE ('F');
-select unix_timestamp(t) from t1;
-unix_timestamp(t)
-200006
-load table t1 from master;
-select unix_timestamp(t) from t1;
-unix_timestamp(t)
-200006
-set SQL_LOG_BIN=1,timestamp=default;
-drop table t1;
-set SQL_LOG_BIN=0;
-"******************** Test Requirment 2 *************"
-CREATE TABLE t1 (a INT NOT NULL) ENGINE=MyISAM MAX_ROWS=4000 CHECKSUM=1;
-INSERT INTO t1 VALUES (1);
-load table t1 from master;
-check table t1;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-drop table t1;
-drop table t1;
-set SQL_LOG_BIN=0;
-create table t1 (word char(20) not null, index(word))ENGINE=MyISAM;
-load data infile '../../std_data/words.dat' into table t1;
-create table t2 (word char(20) not null)ENGINE=MyISAM;
-load data infile '../../std_data/words.dat' into table t2;
-create table t3 (word char(20) not null primary key)ENGINE=MyISAM;
-load table t1 from master;
-load table t2 from master;
-load table t3 from master;
-check table t1;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-select count(*) from t2;
-count(*)
-70
-select count(*) from t3;
-count(*)
-0
-set SQL_LOG_BIN=1;
-drop table if exists t1,t2,t3;
-create table t1(n int);
-drop table t1;
diff --git a/mysql-test/suite/rpl/r/rpl_loaddata_fatal.result b/mysql-test/suite/rpl/r/rpl_loaddata_fatal.result
index ba0aa847cf7..814b83e39f8 100644
--- a/mysql-test/suite/rpl/r/rpl_loaddata_fatal.result
+++ b/mysql-test/suite/rpl/r/rpl_loaddata_fatal.result
@@ -13,7 +13,7 @@ Master_User root
Master_Port MASTER_PORT
Connect_Retry 1
Master_Log_File master-bin.000001
-Read_Master_Log_Pos 290
+Read_Master_Log_Pos #
Relay_Log_File #
Relay_Log_Pos #
Relay_Master_Log_File master-bin.000001
@@ -28,7 +28,7 @@ Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
-Exec_Master_Log_Pos 290
+Exec_Master_Log_Pos #
Relay_Log_Space #
Until_Condition None
Until_Log_File
@@ -45,6 +45,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE t1;
SHOW SLAVE STATUS;
Slave_IO_State #
@@ -53,7 +55,7 @@ Master_User root
Master_Port MASTER_PORT
Connect_Retry 1
Master_Log_File master-bin.000001
-Read_Master_Log_Pos 560
+Read_Master_Log_Pos #
Relay_Log_File #
Relay_Log_Pos #
Relay_Master_Log_File master-bin.000001
@@ -68,7 +70,7 @@ Replicate_Wild_Ignore_Table
Last_Errno 1593
Last_Error Fatal error: Not enough memory
Skip_Counter 0
-Exec_Master_Log_Pos 325
+Exec_Master_Log_Pos #
Relay_Log_Space #
Until_Condition None
Until_Log_File
@@ -85,6 +87,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 1593
Last_SQL_Error Fatal error: Not enough memory
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;
DROP TABLE t1;
diff --git a/mysql-test/suite/rpl/r/rpl_loaddata_m.result b/mysql-test/suite/rpl/r/rpl_loaddata_m.result
index a1294d515fa..4639c717cea 100644
--- a/mysql-test/suite/rpl/r/rpl_loaddata_m.result
+++ b/mysql-test/suite/rpl/r/rpl_loaddata_m.result
@@ -24,6 +24,7 @@ information_schema
mtr
mysql
mysqltest
+performance_schema
test
USE test;
SHOW TABLES;
diff --git a/mysql-test/suite/rpl/r/rpl_loaddata_map.result b/mysql-test/suite/rpl/r/rpl_loaddata_map.result
index 91624b15ef8..0588ae657ab 100644
--- a/mysql-test/suite/rpl/r/rpl_loaddata_map.result
+++ b/mysql-test/suite/rpl/r/rpl_loaddata_map.result
@@ -17,10 +17,12 @@ count(*)
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 t2 (id int not null primary key auto_increment)
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
master-bin.000001 # Append_block # # ;file_id=#;block_len=#
master-bin.000001 # Append_block # # ;file_id=#;block_len=#
master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug30435_5k.txt' INTO TABLE `t2` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`id`) ;file_id=#
+master-bin.000001 # Query # # COMMIT
==== Verify results on slave ====
[on slave]
select count(*) from t2 /* 5 000 */;
diff --git a/mysql-test/suite/rpl/r/rpl_log_pos.result b/mysql-test/suite/rpl/r/rpl_log_pos.result
index 85fa4c10eac..4da8b4c3a3c 100644
--- a/mysql-test/suite/rpl/r/rpl_log_pos.result
+++ b/mysql-test/suite/rpl/r/rpl_log_pos.result
@@ -49,6 +49,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
start slave;
include/stop_slave.inc
SHOW SLAVE STATUS;
@@ -58,7 +60,7 @@ Master_User root
Master_Port MASTER_PORT
Connect_Retry 1
Master_Log_File master-bin.000001
-Read_Master_Log_Pos 75
+Read_Master_Log_Pos #
Relay_Log_File #
Relay_Log_Pos #
Relay_Master_Log_File master-bin.000001
@@ -73,7 +75,7 @@ Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
-Exec_Master_Log_Pos 75
+Exec_Master_Log_Pos #
Relay_Log_Space #
Until_Condition None
Until_Log_File
@@ -90,6 +92,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
diff --git a/mysql-test/suite/rpl/r/rpl_found_rows.result b/mysql-test/suite/rpl/r/rpl_mix_found_rows.result
index 45a931872cf..a3bc1934a70 100644
--- a/mysql-test/suite/rpl/r/rpl_found_rows.result
+++ b/mysql-test/suite/rpl/r/rpl_mix_found_rows.result
@@ -4,8 +4,7 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-==== 0. Setting it all up ====
-SET BINLOG_FORMAT=STATEMENT;
+==== Initialize ====
**** On Master ****
CREATE TABLE t1 (a INT);
CREATE TABLE logtbl (sect INT, test INT, count INT);
@@ -16,106 +15,12 @@ INSERT INTO t1 SELECT 2*a+3 FROM t1;
INSERT INTO t1 SELECT 2*a+3 FROM t1;
INSERT INTO t1 SELECT 2*a+3 FROM t1;
INSERT INTO t1 SELECT 2*a+3 FROM t1;
-#### 1. Using statement mode ####
-==== 1.1. Simple test ====
-SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
-a
-7
-SELECT FOUND_ROWS() INTO @a;
-INSERT INTO logtbl VALUES(1,1,@a);
-SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a < 5 ORDER BY a LIMIT 1;
-a
-1
-SELECT FOUND_ROWS() INTO @a;
-INSERT INTO logtbl VALUES(1,2,@a);
-SELECT * FROM logtbl WHERE sect = 1 ORDER BY sect,test;
-sect test count
-1 1 183
-1 2 3
-**** On Slave ****
-SELECT * FROM logtbl WHERE sect = 1 ORDER BY sect,test;
-sect test count
-1 1 183
-1 2 3
-==== 1.2. Stored procedure ====
-**** On Master ****
-CREATE PROCEDURE calc_and_log(sect INT, test INT) BEGIN
-DECLARE cnt INT;
-SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a < 5 ORDER BY a LIMIT 1;
-SELECT FOUND_ROWS() INTO cnt;
-INSERT INTO logtbl VALUES(sect,test,cnt);
-SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
-SELECT FOUND_ROWS() INTO cnt;
-INSERT INTO logtbl VALUES(sect,test+1,cnt);
-END $$
-CALL calc_and_log(2,1);
-a
-1
-a
-7
-CREATE PROCEDURE just_log(sect INT, test INT, found_rows INT) BEGIN
-INSERT INTO logtbl VALUES (sect,test,found_rows);
-END $$
-SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
-a
-7
-SELECT FOUND_ROWS() INTO @found_rows;
-CALL just_log(2,3,@found_rows);
-SELECT * FROM logtbl WHERE sect = 2 ORDER BY sect,test;
-sect test count
-2 1 3
-2 2 183
-2 3 183
-**** On Slave ****
-SELECT * FROM logtbl WHERE sect = 2 ORDER BY sect,test;
-sect test count
-2 1 3
-2 2 183
-2 3 183
-==== 1.3. Stored functions ====
-**** On Master ****
-CREATE FUNCTION log_rows(sect INT, test INT, found_rows INT)
-RETURNS INT
-BEGIN
-INSERT INTO logtbl VALUES(sect,test,found_rows);
-RETURN found_rows;
-END $$
-SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
-a
-7
-SELECT FOUND_ROWS() INTO @found_rows;
-SELECT log_rows(3,1,@found_rows), log_rows(3,2,@found_rows);
-log_rows(3,1,@found_rows) log_rows(3,2,@found_rows)
-183 183
-SELECT * FROM logtbl WHERE sect = 3 ORDER BY sect,test;
-sect test count
-3 1 183
-3 2 183
-**** On Slave ****
-SELECT * FROM logtbl WHERE sect = 3 ORDER BY sect,test;
-sect test count
-3 1 183
-3 2 183
-==== 1.9. Cleanup ====
-**** On Master ****
-DELETE FROM logtbl;
-DROP PROCEDURE just_log;
-DROP PROCEDURE calc_and_log;
-DROP FUNCTION log_rows;
-**** Resetting master and slave ****
-include/stop_slave.inc
-RESET SLAVE;
-RESET MASTER;
-include/start_slave.inc
-#### 2. Using mixed mode ####
-==== 2.1. Checking a procedure ====
+==== Checking a procedure ====
**** On Master ****
-SET BINLOG_FORMAT=MIXED;
CREATE PROCEDURE just_log(sect INT, test INT) BEGIN
INSERT INTO logtbl VALUES (sect,test,FOUND_ROWS());
END $$
**** On Master 1 ****
-SET BINLOG_FORMAT=MIXED;
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
a
7
@@ -148,7 +53,7 @@ sect test count
1 2 183
1 3 3
1 4 183
-==== 2.1. Checking a stored function ====
+==== Checking a stored function ====
**** On Master ****
CREATE FUNCTION log_rows(sect INT, test INT)
RETURNS INT
diff --git a/mysql-test/suite/rpl/r/rpl_mix_insert_delayed.result b/mysql-test/suite/rpl/r/rpl_mix_insert_delayed.result
new file mode 100644
index 00000000000..cda73c91c4e
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_mix_insert_delayed.result
@@ -0,0 +1,72 @@
+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 SCHEMA IF NOT EXISTS mysqlslap;
+USE mysqlslap;
+select @@global.binlog_format;
+@@global.binlog_format
+MIXED
+CREATE TABLE t1 (id INT primary key auto_increment, name VARCHAR(64));
+FLUSH TABLE t1;
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+5000
+use mysqlslap;
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+5000
+truncate table t1;
+insert delayed into t1 values(10, "my name");
+flush table t1;
+insert delayed into t1 values(10, "is Bond"), (20, "James Bond");
+flush table t1;
+select * from t1;
+id name
+10 my name
+20 James Bond
+select * from t1;
+id name
+10 my name
+20 James Bond
+delete from t1 where id!=10;
+insert delayed into t1 values(20, "is Bond"), (10, "James Bond");
+flush table t1;
+select * from t1;
+id name
+10 my name
+20 is Bond
+select * from t1;
+id name
+10 my name
+20 is Bond
+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 BEGIN
+x x x x x table_id: # (test.t1)
+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 BEGIN
+x x x x x table_id: # (test.t1)
+select * from t1;
+a
+1
+drop table t1;
+FLUSH LOGS;
+FLUSH LOGS;
+End of 5.0 tests
diff --git a/mysql-test/suite/rpl/r/rpl_binlog_max_cache_size.result b/mysql-test/suite/rpl/r/rpl_mixed_binlog_max_cache_size.result
index 0e3f83d0aa5..693e582b57e 100644
--- a/mysql-test/suite/rpl/r/rpl_binlog_max_cache_size.result
+++ b/mysql-test/suite/rpl/r/rpl_mixed_binlog_max_cache_size.result
@@ -4,6 +4,7 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
CREATE TABLE t1(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb;
CREATE TABLE t2(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=MyIsam;
CREATE TABLE t3(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb;
@@ -13,13 +14,17 @@ CREATE TABLE t3(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb;
*** Single statement on transactional table ***
Got one of the listed errors
*** Single statement on non-transactional table ***
-*** After WL#2687 the difference between STATEMENT/MIXED and ROW will not exist. ***
Got one of the listed errors
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
+START SLAVE SQL_THREAD;
*** Single statement on both transactional and non-transactional tables. ***
-*** After WL#2687 we will be able to change the order of the tables. ***
Got one of the listed errors
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 2;
START SLAVE SQL_THREAD;
+source include/diff_master_slave.inc;
+########################################################################################
+# 2 - BEGIN - IMPLICIT COMMIT by DDL
+########################################################################################
TRUNCATE TABLE t1;
TRUNCATE TABLE t2;
TRUNCATE TABLE t3;
@@ -34,6 +39,8 @@ Got one of the listed errors
BEGIN;
Got one of the listed errors
Got one of the listed errors
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
+START SLAVE SQL_THREAD;
source include/diff_master_slave.inc;
########################################################################################
# 3 - BEGIN - COMMIT
@@ -110,12 +117,11 @@ BEGIN;
Got one of the listed errors
Got one of the listed errors
Got one of the listed errors
-Got one of the listed errors
-Got one of the listed errors
COMMIT;
BEGIN;
Got one of the listed errors
COMMIT;
+source include/diff_master_slave.inc;
########################################################################################
# CLEAN
########################################################################################
@@ -123,13 +129,10 @@ DROP TABLE t1;
DROP TABLE t2;
DROP TABLE t3;
DROP TABLE IF EXISTS t4;
+Warnings:
+Note 1051 Unknown table 't4'
DROP TABLE IF EXISTS t5;
DROP TABLE IF EXISTS t6;
-DROP PROCEDURE p1;
-DROP TABLE t1;
-DROP TABLE t2;
-DROP TABLE t3;
-DROP TABLE IF EXISTS t4;
-DROP TABLE IF EXISTS t5;
-DROP TABLE IF EXISTS t6;
+Warnings:
+Note 1051 Unknown table 't6'
DROP PROCEDURE p1;
diff --git a/mysql-test/suite/rpl/r/rpl_mixed_ddl_dml.result b/mysql-test/suite/rpl/r/rpl_mixed_ddl_dml.result
index 08d3241c48f..a353ee73d3f 100644
--- a/mysql-test/suite/rpl/r/rpl_mixed_ddl_dml.result
+++ b/mysql-test/suite/rpl/r/rpl_mixed_ddl_dml.result
@@ -13,8 +13,8 @@ n
2001
2002
show slave hosts;
-Server_id Host Port Rpl_recovery_rank Master_id
-2 127.0.0.1 9999 0 1
+Server_id Host Port Master_id
+2 127.0.0.1 9999 1
drop table t1;
stop slave;
create table t2(id int auto_increment primary key, created datetime);
diff --git a/mysql-test/suite/rpl/r/rpl_mixed_implicit_commit_binlog.result b/mysql-test/suite/rpl/r/rpl_mixed_implicit_commit_binlog.result
new file mode 100644
index 00000000000..386274af7b2
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_mixed_implicit_commit_binlog.result
@@ -0,0 +1,533 @@
+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;
+#########################################################################
+# CONFIGURATION
+#########################################################################
+CREATE TABLE tt_1 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = Innodb;
+CREATE TABLE tt_2 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = Innodb;
+CREATE TABLE nt_1 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = MyIsam;
+INSERT INTO tt_1(ddl_case) VALUES(0);
+INSERT INTO tt_2(ddl_case) VALUES(0);
+#########################################################################
+# CHECK IMPLICT COMMIT
+#########################################################################
+SET AUTOCOMMIT= 0;
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (41);
+LOAD INDEX INTO CACHE nt_1 IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.nt_1 preload_keys status OK
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (41)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (40);
+LOAD INDEX INTO CACHE tt_1, tt_2 IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.tt_1 preload_keys note The storage engine for the table doesn't support preload_keys
+test.tt_2 preload_keys note The storage engine for the table doesn't support preload_keys
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (40)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (39);
+ANALYZE TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 analyze status Table is already up to date
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (39)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ANALYZE TABLE nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (38);
+CHECK TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 check status OK
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (38)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (37);
+OPTIMIZE TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 optimize status Table is already up to date
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (37)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; OPTIMIZE TABLE nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (36);
+REPAIR TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 repair status OK
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (36)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; REPAIR TABLE nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (35);
+LOCK TABLES tt_1 WRITE;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (35)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (34);
+UNLOCK TABLES;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (34)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (33);
+CREATE USER 'user'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (33)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE USER 'user'@'localhost'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (32);
+GRANT ALL ON *.* TO 'user'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (32)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; GRANT ALL ON *.* TO 'user'@'localhost'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (31);
+SET PASSWORD FOR 'user'@'localhost' = PASSWORD('newpass');
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (31)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; SET PASSWORD FOR 'user'@'localhost'='*D8DECEC305209EEFEC43008E1D420E1AA06B19E0'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (30);
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (30)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'localhost'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (29);
+RENAME USER 'user'@'localhost' TO 'user_new'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (29)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; RENAME USER 'user'@'localhost' TO 'user_new'@'localhost'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (28);
+DROP USER 'user_new'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (28)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP USER 'user_new'@'localhost'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (27);
+CREATE EVENT evt ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO SELECT * FROM tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (27)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` EVENT evt ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (26);
+ALTER EVENT evt COMMENT 'evt';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (26)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ALTER EVENT evt COMMENT 'evt'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (25);
+DROP EVENT evt;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (25)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP EVENT evt
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (24);
+CREATE TRIGGER tr AFTER INSERT ON tt_1 FOR EACH ROW UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (24)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` TRIGGER tr AFTER INSERT ON tt_1 FOR EACH ROW UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (23);
+DROP TRIGGER tr;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (23)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP TRIGGER tr
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (22);
+CREATE FUNCTION fc () RETURNS VARCHAR(64) RETURN "fc";
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (22)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `fc`() RETURNS varchar(64) CHARSET latin1
+RETURN "fc"
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (21);
+ALTER FUNCTION fc COMMENT 'fc';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (21)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ALTER FUNCTION fc COMMENT 'fc'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (20);
+DROP FUNCTION fc;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (20)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP FUNCTION fc
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (19);
+CREATE PROCEDURE pc () UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (19)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `pc`()
+UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (18);
+ALTER PROCEDURE pc COMMENT 'pc';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (18)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ALTER PROCEDURE pc COMMENT 'pc'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (17);
+DROP PROCEDURE pc;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (17)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP PROCEDURE pc
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (16);
+CREATE VIEW v AS SELECT * FROM tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (16)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (15);
+ALTER VIEW v AS SELECT * FROM tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (15)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ALTER ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (14);
+DROP VIEW v;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (14)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP VIEW v
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (13);
+CREATE INDEX ix ON tt_1(ddl_case);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (13)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE INDEX ix ON tt_1(ddl_case)
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (12);
+DROP INDEX ix ON tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (12)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP INDEX ix ON tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (11);
+CREATE TEMPORARY TABLE tt_xx (a int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (11)
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx (a int)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (10);
+ALTER TABLE tt_xx ADD COLUMN (b int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (9);
+ALTER TABLE tt_xx RENAME new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (8);
+DROP TEMPORARY TABLE IF EXISTS new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS `new_tt_xx` /* generated by server */
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (7);
+CREATE TABLE tt_xx (a int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (7)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE TABLE tt_xx (a int)
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (6);
+ALTER TABLE tt_xx ADD COLUMN (b int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ALTER TABLE tt_xx ADD COLUMN (b int)
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (5);
+RENAME TABLE tt_xx TO new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (5)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; RENAME TABLE tt_xx TO new_tt_xx
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (4);
+TRUNCATE TABLE new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE new_tt_xx
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (3);
+DROP TABLE IF EXISTS tt_xx, new_tt_xx;
+Warnings:
+Note 1051 Unknown table 'tt_xx'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (3)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx, new_tt_xx
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (2);
+CREATE DATABASE db;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # CREATE DATABASE db
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (1);
+DROP DATABASE IF EXISTS db;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # DROP DATABASE IF EXISTS db
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# CHECK CONSISTENCY
+###################################################################################
+Comparing tables master:test.tt_1 and slave:test.tt_1
+###################################################################################
+# CLEAN
+###################################################################################
+DROP TABLE tt_1;
+DROP TABLE tt_2;
+DROP TABLE nt_1;
diff --git a/mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result b/mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result
new file mode 100644
index 00000000000..7ee633c0776
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result
@@ -0,0 +1,12107 @@
+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;
+#########################################################################
+# CONFIGURATION
+#########################################################################
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+SET @commands= 'configure';
+SET SQL_LOG_BIN=0;
+CREATE TABLE nt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE tt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+SET SQL_LOG_BIN=1;
+SET SQL_LOG_BIN=0;
+CREATE TABLE nt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE tt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+SET SQL_LOG_BIN=1;
+INSERT INTO nt_1(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO nt_2(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO nt_3(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO nt_4(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO nt_5(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO nt_6(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO tt_1(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO tt_2(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO tt_3(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO tt_4(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO tt_5(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO tt_6(trans_id, stmt_id) VALUES(1,1);
+CREATE PROCEDURE pc_i_tt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER)
+BEGIN
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1);
+END|
+CREATE PROCEDURE pc_i_nt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER)
+BEGIN
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1);
+END|
+CREATE FUNCTION fc_i_tt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64)
+BEGIN
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1);
+RETURN "fc_i_tt_5_suc";
+END|
+CREATE FUNCTION fc_i_nt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64)
+BEGIN
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1);
+RETURN "fc_i_nt_5_suc";
+END|
+CREATE TRIGGER tr_i_tt_3_to_nt_3 AFTER INSERT ON tt_3 FOR EACH ROW
+BEGIN
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM nt_3 WHERE trans_id= NEW.trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id;
+INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
+INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
+END|
+CREATE TRIGGER tr_i_nt_4_to_tt_4 AFTER INSERT ON nt_4 FOR EACH ROW
+BEGIN
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM tt_4 WHERE trans_id= NEW.trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id;
+INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
+INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
+END|
+CREATE TRIGGER tr_i_tt_5_to_tt_6 AFTER INSERT ON tt_5 FOR EACH ROW
+BEGIN
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM tt_6 WHERE trans_id= NEW.trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id, 1), 1) INTO in_stmt_id;
+INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
+INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
+END|
+CREATE TRIGGER tr_i_nt_5_to_nt_6 AFTER INSERT ON nt_5 FOR EACH ROW
+BEGIN
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM nt_6 WHERE trans_id= NEW.trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id;
+INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
+INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
+END|
+SET @commands= '';
+#########################################################################
+# 1 - MIXING TRANSACTIONAL and NON-TRANSACTIONAL TABLES
+#########################################################################
+
+
+
+
+#
+#1) Generates in the binlog what follows:
+# --> STMT "B T C" entries, format S.
+# --> ROW "B T C" entries, format R.
+# --> MIXED "B T C" entries, format S.
+#
+SET @commands= 'T';
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (8, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (8, 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (8, 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (9, 1);
+fc_i_tt_5_suc (9, 1)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(9,1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(9,1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (10, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#1.e) Generates in the binlog what follows:
+# --> STMT empty.
+# --> ROW empty.
+# --> MIXED empty.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (12, 1), (7, 1);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (13, 1), (10, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) VALUES (14, 1, ''), (7, 1, fc_i_tt_5_suc (14, 1));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#2) Generates in the binlog what follows:
+# --> STMT "B N C" entry, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format S.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (15, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (15, 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (15, 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (16, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (16, 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (16, 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (17, 1);
+fc_i_nt_5_suc (17, 1)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(17,1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(17,1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (18, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',18), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',18), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',18), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',18), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#2.e) Generates in the binlog what follows if a N-table is changed:
+# --> STMT "B N C" entry, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format S.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (15, 1);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (20, 1), (15, 1);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (20, 1), (15, 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (20, 1), (15, 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (21, 1), (18, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (21, 1), (18, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (21, 1), (18, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (22, 1, ''), (20, 1, fc_i_nt_5_suc (22, 1));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (22, 1, ''), (20, 1, fc_i_nt_5_suc (22, 1))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (22, 1, ''), (20, 1, fc_i_nt_5_suc (22, 1))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#3) Generates in the binlog what follows:
+# --> STMT "B M C" entry if only N-Table is changed, format S.
+# --> STMT "B M C" entries, format S.
+# --> ROW "B N T B T C" entries, format R.
+# --> MIXED "B N T B T C" entries, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 23, 1, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 24, 1, COUNT(*) FROM nt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 25 --> 1", tt_3.info= "new text 25 --> 1" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_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.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_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.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (26, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (27, 1, fc_i_tt_5_suc(27, 1));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 28 --> 1", nt_4.info= "new text 28 --> 1" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_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.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_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.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (29, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (30, 1, fc_i_nt_5_suc(30, 1));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#3.e) Generates in the binlog what follows:
+# --> STMT "B M C" entry if only N-Table is changed, format S.
+# --> STMT "B M R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 31, 1, COUNT(*) FROM tt_1 UNION SELECT 23, 1, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 32, 1, COUNT(*) FROM nt_1 UNION SELECT 24, 1, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (33, 1), (26, 1);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (34, 1, ''), (30, 2, fc_i_tt_5_suc (34, 1));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (35, 1), (29, 1);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (36, 1, ''), (30, 1, fc_i_nt_5_suc (36, 1));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#4) Generates in the binlog what follows:
+# --> STMT "B T T C" entries, format S.
+# --> ROW "B T T C" entries, format R.
+# --> MIXED "B T T C" entries, format S
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (38, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (38, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (38, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (38, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (38, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (38, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (39, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (39, 4);
+fc_i_tt_5_suc (39, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (39, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(39,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (39, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(39,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (40, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (40, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (40, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (40, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (41, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (41, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (41, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (41, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (41, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (41, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (42, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (42, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (42, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (42, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (42, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (42, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (43, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (43, 4);
+fc_i_tt_5_suc (43, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (43, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(43,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (43, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(43,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (44, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (44, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (44, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',44), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',44), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (44, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',44), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',44), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (45, 2);
+fc_i_tt_5_suc (45, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (45, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(45,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (45, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(45,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (45, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (46, 2);
+fc_i_tt_5_suc (46, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (46, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(46,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (46, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(46,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (46, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (47, 2);
+fc_i_tt_5_suc (47, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (47, 4);
+fc_i_tt_5_suc (47, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(47,2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(47,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(47,2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(47,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (48, 2);
+fc_i_tt_5_suc (48, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (48, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(48,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',48), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',48), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(48,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',48), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',48), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (49, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (49, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',49), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',49), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (49, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',49), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',49), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (49, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (50, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (50, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',50), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',50), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (50, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',50), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',50), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (50, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (51, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (51, 4);
+fc_i_tt_5_suc (51, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',51), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',51), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(51,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',51), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',51), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(51,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (52, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (52, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',52), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',52), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',52), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',52), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',52), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',52), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',52), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',52), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#4.e) Generates in the binlog what follows:
+# --> STMT "B T C" entries, format S.
+# --> ROW "B T C" entries, format R.
+# --> MIXED "B T C" entries, format S.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (53, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (53, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (53, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T eT C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (53, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T eT C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (54, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (54, 4), (54, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (54, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Te C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (54, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Te C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (55, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (55, 4), (52, 5);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (55, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Te-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (55, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Te-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (56, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) VALUES (56, 4, ''), (56, 2, fc_i_tt_5_suc (56, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (56, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Te-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (56, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Te-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (56, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (57, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (57, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B eT T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (57, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B eT T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (58, 2), (57, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (58, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (58, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (58, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (59, 2), (52, 5);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (59, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (59, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (59, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) VALUES (60, 2, ''), (59, 4, fc_i_tt_5_suc (60, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (60, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (60, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (60, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#5) Generates in the binlog what follows:
+# --> STMT empty.
+# --> ROW empty.
+# --> MIXED empty.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (61, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (61, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (62, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (62, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (63, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (63, 4);
+fc_i_tt_5_suc (63, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (64, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (64, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (65, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (65, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (66, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (66, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (67, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (67, 4);
+fc_i_tt_5_suc (67, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (68, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (68, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (69, 2);
+fc_i_tt_5_suc (69, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (69, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (70, 2);
+fc_i_tt_5_suc (70, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (70, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (71, 2);
+fc_i_tt_5_suc (71, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (71, 4);
+fc_i_tt_5_suc (71, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (72, 2);
+fc_i_tt_5_suc (72, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (72, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (73, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (73, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (74, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (74, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (75, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (75, 4);
+fc_i_tt_5_suc (75, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (76, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (76, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#5.e) Generates in the binlog what follows:
+# --> STMT empty.
+# --> ROW empty.
+# --> MIXED empty.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (77, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (77, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T eT R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T eT R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (78, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (78, 4), (78, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Te R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Te R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (79, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (79, 4), (52, 5);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Te-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Te-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (80, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) VALUES (80, 4, ''), (80, 2, fc_i_tt_5_suc (80, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Te-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Te-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (60, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (81, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B eT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B eT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (82, 2), (60, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (82, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (83, 2), (52, 5);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (83, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) VALUES (84, 2, ''), (60, 4, fc_i_tt_5_suc (84, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (84, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#6) Generates in the binlog what follows:
+# --> STMT "B N C B N C" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (85, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (85, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (85, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (85, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (85, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (85, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (86, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (86, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (86, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (86, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (86, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (86, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (87, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (87, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (87, 4);
+fc_i_nt_5_suc (87, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(87,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (87, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(87,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (88, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (88, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (88, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',88), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',88), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (88, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',88), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',88), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (89, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (89, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (89, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (89, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (89, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (89, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (90, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (90, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (90, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (90, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (90, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (90, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (91, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (91, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (91, 4);
+fc_i_nt_5_suc (91, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(91,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (91, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(91,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (92, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (92, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (92, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',92), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',92), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (92, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',92), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',92), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (93, 2);
+fc_i_nt_5_suc (93, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(93,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (93, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (93, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(93,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (93, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (94, 2);
+fc_i_nt_5_suc (94, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(94,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (94, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (94, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(94,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (94, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (95, 2);
+fc_i_nt_5_suc (95, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(95,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (95, 4);
+fc_i_nt_5_suc (95, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(95,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(95,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(95,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (96, 2);
+fc_i_nt_5_suc (96, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(96,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (96, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',96), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',96), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(96,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',96), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',96), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (97, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',97), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',97), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (97, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (97, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',97), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',97), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (97, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (98, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',98), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',98), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (98, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (98, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',98), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',98), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (98, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (99, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',99), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',99), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (99, 4);
+fc_i_nt_5_suc (99, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(99,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',99), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',99), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(99,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (100, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',100), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',100), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (100, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',100), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',100), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',100), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',100), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',100), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',100), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#6.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B N C B N C" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (101, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (101, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (101, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N eN C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (101, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N eN C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (102, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (102, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (102, 4), (102, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (102, 4), (102, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N Ne C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (102, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (102, 4), (102, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N Ne C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (103, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (103, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (103, 4), (100, 5);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (103, 4), (100, 5)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N Ne-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (103, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (103, 4), (100, 5)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N Ne-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (104, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (104, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (104, 4, ''), (104, 2, fc_i_nt_5_suc (104, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (104, 4, ''), (104, 2, fc_i_nt_5_suc (104, 4))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N Ne-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (104, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (104, 4, ''), (104, 2, fc_i_nt_5_suc (104, 4))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N Ne-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (104, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (105, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (105, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B eN N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (105, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B eN N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (106, 2), (105, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (106, 2), (105, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (106, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (106, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Ne N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (106, 2), (105, 4)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (106, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Ne N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (107, 2), (104, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (107, 2), (104, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (107, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (107, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Ne-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (107, 2), (104, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (107, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Ne-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (108, 2, ''), (107, 4, fc_i_nt_5_suc (108, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (108, 2, ''), (107, 4, fc_i_nt_5_suc (108, 2))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (108, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (108, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Ne-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (108, 2, ''), (107, 4, fc_i_nt_5_suc (108, 2))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (108, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Ne-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#7) Generates in the binlog what follows:
+# --> STMT "B N C B N C" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (109, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (109, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (109, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (109, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (109, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (109, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (110, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (110, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (110, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (110, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (110, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (110, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (111, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (111, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (111, 4);
+fc_i_nt_5_suc (111, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(111,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (111, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(111,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (112, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (112, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (112, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',112), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',112), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (112, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',112), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',112), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (113, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (113, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (113, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (113, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (113, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (113, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (114, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (114, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (114, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (114, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (114, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (114, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (115, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (115, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (115, 4);
+fc_i_nt_5_suc (115, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(115,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (115, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(115,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (116, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (116, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (116, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',116), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',116), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (116, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',116), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',116), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (117, 2);
+fc_i_nt_5_suc (117, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(117,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (117, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (117, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(117,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (117, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (118, 2);
+fc_i_nt_5_suc (118, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(118,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (118, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (118, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(118,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (118, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (119, 2);
+fc_i_nt_5_suc (119, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(119,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (119, 4);
+fc_i_nt_5_suc (119, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(119,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(119,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(119,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (120, 2);
+fc_i_nt_5_suc (120, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(120,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (120, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',120), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',120), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(120,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',120), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',120), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (121, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',121), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',121), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (121, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (121, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',121), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',121), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (121, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (122, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',122), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',122), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (122, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (122, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',122), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',122), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (122, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (123, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',123), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',123), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (123, 4);
+fc_i_nt_5_suc (123, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(123,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',123), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',123), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(123,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (124, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',124), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',124), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (124, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',124), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',124), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',124), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',124), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',124), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',124), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#7.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B N C B N C" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (125, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (125, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (125, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N eN R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (125, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N eN R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (126, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (126, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (126, 4), (126, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (126, 4), (126, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N Ne R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (126, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (126, 4), (126, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N Ne R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (127, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (127, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (127, 4), (124, 5);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (127, 4), (124, 5)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N Ne-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (127, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (127, 4), (124, 5)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N Ne-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (128, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (128, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (128, 4, ''), (128, 2, fc_i_nt_5_suc (128, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (128, 4, ''), (128, 2, fc_i_nt_5_suc (128, 4))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N Ne-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (128, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (128, 4, ''), (128, 2, fc_i_nt_5_suc (128, 4))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N Ne-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (128, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (129, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (129, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B eN N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (129, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B eN N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (130, 2), (129, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (130, 2), (129, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (130, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (130, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Ne N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (130, 2), (129, 4)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (130, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Ne N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (131, 2), (128, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (131, 2), (128, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (131, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (131, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Ne-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (131, 2), (128, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (131, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Ne-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (132, 2, ''), (131, 4, fc_i_nt_5_suc (132, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (132, 2, ''), (131, 4, fc_i_nt_5_suc (132, 2))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (132, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (132, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Ne-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (132, 2, ''), (131, 4, fc_i_nt_5_suc (132, 2))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (132, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Ne-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#8) Generates in the binlog what follows:
+# --> STMT "B T N C" entries, format S.
+# --> ROW "B N C B T C" entries, format R.
+# --> MIXED "B N C B T C" entries, format R in N and S in T.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (133, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (133, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (133, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (133, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (134, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (134, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (134, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (134, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (135, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (135, 4);
+fc_i_nt_5_suc (135, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (135, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (135, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (136, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (136, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (136, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (136, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (137, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (137, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (137, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (137, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (138, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (138, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (138, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (138, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (139, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (139, 4);
+fc_i_nt_5_suc (139, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (139, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (139, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (140, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (140, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (140, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (140, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (141, 2);
+fc_i_tt_5_suc (141, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (141, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(141,2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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`; SELECT `test`.`fc_i_tt_5_suc`(141,2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (142, 2);
+fc_i_tt_5_suc (142, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (142, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(142,2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(142,2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (143, 2);
+fc_i_tt_5_suc (143, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (143, 4);
+fc_i_nt_5_suc (143, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(143,2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(143,2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (144, 2);
+fc_i_tt_5_suc (144, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (144, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(144,2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(144,2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (145, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (145, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',145), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',145), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',145), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',145), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (146, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (146, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',146), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',146), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',146), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',146), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (147, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (147, 4);
+fc_i_nt_5_suc (147, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',147), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',147), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',147), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',147), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (148, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (148, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',148), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',148), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',148), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',148), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#8.e) Generates in the binlog what follows if T-* fails:
+# --> STMT "B N C" entry, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+# Otherwise, what follows if N-* fails and a N-Table is changed:
+# --> STMT "B T N C" entries, format S.
+# --> ROW "B N C B T C" entries, format R.
+# --> MIXED "B N C B T C" entries, format R in N and S in T.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (136, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (149, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (149, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B eT N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (149, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B eT N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (150, 2), (136, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (150, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (150, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (150, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (151, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (150, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (151, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T eN C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (151, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T eN C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (152, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (152, 4), (150, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (152, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Ne C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (152, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Ne C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#9) Generates in the binlog what follows:
+# --> STMT "B T N R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (153, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (153, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (154, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (154, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (155, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (155, 4);
+fc_i_nt_5_suc (155, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (156, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (156, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (157, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (157, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (158, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (158, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (159, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (159, 4);
+fc_i_nt_5_suc (159, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (160, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (160, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (161, 2);
+fc_i_tt_5_suc (161, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (161, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (162, 2);
+fc_i_tt_5_suc (162, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (162, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (163, 2);
+fc_i_tt_5_suc (163, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (163, 4);
+fc_i_nt_5_suc (163, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (164, 2);
+fc_i_tt_5_suc (164, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (164, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (165, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (165, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (166, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (166, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (167, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (167, 4);
+fc_i_nt_5_suc (167, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (168, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (168, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#9.e) Generates in the binlog what follows if T* fails:
+# --> STMT "B N C" entry, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+# Otherwise, what follows if N* fails and a N-Table is changed:
+# --> STMT "B T N R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (152, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (169, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (169, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B eT N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (169, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B eT N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (170, 2), (152, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (170, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (170, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (170, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (171, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (170, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T eN R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T eN R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (172, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (172, 4), (170, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Ne R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Ne R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#10) Generates in the binlog:
+# --> STMT "B N C B T C" entries, format S.
+# --> ROW "B N C B T C" entries, format R.
+# --> MIXED "B N C B T C" entries, format S.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (173, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (173, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (173, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (173, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (173, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (173, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (174, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (174, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (174, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (174, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (174, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (174, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (175, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (175, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (175, 4);
+fc_i_tt_5_suc (175, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(175,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (175, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(175,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (176, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (176, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (176, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',176), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',176), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (176, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',176), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',176), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (177, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (177, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (177, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (177, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (177, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (177, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (178, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (178, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (178, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (178, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (178, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (178, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (179, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (179, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (179, 4);
+fc_i_tt_5_suc (179, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(179,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (179, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(179,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (180, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (180, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (180, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',180), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',180), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (180, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',180), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',180), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (181, 2);
+fc_i_nt_5_suc (181, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(181,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (181, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (181, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(181,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (181, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (182, 2);
+fc_i_nt_5_suc (182, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(182,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (182, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (182, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(182,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (182, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (183, 2);
+fc_i_nt_5_suc (183, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(183,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (183, 4);
+fc_i_tt_5_suc (183, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(183,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(183,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(183,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (184, 2);
+fc_i_nt_5_suc (184, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(184,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (184, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',184), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',184), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(184,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',184), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',184), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (185, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (185, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (185, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (185, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (186, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (186, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (186, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (186, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (187, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (187, 4);
+fc_i_tt_5_suc (187, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(187,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(187,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (188, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (188, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',188), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',188), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',188), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',188), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#11) Generates in the binlog what follows:
+# --> STMT "B N C" entries, format S.
+# --> ROW "B N C" entries, format R.
+# --> MIXED "B N C" entries, format S.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (189, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (189, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (189, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (189, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (190, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (190, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (190, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (190, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (191, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (191, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (191, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (191, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (192, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (192, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (192, 4);
+fc_i_tt_5_suc (192, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (192, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (193, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (193, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (193, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (193, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (194, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (194, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (194, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (194, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (195, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (195, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (195, 4);
+fc_i_tt_5_suc (195, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (195, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (196, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (196, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (196, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (196, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (197, 2);
+fc_i_nt_5_suc (197, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(197,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (197, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(197,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (198, 2);
+fc_i_nt_5_suc (198, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(198,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (198, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(198,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (199, 2);
+fc_i_nt_5_suc (199, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(199,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (199, 4);
+fc_i_tt_5_suc (199, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(199,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (200, 2);
+fc_i_nt_5_suc (200, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(200,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (200, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(200,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (201, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (201, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (202, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (202, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (203, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (203, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (204, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (204, 4);
+fc_i_tt_5_suc (204, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#12) Generates in the binlog what follows:
+# --> STMT "B M C B T C" entries if in M only N-Table is changed, format S.
+# --> STMT "B M T C" entries, format S.
+# --> ROW "B N C B T T C" entries, format R.
+# --> MIXED "B N C B T T C" entries, format R in N/T and format S in T.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 205, 2, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (205, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (205, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tN T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (205, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B tN T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 206, 2, COUNT(*) FROM nt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (206, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (206, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nT T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (206, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B nT T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 207 --> 2", tt_3.info= "new text 207 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (207, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (207, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_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.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (207, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (208, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (208, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (208, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (208, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (209, 2, fc_i_tt_5_suc(209, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (209, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (209, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (209, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (210, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (210, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_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.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (210, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (211, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (211, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (211, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (212, 2, fc_i_nt_5_suc(212, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (212, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (212, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (212, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#12.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B M C B T C" entries if in M only N-Table is changed, format S.
+# --> STMT "B M T C" entries, format S.
+# --> ROW "B N C B T T C" entries, format R.
+# --> MIXED "B N C B T T C" entries, format R in N/T and format S in T.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 213, 2, COUNT(*) FROM tt_1 UNION SELECT 205, 2, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (213, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (213, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tNe T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (213, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B tNe T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 214, 2, COUNT(*) FROM nt_1 UNION SELECT 213, 4, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (214, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (214, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nTe T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (214, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B nTe T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (215, 2), (208, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (215, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (215, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (215, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (216, 2, ''), (212, 2, fc_i_tt_5_suc (216, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (216, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (216, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (216, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (217, 2), (211, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (217, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (217, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (217, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (218, 2, ''), (212, 2, fc_i_nt_5_suc (218, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (218, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (218, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (218, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#13) "B M T R" generates in the binlog:
+# --> STMT "B M C B T R" entries if in M only N-Table is changed, format S.
+# --> STMT "B M T R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 219, 2, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (219, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tN T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B tN T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 220, 2, COUNT(*) FROM nt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (220, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B nT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 221 --> 2", tt_3.info= "new text 221 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (221, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (222, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (222, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (223, 2, fc_i_tt_5_suc(223, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (223, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 224 --> 2", nt_4.info= "new text 224 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (224, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (225, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (225, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (226, 2, fc_i_nt_5_suc(226, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (226, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#13.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B M C B T R" entries if in M only N-Table is changed, format S.
+# --> STMT "B M T R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 227, 2, COUNT(*) FROM tt_1 UNION SELECT 219, 2, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (227, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tNe T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B tNe T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 228, 2, COUNT(*) FROM nt_1 UNION SELECT 218, 4, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (228, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nTe T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B nTe T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (229, 2), (222, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (229, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (230, 2, ''), (226, 2, fc_i_tt_5_suc (230, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (230, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (231, 2), (211, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (231, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (232, 2, ''), (212, 2, fc_i_nt_5_suc (232, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (232, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#14) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B T M C" entries, format S.
+# --> ROW "B N C B T T C" entries, format R.
+# --> MIXED "B N C B T T C" entries, format R in N/T and format S in T.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (233, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 233, 4, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (233, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T tN C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (233, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T tN C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (234, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 234, 4, COUNT(*) FROM nt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (234, 2)
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T nT C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (234, 2)
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T nT C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (235, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 235 --> 4", tt_3.info= "new text 235 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (235, 2)
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NT C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (235, 2)
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NT C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (236, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (236, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (236, 2)
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NT-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (236, 2)
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NT-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (237, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (237, 4, fc_i_tt_5_suc(237, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (237, 2)
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NT-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (237, 2)
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NT-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (238, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (238, 2)
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TN C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (238, 2)
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TN C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (239, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (239, 2)
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TN-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (239, 2)
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TN-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (240, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (240, 4, fc_i_nt_5_suc(240, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (240, 2)
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TN-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (240, 2)
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TN-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#14.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B T M C" entries, format S.
+# --> ROW "B N C B T C" entry, format R.
+# --> MIXED "B N C B T C" entry, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (241, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 241, 4, COUNT(*) FROM tt_1 UNION SELECT 233, 4, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (241, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T tNe C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (241, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T tNe C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (242, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 242, 4, COUNT(*) FROM nt_1 UNION SELECT 242, 2, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (242, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T nTe C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (242, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T nTe C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (243, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (243, 4), (236, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (243, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NeT-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (243, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NeT-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (244, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (244, 4, ''), (240, 2, fc_i_tt_5_suc (244, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (244, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NeT-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (244, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NeT-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (245, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (245, 4), (239, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (245, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TeN-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (245, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TeN-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (246, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (246, 4, ''), (240, 4, fc_i_nt_5_suc (246, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (246, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TeN-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (246, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TeN-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#15) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B T M R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (247, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 247, 4, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T tN R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T tN R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (248, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 248, 4, COUNT(*) FROM nt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T nT R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T nT R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (249, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 249 --> 4", tt_3.info= "new text 249 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NT R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NT R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (250, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (250, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NT-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NT-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (251, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (251, 4, fc_i_tt_5_suc(251, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NT-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NT-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (252, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 252 --> 4", nt_4.info= "new text 252 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TN R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TN R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (253, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (253, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TN-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TN-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (254, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (254, 4, fc_i_nt_5_suc(254, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TN-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TN-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#15.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B T M R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (255, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 255, 4, COUNT(*) FROM tt_1 UNION SELECT 247, 4, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T tNe R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T tNe R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (256, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 256, 4, COUNT(*) FROM nt_1 UNION SELECT 256, 2, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T nTe R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T nTe R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (257, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (257, 4), (250, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NeT-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NeT-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (258, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (258, 4, ''), (254, 2, fc_i_tt_5_suc (258, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NeT-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NeT-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (259, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (259, 4), (239, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TeN-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TeN-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (260, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (260, 4, ''), (240, 4, fc_i_nt_5_suc (260, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TeN-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TeN-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#16) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> STMT "B M N C" entries, format S.
+# --> ROW "B N C B N C B T C" entries, format R.
+# --> MIXED "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> MIXED "B N C B N C B T C" entries, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 261, 2, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (261, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (261, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tN N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (261, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B tN N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 262, 2, COUNT(*) FROM nt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (262, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nT N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B nT N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 263 --> 2", tt_3.info= "new text 263 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (263, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_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.nt_1)
+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.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (264, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (264, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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.nt_1)
+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.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (265, 2, fc_i_tt_5_suc(265, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (265, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_1)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (266, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_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.nt_1)
+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.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (267, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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.nt_1)
+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.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (268, 2, fc_i_nt_5_suc(268, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (268, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.nt_1)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#16.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> STMT "B M N C" entries, format S.
+# --> ROW "B N C B N C B T C" entries, format R.
+# --> MIXED "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> MIXED "B N C B N C B T C" entries, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 269, 2, COUNT(*) FROM tt_1 UNION SELECT 268, 4, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (269, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (269, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tNe N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (269, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B tNe N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 270, 2, COUNT(*) FROM nt_1 UNION SELECT 262, 2, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (270, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (270, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nTe N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (270, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B nTe N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (271, 2), (264, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (271, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (271, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (271, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (272, 2, ''), (268, 2, fc_i_tt_5_suc (272, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (272, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (272, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (272, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (273, 2), (267, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (273, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (273, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (273, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (274, 2, ''), (268, 2, fc_i_nt_5_suc (274, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (274, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (274, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (274, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#17) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> STMT "B M N R" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> MIXED "B N C B N C" entries, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 275, 2, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (275, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (275, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tN N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (275, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B tN N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 276, 2, COUNT(*) FROM nt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (276, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nT N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B nT N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 277 --> 2", tt_3.info= "new text 277 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (277, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (278, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (278, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (279, 2, fc_i_tt_5_suc(279, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (279, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 280 --> 2", nt_4.info= "new text 280 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (280, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (281, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (281, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (282, 2, fc_i_nt_5_suc(282, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (282, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#17.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> STMT "B M N R" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> MIXED "B N C B N C" entries, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 283, 2, COUNT(*) FROM tt_1 UNION SELECT 282, 4, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (283, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (283, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tNe N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (283, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B tNe N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 284, 2, COUNT(*) FROM nt_1 UNION SELECT 262, 2, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (284, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (284, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nTe N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (284, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B nTe N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (285, 2), (278, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (285, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (285, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (285, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (286, 2, ''), (282, 2, fc_i_tt_5_suc (286, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (286, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (286, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (286, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (287, 2), (267, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (287, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (287, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (287, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (288, 2, ''), (268, 2, fc_i_nt_5_suc (288, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (288, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (288, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (288, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#18) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B N C B M C" entries if in M only N-Table is changed, format S.
+# --> STMT "B N C B M C" entries, format S.
+# --> ROW "B N C B N C B T C" entries, format R.
+# --> MIXED "B N C B N C B T C" entries, format S in first N and format R in the other.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (289, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (289, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 289, 4, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N tN C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (289, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N tN C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (290, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (290, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 290, 4, COUNT(*) FROM nt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N nT C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (290, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N nT C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (291, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (291, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 291 --> 4", tt_3.info= "new text 291 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NT C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (291, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_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.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NT C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (292, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (292, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (292, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NT-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (292, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NT-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (293, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (293, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (293, 4, fc_i_tt_5_suc(293, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NT-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (293, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NT-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (294, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (294, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TN C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (294, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_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.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TN C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (295, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (295, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TN-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (295, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TN-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (296, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (296, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (296, 4, fc_i_nt_5_suc(296, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TN-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (296, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TN-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#18.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B N C B M C" entries if in M only N-Table is changed, format S.
+# --> STMT "B N C B M C" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S in first N and format R in the other.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (297, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (297, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 297, 4, COUNT(*) FROM tt_1 UNION SELECT 297, 2, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N tNe C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (297, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N tNe C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (298, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (298, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 298, 4, COUNT(*) FROM nt_1 UNION SELECT 290, 4, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N nTe C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (298, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N nTe C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (299, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (299, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (299, 4), (292, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NeT-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (299, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NeT-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (300, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (300, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (300, 4, ''), (296, 2, fc_i_tt_5_suc (300, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NeT-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (300, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NeT-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (301, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (301, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (301, 4), (295, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TeN-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (301, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TeN-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (302, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (302, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (302, 4, ''), (296, 4, fc_i_nt_5_suc (302, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TeN-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (302, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TeN-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#19) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B N C B M C" entries if in M only N-Table is changed, format S.
+# --> STMT "B N C B M R" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S in first N and format R in the other.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (303, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (303, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 303, 4, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N tN R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (303, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N tN R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (304, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (304, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 304, 4, COUNT(*) FROM nt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N nT R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (304, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N nT R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (305, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (305, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 305 --> 4", tt_3.info= "new text 305 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NT R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (305, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NT R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (306, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (306, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (306, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NT-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (306, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NT-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (307, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (307, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (307, 4, fc_i_tt_5_suc(307, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NT-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (307, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NT-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (308, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (308, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 308 --> 4", nt_4.info= "new text 308 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TN R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (308, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TN R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (309, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (309, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (309, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TN-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (309, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TN-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (310, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (310, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (310, 4, fc_i_nt_5_suc(310, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TN-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (310, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TN-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#19.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B N C B M C" entries if in M only N-Table is changed, format S.
+# --> STMT "B N C B M R" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S in first N and format R in the other.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (311, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (311, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 311, 4, COUNT(*) FROM tt_1 UNION SELECT 311, 2, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N tNe R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (311, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N tNe R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (312, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (312, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 312, 4, COUNT(*) FROM nt_1 UNION SELECT 290, 4, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N nTe R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (312, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N nTe R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (313, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (313, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (313, 4), (306, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NeT-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (313, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NeT-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (314, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (314, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (314, 4, ''), (310, 2, fc_i_tt_5_suc (314, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NeT-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (314, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NeT-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (315, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (315, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (315, 4), (295, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TeN-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (315, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TeN-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (316, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (316, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (316, 4, ''), (296, 4, fc_i_nt_5_suc (316, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TeN-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (316, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TeN-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# 2 - SAVEPOINT
+###################################################################################
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (317, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> S1 << -b-b-b-b-b-b-b-b-b-b-b-
+SAVEPOINT s1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> S1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (317, 5);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R1 << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK TO s1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (317, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T S1 T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (317, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T S1 T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (318, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (318, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> S1 << -b-b-b-b-b-b-b-b-b-b-b-
+SAVEPOINT s1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> S1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 7);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R1 << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK TO s1;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 4)
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 7)
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T S1 T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (318, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 4)
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 7)
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T S1 T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (319, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> S1 << -b-b-b-b-b-b-b-b-b-b-b-
+SAVEPOINT s1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> S1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 7);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R1 << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK TO s1;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 2)
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 7)
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N S1 T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 2)
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 7)
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N S1 T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> S1 << -b-b-b-b-b-b-b-b-b-b-b-
+SAVEPOINT s1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> S1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (320, 5);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 7);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R1 << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK TO s1;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 2)
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 7)
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T S1 N T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 2)
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 7)
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T S1 N T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# 3 - CREATE TABLE...SELECT
+###################################################################################
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-T->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE tt_xx_1 (PRIMARY KEY (stmt_id)) engine=Innodb SELECT stmt_id FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-T->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-T->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE tt_xx_1 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE tt_xx_1 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-T->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_1, nt_xx_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_1, nt_xx_1
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-T->T CS-T->T drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE tt_xx_1 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_1, nt_xx_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-T->T CS-T->T drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->N << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_2 (PRIMARY KEY (stmt_id)) engine=MyIsam SELECT stmt_id FROM nt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->N << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_2 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE nt_xx_2 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_2, nt_xx_2;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_2, nt_xx_2
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->N CS-N->N drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE nt_xx_2 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_2, nt_xx_2
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->N CS-N->N drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-T->N << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE tt_xx_3 (PRIMARY KEY (stmt_id)) engine=Innodb SELECT stmt_id FROM nt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-T->N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-T->N << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE tt_xx_3 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM nt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `tt_xx_3` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=InnoDB
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_3)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-T->N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_3, nt_xx_3;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_3, nt_xx_3
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-T->N CS-T->N drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `tt_xx_3` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=InnoDB
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_3)
+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 # # use `test`; DROP TABLE IF EXISTS tt_xx_3, nt_xx_3
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-T->N CS-T->N drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_4 (PRIMARY KEY (stmt_id)) engine=MyIsam SELECT stmt_id FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_4 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `nt_xx_4` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=MyISAM
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_4, nt_xx_4;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_4, nt_xx_4
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->T CS-N->T drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `nt_xx_4` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=MyISAM
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_4, nt_xx_4
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->T CS-N->T drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_5 (PRIMARY KEY (stmt_id)) engine=MyIsam SELECT stmt_id FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_5 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `nt_xx_5` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=MyISAM
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_5)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_5, nt_xx_5;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_5, nt_xx_5
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->T CS-N->T drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `nt_xx_5` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=MyISAM
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_5)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_5, nt_xx_5
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->T CS-N->T drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_6 (PRIMARY KEY (stmt_id)) engine=MyIsam SELECT stmt_id FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_6 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `nt_xx_6` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=MyISAM
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_6)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_6, nt_xx_6;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_6, nt_xx_6
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->T CS-N->T drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `nt_xx_6` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=MyISAM
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_6)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_6, nt_xx_6
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->T CS-N->T drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# 4 - INSERT TABLE...SELECT
+###################################################################################
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-T->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE tt_xx_7 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE tt_xx_7 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-T->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-T->T << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE tt_xx_7 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-T->T << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_7;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (328, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-T<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_7(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-T<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (328, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (328, 3)
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_7)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (328, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B T IS-T<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (328, 3)
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_7)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (328, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B T IS-T<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_7;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (329, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-T<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_7(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM nt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-T<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (329, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (329, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (329, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B T ISe-T<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (329, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (329, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B T ISe-T<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_7;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-T<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_7(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-T<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (330, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_7)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (330, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B IS-T<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_7)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (330, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B IS-T<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_7;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-T<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_7(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM nt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-T<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (331, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (331, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B ISe-T<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (331, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B ISe-T<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_7, nt_xx_7;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_7, nt_xx_7
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_7, nt_xx_7
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-T->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE tt_xx_8 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE tt_xx_8 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-T->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-T->T << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE tt_xx_8 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-T->T << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_8;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (334, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-T<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_8(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-T<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (334, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (334, 3)
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_8)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (334, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B T IS-T<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (334, 3)
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_8)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (334, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B T IS-T<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_8;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (335, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-T<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_8(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-T<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (335, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (335, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (335, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B T ISe-T<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (335, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (335, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B T ISe-T<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_8;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-T<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_8(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-T<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (336, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_8)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (336, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B IS-T<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_8)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (336, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B IS-T<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_8;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-T<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_8(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-T<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (337, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (337, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B ISe-T<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (337, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B ISe-T<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_8, nt_xx_8;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_8, nt_xx_8
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_8, nt_xx_8
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->N << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_9 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE nt_xx_9 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->N << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE nt_xx_9 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->N << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_9;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (340, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-N<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-N<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (340, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (340, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (340, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B T IS-N<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_9)
+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 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (340, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (340, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B T IS-N<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_9;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (341, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-N<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-N<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (341, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (341, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (341, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B T ISe-N<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_9)
+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`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (341, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (341, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B T ISe-N<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_9;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-N<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-N<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (342, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (342, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B IS-N<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_9)
+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 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (342, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B IS-N<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_9;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-N<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-N<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (343, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (343, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B ISe-N<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_9)
+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`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (343, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B ISe-N<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_9, nt_xx_9;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_9, nt_xx_9
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_9, nt_xx_9
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->N << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_10 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE nt_xx_10 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->N << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE nt_xx_10 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->N << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_10;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (346, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-N<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_10)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-N<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (346, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (346, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (346, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B T IS-N<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_10)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (346, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (346, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B T IS-N<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_10;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (347, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-N<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM nt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_10)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-N<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (347, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (347, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (347, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B T ISe-N<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_10)
+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`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (347, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (347, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B T ISe-N<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_10;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-N<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_10)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-N<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (348, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (348, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B IS-N<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_10)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (348, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B IS-N<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_10;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-N<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM nt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_10)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-N<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (349, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (349, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B ISe-N<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_10)
+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`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (349, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B ISe-N<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_10, nt_xx_10;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_10, nt_xx_10
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_10, nt_xx_10
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# 5 - ROLLBACK TEMPORARY TABLE
+###################################################################################
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (351, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CT << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TEMPORARY TABLE tt_xx_11 (a int) engine=Innodb;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T CT R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T CT R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TEMPORARY TABLE IF EXISTS tt_xx_11;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_11
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_11
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (353, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> S1 << -b-b-b-b-b-b-b-b-b-b-b-
+SAVEPOINT s1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> S1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (353, 5);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CT << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TEMPORARY TABLE tt_xx_12 (a int) engine=Innodb;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R1 << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK TO s1;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T S1 T CT R1 R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T S1 T CT R1 R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TEMPORARY TABLE IF EXISTS tt_xx_12;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_12
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_12
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (355, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CT << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TEMPORARY TABLE tt_xx_13 (a int) engine=Innodb;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (355, 5);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T CT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T CT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TEMPORARY TABLE IF EXISTS tt_xx_13;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_13
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_13
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 357, 2, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CT << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TEMPORARY TABLE tt_xx_14 (a int) engine=Innodb;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx_14 (a int) engine=Innodb
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (357, 5);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tN CT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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 TEMPORARY TABLE tt_xx_14 (a int) engine=Innodb
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B tN CT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TEMPORARY TABLE IF EXISTS tt_xx_14;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_14
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_14
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CT << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TEMPORARY TABLE tt_xx_15 (a int) engine=Innodb;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx_15 (a int) engine=Innodb
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (359, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B CT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx_15 (a int) engine=Innodb
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B CT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TEMPORARY TABLE IF EXISTS tt_xx_15;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_15
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_15
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (361, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (361, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CT << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TEMPORARY TABLE tt_xx_16 (a int) engine=Innodb;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx_16 (a int) engine=Innodb
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (361, 5);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N CT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (361, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx_16 (a int) engine=Innodb
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N CT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TEMPORARY TABLE IF EXISTS tt_xx_16;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_16
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_16
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# CHECK CONSISTENCY
+###################################################################################
+###################################################################################
+# CLEAN
+###################################################################################
diff --git a/mysql-test/suite/rpl/r/rpl_mixed_row_innodb.result b/mysql-test/suite/rpl/r/rpl_mixed_row_innodb.result
new file mode 100644
index 00000000000..a4894631087
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_mixed_row_innodb.result
@@ -0,0 +1,84 @@
+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 t4 (
+id INT(5) unsigned NOT NULL auto_increment,
+name varchar(15) NOT NULL default '',
+number varchar(35) NOT NULL default 'default',
+PRIMARY KEY (id),
+UNIQUE KEY unique_rec (name,number)
+) ENGINE=InnoDB;
+LOAD DATA
+INFILE '../../std_data/loaddata_pair.dat'
+REPLACE INTO TABLE t4
+(name,number);
+SELECT * FROM t4;
+id name number
+1 XXX 12345
+2 XXY 12345
+SELECT * FROM t4;
+id name number
+1 XXX 12345
+2 XXY 12345
+LOAD DATA
+INFILE '../../std_data/loaddata_pair.dat'
+REPLACE INTO TABLE t4
+(name,number);
+SELECT * FROM t4;
+id name number
+4 XXX 12345
+5 XXY 12345
+SELECT * FROM t4;
+id name number
+4 XXX 12345
+5 XXY 12345
+FLUSH LOGS;
+FLUSH LOGS;
+DROP DATABASE IF EXISTS mysqltest1;
+CREATE DATABASE mysqltest1;
+CREATE TEMPORARY TABLE mysqltest1.tmp (f1 BIGINT);
+CREATE TABLE mysqltest1.t1 (f1 BIGINT) ENGINE="InnoDB";
+SET AUTOCOMMIT = 0;
+-------- switch to slave --------
+ALTER TABLE mysqltest1.t1 ENGINE = MyISAM;
+SHOW CREATE TABLE mysqltest1.t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f1` bigint(20) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+-------- switch to master --------
+INSERT INTO mysqltest1.t1 SET f1= 1;
+DROP TEMPORARY TABLE mysqltest1.tmp;
+ROLLBACK;
+SHOW CREATE TABLE mysqltest1.tmp;
+ERROR 42S02: Table 'mysqltest1.tmp' doesn't exist
+SELECT COUNT(*) FROM mysqltest1.t1;
+COUNT(*)
+0
+INSERT INTO mysqltest1.t1 SET f1= 2;
+CREATE TEMPORARY TABLE mysqltest1.tmp2(a INT);
+ROLLBACK;
+SHOW CREATE TABLE mysqltest1.tmp2;
+Table Create Table
+tmp2 CREATE TEMPORARY TABLE `tmp2` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT COUNT(*) FROM mysqltest1.t1;
+COUNT(*)
+0
+-------- switch to slave --------
+SHOW CREATE TABLE mysqltest1.tmp;
+ERROR 42S02: Table 'mysqltest1.tmp' doesn't exist
+SHOW CREATE TABLE mysqltest1.tmp2;
+ERROR 42S02: Table 'mysqltest1.tmp2' doesn't exist
+SELECT COUNT(*) FROM mysqltest1.t1;
+COUNT(*)
+0
+FLUSH LOGS;
+-------- switch to master --------
+FLUSH LOGS;
+DROP DATABASE mysqltest1;
+End of 5.1 tests
diff --git a/mysql-test/suite/rpl/r/rpl_multi_delete2.result b/mysql-test/suite/rpl/r/rpl_multi_delete2.result
index 87abe60b268..8e6a6a3d4d0 100644
--- a/mysql-test/suite/rpl/r/rpl_multi_delete2.result
+++ b/mysql-test/suite/rpl/r/rpl_multi_delete2.result
@@ -16,7 +16,7 @@ DELETE alias FROM a alias WHERE alias.i=1;
SELECT * FROM a;
i
insert into a values(2),(3);
-delete a alias FROM a alias where alias.i=2;
+delete alias FROM a alias where alias.i=2;
select * from a;
i
3
diff --git a/mysql-test/suite/rpl/r/rpl_mysql_upgrade.result b/mysql-test/suite/rpl/r/rpl_mysql_upgrade.result
index 09a9121d22c..f7bb14d1adb 100644
--- a/mysql-test/suite/rpl/r/rpl_mysql_upgrade.result
+++ b/mysql-test/suite/rpl/r/rpl_mysql_upgrade.result
@@ -4,6 +4,7 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
DROP DATABASE IF EXISTS `#mysql50#mysqltest-1`;
CREATE DATABASE `#mysql50#mysqltest-1`;
Master position is not changed
diff --git a/mysql-test/suite/rpl/r/rpl_optimize.result b/mysql-test/suite/rpl/r/rpl_optimize.result
index 1ae94a3ca36..79891169fbc 100644
--- a/mysql-test/suite/rpl/r/rpl_optimize.result
+++ b/mysql-test/suite/rpl/r/rpl_optimize.result
@@ -4,7 +4,6 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-CALL mtr.add_suppression('Statement may not be safe to log in statement format.');
create table t1 (a int not null auto_increment primary key, b int, key(b));
INSERT INTO t1 (a) VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
INSERT INTO t1 (a) SELECT null FROM t1;
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..76db52c05b1 100644
--- a/mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result
+++ b/mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result
@@ -4,12 +4,6 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-SET @old_binlog_format= @@global.binlog_format;
-SET BINLOG_FORMAT=MIXED;
-SET GLOBAL BINLOG_FORMAT=MIXED;
-SELECT @@GLOBAL.BINLOG_FORMAT, @@SESSION.BINLOG_FORMAT;
-@@GLOBAL.BINLOG_FORMAT @@SESSION.BINLOG_FORMAT
-MIXED MIXED
**** On Master ****
CREATE TABLE t1 (a INT, b LONG);
INSERT INTO t1 VALUES (1,1), (2,2);
@@ -18,7 +12,9 @@ SHOW BINLOG EVENTS;
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 # BEGIN
master-bin.000001 # Query 1 # use `test`; INSERT INTO t1 VALUES (1,1), (2,2)
+master-bin.000001 # Query 1 # COMMIT
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
@@ -31,7 +27,7 @@ Master_User root
Master_Port MASTER_PORT
Connect_Retry 1
Master_Log_File master-bin.000001
-Read_Master_Log_Pos 594
+Read_Master_Log_Pos #
Relay_Log_File #
Relay_Log_Pos #
Relay_Master_Log_File master-bin.000001
@@ -46,7 +42,7 @@ Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
-Exec_Master_Log_Pos 594
+Exec_Master_Log_Pos #
Relay_Log_Space #
Until_Condition None
Until_Log_File
@@ -63,14 +59,17 @@ Last_IO_Errno #
Last_IO_Error
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SHOW BINLOG EVENTS;
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 # BEGIN
slave-bin.000001 # Query 1 # use `test`; INSERT INTO t1 VALUES (1,1), (2,2)
+slave-bin.000001 # Query 1 # COMMIT
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
DROP TABLE IF EXISTS t1;
-SET @@global.binlog_format= @old_binlog_format;
diff --git a/mysql-test/suite/rpl/r/rpl_read_only.result b/mysql-test/suite/rpl/r/rpl_read_only.result
index 6b1404b4f68..e765ca6c872 100644
--- a/mysql-test/suite/rpl/r/rpl_read_only.result
+++ b/mysql-test/suite/rpl/r/rpl_read_only.result
@@ -4,6 +4,7 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
create user test;
create table t1(a int) engine=InnoDB;
create table t2(a int) engine=MyISAM;
diff --git a/mysql-test/suite/rpl/r/rpl_replicate_do.result b/mysql-test/suite/rpl/r/rpl_replicate_do.result
index 33088ee2ec8..2fbd283a9c8 100644
--- a/mysql-test/suite/rpl/r/rpl_replicate_do.result
+++ b/mysql-test/suite/rpl/r/rpl_replicate_do.result
@@ -65,6 +65,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
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..ba269344492 100644
--- a/mysql-test/suite/rpl/r/rpl_rotate_logs.result
+++ b/mysql-test/suite/rpl/r/rpl_rotate_logs.result
@@ -53,6 +53,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
select * from t1;
s
Could not break slave
@@ -132,6 +134,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
select * from t2;
m
34
@@ -151,9 +155,12 @@ Log_name File_size
master-bin.000003 #
master-bin.000004 #
master-bin.000005 #
+master-bin.000006 #
+master-bin.000007 #
+master-bin.000008 #
show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000005 # <Binlog_Do_DB> <Binlog_Ignore_DB>
+master-bin.000008 # <Binlog_Do_DB> <Binlog_Ignore_DB>
select * from t4;
a
testing temporary tables part 2
@@ -163,11 +170,11 @@ Master_Host 127.0.0.1
Master_User root
Master_Port MASTER_PORT
Connect_Retry 60
-Master_Log_File master-bin.000005
+Master_Log_File master-bin.000008
Read_Master_Log_Pos #
Relay_Log_File #
Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000005
+Relay_Master_Log_File master-bin.000008
Slave_IO_Running Yes
Slave_SQL_Running Yes
Replicate_Do_DB
@@ -196,6 +203,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
lock tables t3 read;
select count(*) from t3 where n >= 4;
count(*)
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
deleted file mode 100644
index 627becdbfb5..00000000000
--- a/mysql-test/suite/rpl/r/rpl_row_basic_11bugs-slave.opt
+++ /dev/null
@@ -1 +0,0 @@
---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..13ee20cb3a0 100644
--- a/mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result
+++ b/mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result
@@ -11,6 +11,7 @@ Database
information_schema
mtr
mysql
+performance_schema
test
test_ignore
USE test;
@@ -38,6 +39,7 @@ Database
information_schema
mtr
mysql
+performance_schema
test
USE test;
SHOW TABLES;
@@ -58,12 +60,12 @@ DELETE FROM t1 WHERE a = 0;
UPDATE t1 SET a=99 WHERE a = 0;
SHOW BINLOG EVENTS;
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 4 Format_desc 1 107 Server ver: SERVER_VERSION, Binlog ver: 4
+master-bin.000001 107 Query 1 193 use `test`; CREATE TABLE t1 (a INT)
+master-bin.000001 193 Query 1 261 BEGIN
+master-bin.000001 261 Table_map 1 302 table_id: # (test.t1)
+master-bin.000001 302 Write_rows 1 341 table_id: # flags: STMT_END_F
+master-bin.000001 341 Query 1 410 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..9c8f87af5af 100644
--- a/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result
+++ b/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result
@@ -476,6 +476,8 @@ ALTER TABLE t6 MODIFY c CHAR(128) CHARACTER SET utf8 NOT NULL;
CREATE TABLE t7 (i INT NOT NULL,
c CHAR(255) CHARACTER SET utf8 NOT NULL,
j INT NOT NULL) ENGINE = 'MYISAM' ;
+SET @saved_slave_type_conversions = @@slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
[expecting slave to replicate correctly]
INSERT INTO t1 VALUES (1, "", 1);
INSERT INTO t1 VALUES (2, repeat(_utf8'a', 16), 2);
@@ -484,11 +486,7 @@ Comparing tables master:test.t1 and slave:test.t1
INSERT INTO t2 VALUES (1, "", 1);
INSERT INTO t2 VALUES (2, repeat(_utf8'a', 16), 2);
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.
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
RESET MASTER;
STOP SLAVE;
RESET SLAVE;
@@ -501,7 +499,7 @@ Comparing tables master:test.t4 and slave:test.t4
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.
+Column 1 of table 'test.t5' cannot be converted from type 'char(255)' to type 'char(16)'
RESET MASTER;
STOP SLAVE;
RESET SLAVE;
@@ -510,7 +508,7 @@ START SLAVE;
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.
+Column 1 of table 'test.t6' cannot be converted from type 'char(255)' to type 'char(128)'
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..4cf4c9fb27d 100644
--- a/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result
@@ -354,6 +354,8 @@ X Q 5 7 R 49 X Y 2 S 1
X Q 5 7 R 49 X Z 2 S 2
X Q 5 9 R 81 X Y 2 S 1
X Q 5 9 R 81 X Z 2 S 2
+SET @saved_slave_type_conversions = @@SLAVE_TYPE_CONVERSIONS;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_LOSSY';
CREATE TABLE t4 (C1 CHAR(1) PRIMARY KEY, B1 BIT(1), B2 BIT(1) NOT NULL DEFAULT 0, C2 CHAR(1) NOT NULL DEFAULT 'A') ENGINE = 'INNODB' ;
INSERT INTO t4 SET C1 = 1;
SELECT C1,HEX(B1),HEX(B2) FROM t4 ORDER BY C1;
@@ -362,6 +364,7 @@ C1 HEX(B1) HEX(B2)
SELECT C1,HEX(B1),HEX(B2) FROM t4 ORDER BY C1;
C1 HEX(B1) HEX(B2)
1 NULL 0
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
CREATE TABLE t7 (C1 INT PRIMARY KEY, C2 INT) ENGINE = 'INNODB' ;
--- on slave: original values ---
INSERT INTO t7 VALUES (1,3), (2,6), (3,9);
@@ -476,6 +479,8 @@ ALTER TABLE t6 MODIFY c CHAR(128) CHARACTER SET utf8 NOT NULL;
CREATE TABLE t7 (i INT NOT NULL,
c CHAR(255) CHARACTER SET utf8 NOT NULL,
j INT NOT NULL) ENGINE = 'INNODB' ;
+SET @saved_slave_type_conversions = @@slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
[expecting slave to replicate correctly]
INSERT INTO t1 VALUES (1, "", 1);
INSERT INTO t1 VALUES (2, repeat(_utf8'a', 16), 2);
@@ -484,11 +489,7 @@ Comparing tables master:test.t1 and slave:test.t1
INSERT INTO t2 VALUES (1, "", 1);
INSERT INTO t2 VALUES (2, repeat(_utf8'a', 16), 2);
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.
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
RESET MASTER;
STOP SLAVE;
RESET SLAVE;
@@ -501,7 +502,7 @@ Comparing tables master:test.t4 and slave:test.t4
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.
+Column 1 of table 'test.t5' cannot be converted from type 'char(255)' to type 'char(16)'
RESET MASTER;
STOP SLAVE;
RESET SLAVE;
@@ -510,7 +511,7 @@ START SLAVE;
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.
+Column 1 of table 'test.t6' cannot be converted from type 'char(255)' to type 'char(128)'
RESET MASTER;
STOP SLAVE;
RESET SLAVE;
@@ -597,6 +598,8 @@ UPDATE t1 SET a = 0 WHERE a < 4;
UPDATE t1 SET a = 8 WHERE a < 5;
Comparing tables master:test.t1 and slave:test.t1
drop table t1;
+SET @saved_slave_type_conversions = @@SLAVE_TYPE_CONVERSIONS;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_LOSSY';
CREATE TABLE t1 (a bit) ENGINE='INNODB' ;
INSERT IGNORE INTO t1 VALUES (NULL);
INSERT INTO t1 ( a ) VALUES ( 0 );
@@ -637,5 +640,6 @@ DELETE FROM t1 WHERE a < 3 LIMIT 0;
UPDATE t1 SET a = 8 WHERE a = 5 LIMIT 2;
INSERT INTO t1 ( a ) VALUES ( 1 );
UPDATE t1 SET a = 9 WHERE a < 5 LIMIT 3;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
Comparing tables master:test.t1 and slave:test.t1
drop table t1;
diff --git a/mysql-test/suite/rpl/r/rpl_row_binlog_max_cache_size.result b/mysql-test/suite/rpl/r/rpl_row_binlog_max_cache_size.result
new file mode 100644
index 00000000000..693e582b57e
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_row_binlog_max_cache_size.result
@@ -0,0 +1,138 @@
+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;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+CREATE TABLE t1(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb;
+CREATE TABLE t2(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=MyIsam;
+CREATE TABLE t3(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb;
+########################################################################################
+# 1 - SINGLE STATEMENT
+########################################################################################
+*** Single statement on transactional table ***
+Got one of the listed errors
+*** Single statement on non-transactional table ***
+Got one of the listed errors
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
+START SLAVE SQL_THREAD;
+*** Single statement on both transactional and non-transactional tables. ***
+Got one of the listed errors
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 2;
+START SLAVE SQL_THREAD;
+source include/diff_master_slave.inc;
+########################################################################################
+# 2 - BEGIN - IMPLICIT COMMIT by DDL
+########################################################################################
+TRUNCATE TABLE t1;
+TRUNCATE TABLE t2;
+TRUNCATE TABLE t3;
+BEGIN;
+Got one of the listed errors
+Got one of the listed errors
+Got one of the listed errors
+BEGIN;
+Got one of the listed errors
+Got one of the listed errors
+Got one of the listed errors
+BEGIN;
+Got one of the listed errors
+Got one of the listed errors
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
+START SLAVE SQL_THREAD;
+source include/diff_master_slave.inc;
+########################################################################################
+# 3 - BEGIN - COMMIT
+########################################################################################
+TRUNCATE TABLE t1;
+TRUNCATE TABLE t2;
+TRUNCATE TABLE t3;
+BEGIN;
+Got one of the listed errors
+Got one of the listed errors
+Got one of the listed errors
+COMMIT;
+source include/diff_master_slave.inc;
+########################################################################################
+# 4 - BEGIN - ROLLBACK
+########################################################################################
+TRUNCATE TABLE t1;
+TRUNCATE TABLE t2;
+TRUNCATE TABLE t3;
+BEGIN;
+Got one of the listed errors
+Got one of the listed errors
+Got one of the listed errors
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+source include/diff_master_slave.inc;
+########################################################################################
+# 5 - PROCEDURE
+########################################################################################
+TRUNCATE TABLE t1;
+TRUNCATE TABLE t2;
+TRUNCATE TABLE t3;
+CREATE PROCEDURE p1(pd VARCHAR(30000))
+BEGIN
+INSERT INTO t1 (a, data) VALUES (1, pd);
+INSERT INTO t1 (a, data) VALUES (2, pd);
+INSERT INTO t1 (a, data) VALUES (3, pd);
+INSERT INTO t1 (a, data) VALUES (4, pd);
+INSERT INTO t1 (a, data) VALUES (5, 's');
+END//
+TRUNCATE TABLE t1;
+TRUNCATE TABLE t1;
+BEGIN;
+Got one of the listed errors
+COMMIT;
+TRUNCATE TABLE t1;
+BEGIN;
+Got one of the listed errors
+ROLLBACK;
+source include/diff_master_slave.inc;
+########################################################################################
+# 6 - XID
+########################################################################################
+TRUNCATE TABLE t1;
+TRUNCATE TABLE t2;
+TRUNCATE TABLE t3;
+BEGIN;
+Got one of the listed errors
+Got one of the listed errors
+Got one of the listed errors
+ROLLBACK TO sv;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+COMMIT;
+source include/diff_master_slave.inc;
+########################################################################################
+# 7 - NON-TRANS TABLE
+########################################################################################
+TRUNCATE TABLE t1;
+TRUNCATE TABLE t2;
+TRUNCATE TABLE t3;
+BEGIN;
+Got one of the listed errors
+Got one of the listed errors
+Got one of the listed errors
+COMMIT;
+BEGIN;
+Got one of the listed errors
+COMMIT;
+source include/diff_master_slave.inc;
+########################################################################################
+# CLEAN
+########################################################################################
+DROP TABLE t1;
+DROP TABLE t2;
+DROP TABLE t3;
+DROP TABLE IF EXISTS t4;
+Warnings:
+Note 1051 Unknown table 't4'
+DROP TABLE IF EXISTS t5;
+DROP TABLE IF EXISTS t6;
+Warnings:
+Note 1051 Unknown table 't6'
+DROP PROCEDURE p1;
diff --git a/mysql-test/suite/rpl/r/rpl_row_colSize.result b/mysql-test/suite/rpl/r/rpl_row_colSize.result
index 6d002a722f1..1f2b5800228 100644
--- a/mysql-test/suite/rpl/r/rpl_row_colSize.result
+++ b/mysql-test/suite/rpl/r/rpl_row_colSize.result
@@ -37,8 +37,8 @@ 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.
+Last_Errno 1677
+Last_Error Column 0 of table 'test.t1' cannot be converted from type 'decimal(20,10)' to type 'decimal(5,2)'
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
@@ -55,8 +55,10 @@ 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_Errno 1677
+Last_SQL_Error Column 0 of table 'test.t1' cannot be converted from type 'decimal(20,10)' to type 'decimal(5,2)'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -91,8 +93,8 @@ 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.
+Last_Errno 1677
+Last_Error Column 0 of table 'test.t1' cannot be converted from type 'decimal(27,18)' to type 'decimal(27,9)'
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
@@ -109,8 +111,10 @@ 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_Errno 1677
+Last_SQL_Error Column 0 of table 'test.t1' cannot be converted from type 'decimal(27,18)' to type 'decimal(27,9)'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -145,8 +149,8 @@ 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.
+Last_Errno 1677
+Last_Error Column 0 of table 'test.t1' cannot be converted from type 'decimal(20,10)' to type 'decimal(5,2)'
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
@@ -163,8 +167,10 @@ 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_Errno 1677
+Last_SQL_Error Column 0 of table 'test.t1' cannot be converted from type 'decimal(20,10)' to type 'decimal(5,2)'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -200,8 +206,8 @@ 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
+Last_Errno 1677
+Last_Error Column 0 of table 'test.t1' cannot be converted from type 'double' to type 'float'
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
@@ -218,8 +224,10 @@ 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_Errno 1677
+Last_SQL_Error Column 0 of table 'test.t1' cannot be converted from type 'double' to type 'float'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -255,8 +263,8 @@ 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.
+Last_Errno 1677
+Last_Error Column 0 of table 'test.t1' cannot be converted from type 'bit(64)' to type 'bit(5)'
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
@@ -273,8 +281,10 @@ 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_Errno 1677
+Last_SQL_Error Column 0 of table 'test.t1' cannot be converted from type 'bit(64)' to type 'bit(5)'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -309,8 +319,8 @@ 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.
+Last_Errno 1677
+Last_Error Column 0 of table 'test.t1' cannot be converted from type 'bit(12)' to type 'bit(11)'
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
@@ -327,8 +337,10 @@ 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_Errno 1677
+Last_SQL_Error Column 0 of table 'test.t1' cannot be converted from type 'bit(12)' to type 'bit(11)'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -364,8 +376,8 @@ 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.
+Last_Errno 1677
+Last_Error Column 0 of table 'test.t1' cannot be converted from type 'set' to type 'set('4')'
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
@@ -382,8 +394,10 @@ 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_Errno 1677
+Last_SQL_Error Column 0 of table 'test.t1' cannot be converted from type 'set' to type 'set('4')'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -419,8 +433,8 @@ 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.
+Last_Errno 1677
+Last_Error Column 0 of table 'test.t1' cannot be converted from type 'char(20)' to type 'char(10)'
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
@@ -437,8 +451,10 @@ 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_Errno 1677
+Last_SQL_Error Column 0 of table 'test.t1' cannot be converted from type 'char(20)' to type 'char(10)'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -505,8 +521,8 @@ 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.
+Last_Errno 1677
+Last_Error Column 0 of table 'test.t1' cannot be converted from type 'enum' to type 'enum('44','54')'
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
@@ -523,8 +539,10 @@ 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_Errno 1677
+Last_SQL_Error Column 0 of table 'test.t1' cannot be converted from type 'enum' to type 'enum('44','54')'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -560,8 +578,8 @@ 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.
+Last_Errno 1677
+Last_Error Column 0 of table 'test.t1' cannot be converted from type 'varchar(2000)' to type 'varchar(100)'
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
@@ -578,8 +596,10 @@ 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_Errno 1677
+Last_SQL_Error Column 0 of table 'test.t1' cannot be converted from type 'varchar(2000)' to type 'varchar(100)'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -614,8 +634,8 @@ 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.
+Last_Errno 1677
+Last_Error Column 0 of table 'test.t1' cannot be converted from type 'varchar(200)' to type 'varchar(10)'
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
@@ -632,8 +652,10 @@ 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_Errno 1677
+Last_SQL_Error Column 0 of table 'test.t1' cannot be converted from type 'varchar(200)' to type 'varchar(10)'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -668,8 +690,8 @@ 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.
+Last_Errno 1677
+Last_Error Column 0 of table 'test.t1' cannot be converted from type 'varchar(2000)' to type 'varchar(1000)'
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
@@ -686,8 +708,10 @@ 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_Errno 1677
+Last_SQL_Error Column 0 of table 'test.t1' cannot be converted from type 'varchar(2000)' to type 'varchar(1000)'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -723,8 +747,8 @@ 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.
+Last_Errno 1677
+Last_Error Column 0 of table 'test.t1' cannot be converted from type 'tinyblob' to type 'tinyblob'
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
@@ -741,8 +765,10 @@ 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_Errno 1677
+Last_SQL_Error Column 0 of table 'test.t1' cannot be converted from type 'tinyblob' to type 'tinyblob'
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SELECT COUNT(*) FROM t1;
COUNT(*)
0
diff --git a/mysql-test/suite/rpl/r/rpl_row_conflicts.result b/mysql-test/suite/rpl/r/rpl_row_conflicts.result
index 0f15bfc7156..6f98c25c335 100644
--- a/mysql-test/suite/rpl/r/rpl_row_conflicts.result
+++ b/mysql-test/suite/rpl/r/rpl_row_conflicts.result
@@ -24,7 +24,7 @@ a
1
[on slave]
---- Wait until slave stops with an error ----
-Last_SQL_Error = Could not execute Write_rows event on table test.t1; Duplicate entry '1' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log master-bin.000001, end_log_pos 346 (expected "duplicate key" error)
+Last_SQL_Error = Could not execute Write_rows event on table test.t1; Duplicate entry '1' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log master-bin.000001, end_log_pos 347 (expected "duplicate key" error)
SELECT * FROM t1;
a
1
@@ -50,7 +50,7 @@ SELECT * FROM t1;
a
[on slave]
---- Wait until slave stops with an error ----
-Last_SQL_Error = Could not execute Delete_rows event on table test.t1; Can't find record in 't1', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log master-bin.000001, end_log_pos 982 (expected "can't find record" error)
+Last_SQL_Error = Could not execute Delete_rows event on table test.t1; Can't find record in 't1', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log master-bin.000001, end_log_pos 983 (expected "can't find record" error)
SELECT * FROM t1;
a
---- Resolve the conflict on the slave and restart SQL thread ----
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 4c2b9ebeaee..f77cad91ef2 100644
--- a/mysql-test/suite/rpl/r/rpl_row_create_table.result
+++ b/mysql-test/suite/rpl/r/rpl_row_create_table.result
@@ -13,30 +13,30 @@ 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;
+SHOW BINLOG EVENTS FROM 107;
Log_name #
-Pos 106
+Pos 107
Event_type Query
Server_id #
-End_log_pos 199
+End_log_pos 200
Info use `test`; CREATE TABLE t1 (a INT, b INT)
Log_name #
-Pos 199
+Pos 200
Event_type Query
Server_id #
-End_log_pos 305
+End_log_pos 306
Info use `test`; CREATE TABLE t2 (a INT, b INT) ENGINE=Merge
Log_name #
-Pos 305
+Pos 306
Event_type Query
Server_id #
-End_log_pos 411
+End_log_pos 412
Info use `test`; CREATE TABLE t3 (a INT, b INT) CHARSET=utf8
Log_name #
-Pos 411
+Pos 412
Event_type Query
Server_id #
-End_log_pos 530
+End_log_pos 531
Info use `test`; CREATE TABLE t4 (a INT, b INT) ENGINE=Merge CHARSET=utf8
**** On Master ****
SHOW CREATE TABLE t1;
@@ -137,7 +137,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 107;
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 +147,13 @@ a b
1 2
2 4
3 6
-SHOW BINLOG EVENTS FROM 106;
+SHOW BINLOG EVENTS FROM 107;
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
+# 107 Query # 207 use `test`; CREATE TABLE t7 (a INT, b INT UNIQUE)
+# 207 Query # 275 BEGIN
+# 275 Table_map # 317 table_id: # (test.t7)
+# 317 Write_rows # 373 table_id: # flags: STMT_END_F
+# 373 Query # 442 COMMIT
SELECT * FROM t7 ORDER BY a,b;
a b
1 2
@@ -171,12 +171,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 107;
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
+# 107 Query # 175 BEGIN
+# 175 Table_map # 217 table_id: # (test.t7)
+# 217 Write_rows # 273 table_id: # flags: STMT_END_F
+# 273 Query # 342 COMMIT
SELECT * FROM t7 ORDER BY a,b;
a b
1 2
@@ -216,10 +216,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 107;
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` (
+# 107 Query # 193 use `test`; CREATE TABLE t8 LIKE t4
+# 193 Query # 332 use `test`; CREATE TABLE `t9` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
)
@@ -296,38 +296,38 @@ a
1
2
3
-SHOW BINLOG EVENTS FROM 106;
+SHOW BINLOG EVENTS FROM 107;
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` (
+# 107 Query # 193 use `test`; CREATE TABLE t1 (a INT)
+# 193 Query # 261 BEGIN
+# 261 Table_map # 302 table_id: # (test.t1)
+# 302 Write_rows # 346 table_id: # flags: STMT_END_F
+# 346 Query # 415 COMMIT
+# 415 Query # 483 BEGIN
+# 483 Query # 608 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` (
+# 608 Table_map # 649 table_id: # (test.t2)
+# 649 Write_rows # 693 table_id: # flags: STMT_END_F
+# 693 Xid # 720 COMMIT /* XID */
+# 720 Query # 788 BEGIN
+# 788 Query # 913 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` (
+# 913 Table_map # 954 table_id: # (test.t3)
+# 954 Write_rows # 998 table_id: # flags: STMT_END_F
+# 998 Xid # 1025 COMMIT /* XID */
+# 1025 Query # 1093 BEGIN
+# 1093 Query # 1218 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
+# 1218 Table_map # 1259 table_id: # (test.t4)
+# 1259 Write_rows # 1303 table_id: # flags: STMT_END_F
+# 1303 Xid # 1330 COMMIT /* XID */
+# 1330 Query # 1398 BEGIN
+# 1398 Table_map # 1439 table_id: # (test.t1)
+# 1439 Write_rows # 1483 table_id: # flags: STMT_END_F
+# 1483 Query # 1552 COMMIT
SHOW TABLES;
Tables_in_test
t1
@@ -390,20 +390,20 @@ a
4
6
9
-SHOW BINLOG EVENTS FROM 106;
+SHOW BINLOG EVENTS FROM 107;
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 */
+# 107 Query # 193 use `test`; CREATE TABLE t1 (a INT)
+# 193 Query # 261 BEGIN
+# 261 Table_map # 302 table_id: # (test.t1)
+# 302 Write_rows # 346 table_id: # flags: STMT_END_F
+# 346 Query # 415 COMMIT
+# 415 Query # 515 use `test`; CREATE TABLE t2 (a INT) ENGINE=INNODB
+# 515 Query # 583 BEGIN
+# 583 Table_map # 624 table_id: # (test.t2)
+# 624 Write_rows # 668 table_id: # flags: STMT_END_F
+# 668 Table_map # 709 table_id: # (test.t2)
+# 709 Write_rows # 748 table_id: # flags: STMT_END_F
+# 748 Xid # 775 COMMIT /* XID */
SELECT * FROM t2 ORDER BY a;
a
1
@@ -429,14 +429,8 @@ 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 107;
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
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..f1a350b3df0 100644
--- a/mysql-test/suite/rpl/r/rpl_row_drop.result
+++ b/mysql-test/suite/rpl/r/rpl_row_drop.result
@@ -43,10 +43,10 @@ t2
DROP TABLE t1,t2;
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 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 4 Format_desc 1 107 Server ver: VERSION, Binlog ver: 4
+master-bin.000001 107 Query 1 193 use `test`; CREATE TABLE t1 (a int)
+master-bin.000001 193 Query 1 279 use `test`; CREATE TABLE t2 (a int)
+master-bin.000001 279 Query 1 383 use `test`; DROP TABLE `t1` /* generated by server */
SHOW TABLES;
Tables_in_test
t2
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 129bad0fbcc..e999f9c28f0 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,16 @@ 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 897 ;
+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 897 ;
+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 1 # use `test`; flush tables
+master-bin.000001 # Query # # use `test`; rename table t1 to t5, t2 to t1
+master-bin.000001 # Query # # use `test`; flush tables
select * from t3;
a
stop slave;
diff --git a/mysql-test/suite/rpl/r/rpl_row_idempotency.result b/mysql-test/suite/rpl/r/rpl_row_idempotency.result
new file mode 100644
index 00000000000..fcc68cd4712
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_row_idempotency.result
@@ -0,0 +1,163 @@
+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;
+call mtr.add_suppression("Slave: Can't find record in 't.' Error_code: 1032");
+call mtr.add_suppression("Slave: Cannot delete or update a parent row: a foreign key constraint fails .* Error_code: 1451");
+call mtr.add_suppression("Slave: Cannot add or update a child row: a foreign key constraint fails .* Error_code: 1452");
+set @old_slave_exec_mode= @@global.slave_exec_mode;
+set @@global.slave_exec_mode= IDEMPOTENT;
+create table ti1 (b int primary key) engine = innodb;
+create table ti2 (a int primary key, b int, foreign key (b) references ti1(b))
+engine = innodb;
+set foreign_key_checks=1 /* ensure the check */;
+insert into ti1 values (1),(2),(3);
+insert into ti2 set a=2, b=2;
+select * from ti1 order by b /* must be (1),(2),(3) */;
+b
+1
+2
+3
+insert into ti2 set a=1, b=1;
+select * from ti2 order by b /* must be (1,1) (2,2) */;
+a b
+1 1
+2 2
+set @save_binlog_format= @@session.binlog_format;
+set @@session.binlog_format= row;
+delete from ti1 where b=1;
+select * from ti1 order by b /* must be (2),(3) */;
+b
+2
+3
+select * from ti1 order by b /* must stays as were on master (1),(2),(3) */;
+b
+1
+2
+3
+delete from ti1 where b=3;
+insert into ti2 set a=3, b=3;
+select * from ti2 order by b /* must be (1,1),(2,2) - not inserted */;
+a b
+1 1
+2 2
+set global slave_exec_mode='IDEMPOTENT';
+set global slave_exec_mode='STRICT';
+set global slave_exec_mode='IDEMPOTENT,STRICT';
+ERROR 42000: Variable 'slave_exec_mode' can't be set to the value of 'IDEMPOTENT,STRICT'
+select @@global.slave_exec_mode /* must be STRICT */;
+@@global.slave_exec_mode
+STRICT
+*** foreign keys errors as above now forces to stop
+set foreign_key_checks=0;
+drop table ti2, ti1;
+create table ti1 (b int primary key) engine = innodb;
+create table ti2 (a int primary key, b int, foreign key (b) references ti1(b))
+engine = innodb;
+set foreign_key_checks=1 /* ensure the check */;
+insert into ti1 values (1),(2),(3);
+insert into ti2 set a=2, b=2;
+select * from ti1 order by b /* must be (1),(2),(3) */;
+b
+1
+2
+3
+*** conspire future problem
+insert into ti2 set a=1, b=1;
+select * from ti2 order by b /* must be (1,1) (2,2) */;
+a b
+1 1
+2 2
+delete from ti1 where b=1 /* offending delete event */;
+select * from ti1 order by b /* must be (2),(3) */;
+b
+2
+3
+*** slave must stop (Trying to delete a referenced foreing key)
+Last_SQL_Error
+1451
+select * from ti1 order by b /* must be (1),(2),(3) - not deleted */;
+b
+1
+2
+3
+set foreign_key_checks= 0;
+delete from ti2 where b=1;
+set foreign_key_checks= 1;
+set global slave_exec_mode='IDEMPOTENT';
+start slave sql_thread;
+set global slave_exec_mode='STRICT';
+*** conspire the following insert failure
+*** conspire future problem
+delete from ti1 where b=3;
+insert into ti2 set a=3, b=3 /* offending write event */;
+*** slave must stop (Trying to insert an invalid foreign key)
+Last_SQL_Error
+1452
+select * from ti2 order by b /* must be (2,2) */;
+a b
+2 2
+set foreign_key_checks= 0;
+insert into ti1 set b=3;
+set foreign_key_checks= 1;
+set global slave_exec_mode='IDEMPOTENT';
+start slave sql_thread;
+set global slave_exec_mode='STRICT';
+select * from ti2 order by b /* must be (2,2),(3,3) */;
+a b
+2 2
+3 3
+*** other errors
+*** conspiring query
+insert into ti1 set b=1;
+insert into ti1 set b=1 /* offending write event */;
+*** slave must stop (Trying to insert a dupliacte key)
+Last_SQL_Error
+1062
+set foreign_key_checks= 0;
+delete from ti1 where b=1;
+set foreign_key_checks= 1;
+set global slave_exec_mode='IDEMPOTENT';
+start slave sql_thread;
+set global slave_exec_mode='STRICT';
+CREATE TABLE t1 (a INT PRIMARY KEY);
+CREATE TABLE t2 (a INT);
+INSERT INTO t1 VALUES (-1),(-2),(-3);
+INSERT INTO t2 VALUES (-1),(-2),(-3);
+DELETE FROM t1 WHERE a = -2;
+DELETE FROM t2 WHERE a = -2;
+DELETE FROM t1 WHERE a = -2;
+*** slave must stop (Key was not found)
+Last_SQL_Error
+1032
+set global slave_exec_mode='IDEMPOTENT';
+start slave sql_thread;
+set global slave_exec_mode='STRICT';
+DELETE FROM t2 WHERE a = -2;
+*** slave must stop (Key was not found)
+Last_SQL_Error
+1032
+set global slave_exec_mode='IDEMPOTENT';
+start slave sql_thread;
+set global slave_exec_mode='STRICT';
+UPDATE t1 SET a = 1 WHERE a = -1;
+UPDATE t2 SET a = 1 WHERE a = -1;
+UPDATE t1 SET a = 1 WHERE a = -1;
+*** slave must stop (Key was not found)
+Last_SQL_Error
+1032
+set global slave_exec_mode='IDEMPOTENT';
+start slave sql_thread;
+set global slave_exec_mode='STRICT';
+UPDATE t2 SET a = 1 WHERE a = -1;
+*** slave must stop (Key was not found)
+Last_SQL_Error
+1032
+set global slave_exec_mode='IDEMPOTENT';
+start slave sql_thread;
+SET @@global.slave_exec_mode= @old_slave_exec_mode;
+drop table t1,t2,ti2,ti1;
+set @@global.slave_exec_mode= @old_slave_exec_mode;
+*** end of tests
diff --git a/mysql-test/suite/rpl/r/rpl_row_implicit_commit_binlog.result b/mysql-test/suite/rpl/r/rpl_row_implicit_commit_binlog.result
new file mode 100644
index 00000000000..077aba8ddb0
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_row_implicit_commit_binlog.result
@@ -0,0 +1,574 @@
+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;
+#########################################################################
+# CONFIGURATION
+#########################################################################
+CREATE TABLE tt_1 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = Innodb;
+CREATE TABLE tt_2 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = Innodb;
+CREATE TABLE nt_1 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = MyIsam;
+INSERT INTO tt_1(ddl_case) VALUES(0);
+INSERT INTO tt_2(ddl_case) VALUES(0);
+#########################################################################
+# CHECK IMPLICT COMMIT
+#########################################################################
+SET AUTOCOMMIT= 0;
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (41);
+LOAD INDEX INTO CACHE nt_1 IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.nt_1 preload_keys status OK
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (40);
+LOAD INDEX INTO CACHE tt_1, tt_2 IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.tt_1 preload_keys note The storage engine for the table doesn't support preload_keys
+test.tt_2 preload_keys note The storage engine for the table doesn't support preload_keys
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (39);
+ANALYZE TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 analyze status Table is already up to date
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ANALYZE TABLE nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (38);
+CHECK TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 check status OK
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (37);
+OPTIMIZE TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 optimize status Table is already up to date
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; OPTIMIZE TABLE nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (36);
+REPAIR TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 repair status OK
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; REPAIR TABLE nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (35);
+LOCK TABLES tt_1 WRITE;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (34);
+UNLOCK TABLES;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (33);
+CREATE USER 'user'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE USER 'user'@'localhost'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (32);
+GRANT ALL ON *.* TO 'user'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; GRANT ALL ON *.* TO 'user'@'localhost'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (31);
+SET PASSWORD FOR 'user'@'localhost' = PASSWORD('newpass');
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; SET PASSWORD FOR 'user'@'localhost'='*D8DECEC305209EEFEC43008E1D420E1AA06B19E0'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (mysql.user)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (30);
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'localhost'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (29);
+RENAME USER 'user'@'localhost' TO 'user_new'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; RENAME USER 'user'@'localhost' TO 'user_new'@'localhost'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (28);
+DROP USER 'user_new'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP USER 'user_new'@'localhost'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (27);
+CREATE EVENT evt ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO SELECT * FROM tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` EVENT evt ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (26);
+ALTER EVENT evt COMMENT 'evt';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ALTER EVENT evt COMMENT 'evt'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (25);
+DROP EVENT evt;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP EVENT evt
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (24);
+CREATE TRIGGER tr AFTER INSERT ON tt_1 FOR EACH ROW UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` TRIGGER tr AFTER INSERT ON tt_1 FOR EACH ROW UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (23);
+DROP TRIGGER tr;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Table_map # # table_id: # (test.tt_2)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP TRIGGER tr
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (22);
+CREATE FUNCTION fc () RETURNS VARCHAR(64) RETURN "fc";
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `fc`() RETURNS varchar(64) CHARSET latin1
+RETURN "fc"
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (21);
+ALTER FUNCTION fc COMMENT 'fc';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ALTER FUNCTION fc COMMENT 'fc'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (20);
+DROP FUNCTION fc;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP FUNCTION fc
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (19);
+CREATE PROCEDURE pc () UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `pc`()
+UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (18);
+ALTER PROCEDURE pc COMMENT 'pc';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ALTER PROCEDURE pc COMMENT 'pc'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (17);
+DROP PROCEDURE pc;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP PROCEDURE pc
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (16);
+CREATE VIEW v AS SELECT * FROM tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (15);
+ALTER VIEW v AS SELECT * FROM tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ALTER ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (14);
+DROP VIEW v;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP VIEW v
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (13);
+CREATE INDEX ix ON tt_1(ddl_case);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE INDEX ix ON tt_1(ddl_case)
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (12);
+DROP INDEX ix ON tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP INDEX ix ON tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (11);
+CREATE TEMPORARY TABLE tt_xx (a int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (10);
+ALTER TABLE tt_xx ADD COLUMN (b int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (9);
+ALTER TABLE tt_xx RENAME new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (8);
+DROP TEMPORARY TABLE IF EXISTS new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (7);
+CREATE TABLE tt_xx (a int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE TABLE tt_xx (a int)
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (6);
+ALTER TABLE tt_xx ADD COLUMN (b int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ALTER TABLE tt_xx ADD COLUMN (b int)
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (5);
+RENAME TABLE tt_xx TO new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; RENAME TABLE tt_xx TO new_tt_xx
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (4);
+TRUNCATE TABLE new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE new_tt_xx
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (3);
+DROP TABLE IF EXISTS tt_xx, new_tt_xx;
+Warnings:
+Note 1051 Unknown table 'tt_xx'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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 IF EXISTS tt_xx, new_tt_xx
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (2);
+CREATE DATABASE db;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # CREATE DATABASE db
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (1);
+DROP DATABASE IF EXISTS db;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # DROP DATABASE IF EXISTS db
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# CHECK CONSISTENCY
+###################################################################################
+Comparing tables master:test.tt_1 and slave:test.tt_1
+###################################################################################
+# CLEAN
+###################################################################################
+DROP TABLE tt_1;
+DROP TABLE tt_2;
+DROP TABLE nt_1;
diff --git a/mysql-test/suite/rpl/r/rpl_row_insert_delayed.result b/mysql-test/suite/rpl/r/rpl_row_insert_delayed.result
index 1551d83266d..1f3cd734451 100644
--- a/mysql-test/suite/rpl/r/rpl_row_insert_delayed.result
+++ b/mysql-test/suite/rpl/r/rpl_row_insert_delayed.result
@@ -4,8 +4,6 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-set @old_global_binlog_format = @@global.binlog_format;
-set @@global.binlog_format = row;
CREATE SCHEMA IF NOT EXISTS mysqlslap;
USE mysqlslap;
select @@global.binlog_format;
@@ -22,6 +20,7 @@ COUNT(*)
5000
truncate table t1;
insert delayed into t1 values(10, "my name");
+flush table t1;
insert delayed into t1 values(10, "is Bond"), (20, "James Bond");
flush table t1;
select * from t1;
@@ -59,4 +58,3 @@ a
1
drop table t1;
End of 5.0 tests
-set @@global.binlog_format = @old_global_binlog_format;
diff --git a/mysql-test/suite/rpl/r/rpl_row_loaddata_concurrent.result b/mysql-test/suite/rpl/r/rpl_row_loaddata_concurrent.result
new file mode 100644
index 00000000000..5a3748b50b0
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_row_loaddata_concurrent.result
@@ -0,0 +1,131 @@
+CREATE TABLE t1 (c1 char(50));
+LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE t1;
+LOAD DATA CONCURRENT INFILE '../../std_data/words.dat' INTO TABLE t1;
+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 char(50))
+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 # 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;
+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;
+reset master;
+select last_insert_id();
+last_insert_id()
+0
+create table t1(a int not null auto_increment, b int, primary key(a) );
+load data CONCURRENT infile '../../std_data/rpl_loaddata.dat' into table t1;
+select last_insert_id();
+last_insert_id()
+1
+create temporary table t2 (day date,id int(9),category enum('a','b','c'),name varchar(60));
+load data CONCURRENT infile '../../std_data/rpl_loaddata2.dat' into table t2 fields terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by '\n##\n' starting by '>' ignore 1 lines;
+create table t3 (day date,id int(9),category enum('a','b','c'),name varchar(60));
+insert into t3 select * from t2;
+select * from t1;
+a b
+1 10
+2 15
+select * from t3;
+day id category name
+2003-02-22 2461 b a a a @ %  ' " a
+2003-03-22 2161 c asdf
+2003-03-22 2416 a bbbbb
+drop table t1;
+drop table t2;
+drop table t3;
+create table t1(a int, b int, unique(b));
+insert into t1 values(1,10);
+load data CONCURRENT infile '../../std_data/rpl_loaddata.dat' into table t1;
+set global sql_slave_skip_counter=1;
+start slave;
+Last_SQL_Errno=0
+Last_SQL_Error
+
+set sql_log_bin=0;
+delete from t1;
+set sql_log_bin=1;
+load data CONCURRENT infile '../../std_data/rpl_loaddata.dat' into table t1;
+stop slave;
+change master to master_user='test';
+change master to master_user='root';
+Last_SQL_Errno=0
+Last_SQL_Error
+
+set global sql_slave_skip_counter=1;
+start slave;
+set sql_log_bin=0;
+delete from t1;
+set sql_log_bin=1;
+load data CONCURRENT infile '../../std_data/rpl_loaddata.dat' into table t1;
+stop slave;
+reset slave;
+Last_SQL_Errno=0
+Last_SQL_Error
+
+reset master;
+create table t2 (day date,id int(9),category enum('a','b','c'),name varchar(60),
+unique(day)) engine=MyISAM;
+load data CONCURRENT infile '../../std_data/rpl_loaddata2.dat' into table t2 fields
+terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by
+'\n##\n' starting by '>' ignore 1 lines;
+ERROR 23000: Duplicate entry '2003-03-22' for key 'day'
+select * from t2;
+day id category name
+2003-02-22 2461 b a a a @ %  ' " a
+2003-03-22 2161 c asdf
+start slave;
+select * from t2;
+day id category name
+2003-02-22 2461 b a a a @ %  ' " a
+2003-03-22 2161 c asdf
+alter table t2 drop key day;
+delete from t2;
+load data CONCURRENT infile '../../std_data/rpl_loaddata2.dat' into table t2 fields
+terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by
+'\n##\n' starting by '>' ignore 1 lines;
+ERROR 23000: Duplicate entry '2003-03-22' for key 'day'
+drop table t1, t2;
+CREATE TABLE t1 (word CHAR(20) NOT NULL PRIMARY KEY) ENGINE=INNODB;
+LOAD DATA CONCURRENT INFILE "../../std_data/words.dat" INTO TABLE t1;
+ERROR 23000: Duplicate entry 'Aarhus' for key 'PRIMARY'
+DROP TABLE IF EXISTS t1;
+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 database if exists b48297_db1;
+drop database if exists b42897_db2;
+create database b48297_db1;
+create database b42897_db2;
+use b48297_db1;
+CREATE TABLE t1 (c1 VARCHAR(256)) engine=MyISAM;;
+use b42897_db2;
+### assertion: works with cross-referenced database
+LOAD DATA CONCURRENT LOCAL INFILE 'MYSQLTEST_VARDIR/std_data/loaddata5.dat' INTO TABLE b48297_db1.t1;
+use b48297_db1;
+### assertion: works with fully qualified name on current database
+LOAD DATA CONCURRENT LOCAL INFILE 'MYSQLTEST_VARDIR/std_data/loaddata5.dat' INTO TABLE b48297_db1.t1;
+### assertion: works without fully qualified name on current database
+LOAD DATA CONCURRENT LOCAL INFILE 'MYSQLTEST_VARDIR/std_data/loaddata5.dat' INTO TABLE t1;
+### create connection without default database
+### connect (conn2,localhost,root,,*NO-ONE*);
+### assertion: works without stating the default database
+LOAD DATA CONCURRENT LOCAL INFILE 'MYSQLTEST_VARDIR/std_data/loaddata5.dat' INTO TABLE b48297_db1.t1;
+### disconnect and switch back to master connection
+use b48297_db1;
+Comparing tables master:b48297_db1.t1 and slave:b48297_db1.t1
+DROP DATABASE b48297_db1;
+DROP DATABASE b42897_db2;
diff --git a/mysql-test/suite/rpl/r/rpl_row_log.result b/mysql-test/suite/rpl/r/rpl_row_log.result
index 9593b009d1f..488ebb92a02 100644
--- a/mysql-test/suite/rpl/r/rpl_row_log.result
+++ b/mysql-test/suite/rpl/r/rpl_row_log.result
@@ -30,16 +30,19 @@ 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;
+show binlog events from 107 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;
+show binlog events from 107 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;
+show binlog events from 107 limit 1,4;
Log_name Pos Event_type Server_id End_log_pos Info
+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
flush logs;
create table t3 (a int)ENGINE=MyISAM;
select * from t1 order by 1 asc;
@@ -251,7 +254,7 @@ Master_User root
Master_Port MASTER_PORT
Connect_Retry 1
Master_Log_File master-bin.000002
-Read_Master_Log_Pos 516
+Read_Master_Log_Pos #
Relay_Log_File #
Relay_Log_Pos #
Relay_Master_Log_File master-bin.000002
@@ -266,7 +269,7 @@ Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
-Exec_Master_Log_Pos 516
+Exec_Master_Log_Pos #
Relay_Log_Space #
Until_Condition None
Until_Log_File
@@ -283,6 +286,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
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..7a1615c0c7f 100644
--- a/mysql-test/suite/rpl/r/rpl_row_log_innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_row_log_innodb.result
@@ -30,16 +30,19 @@ 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;
+show binlog events from 107 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;
+show binlog events from 107 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;
+show binlog events from 107 limit 1,4;
Log_name Pos Event_type Server_id End_log_pos Info
+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 */
flush logs;
create table t3 (a int)ENGINE=InnoDB;
select * from t1 order by 1 asc;
@@ -251,7 +254,7 @@ Master_User root
Master_Port MASTER_PORT
Connect_Retry 1
Master_Log_File master-bin.000002
-Read_Master_Log_Pos 474
+Read_Master_Log_Pos #
Relay_Log_File #
Relay_Log_Pos #
Relay_Master_Log_File master-bin.000002
@@ -266,7 +269,7 @@ Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
-Exec_Master_Log_Pos 474
+Exec_Master_Log_Pos #
Relay_Log_Space #
Until_Condition None
Until_Log_File
@@ -283,6 +286,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
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..a21bec6ae55 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
@@ -17,6 +17,8 @@ reset slave;
set @my_max_binlog_size= @@global.max_binlog_size;
set global max_binlog_size=8192;
set global max_relay_log_size=8192-1;
+Warnings:
+Warning 1292 Truncated incorrect max_relay_log_size value: '8191'
select @@global.max_relay_log_size;
@@global.max_relay_log_size
4096
@@ -60,6 +62,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
#
# Test 2
#
@@ -108,6 +112,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
#
# Test 3: max_relay_log_size = 0
#
@@ -156,6 +162,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
#
# Test 4: Tests below are mainly to ensure that we have not coded with wrong assumptions
#
@@ -201,6 +209,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
#
# Test 5
#
@@ -247,6 +257,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
#
# Test 6: one more rotation, to be sure Relay_Log_Space is correctly updated
#
@@ -291,6 +303,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
flush logs;
show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
diff --git a/mysql-test/suite/rpl/r/rpl_row_mixing_engines.result b/mysql-test/suite/rpl/r/rpl_row_mixing_engines.result
new file mode 100644
index 00000000000..c92a79d1427
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_row_mixing_engines.result
@@ -0,0 +1,13731 @@
+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;
+#########################################################################
+# CONFIGURATION
+#########################################################################
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+SET @commands= 'configure';
+SET SQL_LOG_BIN=0;
+CREATE TABLE nt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE tt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+SET SQL_LOG_BIN=1;
+SET SQL_LOG_BIN=0;
+CREATE TABLE nt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE tt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+SET SQL_LOG_BIN=1;
+INSERT INTO nt_1(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO nt_2(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO nt_3(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO nt_4(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO nt_5(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO nt_6(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO tt_1(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO tt_2(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO tt_3(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO tt_4(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO tt_5(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO tt_6(trans_id, stmt_id) VALUES(1,1);
+CREATE PROCEDURE pc_i_tt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER)
+BEGIN
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1);
+END|
+CREATE PROCEDURE pc_i_nt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER)
+BEGIN
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1);
+END|
+CREATE FUNCTION fc_i_tt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64)
+BEGIN
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1);
+RETURN "fc_i_tt_5_suc";
+END|
+CREATE FUNCTION fc_i_nt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64)
+BEGIN
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1);
+RETURN "fc_i_nt_5_suc";
+END|
+CREATE TRIGGER tr_i_tt_3_to_nt_3 AFTER INSERT ON tt_3 FOR EACH ROW
+BEGIN
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM nt_3 WHERE trans_id= NEW.trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id;
+INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
+INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
+END|
+CREATE TRIGGER tr_i_nt_4_to_tt_4 AFTER INSERT ON nt_4 FOR EACH ROW
+BEGIN
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM tt_4 WHERE trans_id= NEW.trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id;
+INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
+INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
+END|
+CREATE TRIGGER tr_i_tt_5_to_tt_6 AFTER INSERT ON tt_5 FOR EACH ROW
+BEGIN
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM tt_6 WHERE trans_id= NEW.trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id, 1), 1) INTO in_stmt_id;
+INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
+INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
+END|
+CREATE TRIGGER tr_i_nt_5_to_nt_6 AFTER INSERT ON nt_5 FOR EACH ROW
+BEGIN
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM nt_6 WHERE trans_id= NEW.trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id;
+INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
+INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
+END|
+SET @commands= '';
+#########################################################################
+# 1 - MIXING TRANSACTIONAL and NON-TRANSACTIONAL TABLES
+#########################################################################
+
+
+
+
+#
+#1) Generates in the binlog what follows:
+# --> STMT "B T C" entries, format S.
+# --> ROW "B T C" entries, format R.
+# --> MIXED "B T C" entries, format S.
+#
+SET @commands= 'T';
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (8, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (9, 1);
+fc_i_tt_5_suc (9, 1)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (10, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+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 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+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 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#1.e) Generates in the binlog what follows:
+# --> STMT empty.
+# --> ROW empty.
+# --> MIXED empty.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (12, 1), (7, 1);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (13, 1), (10, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) VALUES (14, 1, ''), (7, 1, fc_i_tt_5_suc (14, 1));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#2) Generates in the binlog what follows:
+# --> STMT "B N C" entry, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format S.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (15, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (16, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (17, 1);
+fc_i_nt_5_suc (17, 1)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (18, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#2.e) Generates in the binlog what follows if a N-table is changed:
+# --> STMT "B N C" entry, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format S.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (15, 1);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (20, 1), (15, 1);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (21, 1), (18, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (22, 1, ''), (20, 1, fc_i_nt_5_suc (22, 1));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#3) Generates in the binlog what follows:
+# --> STMT "B M C" entry if only N-Table is changed, format S.
+# --> STMT "B M C" entries, format S.
+# --> ROW "B N T B T C" entries, format R.
+# --> MIXED "B N T B T C" entries, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 23, 1, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 24, 1, COUNT(*) FROM nt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 25 --> 1", tt_3.info= "new text 25 --> 1" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_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.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_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.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (26, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (27, 1, fc_i_tt_5_suc(27, 1));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 28 --> 1", nt_4.info= "new text 28 --> 1" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_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.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_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.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (29, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (30, 1, fc_i_nt_5_suc(30, 1));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#3.e) Generates in the binlog what follows:
+# --> STMT "B M C" entry if only N-Table is changed, format S.
+# --> STMT "B M R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 31, 1, COUNT(*) FROM tt_1 UNION SELECT 23, 1, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 32, 1, COUNT(*) FROM nt_1 UNION SELECT 24, 1, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (33, 1), (26, 1);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (34, 1, ''), (30, 2, fc_i_tt_5_suc (34, 1));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (35, 1), (29, 1);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (36, 1, ''), (30, 1, fc_i_nt_5_suc (36, 1));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#4) Generates in the binlog what follows:
+# --> STMT "B T T C" entries, format S.
+# --> ROW "B T T C" entries, format R.
+# --> MIXED "B T T C" entries, format S
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (38, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (38, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (39, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (39, 4);
+fc_i_tt_5_suc (39, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (40, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (40, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (41, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (41, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (42, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (42, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (43, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (43, 4);
+fc_i_tt_5_suc (43, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (44, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (44, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (45, 2);
+fc_i_tt_5_suc (45, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (45, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (46, 2);
+fc_i_tt_5_suc (46, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (46, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (47, 2);
+fc_i_tt_5_suc (47, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (47, 4);
+fc_i_tt_5_suc (47, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (48, 2);
+fc_i_tt_5_suc (48, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (48, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (49, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (49, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (50, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (50, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (51, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (51, 4);
+fc_i_tt_5_suc (51, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (52, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (52, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#4.e) Generates in the binlog what follows:
+# --> STMT "B T C" entries, format S.
+# --> ROW "B T C" entries, format R.
+# --> MIXED "B T C" entries, format S.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (53, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (53, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T eT C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T eT C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (54, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (54, 4), (54, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Te C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Te C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (55, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (55, 4), (52, 5);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Te-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Te-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (56, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) VALUES (56, 4, ''), (56, 2, fc_i_tt_5_suc (56, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Te-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Te-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (56, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (57, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B eT T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B eT T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (58, 2), (57, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (58, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (59, 2), (52, 5);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (59, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) VALUES (60, 2, ''), (59, 4, fc_i_tt_5_suc (60, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (60, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#5) Generates in the binlog what follows:
+# --> STMT empty.
+# --> ROW empty.
+# --> MIXED empty.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (61, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (61, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (62, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (62, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (63, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (63, 4);
+fc_i_tt_5_suc (63, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (64, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (64, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (65, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (65, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (66, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (66, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (67, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (67, 4);
+fc_i_tt_5_suc (67, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (68, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (68, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (69, 2);
+fc_i_tt_5_suc (69, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (69, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (70, 2);
+fc_i_tt_5_suc (70, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (70, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (71, 2);
+fc_i_tt_5_suc (71, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (71, 4);
+fc_i_tt_5_suc (71, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (72, 2);
+fc_i_tt_5_suc (72, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (72, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (73, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (73, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (74, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (74, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (75, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (75, 4);
+fc_i_tt_5_suc (75, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (76, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (76, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#5.e) Generates in the binlog what follows:
+# --> STMT empty.
+# --> ROW empty.
+# --> MIXED empty.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (77, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (77, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T eT R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T eT R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (78, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (78, 4), (78, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Te R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Te R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (79, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (79, 4), (52, 5);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Te-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Te-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (80, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) VALUES (80, 4, ''), (80, 2, fc_i_tt_5_suc (80, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Te-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Te-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (60, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (81, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B eT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B eT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (82, 2), (60, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (82, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (83, 2), (52, 5);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (83, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) VALUES (84, 2, ''), (60, 4, fc_i_tt_5_suc (84, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (84, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#6) Generates in the binlog what follows:
+# --> STMT "B N C B N C" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (85, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (85, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (86, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (86, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (87, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (87, 4);
+fc_i_nt_5_suc (87, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (88, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (88, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (89, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (89, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (90, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (90, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (91, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (91, 4);
+fc_i_nt_5_suc (91, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (92, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (92, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (93, 2);
+fc_i_nt_5_suc (93, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (93, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (94, 2);
+fc_i_nt_5_suc (94, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (94, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (95, 2);
+fc_i_nt_5_suc (95, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (95, 4);
+fc_i_nt_5_suc (95, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (96, 2);
+fc_i_nt_5_suc (96, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (96, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (97, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (97, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (98, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (98, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (99, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (99, 4);
+fc_i_nt_5_suc (99, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (100, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (100, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#6.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B N C B N C" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (101, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (101, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N eN C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N eN C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (102, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (102, 4), (102, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N Ne C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N Ne C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (103, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (103, 4), (100, 5);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N Ne-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N Ne-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (104, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (104, 4, ''), (104, 2, fc_i_nt_5_suc (104, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N Ne-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_1)
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N Ne-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (104, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (105, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B eN N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B eN N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (106, 2), (105, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (106, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Ne N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Ne N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (107, 2), (104, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (107, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Ne-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Ne-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (108, 2, ''), (107, 4, fc_i_nt_5_suc (108, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (108, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Ne-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Ne-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#7) Generates in the binlog what follows:
+# --> STMT "B N C B N C" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (109, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (109, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (110, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (110, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (111, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (111, 4);
+fc_i_nt_5_suc (111, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (112, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (112, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (113, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (113, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (114, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (114, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (115, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (115, 4);
+fc_i_nt_5_suc (115, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (116, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (116, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (117, 2);
+fc_i_nt_5_suc (117, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (117, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (118, 2);
+fc_i_nt_5_suc (118, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (118, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (119, 2);
+fc_i_nt_5_suc (119, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (119, 4);
+fc_i_nt_5_suc (119, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (120, 2);
+fc_i_nt_5_suc (120, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (120, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (121, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (121, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (122, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (122, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (123, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (123, 4);
+fc_i_nt_5_suc (123, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (124, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (124, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#7.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B N C B N C" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (125, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (125, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N eN R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N eN R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (126, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (126, 4), (126, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N Ne R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N Ne R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (127, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (127, 4), (124, 5);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N Ne-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N Ne-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (128, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (128, 4, ''), (128, 2, fc_i_nt_5_suc (128, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N Ne-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_1)
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N Ne-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (128, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (129, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B eN N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B eN N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (130, 2), (129, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (130, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Ne N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Ne N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (131, 2), (128, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (131, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Ne-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Ne-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (132, 2, ''), (131, 4, fc_i_nt_5_suc (132, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (132, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Ne-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Ne-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#8) Generates in the binlog what follows:
+# --> STMT "B T N C" entries, format S.
+# --> ROW "B N C B T C" entries, format R.
+# --> MIXED "B N C B T C" entries, format R in N and S in T.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (133, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (133, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (134, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (134, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (135, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (135, 4);
+fc_i_nt_5_suc (135, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (136, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (136, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (137, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (137, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (138, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (138, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (139, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (139, 4);
+fc_i_nt_5_suc (139, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (140, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (140, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (141, 2);
+fc_i_tt_5_suc (141, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (141, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (142, 2);
+fc_i_tt_5_suc (142, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (142, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (143, 2);
+fc_i_tt_5_suc (143, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (143, 4);
+fc_i_nt_5_suc (143, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (144, 2);
+fc_i_tt_5_suc (144, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (144, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (145, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (145, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (146, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (146, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (147, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (147, 4);
+fc_i_nt_5_suc (147, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (148, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (148, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#8.e) Generates in the binlog what follows if T-* fails:
+# --> STMT "B N C" entry, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+# Otherwise, what follows if N-* fails and a N-Table is changed:
+# --> STMT "B T N C" entries, format S.
+# --> ROW "B N C B T C" entries, format R.
+# --> MIXED "B N C B T C" entries, format R in N and S in T.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (136, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (149, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B eT N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B eT N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (150, 2), (136, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (150, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (151, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (150, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T eN C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T eN C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (152, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (152, 4), (150, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Ne C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Ne C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#9) Generates in the binlog what follows:
+# --> STMT "B T N R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (153, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (153, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (154, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (154, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (155, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (155, 4);
+fc_i_nt_5_suc (155, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (156, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (156, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (157, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (157, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (158, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (158, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (159, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (159, 4);
+fc_i_nt_5_suc (159, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (160, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (160, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (161, 2);
+fc_i_tt_5_suc (161, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (161, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (162, 2);
+fc_i_tt_5_suc (162, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (162, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (163, 2);
+fc_i_tt_5_suc (163, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (163, 4);
+fc_i_nt_5_suc (163, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (164, 2);
+fc_i_tt_5_suc (164, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (164, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (165, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (165, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (166, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (166, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (167, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (167, 4);
+fc_i_nt_5_suc (167, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (168, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (168, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#9.e) Generates in the binlog what follows if T* fails:
+# --> STMT "B N C" entry, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+# Otherwise, what follows if N* fails and a N-Table is changed:
+# --> STMT "B T N R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (152, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (169, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B eT N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B eT N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (170, 2), (152, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (170, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (171, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (170, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T eN R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T eN R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (172, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (172, 4), (170, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Ne R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Ne R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#10) Generates in the binlog:
+# --> STMT "B N C B T C" entries, format S.
+# --> ROW "B N C B T C" entries, format R.
+# --> MIXED "B N C B T C" entries, format S.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (173, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (173, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (174, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (174, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (175, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (175, 4);
+fc_i_tt_5_suc (175, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (176, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (176, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (177, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (177, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (178, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (178, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (179, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (179, 4);
+fc_i_tt_5_suc (179, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (180, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (180, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (181, 2);
+fc_i_nt_5_suc (181, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (181, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (182, 2);
+fc_i_nt_5_suc (182, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (182, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (183, 2);
+fc_i_nt_5_suc (183, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (183, 4);
+fc_i_tt_5_suc (183, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (184, 2);
+fc_i_nt_5_suc (184, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (184, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (185, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (185, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (186, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (186, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (187, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (187, 4);
+fc_i_tt_5_suc (187, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (188, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (188, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#11) Generates in the binlog what follows:
+# --> STMT "B N C" entries, format S.
+# --> ROW "B N C" entries, format R.
+# --> MIXED "B N C" entries, format S.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (189, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (189, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (190, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (190, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (191, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (191, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (192, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (192, 4);
+fc_i_tt_5_suc (192, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (193, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (193, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (194, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (194, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (195, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (195, 4);
+fc_i_tt_5_suc (195, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (196, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (196, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (197, 2);
+fc_i_nt_5_suc (197, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (197, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (198, 2);
+fc_i_nt_5_suc (198, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (198, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (199, 2);
+fc_i_nt_5_suc (199, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (199, 4);
+fc_i_tt_5_suc (199, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (200, 2);
+fc_i_nt_5_suc (200, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (200, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (201, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (201, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (202, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (202, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (203, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (203, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (204, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (204, 4);
+fc_i_tt_5_suc (204, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#12) Generates in the binlog what follows:
+# --> STMT "B M C B T C" entries if in M only N-Table is changed, format S.
+# --> STMT "B M T C" entries, format S.
+# --> ROW "B N C B T T C" entries, format R.
+# --> MIXED "B N C B T T C" entries, format R in N/T and format S in T.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 205, 2, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (205, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tN T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B tN T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 206, 2, COUNT(*) FROM nt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (206, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nT T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B nT T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 207 --> 2", tt_3.info= "new text 207 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (207, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_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.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (208, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (208, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (209, 2, fc_i_tt_5_suc(209, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (209, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (210, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_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.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (211, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (212, 2, fc_i_nt_5_suc(212, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (212, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#12.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B M C B T C" entries if in M only N-Table is changed, format S.
+# --> STMT "B M T C" entries, format S.
+# --> ROW "B N C B T T C" entries, format R.
+# --> MIXED "B N C B T T C" entries, format R in N/T and format S in T.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 213, 2, COUNT(*) FROM tt_1 UNION SELECT 205, 2, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (213, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tNe T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B tNe T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 214, 2, COUNT(*) FROM nt_1 UNION SELECT 213, 4, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (214, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nTe T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B nTe T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (215, 2), (208, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (215, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (216, 2, ''), (212, 2, fc_i_tt_5_suc (216, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (216, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (217, 2), (211, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (217, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (218, 2, ''), (212, 2, fc_i_nt_5_suc (218, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (218, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#13) "B M T R" generates in the binlog:
+# --> STMT "B M C B T R" entries if in M only N-Table is changed, format S.
+# --> STMT "B M T R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 219, 2, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (219, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tN T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B tN T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 220, 2, COUNT(*) FROM nt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (220, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B nT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 221 --> 2", tt_3.info= "new text 221 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (221, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (222, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (222, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (223, 2, fc_i_tt_5_suc(223, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (223, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 224 --> 2", nt_4.info= "new text 224 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (224, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (225, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (225, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (226, 2, fc_i_nt_5_suc(226, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (226, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#13.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B M C B T R" entries if in M only N-Table is changed, format S.
+# --> STMT "B M T R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 227, 2, COUNT(*) FROM tt_1 UNION SELECT 219, 2, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (227, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tNe T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B tNe T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 228, 2, COUNT(*) FROM nt_1 UNION SELECT 218, 4, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (228, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nTe T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B nTe T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (229, 2), (222, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (229, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (230, 2, ''), (226, 2, fc_i_tt_5_suc (230, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (230, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (231, 2), (211, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (231, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (232, 2, ''), (212, 2, fc_i_nt_5_suc (232, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (232, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#14) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B T M C" entries, format S.
+# --> ROW "B N C B T T C" entries, format R.
+# --> MIXED "B N C B T T C" entries, format R in N/T and format S in T.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (233, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 233, 4, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T tN C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T tN C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (234, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 234, 4, COUNT(*) FROM nt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T nT C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T nT C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (235, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 235 --> 4", tt_3.info= "new text 235 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NT C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NT C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (236, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (236, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NT-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NT-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (237, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (237, 4, fc_i_tt_5_suc(237, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NT-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NT-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (238, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TN C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TN C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (239, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TN-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TN-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (240, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (240, 4, fc_i_nt_5_suc(240, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TN-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TN-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#14.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B T M C" entries, format S.
+# --> ROW "B N C B T C" entry, format R.
+# --> MIXED "B N C B T C" entry, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (241, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 241, 4, COUNT(*) FROM tt_1 UNION SELECT 233, 4, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T tNe C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T tNe C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (242, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 242, 4, COUNT(*) FROM nt_1 UNION SELECT 242, 2, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T nTe C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T nTe C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (243, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (243, 4), (236, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NeT-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NeT-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (244, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (244, 4, ''), (240, 2, fc_i_tt_5_suc (244, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NeT-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NeT-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (245, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (245, 4), (239, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TeN-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TeN-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (246, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (246, 4, ''), (240, 4, fc_i_nt_5_suc (246, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TeN-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TeN-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#15) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B T M R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (247, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 247, 4, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T tN R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T tN R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (248, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 248, 4, COUNT(*) FROM nt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T nT R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T nT R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (249, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 249 --> 4", tt_3.info= "new text 249 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NT R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NT R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (250, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (250, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NT-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NT-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (251, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (251, 4, fc_i_tt_5_suc(251, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NT-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NT-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (252, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 252 --> 4", nt_4.info= "new text 252 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TN R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TN R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (253, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (253, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TN-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TN-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (254, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (254, 4, fc_i_nt_5_suc(254, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TN-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TN-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#15.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B T M R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (255, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 255, 4, COUNT(*) FROM tt_1 UNION SELECT 247, 4, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T tNe R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T tNe R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (256, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 256, 4, COUNT(*) FROM nt_1 UNION SELECT 256, 2, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T nTe R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T nTe R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (257, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (257, 4), (250, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NeT-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NeT-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (258, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (258, 4, ''), (254, 2, fc_i_tt_5_suc (258, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NeT-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NeT-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (259, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (259, 4), (239, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TeN-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TeN-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (260, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (260, 4, ''), (240, 4, fc_i_nt_5_suc (260, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TeN-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TeN-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#16) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> STMT "B M N C" entries, format S.
+# --> ROW "B N C B N C B T C" entries, format R.
+# --> MIXED "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> MIXED "B N C B N C B T C" entries, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 261, 2, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (261, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tN N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B tN N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 262, 2, COUNT(*) FROM nt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (262, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nT N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B nT N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 263 --> 2", tt_3.info= "new text 263 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (263, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_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.nt_1)
+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.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (264, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (264, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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.nt_1)
+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.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (265, 2, fc_i_tt_5_suc(265, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (265, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_1)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (266, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_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.nt_1)
+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.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (267, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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.nt_1)
+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.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (268, 2, fc_i_nt_5_suc(268, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (268, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.nt_1)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#16.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> STMT "B M N C" entries, format S.
+# --> ROW "B N C B N C B T C" entries, format R.
+# --> MIXED "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> MIXED "B N C B N C B T C" entries, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 269, 2, COUNT(*) FROM tt_1 UNION SELECT 268, 4, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (269, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tNe N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B tNe N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 270, 2, COUNT(*) FROM nt_1 UNION SELECT 262, 2, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (270, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nTe N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B nTe N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (271, 2), (264, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (271, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (272, 2, ''), (268, 2, fc_i_tt_5_suc (272, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (272, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (273, 2), (267, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (273, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (274, 2, ''), (268, 2, fc_i_nt_5_suc (274, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (274, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#17) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> STMT "B M N R" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> MIXED "B N C B N C" entries, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 275, 2, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (275, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tN N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B tN N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 276, 2, COUNT(*) FROM nt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (276, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nT N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B nT N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 277 --> 2", tt_3.info= "new text 277 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (277, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (278, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (278, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (279, 2, fc_i_tt_5_suc(279, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (279, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 280 --> 2", nt_4.info= "new text 280 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (280, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (281, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (281, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (282, 2, fc_i_nt_5_suc(282, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (282, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#17.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> STMT "B M N R" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> MIXED "B N C B N C" entries, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 283, 2, COUNT(*) FROM tt_1 UNION SELECT 282, 4, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (283, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tNe N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B tNe N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 284, 2, COUNT(*) FROM nt_1 UNION SELECT 262, 2, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (284, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nTe N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B nTe N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (285, 2), (278, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (285, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (286, 2, ''), (282, 2, fc_i_tt_5_suc (286, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (286, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (287, 2), (267, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (287, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (288, 2, ''), (268, 2, fc_i_nt_5_suc (288, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (288, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#18) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B N C B M C" entries if in M only N-Table is changed, format S.
+# --> STMT "B N C B M C" entries, format S.
+# --> ROW "B N C B N C B T C" entries, format R.
+# --> MIXED "B N C B N C B T C" entries, format S in first N and format R in the other.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (289, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 289, 4, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N tN C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N tN C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (290, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 290, 4, COUNT(*) FROM nt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N nT C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N nT C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (291, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 291 --> 4", tt_3.info= "new text 291 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NT C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_3)
+master-bin.000001 # Update_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.tt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NT C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (292, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (292, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NT-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_4)
+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.tt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NT-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (293, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (293, 4, fc_i_tt_5_suc(293, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NT-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NT-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (294, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TN C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_4)
+master-bin.000001 # Update_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.tt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TN C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (295, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TN-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_3)
+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.tt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TN-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (296, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (296, 4, fc_i_nt_5_suc(296, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TN-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_5)
+master-bin.000001 # Table_map # # table_id: # (test.tt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TN-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#18.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B N C B M C" entries if in M only N-Table is changed, format S.
+# --> STMT "B N C B M C" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S in first N and format R in the other.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (297, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 297, 4, COUNT(*) FROM tt_1 UNION SELECT 297, 2, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N tNe C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N tNe C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (298, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 298, 4, COUNT(*) FROM nt_1 UNION SELECT 290, 4, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N nTe C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N nTe C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (299, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (299, 4), (292, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NeT-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NeT-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (300, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (300, 4, ''), (296, 2, fc_i_tt_5_suc (300, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NeT-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NeT-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (301, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (301, 4), (295, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TeN-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TeN-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (302, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (302, 4, ''), (296, 4, fc_i_nt_5_suc (302, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TeN-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TeN-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#19) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B N C B M C" entries if in M only N-Table is changed, format S.
+# --> STMT "B N C B M R" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S in first N and format R in the other.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (303, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 303, 4, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N tN R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N tN R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (304, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 304, 4, COUNT(*) FROM nt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N nT R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N nT R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (305, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 305 --> 4", tt_3.info= "new text 305 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NT R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_3)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NT R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (306, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (306, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NT-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NT-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (307, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (307, 4, fc_i_tt_5_suc(307, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NT-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NT-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (308, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 308 --> 4", nt_4.info= "new text 308 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TN R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_4)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TN R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (309, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (309, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TN-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TN-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (310, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (310, 4, fc_i_nt_5_suc(310, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TN-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TN-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#19.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B N C B M C" entries if in M only N-Table is changed, format S.
+# --> STMT "B N C B M R" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S in first N and format R in the other.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (311, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 311, 4, COUNT(*) FROM tt_1 UNION SELECT 311, 2, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N tNe R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N tNe R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (312, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 312, 4, COUNT(*) FROM nt_1 UNION SELECT 290, 4, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N nTe R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N nTe R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (313, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (313, 4), (306, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NeT-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NeT-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (314, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (314, 4, ''), (310, 2, fc_i_tt_5_suc (314, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NeT-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NeT-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (315, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (315, 4), (295, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TeN-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TeN-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (316, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (316, 4, ''), (296, 4, fc_i_nt_5_suc (316, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TeN-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.nt_5)
+master-bin.000001 # Table_map # # table_id: # (test.nt_6)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TeN-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# 2 - SAVEPOINT
+###################################################################################
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (317, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> S1 << -b-b-b-b-b-b-b-b-b-b-b-
+SAVEPOINT s1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> S1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (317, 5);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R1 << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK TO s1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T S1 T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T S1 T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (318, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> S1 << -b-b-b-b-b-b-b-b-b-b-b-
+SAVEPOINT s1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> S1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 7);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R1 << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK TO s1;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T S1 T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T S1 T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (319, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> S1 << -b-b-b-b-b-b-b-b-b-b-b-
+SAVEPOINT s1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> S1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 7);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R1 << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK TO s1;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N S1 T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N S1 T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> S1 << -b-b-b-b-b-b-b-b-b-b-b-
+SAVEPOINT s1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> S1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (320, 5);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 7);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R1 << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK TO s1;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T S1 N T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T S1 N T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# 3 - CREATE TABLE...SELECT
+###################################################################################
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-T->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE tt_xx_1 (PRIMARY KEY (stmt_id)) engine=Innodb SELECT stmt_id FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-T->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-T->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE tt_xx_1 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `tt_xx_1` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=InnoDB
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-T->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_1, nt_xx_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_1, nt_xx_1
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-T->T CS-T->T drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `tt_xx_1` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=InnoDB
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_1)
+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 IF EXISTS tt_xx_1, nt_xx_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-T->T CS-T->T drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->N << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_2 (PRIMARY KEY (stmt_id)) engine=MyIsam SELECT stmt_id FROM nt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->N << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_2 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `nt_xx_2` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=MyISAM
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_2)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_2, nt_xx_2;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_2, nt_xx_2
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->N CS-N->N drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `nt_xx_2` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=MyISAM
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_2)
+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 IF EXISTS tt_xx_2, nt_xx_2
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->N CS-N->N drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-T->N << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE tt_xx_3 (PRIMARY KEY (stmt_id)) engine=Innodb SELECT stmt_id FROM nt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-T->N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-T->N << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE tt_xx_3 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM nt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `tt_xx_3` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=InnoDB
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_3)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-T->N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_3, nt_xx_3;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_3, nt_xx_3
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-T->N CS-T->N drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `tt_xx_3` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=InnoDB
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_3)
+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 # # use `test`; DROP TABLE IF EXISTS tt_xx_3, nt_xx_3
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-T->N CS-T->N drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_4 (PRIMARY KEY (stmt_id)) engine=MyIsam SELECT stmt_id FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_4 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `nt_xx_4` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=MyISAM
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_4, nt_xx_4;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_4, nt_xx_4
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->T CS-N->T drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `nt_xx_4` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=MyISAM
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_4, nt_xx_4
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->T CS-N->T drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_5 (PRIMARY KEY (stmt_id)) engine=MyIsam SELECT stmt_id FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_5 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `nt_xx_5` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=MyISAM
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_5)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_5, nt_xx_5;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_5, nt_xx_5
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->T CS-N->T drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `nt_xx_5` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=MyISAM
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_5)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_5, nt_xx_5
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->T CS-N->T drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_6 (PRIMARY KEY (stmt_id)) engine=MyIsam SELECT stmt_id FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_6 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `nt_xx_6` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=MyISAM
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_6)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_6, nt_xx_6;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_6, nt_xx_6
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->T CS-N->T drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `nt_xx_6` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=MyISAM
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_6)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_6, nt_xx_6
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->T CS-N->T drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# 4 - INSERT TABLE...SELECT
+###################################################################################
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-T->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE tt_xx_7 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `tt_xx_7` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=InnoDB
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_7)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-T->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-T->T << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `tt_xx_7` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=InnoDB
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_7)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-T->T << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_7;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (328, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-T<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_7(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-T<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (328, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_7)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B T IS-T<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_7)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B T IS-T<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_7;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (329, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-T<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_7(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM nt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-T<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (329, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B T ISe-T<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B T ISe-T<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_7;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-T<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_7(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-T<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (330, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_7)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B IS-T<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_7)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B IS-T<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_7;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-T<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_7(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM nt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-T<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (331, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B ISe-T<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B ISe-T<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_7, nt_xx_7;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_7, nt_xx_7
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_7, nt_xx_7
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-T->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE tt_xx_8 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `tt_xx_8` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=InnoDB
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_8)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-T->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-T->T << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `tt_xx_8` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=InnoDB
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_8)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-T->T << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_8;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (334, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-T<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_8(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-T<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (334, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_8)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B T IS-T<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_8)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B T IS-T<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_8;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (335, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-T<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_8(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-T<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (335, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B T ISe-T<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B T ISe-T<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_8;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-T<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_8(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-T<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (336, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_8)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B IS-T<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_xx_8)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B IS-T<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_8;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-T<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_8(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-T<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (337, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B ISe-T<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B ISe-T<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_8, nt_xx_8;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_8, nt_xx_8
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_8, nt_xx_8
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->N << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_9 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `nt_xx_9` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=MyISAM
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->N << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `nt_xx_9` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=MyISAM
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->N << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_9;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (340, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-N<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-N<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (340, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B T IS-N<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_9)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B T IS-N<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_9;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (341, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-N<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-N<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (341, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B T ISe-N<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_9)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B T ISe-N<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_9;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-N<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-N<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (342, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B IS-N<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_9)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B IS-N<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_9;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-N<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-N<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (343, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B ISe-N<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_9)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B ISe-N<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_9, nt_xx_9;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_9, nt_xx_9
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_9, nt_xx_9
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->N << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_10 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `nt_xx_10` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=MyISAM
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_10)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->N << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `nt_xx_10` (
+ `trans_id` int(11) NOT NULL DEFAULT '0',
+ `stmt_id` int(11) NOT NULL DEFAULT '0',
+ `info` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`trans_id`,`stmt_id`)
+) ENGINE=MyISAM
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_10)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->N << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_10;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (346, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-N<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_10)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-N<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (346, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B T IS-N<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_10)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B T IS-N<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_10;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (347, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-N<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM nt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_10)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-N<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (347, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B T ISe-N<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_10)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B T ISe-N<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_10;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-N<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_10)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-N<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (348, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B IS-N<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_10)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B IS-N<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_10;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-N<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM nt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_10)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-N<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (349, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B ISe-N<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_xx_10)
+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.tt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B ISe-N<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_10, nt_xx_10;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_10, nt_xx_10
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_10, nt_xx_10
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# 5 - ROLLBACK TEMPORARY TABLE
+###################################################################################
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (351, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CT << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TEMPORARY TABLE tt_xx_11 (a int) engine=Innodb;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T CT R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T CT R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TEMPORARY TABLE IF EXISTS tt_xx_11;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (353, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> S1 << -b-b-b-b-b-b-b-b-b-b-b-
+SAVEPOINT s1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> S1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (353, 5);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CT << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TEMPORARY TABLE tt_xx_12 (a int) engine=Innodb;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R1 << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK TO s1;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T S1 T CT R1 R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T S1 T CT R1 R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TEMPORARY TABLE IF EXISTS tt_xx_12;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (355, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CT << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TEMPORARY TABLE tt_xx_13 (a int) engine=Innodb;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (355, 5);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T CT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T CT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TEMPORARY TABLE IF EXISTS tt_xx_13;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 357, 2, COUNT(*) FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CT << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TEMPORARY TABLE tt_xx_14 (a int) engine=Innodb;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (357, 5);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tN CT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B tN CT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TEMPORARY TABLE IF EXISTS tt_xx_14;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CT << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TEMPORARY TABLE tt_xx_15 (a int) engine=Innodb;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (359, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B CT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B CT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TEMPORARY TABLE IF EXISTS tt_xx_15;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (361, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CT << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TEMPORARY TABLE tt_xx_16 (a int) engine=Innodb;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (361, 5);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N CT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.nt_1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N CT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TEMPORARY TABLE IF EXISTS tt_xx_16;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# CHECK CONSISTENCY
+###################################################################################
+###################################################################################
+# CLEAN
+###################################################################################
diff --git a/mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result b/mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result
index 449407742de..b5adcefe373 100644
--- a/mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result
+++ b/mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result
@@ -152,7 +152,6 @@ c1 c3 c4 c5
5 2006-02-22 00:00:00 Tested in Texas 11
--- Test 2 position test --
-Warning: The option '--position' is deprecated and will be removed in MySQL 5.6. Please use --start-position instead.
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
@@ -160,7 +159,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -182,7 +181,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -291,7 +290,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -315,7 +314,6 @@ ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
--- Test 7 reading stdin w/position --
-Warning: The option '--position' is deprecated and will be removed in MySQL 5.6. Please use --start-position instead.
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
@@ -323,7 +321,7 @@ ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
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..028b73e6153 100644
--- a/mysql-test/suite/rpl/r/rpl_row_reset_slave.result
+++ b/mysql-test/suite/rpl/r/rpl_row_reset_slave.result
@@ -43,6 +43,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
stop slave;
change master to master_user='test';
SHOW SLAVE STATUS;
@@ -84,11 +86,13 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
reset slave;
SHOW SLAVE STATUS;
Slave_IO_State #
Master_Host 127.0.0.1
-Master_User root
+Master_User test
Master_Port MASTER_PORT
Connect_Retry 1
Master_Log_File
@@ -124,6 +128,9 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
+change master to master_user='root';
start slave;
SHOW SLAVE STATUS;
Slave_IO_State #
@@ -164,6 +171,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
stop slave;
reset slave;
start slave;
diff --git a/mysql-test/suite/rpl/r/rpl_row_show_relaylog_events.result b/mysql-test/suite/rpl/r/rpl_row_show_relaylog_events.result
new file mode 100644
index 00000000000..5834c95b319
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_row_show_relaylog_events.result
@@ -0,0 +1,276 @@
+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 (a INT);
+INSERT INTO t1 VALUES (1);
+INSERT INTO t1 VALUES (2);
+INSERT INTO t1 VALUES (3);
+INSERT INTO t1 VALUES (4);
+INSERT INTO t1 VALUES (5);
+INSERT INTO t1 VALUES (6);
+[MASTER] ********* SOW BINLOG EVENTS IN ... *********
+show binlog events in 'master-bin.000001' 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)
+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 # 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 # 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 # 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 # 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 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+[MASTER] ********* SOW BINLOG EVENTS *********
+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)
+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 # 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 # 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 # 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 # 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 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+[MASTER] ********* SOW BINLOG EVENTS ... LIMIT rows *********
+show binlog events from <binlog_start> limit 3;
+Log_name Pos Event_type Server_id End_log_pos Info
+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] ********* SOW BINLOG EVENTS ... LIMIT offset,rows *********
+show binlog events from <binlog_start> limit 1, 4;
+Log_name Pos Event_type Server_id End_log_pos Info
+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
+[SLAVE] ********* SOW BINLOG EVENTS IN ... *********
+show binlog events in 'slave-bin.000001' 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)
+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 # # 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 # # 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 # # 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 # # 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 # # 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] ********* SOW 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)
+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 # # 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 # # 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 # # 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 # # 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 # # 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] ********* SOW BINLOG EVENTS ... LIMIT rows *********
+show binlog events from <binlog_start> limit 3;
+Log_name Pos Event_type Server_id End_log_pos Info
+slave-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT)
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Table_map # # table_id: # (test.t1)
+[SLAVE] ********* SOW BINLOG EVENTS ... LIMIT offset,rows *********
+show binlog events from <binlog_start> limit 1, 4;
+Log_name Pos Event_type Server_id End_log_pos Info
+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] ********* SOW RELAYLOG EVENTS IN ... *********
+show relaylog events in 'slave-relay-bin.000003' from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+slave-relay-bin.000003 # Rotate # # master-bin.000001;pos=4
+slave-relay-bin.000003 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
+slave-relay-bin.000003 # Query # # use `test`; CREATE TABLE t1 (a INT)
+slave-relay-bin.000003 # Query # # BEGIN
+slave-relay-bin.000003 # Table_map # # table_id: # (test.t1)
+slave-relay-bin.000003 # Write_rows # # table_id: # flags: STMT_END_F
+slave-relay-bin.000003 # Query # # COMMIT
+slave-relay-bin.000003 # Query # # BEGIN
+slave-relay-bin.000003 # Table_map # # table_id: # (test.t1)
+slave-relay-bin.000003 # Write_rows # # table_id: # flags: STMT_END_F
+slave-relay-bin.000003 # Query # # COMMIT
+slave-relay-bin.000003 # Query # # BEGIN
+slave-relay-bin.000003 # Table_map # # table_id: # (test.t1)
+slave-relay-bin.000003 # Write_rows # # table_id: # flags: STMT_END_F
+slave-relay-bin.000003 # Query # # COMMIT
+slave-relay-bin.000003 # Query # # BEGIN
+slave-relay-bin.000003 # Table_map # # table_id: # (test.t1)
+slave-relay-bin.000003 # Write_rows # # table_id: # flags: STMT_END_F
+slave-relay-bin.000003 # Query # # COMMIT
+slave-relay-bin.000003 # Query # # BEGIN
+slave-relay-bin.000003 # Table_map # # table_id: # (test.t1)
+slave-relay-bin.000003 # Write_rows # # table_id: # flags: STMT_END_F
+slave-relay-bin.000003 # Query # # COMMIT
+slave-relay-bin.000003 # Query # # BEGIN
+slave-relay-bin.000003 # Table_map # # table_id: # (test.t1)
+slave-relay-bin.000003 # Write_rows # # table_id: # flags: STMT_END_F
+slave-relay-bin.000003 # Query # # COMMIT
+[SLAVE] ********* SOW RELAYLOG EVENTS *********
+show relaylog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+slave-relay-bin.000002 # Rotate # # slave-relay-bin.000003;pos=4
+[MASTER] ********* SOW RELAYLOG EVENTS ... LIMIT rows *********
+show relaylog events in 'slave-relay-bin.000003' from <binlog_start> limit 3;
+Log_name Pos Event_type Server_id End_log_pos Info
+slave-relay-bin.000003 # Rotate # # master-bin.000001;pos=4
+slave-relay-bin.000003 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
+slave-relay-bin.000003 # Query # # use `test`; CREATE TABLE t1 (a INT)
+[MASTER] ********* SOW RELAYLOG EVENTS ... LIMIT offset,rows *********
+show relaylog events in 'slave-relay-bin.000003' from <binlog_start> limit 1, 3;
+Log_name Pos Event_type Server_id End_log_pos Info
+slave-relay-bin.000003 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
+slave-relay-bin.000003 # Query # # use `test`; CREATE TABLE t1 (a INT)
+slave-relay-bin.000003 # Query # # BEGIN
+FLUSH LOGS;
+FLUSH LOGS;
+DROP TABLE t1;
+[MASTER] ********* SOW BINLOG EVENTS IN ... *********
+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 # # use `test`; DROP TABLE t1
+[MASTER] ********* SOW BINLOG EVENTS *********
+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)
+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 # 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 # 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 # 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 # 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 # 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
+[SLAVE] ********* SOW BINLOG EVENTS IN ... *********
+show binlog events in 'slave-bin.000002' from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+slave-bin.000002 # Query # # use `test`; DROP TABLE t1
+[SLAVE] ********* SOW 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)
+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 # # 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 # # 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 # # 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 # # 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 # # 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 # Rotate # # slave-bin.000002;pos=4
+[SLAVE] ********* SOW RELAYLOG EVENTS IN ... *********
+show relaylog events in 'slave-relay-bin.000005' from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+slave-relay-bin.000005 # Rotate # # master-bin.000002;pos=4
+slave-relay-bin.000005 # Rotate # # slave-relay-bin.000006;pos=4
+[SLAVE] ********* SOW RELAYLOG EVENTS *********
+show relaylog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+slave-relay-bin.000005 # Rotate # # master-bin.000002;pos=4
+slave-relay-bin.000005 # Rotate # # slave-relay-bin.000006;pos=4
diff --git a/mysql-test/suite/rpl/r/rpl_row_sp007_innodb.result b/mysql-test/suite/rpl/r/rpl_row_sp007_innodb.result
index 9a2822835f8..5a6a9ace4c5 100644
--- a/mysql-test/suite/rpl/r/rpl_row_sp007_innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_row_sp007_innodb.result
@@ -22,8 +22,6 @@ END|
< ---- Master selects-- >
-------------------------
CALL test.p1(12);
-Warnings:
-Note 1051 Unknown table 't1'
SELECT * FROM test.t1;
num
12
diff --git a/mysql-test/suite/rpl/r/rpl_row_stop_middle_update.result b/mysql-test/suite/rpl/r/rpl_row_stop_middle_update.result
deleted file mode 100644
index 1934b01505c..00000000000
--- a/mysql-test/suite/rpl/r/rpl_row_stop_middle_update.result
+++ /dev/null
@@ -1,17 +0,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 (words varchar(20)) engine=myisam;
-load data infile '../../std_data/words.dat' into table t1 (words);
-select count(*) from t1;
-count(*)
-70
-select count(*) from t1;
-count(*)
-70
-drop table t1;
-include/stop_slave.inc
-drop table t1;
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..2974b9ad259 100644
--- a/mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result
+++ b/mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result
@@ -157,6 +157,8 @@ Last_IO_Errno <Last_IO_Errno>
Last_IO_Error <Last_IO_Error>
Last_SQL_Errno 0
Last_SQL_Error <Last_SQL_Error>
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
INSERT INTO t9 VALUES (4);
INSERT INTO t4 VALUES (4);
SHOW SLAVE STATUS;
@@ -178,7 +180,7 @@ Replicate_Do_Table
Replicate_Ignore_Table
Replicate_Wild_Do_Table
Replicate_Wild_Ignore_Table
-Last_Errno 1535
+Last_Errno 1677
Last_Error <Last_Error>
Skip_Counter 0
Exec_Master_Log_Pos #
@@ -196,8 +198,10 @@ 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_Errno 1677
Last_SQL_Error <Last_SQL_Error>
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
INSERT INTO t9 VALUES (5);
@@ -221,7 +225,7 @@ Replicate_Do_Table
Replicate_Ignore_Table
Replicate_Wild_Do_Table
Replicate_Wild_Ignore_Table
-Last_Errno 1535
+Last_Errno 1677
Last_Error <Last_Error>
Skip_Counter 0
Exec_Master_Log_Pos #
@@ -239,8 +243,10 @@ 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_Errno 1677
Last_SQL_Error <Last_SQL_Error>
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
INSERT INTO t9 VALUES (6);
@@ -264,7 +270,7 @@ Replicate_Do_Table
Replicate_Ignore_Table
Replicate_Wild_Do_Table
Replicate_Wild_Ignore_Table
-Last_Errno 1535
+Last_Errno 1677
Last_Error <Last_Error>
Skip_Counter 0
Exec_Master_Log_Pos #
@@ -282,8 +288,10 @@ 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_Errno 1677
Last_SQL_Error <Last_SQL_Error>
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
INSERT INTO t9 VALUES (6);
@@ -326,6 +334,8 @@ Last_IO_Errno <Last_IO_Errno>
Last_IO_Error <Last_IO_Error>
Last_SQL_Errno 0
Last_SQL_Error <Last_SQL_Error>
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
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..04f22a864e1 100644
--- a/mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result
@@ -157,6 +157,8 @@ Last_IO_Errno <Last_IO_Errno>
Last_IO_Error <Last_IO_Error>
Last_SQL_Errno 0
Last_SQL_Error <Last_SQL_Error>
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
INSERT INTO t9 VALUES (4);
INSERT INTO t4 VALUES (4);
SHOW SLAVE STATUS;
@@ -178,7 +180,7 @@ Replicate_Do_Table
Replicate_Ignore_Table
Replicate_Wild_Do_Table
Replicate_Wild_Ignore_Table
-Last_Errno 1535
+Last_Errno 1677
Last_Error <Last_Error>
Skip_Counter 0
Exec_Master_Log_Pos #
@@ -196,8 +198,10 @@ 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_Errno 1677
Last_SQL_Error <Last_SQL_Error>
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
INSERT INTO t9 VALUES (5);
@@ -221,7 +225,7 @@ Replicate_Do_Table
Replicate_Ignore_Table
Replicate_Wild_Do_Table
Replicate_Wild_Ignore_Table
-Last_Errno 1535
+Last_Errno 1677
Last_Error <Last_Error>
Skip_Counter 0
Exec_Master_Log_Pos #
@@ -239,8 +243,10 @@ 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_Errno 1677
Last_SQL_Error <Last_SQL_Error>
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
INSERT INTO t9 VALUES (6);
@@ -264,7 +270,7 @@ Replicate_Do_Table
Replicate_Ignore_Table
Replicate_Wild_Do_Table
Replicate_Wild_Ignore_Table
-Last_Errno 1535
+Last_Errno 1677
Last_Error <Last_Error>
Skip_Counter 0
Exec_Master_Log_Pos #
@@ -282,8 +288,10 @@ 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_Errno 1677
Last_SQL_Error <Last_SQL_Error>
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
INSERT INTO t9 VALUES (6);
@@ -326,6 +334,8 @@ Last_IO_Errno <Last_IO_Errno>
Last_IO_Error <Last_IO_Error>
Last_SQL_Errno 0
Last_SQL_Error <Last_SQL_Error>
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
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..e878456e296 100644
--- a/mysql-test/suite/rpl/r/rpl_row_until.result
+++ b/mysql-test/suite/rpl/r/rpl_row_until.result
@@ -59,6 +59,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
START SLAVE UNTIL MASTER_LOG_FILE='master-no-such-bin.000001', MASTER_LOG_POS=291;
SELECT * FROM t1;
n
@@ -105,6 +107,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', RELAY_LOG_POS=relay_pos_insert1_t2
SELECT * FROM t2;
n
@@ -149,6 +153,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
START SLAVE;
include/stop_slave.inc
START SLAVE SQL_THREAD UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=master_pos_create_t2
@@ -191,6 +197,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
START SLAVE UNTIL MASTER_LOG_FILE='master-bin', MASTER_LOG_POS=561;
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;
diff --git a/mysql-test/suite/rpl/r/rpl_semi_sync.result b/mysql-test/suite/rpl/r/rpl_semi_sync.result
new file mode 100644
index 00000000000..1e220b28d78
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_semi_sync.result
@@ -0,0 +1,440 @@
+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;
+#
+# Uninstall semi-sync plugins on master and slave
+#
+include/stop_slave.inc
+reset slave;
+UNINSTALL PLUGIN rpl_semi_sync_slave;
+UNINSTALL PLUGIN rpl_semi_sync_master;
+reset master;
+set sql_log_bin=0;
+UNINSTALL PLUGIN rpl_semi_sync_slave;
+UNINSTALL PLUGIN rpl_semi_sync_master;
+set sql_log_bin=1;
+#
+# Main test of semi-sync replication start here
+#
+[ on master ]
+[ default state of semi-sync on master should be OFF ]
+show variables like 'rpl_semi_sync_master_enabled';
+Variable_name Value
+rpl_semi_sync_master_enabled OFF
+[ enable semi-sync on master ]
+set global rpl_semi_sync_master_enabled = 1;
+show variables like 'rpl_semi_sync_master_enabled';
+Variable_name Value
+rpl_semi_sync_master_enabled ON
+[ status of semi-sync on master should be ON even without any semi-sync slaves ]
+show status like 'Rpl_semi_sync_master_clients';
+Variable_name Value
+Rpl_semi_sync_master_clients 0
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status ON
+show status like 'Rpl_semi_sync_master_yes_tx';
+Variable_name Value
+Rpl_semi_sync_master_yes_tx 0
+#
+# BUG#45672 Semisync repl: ActiveTranx:insert_tranx_node: transaction node allocation failed
+# BUG#45673 Semisynch reports correct operation even if no slave is connected
+#
+[ status of semi-sync on master should be OFF ]
+show status like 'Rpl_semi_sync_master_clients';
+Variable_name Value
+Rpl_semi_sync_master_clients 0
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status OFF
+show status like 'Rpl_semi_sync_master_yes_tx';
+Variable_name Value
+Rpl_semi_sync_master_yes_tx 0
+#
+# INSTALL PLUGIN semi-sync on slave
+#
+[ on slave ]
+[ default state of semi-sync on slave should be OFF ]
+show variables like 'rpl_semi_sync_slave_enabled';
+Variable_name Value
+rpl_semi_sync_slave_enabled OFF
+[ enable semi-sync on slave ]
+set global rpl_semi_sync_slave_enabled = 1;
+show variables like 'rpl_semi_sync_slave_enabled';
+Variable_name Value
+rpl_semi_sync_slave_enabled ON
+include/start_slave.inc
+[ on master ]
+[ initial master state after the semi-sync slave connected ]
+show status like 'Rpl_semi_sync_master_clients';
+Variable_name Value
+Rpl_semi_sync_master_clients 1
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status ON
+show status like 'Rpl_semi_sync_master_no_tx';
+Variable_name Value
+Rpl_semi_sync_master_no_tx 0
+show status like 'Rpl_semi_sync_master_yes_tx';
+Variable_name Value
+Rpl_semi_sync_master_yes_tx 0
+create table t1(a int) engine = ENGINE_TYPE;
+[ master state after CREATE TABLE statement ]
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status ON
+show status like 'Rpl_semi_sync_master_no_tx';
+Variable_name Value
+Rpl_semi_sync_master_no_tx 0
+show status like 'Rpl_semi_sync_master_yes_tx';
+Variable_name Value
+Rpl_semi_sync_master_yes_tx 1
+select CONNECTIONS_NORMAL_SLAVE - CONNECTIONS_NORMAL_SLAVE as 'Should be 0';
+Should be 0
+0
+[ insert records to table ]
+[ master status after inserts ]
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status ON
+show status like 'Rpl_semi_sync_master_no_tx';
+Variable_name Value
+Rpl_semi_sync_master_no_tx 0
+show status like 'Rpl_semi_sync_master_yes_tx';
+Variable_name Value
+Rpl_semi_sync_master_yes_tx 301
+[ on slave ]
+[ slave status after replicated inserts ]
+show status like 'Rpl_semi_sync_slave_status';
+Variable_name Value
+Rpl_semi_sync_slave_status ON
+select count(distinct a) from t1;
+count(distinct a)
+300
+select min(a) from t1;
+min(a)
+1
+select max(a) from t1;
+max(a)
+300
+#
+# Test semi-sync master will switch OFF after one transacton
+# timeout waiting for slave reply.
+#
+include/stop_slave.inc
+[ on master ]
+[ master status should be ON ]
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status ON
+show status like 'Rpl_semi_sync_master_no_tx';
+Variable_name Value
+Rpl_semi_sync_master_no_tx 0
+show status like 'Rpl_semi_sync_master_yes_tx';
+Variable_name Value
+Rpl_semi_sync_master_yes_tx 301
+show status like 'Rpl_semi_sync_master_clients';
+Variable_name Value
+Rpl_semi_sync_master_clients 1
+[ semi-sync replication of these transactions will fail ]
+insert into t1 values (500);
+[ master status should be OFF ]
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status OFF
+show status like 'Rpl_semi_sync_master_no_tx';
+Variable_name Value
+Rpl_semi_sync_master_no_tx 1
+show status like 'Rpl_semi_sync_master_yes_tx';
+Variable_name Value
+Rpl_semi_sync_master_yes_tx 301
+insert into t1 values (100);
+[ master status should be OFF ]
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status OFF
+show status like 'Rpl_semi_sync_master_no_tx';
+Variable_name Value
+Rpl_semi_sync_master_no_tx 302
+show status like 'Rpl_semi_sync_master_yes_tx';
+Variable_name Value
+Rpl_semi_sync_master_yes_tx 301
+#
+# Test semi-sync status on master will be ON again when slave catches up
+#
+[ on slave ]
+[ slave status should be OFF ]
+show status like 'Rpl_semi_sync_slave_status';
+Variable_name Value
+Rpl_semi_sync_slave_status OFF
+include/start_slave.inc
+[ slave status should be ON ]
+show status like 'Rpl_semi_sync_slave_status';
+Variable_name Value
+Rpl_semi_sync_slave_status ON
+select count(distinct a) from t1;
+count(distinct a)
+2
+select min(a) from t1;
+min(a)
+100
+select max(a) from t1;
+max(a)
+500
+[ on master ]
+[ master status should be ON again after slave catches up ]
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status ON
+show status like 'Rpl_semi_sync_master_no_tx';
+Variable_name Value
+Rpl_semi_sync_master_no_tx 302
+show status like 'Rpl_semi_sync_master_yes_tx';
+Variable_name Value
+Rpl_semi_sync_master_yes_tx 301
+show status like 'Rpl_semi_sync_master_clients';
+Variable_name Value
+Rpl_semi_sync_master_clients 1
+#
+# Test disable/enable master semi-sync on the fly.
+#
+drop table t1;
+[ on slave ]
+include/stop_slave.inc
+#
+# Flush status
+#
+[ Semi-sync master status variables before FLUSH STATUS ]
+SHOW STATUS LIKE 'Rpl_semi_sync_master_no_tx';
+Variable_name Value
+Rpl_semi_sync_master_no_tx 302
+SHOW STATUS LIKE 'Rpl_semi_sync_master_yes_tx';
+Variable_name Value
+Rpl_semi_sync_master_yes_tx 302
+FLUSH NO_WRITE_TO_BINLOG STATUS;
+[ Semi-sync master status variables after FLUSH STATUS ]
+SHOW STATUS LIKE 'Rpl_semi_sync_master_no_tx';
+Variable_name Value
+Rpl_semi_sync_master_no_tx 0
+SHOW STATUS LIKE 'Rpl_semi_sync_master_yes_tx';
+Variable_name Value
+Rpl_semi_sync_master_yes_tx 0
+[ on master ]
+show master logs;
+Log_name master-bin.000001
+File_size #
+show variables like 'rpl_semi_sync_master_enabled';
+Variable_name Value
+rpl_semi_sync_master_enabled ON
+[ disable semi-sync on the fly ]
+set global rpl_semi_sync_master_enabled=0;
+show variables like 'rpl_semi_sync_master_enabled';
+Variable_name Value
+rpl_semi_sync_master_enabled OFF
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status OFF
+[ enable semi-sync on the fly ]
+set global rpl_semi_sync_master_enabled=1;
+show variables like 'rpl_semi_sync_master_enabled';
+Variable_name Value
+rpl_semi_sync_master_enabled ON
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status ON
+#
+# Test RESET MASTER/SLAVE
+#
+[ on slave ]
+include/start_slave.inc
+[ on master ]
+create table t1 (a int) engine = ENGINE_TYPE;
+drop table t1;
+show status like 'Rpl_relay%';
+Variable_name Value
+[ test reset master ]
+[ on master]
+reset master;
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status ON
+show status like 'Rpl_semi_sync_master_no_tx';
+Variable_name Value
+Rpl_semi_sync_master_no_tx 0
+show status like 'Rpl_semi_sync_master_yes_tx';
+Variable_name Value
+Rpl_semi_sync_master_yes_tx 0
+[ on slave ]
+include/stop_slave.inc
+reset slave;
+include/start_slave.inc
+[ on master ]
+create table t1 (a int) engine = ENGINE_TYPE;
+insert into t1 values (1);
+insert into t1 values (2), (3);
+[ on slave ]
+select * from t1;
+a
+1
+2
+3
+[ on master ]
+[ master semi-sync status should be ON ]
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status ON
+show status like 'Rpl_semi_sync_master_no_tx';
+Variable_name Value
+Rpl_semi_sync_master_no_tx 0
+show status like 'Rpl_semi_sync_master_yes_tx';
+Variable_name Value
+Rpl_semi_sync_master_yes_tx 3
+#
+# Start semi-sync replication without SUPER privilege
+#
+include/stop_slave.inc
+reset slave;
+[ on master ]
+reset master;
+set sql_log_bin=0;
+grant replication slave on *.* to rpl@127.0.0.1 identified by 'rpl';
+flush privileges;
+set sql_log_bin=1;
+[ on slave ]
+grant replication slave on *.* to rpl@127.0.0.1 identified by 'rpl';
+flush privileges;
+change master to master_user='rpl',master_password='rpl';
+include/start_slave.inc
+show status like 'Rpl_semi_sync_slave_status';
+Variable_name Value
+Rpl_semi_sync_slave_status ON
+[ on master ]
+[ master semi-sync should be ON ]
+show status like 'Rpl_semi_sync_master_clients';
+Variable_name Value
+Rpl_semi_sync_master_clients 1
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status ON
+show status like 'Rpl_semi_sync_master_no_tx';
+Variable_name Value
+Rpl_semi_sync_master_no_tx 0
+show status like 'Rpl_semi_sync_master_yes_tx';
+Variable_name Value
+Rpl_semi_sync_master_yes_tx 0
+insert into t1 values (4);
+insert into t1 values (5);
+[ master semi-sync should be ON ]
+show status like 'Rpl_semi_sync_master_clients';
+Variable_name Value
+Rpl_semi_sync_master_clients 1
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status ON
+show status like 'Rpl_semi_sync_master_no_tx';
+Variable_name Value
+Rpl_semi_sync_master_no_tx 0
+show status like 'Rpl_semi_sync_master_yes_tx';
+Variable_name Value
+Rpl_semi_sync_master_yes_tx 2
+#
+# Test semi-sync slave connect to non-semi-sync master
+#
+[ on slave ]
+include/stop_slave.inc
+SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
+Variable_name Value
+Rpl_semi_sync_slave_status OFF
+[ on master ]
+[ Semi-sync status on master should be ON ]
+show status like 'Rpl_semi_sync_master_clients';
+Variable_name Value
+Rpl_semi_sync_master_clients 0
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status ON
+set global rpl_semi_sync_master_enabled= 0;
+[ on slave ]
+SHOW VARIABLES LIKE 'rpl_semi_sync_slave_enabled';
+Variable_name Value
+rpl_semi_sync_slave_enabled ON
+include/start_slave.inc
+[ on master ]
+insert into t1 values (8);
+[ master semi-sync clients should be 1, status should be OFF ]
+show status like 'Rpl_semi_sync_master_clients';
+Variable_name Value
+Rpl_semi_sync_master_clients 1
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status OFF
+[ on slave ]
+show status like 'Rpl_semi_sync_slave_status';
+Variable_name Value
+Rpl_semi_sync_slave_status ON
+include/stop_slave.inc
+[ on master ]
+set sql_log_bin=0;
+UNINSTALL PLUGIN rpl_semi_sync_master;
+set sql_log_bin=1;
+SHOW VARIABLES LIKE 'rpl_semi_sync_master_enabled';
+Variable_name Value
+[ on slave ]
+SHOW VARIABLES LIKE 'rpl_semi_sync_slave_enabled';
+Variable_name Value
+rpl_semi_sync_slave_enabled ON
+include/start_slave.inc
+[ on master ]
+insert into t1 values (10);
+[ on slave ]
+SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
+Variable_name Value
+Rpl_semi_sync_slave_status OFF
+#
+# Test non-semi-sync slave connect to semi-sync master
+#
+set sql_log_bin=0;
+INSTALL PLUGIN rpl_semi_sync_master SONAME 'SEMISYNC_MASTER_PLUGIN';
+set global rpl_semi_sync_master_timeout= 5000;
+/* 5s */
+set sql_log_bin=1;
+set global rpl_semi_sync_master_enabled= 1;
+[ on slave ]
+include/stop_slave.inc
+SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
+Variable_name Value
+Rpl_semi_sync_slave_status OFF
+[ uninstall semi-sync slave plugin ]
+UNINSTALL PLUGIN rpl_semi_sync_slave;
+SHOW VARIABLES LIKE 'rpl_semi_sync_slave_enabled';
+Variable_name Value
+include/start_slave.inc
+SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
+Variable_name Value
+include/stop_slave.inc
+[ reinstall semi-sync slave plugin and disable semi-sync ]
+INSTALL PLUGIN rpl_semi_sync_slave SONAME 'SEMISYNC_SLAVE_PLUGIN';
+set global rpl_semi_sync_slave_enabled= 0;
+SHOW VARIABLES LIKE 'rpl_semi_sync_slave_enabled';
+Variable_name Value
+rpl_semi_sync_slave_enabled OFF
+SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
+Variable_name Value
+Rpl_semi_sync_slave_status OFF
+include/start_slave.inc
+SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
+Variable_name Value
+Rpl_semi_sync_slave_status OFF
+#
+# Clean up
+#
+include/stop_slave.inc
+UNINSTALL PLUGIN rpl_semi_sync_slave;
+UNINSTALL PLUGIN rpl_semi_sync_master;
+include/start_slave.inc
+drop table t1;
+drop user rpl@127.0.0.1;
+flush privileges;
diff --git a/mysql-test/suite/rpl/r/rpl_semi_sync_event.result b/mysql-test/suite/rpl/r/rpl_semi_sync_event.result
new file mode 100644
index 00000000000..f3f5aa1559d
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_semi_sync_event.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;
+include/stop_slave.inc
+include/start_slave.inc
+SET GLOBAL event_scheduler = ON;
+CREATE TABLE t1 (i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, f varchar(8)) ENGINE=ENGINE_TYPE;
+INSERT INTO t1 (f) VALUES ('a'),('a'),('a'),('a'),('a');
+INSERT INTO t1 SELECT i+5, f FROM t1;
+INSERT INTO t1 SELECT i+10, f FROM t1;
+CREATE EVENT ev1 ON SCHEDULE EVERY 1 SECOND
+DO INSERT INTO t1 VALUES (SLEEP(5),CONCAT('ev1_',CONNECTION_ID()));
+CREATE EVENT ev2 ON SCHEDULE EVERY 1 SECOND
+DO INSERT INTO t1 VALUES (SLEEP(5),CONCAT('ev2_',CONNECTION_ID()));
+STOP SLAVE IO_THREAD;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 20;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 19;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 18;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 17;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 16;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 15;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 14;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 13;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 12;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 11;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 10;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 9;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 8;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 7;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 6;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 5;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 4;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 3;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 2;
+UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = 1;
+SET GLOBAL event_scheduler = OFF;
+include/stop_slave.inc
+UNINSTALL PLUGIN rpl_semi_sync_slave;
+UNINSTALL PLUGIN rpl_semi_sync_master;
+include/start_slave.inc
+DROP EVENT ev1;
+DROP EVENT ev2;
+DROP TABLE t1;
diff --git a/mysql-test/suite/rpl/r/rpl_server_id_ignore.result b/mysql-test/suite/rpl/r/rpl_server_id_ignore.result
new file mode 100644
index 00000000000..cba6571eb1a
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_server_id_ignore.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;
+master_id: 1
+stop slave;
+*** --replicate-same-server-id and change master option can clash ***
+change master to IGNORE_SERVER_IDS= (2, 1);
+ERROR HY000: The requested server id 2 clashes with the slave startup option --replicate-same-server-id
+*** must be empty due to the error ***
+ignore server id list:
+change master to IGNORE_SERVER_IDS= (10, 100);
+*** must be 10, 100 ***
+ignore server id list: 10, 100
+reset slave;
+*** must be empty due to reset slave ***
+ignore server id list: 10, 100
+change master to IGNORE_SERVER_IDS= (10, 100);
+*** CHANGE MASTER with IGNORE_SERVER_IDS option overrides (does not increment) the previous setup ***
+change master to IGNORE_SERVER_IDS= (5, 1, 4, 3, 1);
+*** must be 1, 3, 4, 5 due to overriding policy ***
+ignore server id list: 1, 3, 4, 5
+*** ignore master (server 1) queries for a while ***
+start slave;
+create table t1 (n int);
+*** must be empty as the event is to be filtered out ***
+show tables;
+Tables_in_test
+*** allowing events from master ***
+stop slave;
+reset slave;
+change master to IGNORE_SERVER_IDS= (10, 100);
+*** the list must remain (10, 100) after reset slave ***
+change master to IGNORE_SERVER_IDS= ();
+*** must be empty due to IGNORE_SERVER_IDS empty list ***
+ignore server id list:
+change master to master_host='127.0.0.1', master_port=MASTER_PORT, master_user='root';
+start slave;
+*** must have caught create table ***
+show tables;
+Tables_in_test
+t1
+drop table t1;
+end of the tests
diff --git a/mysql-test/suite/rpl/r/rpl_show_slave_hosts.result b/mysql-test/suite/rpl/r/rpl_show_slave_hosts.result
new file mode 100644
index 00000000000..9838d8b08a8
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_show_slave_hosts.result
@@ -0,0 +1,17 @@
+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;
+RESET SLAVE;
+CHANGE MASTER TO master_host='127.0.0.1',master_port=MASTER_PORT,master_user='root';
+START SLAVE IO_THREAD;
+SHOW SLAVE HOSTS;
+Server_id Host Port Master_id
+3 slave2 DEFAULT_PORT 1
+2 SLAVE_PORT 1
+STOP SLAVE IO_THREAD;
+SHOW SLAVE HOSTS;
+Server_id Host Port Master_id
+2 SLAVE_PORT 1
diff --git a/mysql-test/suite/rpl/r/rpl_skip_error.result b/mysql-test/suite/rpl/r/rpl_skip_error.result
index d955859f030..7b2bd48515d 100644
--- a/mysql-test/suite/rpl/r/rpl_skip_error.result
+++ b/mysql-test/suite/rpl/r/rpl_skip_error.result
@@ -70,6 +70,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
==== Clean Up ====
drop table t1;
create table t1(a int primary key);
@@ -123,6 +125,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
==== 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..880fc9e8569 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
@@ -49,6 +49,8 @@ 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
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
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..963b4d471dd 100644
--- a/mysql-test/suite/rpl/r/rpl_slave_skip.result
+++ b/mysql-test/suite/rpl/r/rpl_slave_skip.result
@@ -50,7 +50,7 @@ Master_User root
Master_Port MASTER_PORT
Connect_Retry 1
Master_Log_File master-bin.000001
-Read_Master_Log_Pos 1115
+Read_Master_Log_Pos 1116
Relay_Log_File #
Relay_Log_Pos #
Relay_Master_Log_File master-bin.000001
@@ -65,7 +65,7 @@ Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
-Exec_Master_Log_Pos 762
+Exec_Master_Log_Pos 763
Relay_Log_Space #
Until_Condition Master
Until_Log_File master-bin.000001
@@ -82,6 +82,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;
SELECT * FROM t1;
@@ -102,8 +104,10 @@ SET @foo = 12;
INSERT INTO t1 VALUES(@foo, 2*@foo);
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 # User var # # @`foo`=12
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES(@foo, 2*@foo)
+master-bin.000001 # Query # # COMMIT
START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=106;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;
@@ -114,7 +118,7 @@ Master_User root
Master_Port MASTER_PORT
Connect_Retry 1
Master_Log_File master-bin.000001
-Read_Master_Log_Pos 248
+Read_Master_Log_Pos 386
Relay_Log_File #
Relay_Log_Pos #
Relay_Master_Log_File master-bin.000001
@@ -129,7 +133,7 @@ Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
-Exec_Master_Log_Pos 248
+Exec_Master_Log_Pos 386
Relay_Log_Space #
Until_Condition None
Until_Log_File
@@ -146,6 +150,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
**** On Master ****
DROP TABLE t1, t2;
SET SESSION BINLOG_FORMAT=ROW;
diff --git a/mysql-test/suite/rpl/r/rpl_slow_query_log.result b/mysql-test/suite/rpl/r/rpl_slow_query_log.result
new file mode 100644
index 00000000000..fd6a2c5d7c4
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_slow_query_log.result
@@ -0,0 +1,48 @@
+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;
+CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+include/stop_slave.inc
+SET @old_log_output= @@log_output;
+SET GLOBAL log_output= 'TABLE';
+SET @old_long_query_time= @@long_query_time;
+SET GLOBAL long_query_time= 2;
+TRUNCATE mysql.slow_log;
+include/start_slave.inc
+CREATE TABLE t1 (a int, b int);
+INSERT INTO t1 values(1, 1);
+INSERT INTO t1 values(1, sleep(3));
+TRUNCATE mysql.slow_log;
+SELECT 1, sleep(3);
+1 sleep(3)
+1 0
+SELECT 1;
+1
+1
+TRUNCATE mysql.slow_log;
+SET TIMESTAMP= 1;
+SELECT 2, sleep(3);
+2 sleep(3)
+2 0
+SELECT 2;
+2
+2
+TRUNCATE mysql.slow_log;
+SET @old_slow_query_log= @@slow_query_log;
+SET GLOBAL slow_query_log= 'OFF';
+SELECT 3, sleep(3);
+3 sleep(3)
+3 0
+SELECT 3;
+3
+3
+TRUNCATE mysql.slow_log;
+SET GLOBAL slow_query_log= @old_slow_query_log;
+DROP TABLE t1;
+include/stop_slave.inc
+SET GLOBAL long_query_time= @old_long_query_time;
+SET GLOBAL log_output= @old_log_output;
+include/start_slave.inc
diff --git a/mysql-test/suite/rpl/r/rpl_sp.result b/mysql-test/suite/rpl/r/rpl_sp.result
index 7fedaf4c1ef..21910302f3a 100644
--- a/mysql-test/suite/rpl/r/rpl_sp.result
+++ b/mysql-test/suite/rpl/r/rpl_sp.result
@@ -118,6 +118,7 @@ ERROR 23000: Duplicate entry '20' for key 'a'
show warnings;
Level Code Message
Error 1062 Duplicate entry '20' for key 'a'
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
select * from t2;
a
20
@@ -191,14 +192,9 @@ begin
return unix_timestamp();
end|
ERROR HY000: You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
-set @old_log_bin_trust_routine_creators= @@global.log_bin_trust_routine_creators;
set @old_log_bin_trust_function_creators= @@global.log_bin_trust_function_creators;
-set global log_bin_trust_routine_creators=1;
-Warnings:
-Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.6. Please use '@@log_bin_trust_function_creators' instead
set global log_bin_trust_function_creators=0;
set global log_bin_trust_function_creators=1;
-set @old_log_bin_trust_routine_creators= @@global.log_bin_trust_routine_creators;
set @old_log_bin_trust_function_creators= @@global.log_bin_trust_function_creators;
set global log_bin_trust_function_creators=1;
create function fn2()
@@ -270,6 +266,7 @@ end|
do fn1(100);
Warnings:
Error 1062 Duplicate entry '100' for key 'a'
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
select fn1(20);
ERROR 23000: Duplicate entry '20' for key 'a'
select * from t2;
@@ -409,110 +406,154 @@ 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 # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values ( NAME_CONST('b',8))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values (unix_timestamp())
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; delete from t1
+master-bin.000001 # Query # # COMMIT
+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 # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; insert into t2 values(3)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values (15)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; insert into t2 values(3)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `mysqltest1`; alter procedure foo4 sql security invoker
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; insert into t2 values(3)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values (5)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; delete from t2
+master-bin.000001 # Query # # COMMIT
+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 # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; insert into t2 values(20),(20)
+master-bin.000001 # Query # # COMMIT
+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 # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; delete t1,t2 from t1,t2
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; SELECT `mysqltest1`.`fn1`(20)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; insert into t2 values(fn1(21))
+master-bin.000001 # Query # # COMMIT
+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 # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; delete from t1
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values(fn1())
+master-bin.000001 # Query # # COMMIT
+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 # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; delete from t2
+master-bin.000001 # Query # # COMMIT
+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 # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; SELECT `mysqltest1`.`fn1`(100)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; SELECT `mysqltest1`.`fn1`(20)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; delete from t1
+master-bin.000001 # Query # # COMMIT
+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 # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values (1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; delete from t1
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `mysqltest1`; drop trigger trg
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values (1)
+master-bin.000001 # Query # # COMMIT
+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,48 +563,50 @@ 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 # # BEGIN
+master-bin.000001 # Query # # use `test`; insert into t1 (a) values (f1())
+master-bin.000001 # Query # # COMMIT
+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 # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES( NAME_CONST('arg',_latin1'test' COLLATE 'latin1_swedish_ci'))
+master-bin.000001 # Query # # COMMIT
+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 # # BEGIN
+master-bin.000001 # Query # # use `mysqltest2`; insert into t values ( 1 )
+master-bin.000001 # Query # # COMMIT
+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`()
-set @@global.log_bin_trust_routine_creators= @old_log_bin_trust_routine_creators;
-Warnings:
-Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.6. Please use '@@log_bin_trust_function_creators' instead
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `mysqltest`; SELECT `mysqltest2`.`f1`()
+master-bin.000001 # Query # # COMMIT
set @@global.log_bin_trust_function_creators= @old_log_bin_trust_function_creators;
-set @@global.log_bin_trust_routine_creators= @old_log_bin_trust_routine_creators;
-Warnings:
-Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.6. Please use '@@log_bin_trust_function_creators' instead
set @@global.log_bin_trust_function_creators= @old_log_bin_trust_function_creators;
drop database mysqltest;
drop database mysqltest2;
@@ -619,7 +662,7 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
SET TIMESTAMP=t/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -645,15 +688,33 @@ insert into t1 values (unix_timestamp());
end
/*!*/;
SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
insert into t1 values ( NAME_CONST('b',8))
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
insert into t1 values (unix_timestamp())
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
delete from t1
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` PROCEDURE `foo2`()
select * from mysqltest1.t1
/*!*/;
@@ -692,27 +753,63 @@ insert into t1 values (5);
end
/*!*/;
SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
insert into t2 values(3)
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
insert into t1 values (15)
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
insert into t2 values(3)
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
alter procedure foo4 sql security invoker
/*!*/;
SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
insert into t2 values(3)
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
insert into t1 values (5)
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
delete from t2
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
alter table t2 add unique (a)
/*!*/;
SET TIMESTAMP=t/*!*/;
@@ -726,9 +823,15 @@ insert into t2 values(20),(20);
end
/*!*/;
SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
insert into t2 values(20),(20)
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
drop procedure foo4
/*!*/;
SET TIMESTAMP=t/*!*/;
@@ -749,15 +852,33 @@ return x+2;
end
/*!*/;
SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
delete t1,t2 from t1,t2
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
SELECT `mysqltest1`.`fn1`(20)
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
insert into t2 values(fn1(21))
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
drop function fn1
/*!*/;
SET TIMESTAMP=t/*!*/;
@@ -768,12 +889,24 @@ return unix_timestamp();
end
/*!*/;
SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
delete from t1
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
insert into t1 values(fn1())
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` FUNCTION `fn2`() RETURNS int(11)
NO SQL
begin
@@ -788,9 +921,15 @@ return 0;
end
/*!*/;
SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
delete from t2
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
alter table t2 add unique (a)
/*!*/;
SET TIMESTAMP=t/*!*/;
@@ -804,30 +943,66 @@ return 10;
end
/*!*/;
SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
SELECT `mysqltest1`.`fn1`(100)
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
SELECT `mysqltest1`.`fn1`(20)
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
delete from t1
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` trigger trg before insert on t1 for each row set new.a= 10
/*!*/;
SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
insert into t1 values (1)
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
delete from t1
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
drop trigger trg
/*!*/;
SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
insert into t1 values (1)
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` PROCEDURE `foo`()
READS SQL DATA
select * from t1
@@ -867,9 +1042,15 @@ SET TIMESTAMP=t/*!*/;
create table t1 (a int)
/*!*/;
SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
insert into t1 (a) values (f1())
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
drop view v1
/*!*/;
SET TIMESTAMP=t/*!*/;
@@ -889,9 +1070,15 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`(arg VARCHAR(10))
INSERT INTO t1 VALUES(arg)
/*!*/;
SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
INSERT INTO t1 VALUES( NAME_CONST('arg',_latin1'test' COLLATE 'latin1_swedish_ci'))
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
DROP PROCEDURE p1
/*!*/;
SET TIMESTAMP=t/*!*/;
@@ -938,20 +1125,32 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `mysqltest`.`test`()
begin end
/*!*/;
SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
+SET TIMESTAMP=t/*!*/;
insert into t values ( 1 )
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
begin
insert into t values (1);
return 0;
end
/*!*/;
+SET TIMESTAMP=t/*!*/;
+BEGIN
+/*!*/;
use mysqltest/*!*/;
SET TIMESTAMP=t/*!*/;
SELECT `mysqltest2`.`f1`()
/*!*/;
SET TIMESTAMP=t/*!*/;
+COMMIT
+/*!*/;
+SET TIMESTAMP=t/*!*/;
drop database mysqltest
/*!*/;
SET TIMESTAMP=t/*!*/;
diff --git a/mysql-test/suite/rpl/r/rpl_spec_variables.result b/mysql-test/suite/rpl/r/rpl_spec_variables.result
new file mode 100644
index 00000000000..ea2778bf71c
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_spec_variables.result
@@ -0,0 +1,225 @@
+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;
+
+* auto_increment_increment, auto_increment_offset *
+SET @@global.auto_increment_increment=2;
+SET @@session.auto_increment_increment=2;
+SET @@global.auto_increment_offset=10;
+SET @@session.auto_increment_offset=10;
+SET @@global.auto_increment_increment=3;
+SET @@session.auto_increment_increment=3;
+SET @@global.auto_increment_offset=20;
+SET @@session.auto_increment_offset=20;
+CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM;
+INSERT INTO t1 (b) VALUES ('master');
+INSERT INTO t1 (b) VALUES ('master');
+SELECT * FROM t1 ORDER BY a;
+a b
+2 master
+4 master
+CREATE TABLE t2 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM;
+INSERT INTO t1 (b) VALUES ('slave');
+INSERT INTO t1 (b) VALUES ('slave');
+INSERT INTO t2 (b) VALUES ('slave');
+INSERT INTO t2 (b) VALUES ('slave');
+SELECT * FROM t1 ORDER BY a;
+a b
+2 master
+4 master
+7 slave
+10 slave
+SELECT * FROM t2 ORDER BY a;
+a b
+1 slave
+4 slave
+DROP TABLE IF EXISTS t1,t2;
+SET @@global.auto_increment_increment=1;
+SET @@session.auto_increment_increment=1;
+SET @@global.auto_increment_offset=1;
+SET @@session.auto_increment_offset=1;
+SET @@global.auto_increment_increment=1;
+SET @@session.auto_increment_increment=1;
+SET @@global.auto_increment_offset=1;
+SET @@session.auto_increment_offset=1;
+SET auto_increment_increment=1;
+SET auto_increment_offset=1;
+
+* character_set_database, collation_server *
+SET @restore_master_character_set_database=@@global.character_set_database;
+SET @restore_master_collation_server=@@global.collation_server;
+SET @@global.character_set_database=latin1;
+SET @@session.character_set_database=latin1;
+SET @@global.collation_server=latin1_german1_ci;
+SET @@session.collation_server=latin1_german1_ci;
+SET @restore_slave_character_set_database=@@global.character_set_database;
+SET @restore_slave_collation_server=@@global.collation_server;
+SET @@global.character_set_database=utf8;
+SET @@session.character_set_database=utf8;
+SET @@global.collation_server=utf8_bin;
+SET @@session.collation_server=utf8_bin;
+CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) NOT NULL,
+ `b` varchar(10) COLLATE latin1_german1_ci DEFAULT NULL,
+ PRIMARY KEY (`a`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci
+CREATE TABLE t2 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) NOT NULL,
+ `b` varchar(10) COLLATE latin1_german1_ci DEFAULT NULL,
+ PRIMARY KEY (`a`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` int(11) NOT NULL,
+ `b` varchar(10) COLLATE utf8_bin DEFAULT NULL,
+ PRIMARY KEY (`a`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin
+SET @@global.collation_server=latin1_swedish_ci;
+SET @@session.collation_server=latin1_swedish_ci;
+SET @@global.collation_server=latin1_swedish_ci;
+SET @@session.collation_server=latin1_swedish_ci;
+DROP TABLE IF EXISTS t1,t2;
+
+* default_week_format *
+SET @@global.default_week_format=0;
+SET @@session.default_week_format=0;
+SET @@global.default_week_format=1;
+SET @@session.default_week_format=1;
+CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10), c INT) ENGINE=MyISAM;
+INSERT INTO t1 VALUES (1, 'master ', WEEK('2008-01-07'));
+SELECT * FROM t1 ORDER BY a;
+a b c
+1 master 1
+INSERT INTO t1 VALUES (2, 'slave ', WEEK('2008-01-07'));
+SELECT * FROM t1 ORDER BY a;
+a b c
+1 master 1
+2 slave 2
+DROP TABLE t1;
+SET @@global.default_week_format=0;
+SET @@session.default_week_format=0;
+
+* local_infile *
+SET @@global.local_infile=0;
+CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(20), c CHAR(254)) ENGINE=MyISAM;
+LOAD DATA LOCAL INFILE 'FILE' INTO TABLE t1 (b);
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+70
+LOAD DATA LOCAL INFILE 'FILE2' INTO TABLE t1 (b);
+ERROR 42000: The used command is not allowed with this MySQL version
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+70
+SET @@global.local_infile=1;
+DROP TABLE t1;
+
+* max_heap_table_size *
+SET @restore_slave_max_heap_table_size=@@global.max_heap_table_size;
+SET @@global.max_heap_table_size=16384;
+SET @@session.max_heap_table_size=16384;
+CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10), c CHAR(254)) ENGINE=MEMORY;
+SELECT COUNT(*)=2000 FROM t1;
+COUNT(*)=2000
+1
+SELECT COUNT(*)=2000 FROM t1 WHERE b='master' GROUP BY b ORDER BY b;
+COUNT(*)=2000
+1
+SELECT COUNT(*)<2000 AND COUNT(*)>0 FROM t1 WHERE b='slave' GROUP BY b ORDER BY b;
+COUNT(*)<2000 AND COUNT(*)>0
+1
+SELECT COUNT(*)<2000 AND COUNT(*)>0 FROM t2 WHERE b='slave' GROUP BY b ORDER BY b;
+COUNT(*)<2000 AND COUNT(*)>0
+1
+DROP TABLE IF EXISTS t1,t2;
+
+* storage_engine *
+SET @restore_master_storage_engine=@@global.storage_engine;
+SET @@global.storage_engine=InnoDB;
+SET @@session.storage_engine=InnoDB;
+SET @restore_slave_storage_engine=@@global.storage_engine;
+SET @@global.storage_engine=Memory;
+SET @@session.storage_engine=Memory;
+CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10));
+CREATE TABLE t2 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)) ENGINE=InnoDB;
+CREATE TABLE t3 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10));
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) NOT NULL,
+ `b` varchar(10) DEFAULT NULL,
+ PRIMARY KEY (`a`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` int(11) NOT NULL,
+ `b` varchar(10) DEFAULT NULL,
+ PRIMARY KEY (`a`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) NOT NULL,
+ `b` varchar(10) DEFAULT NULL,
+ PRIMARY KEY (`a`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` int(11) NOT NULL,
+ `b` varchar(10) DEFAULT NULL,
+ PRIMARY KEY (`a`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+SHOW CREATE TABLE t3;
+Table Create Table
+t3 CREATE TABLE `t3` (
+ `a` int(11) NOT NULL,
+ `b` varchar(10) DEFAULT NULL,
+ PRIMARY KEY (`a`)
+) ENGINE=MEMORY DEFAULT CHARSET=latin1
+SET @@global.storage_engine=InnoDB;
+SET @@session.storage_engine=InnoDB;
+DROP TABLE IF EXISTS t1,t2,t3;
+
+* sql_mode *
+SET @@global.sql_mode=ANSI;
+SET @@session.sql_mode=ANSI;
+SET @@global.sql_mode=TRADITIONAL;
+SET @@session.sql_mode=TRADITIONAL;
+CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10), c DATE);
+INSERT INTO t1 VALUES (1, 'master', '0000-00-00');
+SELECT * FROM t1 ORDER BY a;
+a b c
+1 master 0000-00-00
+INSERT INTO t1 VALUES (1, 'slave', '0000-00-00');
+ERROR 22007: Incorrect date value: '0000-00-00' for column 'c' at row 1
+SELECT * FROM t1 ORDER BY a;
+a b c
+1 master 0000-00-00
+SET @@global.sql_mode='';
+SET @@session.sql_mode='';
+SET @@global.sql_mode='';
+SET @@session.sql_mode='';
+DROP TABLE t1;
+
+*** clean up ***
+SET @@global.character_set_database=@restore_master_character_set_database;
+SET @@global.collation_server=@restore_master_collation_server;
+SET @@global.storage_engine=@restore_master_storage_engine;
+SET @@global.character_set_database=@restore_slave_character_set_database;
+SET @@global.collation_server=@restore_slave_collation_server;
+SET @@global.max_heap_table_size=@restore_slave_max_heap_table_size;
+SET @@global.storage_engine=@restore_slave_storage_engine;
+
+call mtr.add_suppression("The table 't[12]' is full");
diff --git a/mysql-test/suite/rpl/r/rpl_ssl.result b/mysql-test/suite/rpl/r/rpl_ssl.result
index d188dd353ce..c8e9e1a4911 100644
--- a/mysql-test/suite/rpl/r/rpl_ssl.result
+++ b/mysql-test/suite/rpl/r/rpl_ssl.result
@@ -58,6 +58,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
STOP SLAVE;
select * from t1;
t
@@ -102,6 +104,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
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..de255228aff 100644
--- a/mysql-test/suite/rpl/r/rpl_ssl1.result
+++ b/mysql-test/suite/rpl/r/rpl_ssl1.result
@@ -57,6 +57,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
stop slave;
change master to master_user='root',master_password='', master_ssl=0;
start slave;
@@ -101,6 +103,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
stop slave;
change master to
master_host="localhost",
@@ -155,4 +159,6 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
drop table t1;
diff --git a/mysql-test/suite/rpl/r/rpl_stm_000001.result b/mysql-test/suite/rpl/r/rpl_stm_000001.result
index c2a24cbaa82..ef8bf497ea5 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_000001.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_000001.result
@@ -4,7 +4,7 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
+CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
create table t1 (word char(20) not null);
load data infile '../../std_data/words.dat' into table t1;
load data local infile 'MYSQL_TEST_DIR/std_data/words.dat' into table t1;
diff --git a/mysql-test/suite/rpl/r/rpl_stm_auto_increment_bug33029.result b/mysql-test/suite/rpl/r/rpl_stm_auto_increment_bug33029.result
index 2f6e98d5eec..c28be99f22d 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_auto_increment_bug33029.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_auto_increment_bug33029.result
@@ -4,6 +4,7 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
+CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
DROP TABLE IF EXISTS t1, t2;
DROP PROCEDURE IF EXISTS p1;
DROP PROCEDURE IF EXISTS p2;
@@ -44,32 +45,60 @@ END//
CALL p1();
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 # Intvar # # INSERT_ID=1
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (NULL)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=2
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (NULL)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=3
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (NULL)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=4
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (NULL)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=5
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (NULL)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=6
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (NULL)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=7
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (NULL)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=8
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (NULL)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=9
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (NULL)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=10
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (NULL)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=1
master-bin.000001 # Query # # use `test`; DELETE FROM t1 WHERE id = 1
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=2
master-bin.000001 # Query # # use `test`; DELETE FROM t1 WHERE id = 2
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; DELETE FROM t2 WHERE id = 1
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; DELETE FROM t2 WHERE id = 2
+master-bin.000001 # Query # # COMMIT
# Result on master
SELECT * FROM t1;
id
@@ -100,14 +129,24 @@ DROP TRIGGER tr1;
CALL p2();
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 # Intvar # # INSERT_ID=11
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (NULL)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=3
master-bin.000001 # Query # # use `test`; DELETE FROM t1 WHERE id = f1(3)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=12
master-bin.000001 # Query # # use `test`; DELETE FROM t1 WHERE id = f1(4)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; DELETE FROM t2 WHERE id = 3
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; DELETE FROM t2 WHERE id = 4
+master-bin.000001 # Query # # COMMIT
# Result on master
SELECT * FROM t1;
id
@@ -167,3 +206,4 @@ DROP PROCEDURE IF EXISTS p1;
DROP PROCEDURE IF EXISTS p2;
DROP FUNCTION IF EXISTS f1;
DROP TRIGGER IF EXISTS tr1;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
diff --git a/mysql-test/suite/rpl/r/rpl_stm_binlog_direct.result b/mysql-test/suite/rpl/r/rpl_stm_binlog_direct.result
index 818e383e2f1..e8bd0866a58 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_binlog_direct.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_binlog_direct.result
@@ -138,21 +138,23 @@ Log_name Pos Event_type Server_id End_log_pos Info
-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_1(trans_id, stmt_id) VALUES (7, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (7, 4)
-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (7, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T N C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (7, 4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (7, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> B T N C << -e-e-e-e-e-e-e-e-e-e-e-
@@ -167,20 +169,20 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_5(trans_id, stmt_id) VALUES (8, 4);
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (8, 4)
-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (8, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (8, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (8, 4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (8, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (8, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> B T N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
@@ -197,20 +199,20 @@ SELECT fc_i_nt_5_suc (9, 4);
fc_i_nt_5_suc (9, 4)
fc_i_nt_5_suc
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(9,4)
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (9, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(9,4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T N-func C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(9,4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (9, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(9,4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> B T N-func C << -e-e-e-e-e-e-e-e-e-e-e-
@@ -225,22 +227,22 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
CALL pc_i_nt_5_suc (10, 4);
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1))
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1) + 1)
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (10, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1))
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (10, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> B T N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
@@ -254,21 +256,23 @@ Log_name Pos Event_type Server_id End_log_pos Info
-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_1(trans_id, stmt_id) VALUES (11, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (11, 4)
-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (11, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (11, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (11, 4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (11, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (11, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
@@ -283,20 +287,20 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_5(trans_id, stmt_id) VALUES (12, 4);
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (12, 4)
-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (12, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (12, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (12, 4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (12, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (12, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
@@ -313,20 +317,20 @@ SELECT fc_i_nt_5_suc (13, 4);
fc_i_nt_5_suc (13, 4)
fc_i_nt_5_suc
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(13,4)
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (13, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(13,4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-func C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(13,4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (13, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(13,4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-func C << -e-e-e-e-e-e-e-e-e-e-e-
@@ -341,22 +345,22 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
CALL pc_i_nt_5_suc (14, 4);
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',14), NAME_CONST('in_stmt_id',1))
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',14), NAME_CONST('in_stmt_id',1) + 1)
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (14, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',14), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',14), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',14), NAME_CONST('in_stmt_id',1))
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',14), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (14, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',14), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',14), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
@@ -372,21 +376,23 @@ Log_name Pos Event_type Server_id End_log_pos Info
-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_1(trans_id, stmt_id) VALUES (15, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (15, 4)
-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(15,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (15, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (15, 4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(15,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (15, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N C << -e-e-e-e-e-e-e-e-e-e-e-
@@ -403,20 +409,20 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_5(trans_id, stmt_id) VALUES (16, 4);
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (16, 4)
-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(16,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (16, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (16, 4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(16,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (16, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
@@ -435,20 +441,20 @@ SELECT fc_i_nt_5_suc (17, 4);
fc_i_nt_5_suc (17, 4)
fc_i_nt_5_suc
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(17,4)
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(17,2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(17,4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-func C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(17,4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(17,2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(17,4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-func C << -e-e-e-e-e-e-e-e-e-e-e-
@@ -465,22 +471,22 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
CALL pc_i_nt_5_suc (18, 4);
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',18), NAME_CONST('in_stmt_id',1))
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',18), NAME_CONST('in_stmt_id',1) + 1)
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(18,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',18), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',18), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',18), NAME_CONST('in_stmt_id',1))
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',18), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(18,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',18), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',18), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
@@ -494,8 +500,9 @@ Log_name Pos Event_type Server_id End_log_pos Info
-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_1(trans_id, stmt_id) VALUES (19, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (19, 4)
-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
@@ -503,14 +510,15 @@ Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',19), NAME_CONST('in_stmt_id',1))
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',19), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (19, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (19, 4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',19), NAME_CONST('in_stmt_id',1))
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',19), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (19, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N C << -e-e-e-e-e-e-e-e-e-e-e-
@@ -525,7 +533,6 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_5(trans_id, stmt_id) VALUES (20, 4);
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (20, 4)
-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
@@ -533,14 +540,15 @@ Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',20), NAME_CONST('in_stmt_id',1))
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',20), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (20, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (20, 4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',20), NAME_CONST('in_stmt_id',1))
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',20), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (20, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
@@ -557,7 +565,6 @@ SELECT fc_i_nt_5_suc (21, 4);
fc_i_nt_5_suc (21, 4)
fc_i_nt_5_suc
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(21,4)
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
@@ -565,14 +572,15 @@ Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',21), NAME_CONST('in_stmt_id',1))
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',21), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(21,4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-func C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(21,4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',21), NAME_CONST('in_stmt_id',1))
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',21), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(21,4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-func C << -e-e-e-e-e-e-e-e-e-e-e-
@@ -587,8 +595,6 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
CALL pc_i_nt_5_suc (22, 4);
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',22), NAME_CONST('in_stmt_id',1))
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',22), NAME_CONST('in_stmt_id',1) + 1)
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
@@ -596,15 +602,17 @@ Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',22), NAME_CONST('in_stmt_id',1))
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',22), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',22), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',22), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',22), NAME_CONST('in_stmt_id',1))
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',22), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',22), NAME_CONST('in_stmt_id',1))
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',22), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',22), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',22), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
@@ -630,7 +638,9 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_1(trans_id, stmt_id) VALUES (23, 4);
Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (23, 4)
+master-bin.000001 # Query # # COMMIT
-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
@@ -638,7 +648,9 @@ Log_name Pos Event_type Server_id End_log_pos Info
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B eT N C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (23, 4)
+master-bin.000001 # Query # # COMMIT
-e-e-e-e-e-e-e-e-e-e-e- >> B eT N C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
@@ -653,7 +665,9 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_1(trans_id, stmt_id) VALUES (24, 4);
Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (24, 4)
+master-bin.000001 # Query # # COMMIT
-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
@@ -661,7 +675,9 @@ Log_name Pos Event_type Server_id End_log_pos Info
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B Te N C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (24, 4)
+master-bin.000001 # Query # # COMMIT
-e-e-e-e-e-e-e-e-e-e-e- >> B Te N C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
@@ -703,20 +719,20 @@ Log_name Pos Event_type Server_id End_log_pos Info
INSERT INTO nt_1(trans_id, stmt_id) VALUES (26, 4), (24, 4);
Got one of the listed errors
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (26, 4), (24, 4)
-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (26, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (26, 4), (24, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T Ne C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (26, 4), (24, 4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (26, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (26, 4), (24, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
-e-e-e-e-e-e-e-e-e-e-e- >> B T Ne C << -e-e-e-e-e-e-e-e-e-e-e-
@@ -738,8 +754,9 @@ Log_name Pos Event_type Server_id End_log_pos Info
-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_1(trans_id, stmt_id) VALUES (27, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (27, 4)
-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
@@ -748,13 +765,14 @@ Warning 1196 Some non-transactional changed tables couldn't be rolled back
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (27, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (27, 4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T N R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (27, 4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (27, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (27, 4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> B T N R << -e-e-e-e-e-e-e-e-e-e-e-
@@ -769,7 +787,6 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_5(trans_id, stmt_id) VALUES (28, 4);
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (28, 4)
-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
@@ -778,13 +795,14 @@ Warning 1196 Some non-transactional changed tables couldn't be rolled back
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (28, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (28, 4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (28, 4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (28, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (28, 4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> B T N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
@@ -801,7 +819,6 @@ SELECT fc_i_nt_5_suc (29, 4);
fc_i_nt_5_suc (29, 4)
fc_i_nt_5_suc
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(29,4)
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
@@ -810,13 +827,14 @@ Warning 1196 Some non-transactional changed tables couldn't be rolled back
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (29, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(29,4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T N-func R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(29,4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (29, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(29,4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> B T N-func R << -e-e-e-e-e-e-e-e-e-e-e-
@@ -831,8 +849,6 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
CALL pc_i_nt_5_suc (30, 4);
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1))
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1) + 1)
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
@@ -841,14 +857,16 @@ Warning 1196 Some non-transactional changed tables couldn't be rolled back
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (30, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1))
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (30, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> B T N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
@@ -862,8 +880,9 @@ Log_name Pos Event_type Server_id End_log_pos Info
-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_1(trans_id, stmt_id) VALUES (31, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (31, 4)
-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
@@ -872,13 +891,14 @@ Warning 1196 Some non-transactional changed tables couldn't be rolled back
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (31, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (31, 4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (31, 4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (31, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (31, 4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
@@ -893,7 +913,6 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_5(trans_id, stmt_id) VALUES (32, 4);
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (32, 4)
-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
@@ -902,13 +921,14 @@ Warning 1196 Some non-transactional changed tables couldn't be rolled back
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (32, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (32, 4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (32, 4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (32, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (32, 4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
@@ -925,7 +945,6 @@ SELECT fc_i_nt_5_suc (33, 4);
fc_i_nt_5_suc (33, 4)
fc_i_nt_5_suc
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(33,4)
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
@@ -934,13 +953,14 @@ Warning 1196 Some non-transactional changed tables couldn't be rolled back
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (33, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(33,4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-func R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(33,4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (33, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(33,4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-func R << -e-e-e-e-e-e-e-e-e-e-e-
@@ -955,8 +975,6 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
CALL pc_i_nt_5_suc (34, 4);
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',34), NAME_CONST('in_stmt_id',1))
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',34), NAME_CONST('in_stmt_id',1) + 1)
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
@@ -965,14 +983,16 @@ Warning 1196 Some non-transactional changed tables couldn't be rolled back
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (34, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',34), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',34), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',34), NAME_CONST('in_stmt_id',1))
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',34), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (34, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',34), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',34), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
@@ -988,8 +1008,9 @@ Log_name Pos Event_type Server_id End_log_pos Info
-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_1(trans_id, stmt_id) VALUES (35, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (35, 4)
-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
@@ -998,13 +1019,14 @@ Warning 1196 Some non-transactional changed tables couldn't be rolled back
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(35,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (35, 4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (35, 4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(35,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (35, 4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N R << -e-e-e-e-e-e-e-e-e-e-e-
@@ -1021,7 +1043,6 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_5(trans_id, stmt_id) VALUES (36, 4);
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (36, 4)
-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
@@ -1030,13 +1051,14 @@ Warning 1196 Some non-transactional changed tables couldn't be rolled back
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(36,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (36, 4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (36, 4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(36,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (36, 4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
@@ -1055,7 +1077,6 @@ SELECT fc_i_nt_5_suc (37, 4);
fc_i_nt_5_suc (37, 4)
fc_i_nt_5_suc
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(37,4)
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
@@ -1064,13 +1085,14 @@ Warning 1196 Some non-transactional changed tables couldn't be rolled back
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(37,2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(37,4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-func R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(37,4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(37,2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(37,4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-func R << -e-e-e-e-e-e-e-e-e-e-e-
@@ -1087,8 +1109,6 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
CALL pc_i_nt_5_suc (38, 4);
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',38), NAME_CONST('in_stmt_id',1))
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',38), NAME_CONST('in_stmt_id',1) + 1)
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
@@ -1097,14 +1117,16 @@ Warning 1196 Some non-transactional changed tables couldn't be rolled back
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(38,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',38), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',38), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',38), NAME_CONST('in_stmt_id',1))
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',38), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(38,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',38), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',38), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
@@ -1118,8 +1140,9 @@ Log_name Pos Event_type Server_id End_log_pos Info
-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_1(trans_id, stmt_id) VALUES (39, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (39, 4)
-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
@@ -1129,14 +1152,15 @@ Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',39), NAME_CONST('in_stmt_id',1))
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',39), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (39, 4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (39, 4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',39), NAME_CONST('in_stmt_id',1))
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',39), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (39, 4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N R << -e-e-e-e-e-e-e-e-e-e-e-
@@ -1151,7 +1175,6 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_5(trans_id, stmt_id) VALUES (40, 4);
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (40, 4)
-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
@@ -1161,14 +1184,15 @@ Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1))
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (40, 4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (40, 4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1))
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (40, 4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
@@ -1185,7 +1209,6 @@ SELECT fc_i_nt_5_suc (41, 4);
fc_i_nt_5_suc (41, 4)
fc_i_nt_5_suc
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(41,4)
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
@@ -1195,14 +1218,15 @@ Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',41), NAME_CONST('in_stmt_id',1))
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',41), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(41,4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-func R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(41,4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',41), NAME_CONST('in_stmt_id',1))
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',41), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(41,4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-func R << -e-e-e-e-e-e-e-e-e-e-e-
@@ -1217,8 +1241,6 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
CALL pc_i_nt_5_suc (42, 4);
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',42), NAME_CONST('in_stmt_id',1))
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',42), NAME_CONST('in_stmt_id',1) + 1)
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
@@ -1228,15 +1250,17 @@ Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',42), NAME_CONST('in_stmt_id',1))
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',42), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',42), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',42), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',42), NAME_CONST('in_stmt_id',1))
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',42), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',42), NAME_CONST('in_stmt_id',1))
master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',42), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',42), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',42), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
@@ -1262,7 +1286,9 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_1(trans_id, stmt_id) VALUES (43, 4);
Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (43, 4)
+master-bin.000001 # Query # # COMMIT
-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
@@ -1272,7 +1298,9 @@ Log_name Pos Event_type Server_id End_log_pos Info
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B eT N R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (43, 4)
+master-bin.000001 # Query # # COMMIT
-e-e-e-e-e-e-e-e-e-e-e- >> B eT N R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
@@ -1287,7 +1315,9 @@ Log_name Pos Event_type Server_id End_log_pos Info
-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
INSERT INTO nt_1(trans_id, stmt_id) VALUES (44, 4);
Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (44, 4)
+master-bin.000001 # Query # # COMMIT
-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
@@ -1297,7 +1327,9 @@ Log_name Pos Event_type Server_id End_log_pos Info
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B Te N R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (44, 4)
+master-bin.000001 # Query # # COMMIT
-e-e-e-e-e-e-e-e-e-e-e- >> B Te N R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
@@ -1333,7 +1365,6 @@ Log_name Pos Event_type Server_id End_log_pos Info
INSERT INTO nt_1(trans_id, stmt_id) VALUES (46, 4), (44, 4);
Got one of the listed errors
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (46, 4), (44, 4)
-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
@@ -1342,13 +1373,14 @@ Warning 1196 Some non-transactional changed tables couldn't be rolled back
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (46, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (46, 4), (44, 4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> B T Ne R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (46, 4), (44, 4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (46, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (46, 4), (44, 4)
master-bin.000001 # Query # # ROLLBACK
-e-e-e-e-e-e-e-e-e-e-e- >> B T Ne R << -e-e-e-e-e-e-e-e-e-e-e-
diff --git a/mysql-test/suite/rpl/r/rpl_stm_binlog_max_cache_size.result b/mysql-test/suite/rpl/r/rpl_stm_binlog_max_cache_size.result
new file mode 100644
index 00000000000..3d571f5b6fa
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_stm_binlog_max_cache_size.result
@@ -0,0 +1,158 @@
+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;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+CREATE TABLE t1(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb;
+CREATE TABLE t2(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=MyIsam;
+CREATE TABLE t3(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb;
+########################################################################################
+# 1 - SINGLE STATEMENT
+########################################################################################
+*** Single statement on transactional table ***
+Got one of the listed errors
+*** Single statement on non-transactional table ***
+Got one of the listed errors
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
+START SLAVE SQL_THREAD;
+*** Single statement on both transactional and non-transactional tables. ***
+Got one of the listed errors
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
+START SLAVE SQL_THREAD;
+source include/diff_master_slave.inc;
+########################################################################################
+# 2 - BEGIN - IMPLICIT COMMIT by DDL
+########################################################################################
+TRUNCATE TABLE t1;
+TRUNCATE TABLE t2;
+TRUNCATE TABLE t3;
+BEGIN;
+Got one of the listed errors
+Got one of the listed errors
+Got one of the listed errors
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+BEGIN;
+Got one of the listed errors
+Got one of the listed errors
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+BEGIN;
+Got one of the listed errors
+Got one of the listed errors
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+source include/diff_master_slave.inc;
+########################################################################################
+# 3 - BEGIN - COMMIT
+########################################################################################
+TRUNCATE TABLE t1;
+TRUNCATE TABLE t2;
+TRUNCATE TABLE t3;
+BEGIN;
+Got one of the listed errors
+Got one of the listed errors
+Got one of the listed errors
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+COMMIT;
+source include/diff_master_slave.inc;
+########################################################################################
+# 4 - BEGIN - ROLLBACK
+########################################################################################
+TRUNCATE TABLE t1;
+TRUNCATE TABLE t2;
+TRUNCATE TABLE t3;
+BEGIN;
+Got one of the listed errors
+Got one of the listed errors
+Got one of the listed errors
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+source include/diff_master_slave.inc;
+########################################################################################
+# 5 - PROCEDURE
+########################################################################################
+TRUNCATE TABLE t1;
+TRUNCATE TABLE t2;
+TRUNCATE TABLE t3;
+CREATE PROCEDURE p1(pd VARCHAR(30000))
+BEGIN
+INSERT INTO t1 (a, data) VALUES (1, pd);
+INSERT INTO t1 (a, data) VALUES (2, pd);
+INSERT INTO t1 (a, data) VALUES (3, pd);
+INSERT INTO t1 (a, data) VALUES (4, pd);
+INSERT INTO t1 (a, data) VALUES (5, 's');
+END//
+TRUNCATE TABLE t1;
+TRUNCATE TABLE t1;
+BEGIN;
+Got one of the listed errors
+COMMIT;
+TRUNCATE TABLE t1;
+BEGIN;
+Got one of the listed errors
+ROLLBACK;
+source include/diff_master_slave.inc;
+########################################################################################
+# 6 - XID
+########################################################################################
+TRUNCATE TABLE t1;
+TRUNCATE TABLE t2;
+TRUNCATE TABLE t3;
+BEGIN;
+Got one of the listed errors
+Got one of the listed errors
+Got one of the listed errors
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+ROLLBACK TO sv;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+COMMIT;
+source include/diff_master_slave.inc;
+########################################################################################
+# 7 - NON-TRANS TABLE
+########################################################################################
+TRUNCATE TABLE t1;
+TRUNCATE TABLE t2;
+TRUNCATE TABLE t3;
+BEGIN;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Got one of the listed errors
+Got one of the listed errors
+Got one of the listed errors
+Got one of the listed errors
+Got one of the listed errors
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+COMMIT;
+BEGIN;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Got one of the listed errors
+Got one of the listed errors
+COMMIT;
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
+START SLAVE SQL_THREAD;
+source include/diff_master_slave.inc;
+########################################################################################
+# CLEAN
+########################################################################################
+DROP TABLE t1;
+DROP TABLE t2;
+DROP TABLE t3;
+DROP TABLE IF EXISTS t4;
+DROP TABLE IF EXISTS t5;
+DROP TABLE IF EXISTS t6;
+Warnings:
+Note 1051 Unknown table 't6'
+DROP PROCEDURE p1;
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 74031af1dde..e999f9c28f0 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,16 @@ 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 656 ;
+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 656 ;
+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 1 # use `test`; flush tables
+master-bin.000001 # Query # # use `test`; rename table t1 to t5, t2 to t1
+master-bin.000001 # Query # # use `test`; flush tables
select * from t3;
a
stop slave;
diff --git a/mysql-test/suite/rpl/r/rpl_stm_found_rows.result b/mysql-test/suite/rpl/r/rpl_stm_found_rows.result
new file mode 100644
index 00000000000..2388c4e4b7c
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_stm_found_rows.result
@@ -0,0 +1,107 @@
+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;
+==== Initialize ====
+**** On Master ****
+CREATE TABLE t1 (a INT);
+CREATE TABLE logtbl (sect INT, test INT, count INT);
+INSERT INTO t1 VALUES (1),(2),(3);
+INSERT INTO t1 SELECT 2*a+3 FROM t1;
+INSERT INTO t1 SELECT 2*a+3 FROM t1;
+INSERT INTO t1 SELECT 2*a+3 FROM t1;
+INSERT INTO t1 SELECT 2*a+3 FROM t1;
+INSERT INTO t1 SELECT 2*a+3 FROM t1;
+INSERT INTO t1 SELECT 2*a+3 FROM t1;
+==== Simple test ====
+SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
+a
+7
+SELECT FOUND_ROWS() INTO @a;
+INSERT INTO logtbl VALUES(1,1,@a);
+SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a < 5 ORDER BY a LIMIT 1;
+a
+1
+SELECT FOUND_ROWS() INTO @a;
+INSERT INTO logtbl VALUES(1,2,@a);
+SELECT * FROM logtbl WHERE sect = 1 ORDER BY sect,test;
+sect test count
+1 1 183
+1 2 3
+**** On Slave ****
+SELECT * FROM logtbl WHERE sect = 1 ORDER BY sect,test;
+sect test count
+1 1 183
+1 2 3
+==== Stored procedure ====
+**** On Master ****
+CREATE PROCEDURE calc_and_log(sect INT, test INT) BEGIN
+DECLARE cnt INT;
+SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a < 5 ORDER BY a LIMIT 1;
+SELECT FOUND_ROWS() INTO cnt;
+INSERT INTO logtbl VALUES(sect,test,cnt);
+SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
+SELECT FOUND_ROWS() INTO cnt;
+INSERT INTO logtbl VALUES(sect,test+1,cnt);
+END $$
+CALL calc_and_log(2,1);
+a
+1
+a
+7
+CREATE PROCEDURE just_log(sect INT, test INT, found_rows INT) BEGIN
+INSERT INTO logtbl VALUES (sect,test,found_rows);
+END $$
+SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
+a
+7
+SELECT FOUND_ROWS() INTO @found_rows;
+CALL just_log(2,3,@found_rows);
+SELECT * FROM logtbl WHERE sect = 2 ORDER BY sect,test;
+sect test count
+2 1 3
+2 2 183
+2 3 183
+**** On Slave ****
+SELECT * FROM logtbl WHERE sect = 2 ORDER BY sect,test;
+sect test count
+2 1 3
+2 2 183
+2 3 183
+==== Stored functions ====
+**** On Master ****
+CREATE FUNCTION log_rows(sect INT, test INT, found_rows INT)
+RETURNS INT
+BEGIN
+INSERT INTO logtbl VALUES(sect,test,found_rows);
+RETURN found_rows;
+END $$
+SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
+a
+7
+SELECT FOUND_ROWS() INTO @found_rows;
+SELECT log_rows(3,1,@found_rows), log_rows(3,2,@found_rows);
+log_rows(3,1,@found_rows) log_rows(3,2,@found_rows)
+183 183
+SELECT * FROM logtbl WHERE sect = 3 ORDER BY sect,test;
+sect test count
+3 1 183
+3 2 183
+**** On Slave ****
+SELECT * FROM logtbl WHERE sect = 3 ORDER BY sect,test;
+sect test count
+3 1 183
+3 2 183
+==== Cleanup ====
+**** On Master ****
+DROP TABLE t1, logtbl;
+DROP PROCEDURE just_log;
+DROP PROCEDURE calc_and_log;
+DROP FUNCTION log_rows;
+**** Resetting master and slave ****
+include/stop_slave.inc
+RESET SLAVE;
+RESET MASTER;
+include/start_slave.inc
diff --git a/mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result b/mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result
new file mode 100644
index 00000000000..8e245db6c3c
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result
@@ -0,0 +1,532 @@
+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;
+#########################################################################
+# CONFIGURATION
+#########################################################################
+CREATE TABLE tt_1 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = Innodb;
+CREATE TABLE tt_2 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = Innodb;
+CREATE TABLE nt_1 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = MyIsam;
+INSERT INTO tt_1(ddl_case) VALUES(0);
+INSERT INTO tt_2(ddl_case) VALUES(0);
+#########################################################################
+# CHECK IMPLICT COMMIT
+#########################################################################
+SET AUTOCOMMIT= 0;
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (41);
+LOAD INDEX INTO CACHE nt_1 IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.nt_1 preload_keys status OK
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (41)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (40);
+LOAD INDEX INTO CACHE tt_1, tt_2 IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.tt_1 preload_keys note The storage engine for the table doesn't support preload_keys
+test.tt_2 preload_keys note The storage engine for the table doesn't support preload_keys
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (40)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (39);
+ANALYZE TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 analyze status Table is already up to date
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (39)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ANALYZE TABLE nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (38);
+CHECK TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 check status OK
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (38)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (37);
+OPTIMIZE TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 optimize status Table is already up to date
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (37)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; OPTIMIZE TABLE nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (36);
+REPAIR TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 repair status OK
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (36)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; REPAIR TABLE nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (35);
+LOCK TABLES tt_1 WRITE;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (35)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (34);
+UNLOCK TABLES;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (34)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (33);
+CREATE USER 'user'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (33)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE USER 'user'@'localhost'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (32);
+GRANT ALL ON *.* TO 'user'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (32)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; GRANT ALL ON *.* TO 'user'@'localhost'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (31);
+SET PASSWORD FOR 'user'@'localhost' = PASSWORD('newpass');
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (31)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; SET PASSWORD FOR 'user'@'localhost'='*D8DECEC305209EEFEC43008E1D420E1AA06B19E0'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (30);
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (30)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'localhost'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (29);
+RENAME USER 'user'@'localhost' TO 'user_new'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (29)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; RENAME USER 'user'@'localhost' TO 'user_new'@'localhost'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (28);
+DROP USER 'user_new'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (28)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP USER 'user_new'@'localhost'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (27);
+CREATE EVENT evt ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO SELECT * FROM tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (27)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` EVENT evt ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (26);
+ALTER EVENT evt COMMENT 'evt';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (26)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ALTER EVENT evt COMMENT 'evt'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (25);
+DROP EVENT evt;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (25)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP EVENT evt
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (24);
+CREATE TRIGGER tr AFTER INSERT ON tt_1 FOR EACH ROW UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (24)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` TRIGGER tr AFTER INSERT ON tt_1 FOR EACH ROW UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (23);
+DROP TRIGGER tr;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (23)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP TRIGGER tr
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (22);
+CREATE FUNCTION fc () RETURNS VARCHAR(64) RETURN "fc";
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (22)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `fc`() RETURNS varchar(64) CHARSET latin1
+RETURN "fc"
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (21);
+ALTER FUNCTION fc COMMENT 'fc';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (21)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ALTER FUNCTION fc COMMENT 'fc'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (20);
+DROP FUNCTION fc;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (20)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP FUNCTION fc
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (19);
+CREATE PROCEDURE pc () UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (19)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `pc`()
+UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (18);
+ALTER PROCEDURE pc COMMENT 'pc';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (18)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ALTER PROCEDURE pc COMMENT 'pc'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (17);
+DROP PROCEDURE pc;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (17)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP PROCEDURE pc
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (16);
+CREATE VIEW v AS SELECT * FROM tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (16)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (15);
+ALTER VIEW v AS SELECT * FROM tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (15)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ALTER ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (14);
+DROP VIEW v;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (14)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP VIEW v
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (13);
+CREATE INDEX ix ON tt_1(ddl_case);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (13)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE INDEX ix ON tt_1(ddl_case)
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (12);
+DROP INDEX ix ON tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (12)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP INDEX ix ON tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (11);
+CREATE TEMPORARY TABLE tt_xx (a int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (11)
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx (a int)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (10);
+ALTER TABLE tt_xx ADD COLUMN (b int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (10)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ALTER TABLE tt_xx ADD COLUMN (b int)
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (9);
+ALTER TABLE tt_xx RENAME new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (9)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ALTER TABLE tt_xx RENAME new_tt_xx
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (8);
+DROP TEMPORARY TABLE IF EXISTS new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (8)
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS new_tt_xx
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (7);
+CREATE TABLE tt_xx (a int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (7)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE TABLE tt_xx (a int)
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (6);
+ALTER TABLE tt_xx ADD COLUMN (b int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; ALTER TABLE tt_xx ADD COLUMN (b int)
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (5);
+RENAME TABLE tt_xx TO new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (5)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; RENAME TABLE tt_xx TO new_tt_xx
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (4);
+TRUNCATE TABLE new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE new_tt_xx
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (3);
+DROP TABLE IF EXISTS tt_xx, new_tt_xx;
+Warnings:
+Note 1051 Unknown table 'tt_xx'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (3)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx, new_tt_xx
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (2);
+CREATE DATABASE db;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # CREATE DATABASE db
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (1);
+DROP DATABASE IF EXISTS db;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # DROP DATABASE IF EXISTS db
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# CHECK CONSISTENCY
+###################################################################################
+Comparing tables master:test.tt_1 and slave:test.tt_1
+###################################################################################
+# CLEAN
+###################################################################################
+DROP TABLE tt_1;
+DROP TABLE tt_2;
+DROP TABLE nt_1;
diff --git a/mysql-test/suite/rpl/r/rpl_innodb.result b/mysql-test/suite/rpl/r/rpl_stm_innodb.result
index bf6c3cb8c86..457ad3340b4 100644
--- a/mysql-test/suite/rpl/r/rpl_innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_innodb.result
@@ -29,12 +29,12 @@ REPLACE INTO TABLE t4
(name,number);
SELECT * FROM t4;
id name number
-3 XXX 12345
-4 XXY 12345
+4 XXX 12345
+5 XXY 12345
SELECT * FROM t4;
id name number
-3 XXX 12345
-4 XXY 12345
+4 XXX 12345
+5 XXY 12345
FLUSH LOGS;
FLUSH LOGS;
DROP DATABASE IF EXISTS mysqltest1;
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 5ca0ea2b780..1bef1c89ec7 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result
@@ -4,8 +4,6 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-set @old_global_binlog_format = @@global.binlog_format;
-set @@global.binlog_format = statement;
CREATE SCHEMA IF NOT EXISTS mysqlslap;
USE mysqlslap;
select @@global.binlog_format;
@@ -22,6 +20,7 @@ COUNT(*)
5000
truncate table t1;
insert delayed into t1 values(10, "my name");
+flush table t1;
insert delayed into t1 values(10, "is Bond"), (20, "James Bond");
ERROR 23000: Duplicate entry '10' for key 'PRIMARY'
flush table t1;
@@ -54,7 +53,7 @@ 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 BEGIN
x x x x x use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1)
select * from t1;
a
@@ -62,73 +61,7 @@ a
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
-drop table t1;
-FLUSH LOGS;
-FLUSH LOGS;
-End of 5.0 tests
-set @@global.binlog_format = mixed;
-CREATE SCHEMA IF NOT EXISTS mysqlslap;
-USE mysqlslap;
-select @@global.binlog_format;
-@@global.binlog_format
-MIXED
-CREATE TABLE t1 (id INT primary key auto_increment, name VARCHAR(64));
-FLUSH TABLE t1;
-SELECT COUNT(*) FROM t1;
-COUNT(*)
-5000
-use mysqlslap;
-SELECT COUNT(*) FROM t1;
-COUNT(*)
-5000
-truncate table t1;
-insert delayed into t1 values(10, "my name");
-insert delayed into t1 values(10, "is Bond"), (20, "James Bond");
-flush table t1;
-select * from t1;
-id name
-10 my name
-20 James Bond
-select * from t1;
-id name
-10 my name
-20 James Bond
-delete from t1 where id!=10;
-insert delayed into t1 values(20, "is Bond"), (10, "James Bond");
-flush table t1;
-select * from t1;
-id name
-10 my name
-20 is Bond
-select * from t1;
-id name
-10 my name
-20 is Bond
-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 BEGIN
x x x x x use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1)
select * from t1;
a
@@ -137,4 +70,3 @@ drop table t1;
FLUSH LOGS;
FLUSH LOGS;
End of 5.0 tests
-set @@global.binlog_format = @old_global_binlog_format;
diff --git a/mysql-test/suite/rpl/r/rpl_loaddata_concurrent.result b/mysql-test/suite/rpl/r/rpl_stm_loaddata_concurrent.result
index 126cc07f45f..e204d67181a 100644
--- a/mysql-test/suite/rpl/r/rpl_loaddata_concurrent.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_loaddata_concurrent.result
@@ -1,13 +1,18 @@
+RESET MASTER;
CREATE TABLE t1 (c1 char(50));
LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE t1;
LOAD DATA CONCURRENT INFILE '../../std_data/words.dat' INTO TABLE t1;
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 char(50))
+master-bin.000001 # Query # # BEGIN
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' (`c1`) ;file_id=#
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA CONCURRENT INFILE '../../std_data/words.dat' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`c1`) ;file_id=#
+master-bin.000001 # Query # # COMMIT
DROP TABLE t1;
stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
diff --git a/mysql-test/suite/rpl/r/rpl_stm_loadfile.result b/mysql-test/suite/rpl/r/rpl_stm_loadfile.result
index ca76695f4d4..1dd0805f4d3 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_loadfile.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_loadfile.result
@@ -10,15 +10,13 @@ CREATE TABLE test.t1 (a INT, blob_column LONGBLOB, PRIMARY KEY(a));
INSERT INTO test.t1 VALUES(1,'test');
UPDATE test.t1 SET blob_column=LOAD_FILE('../../std_data/words2.dat') WHERE a=1;
Warnings:
-Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
create procedure test.p1()
begin
INSERT INTO test.t1 VALUES(2,'test');
UPDATE test.t1 SET blob_column=LOAD_FILE('../../std_data/words2.dat') WHERE a=2;
end|
CALL test.p1();
-Warnings:
-Note 1592 Statement may not be safe to log in statement format.
SELECT * FROM test.t1 ORDER BY blob_column;
a blob_column
1 abase
diff --git a/mysql-test/suite/rpl/r/rpl_stm_log.result b/mysql-test/suite/rpl/r/rpl_stm_log.result
index 47556a33e97..17134b1f02f 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_log.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_log.result
@@ -20,22 +20,29 @@ show binlog events;
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 # Intvar 1 # INSERT_ID=1
master-bin.000001 # Query 1 # use `test`; insert into t1 values (NULL)
+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 # 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 1 # COMMIT
+show binlog events from 107 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;
+show binlog events from 107 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 1 # BEGIN
+show binlog events from 107 limit 1,4;
Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query 1 # BEGIN
+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 # COMMIT
flush logs;
create table t3 (a int)ENGINE=MyISAM;
select * from t1 order by 1 asc;
@@ -188,19 +195,25 @@ insert into t2 values (1);
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(n int not null auto_increment primary key)ENGINE=MyISAM
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=1
master-bin.000001 # Query # # use `test`; insert into t1 values (NULL)
+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 # 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 # Query # # COMMIT
master-bin.000001 # Rotate # # master-bin.000002;pos=4
show binlog events in 'master-bin.000002';
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 # Query 1 # use `test`; insert into t2 values (1)
+master-bin.000002 # Query 1 # COMMIT
show binary logs;
Log_name File_size
master-bin.000001 #
@@ -213,19 +226,25 @@ show binlog events in 'slave-bin.000001' from 4;
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 # Intvar 1 # INSERT_ID=1
slave-bin.000001 # Query 1 # use `test`; insert into t1 values (NULL)
+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 # 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 # 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;
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 # Query 1 # use `test`; insert into t2 values (1)
+slave-bin.000002 # Query 1 # COMMIT
SHOW SLAVE STATUS;
Slave_IO_State #
Master_Host 127.0.0.1
@@ -233,7 +252,7 @@ Master_User root
Master_Port MASTER_PORT
Connect_Retry 1
Master_Log_File master-bin.000002
-Read_Master_Log_Pos 392
+Read_Master_Log_Pos #
Relay_Log_File #
Relay_Log_Pos #
Relay_Master_Log_File master-bin.000002
@@ -248,7 +267,7 @@ Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
-Exec_Master_Log_Pos 392
+Exec_Master_Log_Pos #
Relay_Log_Space #
Until_Condition None
Until_Log_File
@@ -265,6 +284,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
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;
@@ -283,11 +304,15 @@ insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id());
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 auto_increment primary key, b int)
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=1
master-bin.000001 # Query # # use `test`; insert into t1 values (NULL, 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # LAST_INSERT_ID=1
master-bin.000001 # Intvar # # INSERT_ID=5
master-bin.000001 # Query # # use `test`; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id())
+master-bin.000001 # Query # # COMMIT
select * from t1;
a b
1 1
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..a21bec6ae55 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
@@ -17,6 +17,8 @@ reset slave;
set @my_max_binlog_size= @@global.max_binlog_size;
set global max_binlog_size=8192;
set global max_relay_log_size=8192-1;
+Warnings:
+Warning 1292 Truncated incorrect max_relay_log_size value: '8191'
select @@global.max_relay_log_size;
@@global.max_relay_log_size
4096
@@ -60,6 +62,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
#
# Test 2
#
@@ -108,6 +112,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
#
# Test 3: max_relay_log_size = 0
#
@@ -156,6 +162,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
#
# Test 4: Tests below are mainly to ensure that we have not coded with wrong assumptions
#
@@ -201,6 +209,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
#
# Test 5
#
@@ -247,6 +257,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
#
# Test 6: one more rotation, to be sure Relay_Log_Space is correctly updated
#
@@ -291,6 +303,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
flush logs;
show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
diff --git a/mysql-test/suite/rpl/r/rpl_stm_mix_show_relaylog_events.result b/mysql-test/suite/rpl/r/rpl_stm_mix_show_relaylog_events.result
new file mode 100644
index 00000000000..761ad7f42d4
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_stm_mix_show_relaylog_events.result
@@ -0,0 +1,234 @@
+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 (a INT);
+INSERT INTO t1 VALUES (1);
+INSERT INTO t1 VALUES (2);
+INSERT INTO t1 VALUES (3);
+INSERT INTO t1 VALUES (4);
+INSERT INTO t1 VALUES (5);
+INSERT INTO t1 VALUES (6);
+[MASTER] ********* SOW BINLOG EVENTS IN ... *********
+show binlog events in 'master-bin.000001' 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)
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (3)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (4)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (5)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (6)
+master-bin.000001 # Query # # COMMIT
+[MASTER] ********* SOW BINLOG EVENTS *********
+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)
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (3)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (4)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (5)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (6)
+master-bin.000001 # Query # # COMMIT
+[MASTER] ********* SOW BINLOG EVENTS ... LIMIT rows *********
+show binlog events from <binlog_start> limit 3;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT)
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1)
+[MASTER] ********* SOW BINLOG EVENTS ... LIMIT offset,rows *********
+show binlog events from <binlog_start> limit 1, 4;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+[SLAVE] ********* SOW BINLOG EVENTS IN ... *********
+show binlog events in 'slave-bin.000001' 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)
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1)
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (2)
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (3)
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (4)
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (5)
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (6)
+slave-bin.000001 # Query # # COMMIT
+[SLAVE] ********* SOW 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)
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1)
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (2)
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (3)
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (4)
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (5)
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (6)
+slave-bin.000001 # Query # # COMMIT
+[SLAVE] ********* SOW BINLOG EVENTS ... LIMIT rows *********
+show binlog events from <binlog_start> limit 3;
+Log_name Pos Event_type Server_id End_log_pos Info
+slave-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT)
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1)
+[SLAVE] ********* SOW BINLOG EVENTS ... LIMIT offset,rows *********
+show binlog events from <binlog_start> limit 1, 4;
+Log_name Pos Event_type Server_id End_log_pos Info
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1)
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # BEGIN
+[SLAVE] ********* SOW RELAYLOG EVENTS IN ... *********
+show relaylog events in 'slave-relay-bin.000003' from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+slave-relay-bin.000003 # Rotate # # master-bin.000001;pos=4
+slave-relay-bin.000003 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
+slave-relay-bin.000003 # Query # # use `test`; CREATE TABLE t1 (a INT)
+slave-relay-bin.000003 # Query # # BEGIN
+slave-relay-bin.000003 # Query # # use `test`; INSERT INTO t1 VALUES (1)
+slave-relay-bin.000003 # Query # # COMMIT
+slave-relay-bin.000003 # Query # # BEGIN
+slave-relay-bin.000003 # Query # # use `test`; INSERT INTO t1 VALUES (2)
+slave-relay-bin.000003 # Query # # COMMIT
+slave-relay-bin.000003 # Query # # BEGIN
+slave-relay-bin.000003 # Query # # use `test`; INSERT INTO t1 VALUES (3)
+slave-relay-bin.000003 # Query # # COMMIT
+slave-relay-bin.000003 # Query # # BEGIN
+slave-relay-bin.000003 # Query # # use `test`; INSERT INTO t1 VALUES (4)
+slave-relay-bin.000003 # Query # # COMMIT
+slave-relay-bin.000003 # Query # # BEGIN
+slave-relay-bin.000003 # Query # # use `test`; INSERT INTO t1 VALUES (5)
+slave-relay-bin.000003 # Query # # COMMIT
+slave-relay-bin.000003 # Query # # BEGIN
+slave-relay-bin.000003 # Query # # use `test`; INSERT INTO t1 VALUES (6)
+slave-relay-bin.000003 # Query # # COMMIT
+[SLAVE] ********* SOW RELAYLOG EVENTS *********
+show relaylog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+slave-relay-bin.000002 # Rotate # # slave-relay-bin.000003;pos=4
+[MASTER] ********* SOW RELAYLOG EVENTS ... LIMIT rows *********
+show relaylog events in 'slave-relay-bin.000003' from <binlog_start> limit 3;
+Log_name Pos Event_type Server_id End_log_pos Info
+slave-relay-bin.000003 # Rotate # # master-bin.000001;pos=4
+slave-relay-bin.000003 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
+slave-relay-bin.000003 # Query # # use `test`; CREATE TABLE t1 (a INT)
+[MASTER] ********* SOW RELAYLOG EVENTS ... LIMIT offset,rows *********
+show relaylog events in 'slave-relay-bin.000003' from <binlog_start> limit 1, 3;
+Log_name Pos Event_type Server_id End_log_pos Info
+slave-relay-bin.000003 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
+slave-relay-bin.000003 # Query # # use `test`; CREATE TABLE t1 (a INT)
+slave-relay-bin.000003 # Query # # BEGIN
+FLUSH LOGS;
+FLUSH LOGS;
+DROP TABLE t1;
+[MASTER] ********* SOW BINLOG EVENTS IN ... *********
+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 # # use `test`; DROP TABLE t1
+[MASTER] ********* SOW BINLOG EVENTS *********
+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)
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (3)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (4)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (5)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (6)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Rotate # # master-bin.000002;pos=4
+[SLAVE] ********* SOW BINLOG EVENTS IN ... *********
+show binlog events in 'slave-bin.000002' from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+slave-bin.000002 # Query # # use `test`; DROP TABLE t1
+[SLAVE] ********* SOW 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)
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1)
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (2)
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (3)
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (4)
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (5)
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (6)
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Rotate # # slave-bin.000002;pos=4
+[SLAVE] ********* SOW RELAYLOG EVENTS IN ... *********
+show relaylog events in 'slave-relay-bin.000005' from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+slave-relay-bin.000005 # Rotate # # master-bin.000002;pos=4
+slave-relay-bin.000005 # Rotate # # slave-relay-bin.000006;pos=4
+[SLAVE] ********* SOW RELAYLOG EVENTS *********
+show relaylog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+slave-relay-bin.000005 # Rotate # # master-bin.000002;pos=4
+slave-relay-bin.000005 # Rotate # # slave-relay-bin.000006;pos=4
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..f393ac5634f 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_mixing_engines.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_mixing_engines.result
@@ -4,867 +4,11037 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-###################################################################################
-# CONFIGURATION
-###################################################################################
+#########################################################################
+# CONFIGURATION
+#########################################################################
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+SET @commands= 'configure';
SET SQL_LOG_BIN=0;
-CREATE TABLE nt_1 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
-CREATE TABLE nt_2 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
-CREATE TABLE nt_3 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
-CREATE TABLE nt_4 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
-CREATE TABLE tt_1 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
-CREATE TABLE tt_2 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
-CREATE TABLE tt_3 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
-CREATE TABLE tt_4 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
+CREATE TABLE nt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE tt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
SET SQL_LOG_BIN=1;
SET SQL_LOG_BIN=0;
-CREATE TABLE nt_1 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
-CREATE TABLE nt_2 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
-CREATE TABLE nt_3 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
-CREATE TABLE nt_4 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
-CREATE TABLE tt_1 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
-CREATE TABLE tt_2 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
-CREATE TABLE tt_3 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
-CREATE TABLE tt_4 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
+CREATE TABLE nt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE nt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
+CREATE TABLE tt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
+CREATE TABLE tt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = Innodb;
SET SQL_LOG_BIN=1;
-CREATE FUNCTION f1 () RETURNS VARCHAR(64)
+INSERT INTO nt_1(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO nt_2(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO nt_3(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO nt_4(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO nt_5(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO nt_6(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO tt_1(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO tt_2(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO tt_3(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO tt_4(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO tt_5(trans_id, stmt_id) VALUES(1,1);
+INSERT INTO tt_6(trans_id, stmt_id) VALUES(1,1);
+CREATE PROCEDURE pc_i_tt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER)
BEGIN
-RETURN "Testing...";
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1);
END|
-CREATE FUNCTION f2 () RETURNS VARCHAR(64)
+CREATE PROCEDURE pc_i_nt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER)
BEGIN
-RETURN f1();
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1);
END|
-CREATE PROCEDURE pc_i_tt_3 (IN x INT, IN y VARCHAR(64))
+CREATE FUNCTION fc_i_tt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64)
BEGIN
-INSERT INTO tt_3 VALUES (y,x,x);
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1);
+RETURN "fc_i_tt_5_suc";
END|
-CREATE TRIGGER tr_i_tt_3_to_nt_3 BEFORE INSERT ON tt_3 FOR EACH ROW
+CREATE FUNCTION fc_i_nt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64)
BEGIN
-INSERT INTO nt_3 VALUES (NEW.a, NEW.b, NEW.c);
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1);
+RETURN "fc_i_nt_5_suc";
END|
-CREATE TRIGGER tr_i_nt_4_to_tt_4 BEFORE INSERT ON nt_4 FOR EACH ROW
+CREATE TRIGGER tr_i_tt_3_to_nt_3 AFTER INSERT ON tt_3 FOR EACH ROW
BEGIN
-INSERT INTO tt_4 VALUES (NEW.a, NEW.b, NEW.c);
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM nt_3 WHERE trans_id= NEW.trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id;
+INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
+INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
END|
-###################################################################################
-# MIXING TRANSACTIONAL and NON-TRANSACTIONAL TABLES
-###################################################################################
+CREATE TRIGGER tr_i_nt_4_to_tt_4 AFTER INSERT ON nt_4 FOR EACH ROW
+BEGIN
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM tt_4 WHERE trans_id= NEW.trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id;
+INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
+INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
+END|
+CREATE TRIGGER tr_i_tt_5_to_tt_6 AFTER INSERT ON tt_5 FOR EACH ROW
+BEGIN
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM tt_6 WHERE trans_id= NEW.trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id, 1), 1) INTO in_stmt_id;
+INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
+INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
+END|
+CREATE TRIGGER tr_i_nt_5_to_nt_6 AFTER INSERT ON nt_5 FOR EACH ROW
+BEGIN
+DECLARE in_stmt_id INTEGER;
+SELECT max(stmt_id) INTO in_stmt_id FROM nt_6 WHERE trans_id= NEW.trans_id;
+SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id;
+INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
+INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
+END|
+SET @commands= '';
+#########################################################################
+# 1 - MIXING TRANSACTIONAL and NON-TRANSACTIONAL TABLES
+#########################################################################
+
+
+
+
+#
+#1) Generates in the binlog what follows:
+# --> STMT "B T C" entries, format S.
+# --> ROW "B T C" entries, format R.
+# --> MIXED "B T C" entries, format S.
+#
+SET @commands= 'T';
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (8, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (8, 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (8, 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (9, 1);
+fc_i_tt_5_suc (9, 1)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(9,1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(9,1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (10, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#1.e) Generates in the binlog what follows:
+# --> STMT empty.
+# --> ROW empty.
+# --> MIXED empty.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (12, 1), (7, 1);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (13, 1), (10, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) VALUES (14, 1, ''), (7, 1, fc_i_tt_5_suc (14, 1));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#2) Generates in the binlog what follows:
+# --> STMT "B N C" entry, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format S.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (15, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (15, 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (15, 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (16, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (16, 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (16, 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (17, 1);
+fc_i_nt_5_suc (17, 1)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(17,1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(17,1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (18, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',18), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',18), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',18), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',18), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
#
-#1) "B T T C" generates in binlog the "B T T C" entries.
+#2.e) Generates in the binlog what follows if a N-table is changed:
+# --> STMT "B N C" entry, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format S.
#
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (15, 1);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (20, 1), (15, 1);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (20, 1), (15, 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (20, 1), (15, 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (21, 1), (18, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (21, 1), (18, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (21, 1), (18, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (22, 1, ''), (20, 1, fc_i_nt_5_suc (22, 1));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (22, 1, ''), (20, 1, fc_i_nt_5_suc (22, 1))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (22, 1, ''), (20, 1, fc_i_nt_5_suc (22, 1))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#3) Generates in the binlog what follows:
+# --> STMT "B M C" entry if only N-Table is changed, format S.
+# --> STMT "B M C" entries, format S.
+# --> ROW "B N T B T C" entries, format R.
+# --> MIXED "B N T B T C" entries, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 23, 1, COUNT(*) FROM tt_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 23, 1, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 23, 1, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 24, 1, COUNT(*) FROM nt_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 24, 1, COUNT(*) FROM nt_1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 24, 1, COUNT(*) FROM nt_1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 25 --> 1", tt_3.info= "new text 25 --> 1" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE nt_3, tt_3 SET nt_3.info= "new text 25 --> 1", tt_3.info= "new text 25 --> 1" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE nt_3, tt_3 SET nt_3.info= "new text 25 --> 1", tt_3.info= "new text 25 --> 1" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (26, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (26, 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (26, 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (27, 1, fc_i_tt_5_suc(27, 1));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (27, 1, fc_i_tt_5_suc(27, 1))
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (27, 1, fc_i_tt_5_suc(27, 1))
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 28 --> 1", nt_4.info= "new text 28 --> 1" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE tt_4, nt_4 SET tt_4.info= "new text 28 --> 1", nt_4.info= "new text 28 --> 1" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE tt_4, nt_4 SET tt_4.info= "new text 28 --> 1", nt_4.info= "new text 28 --> 1" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (29, 1);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (29, 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (29, 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (30, 1, fc_i_nt_5_suc(30, 1));
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (30, 1, fc_i_nt_5_suc(30, 1))
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (30, 1, fc_i_nt_5_suc(30, 1))
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#3.e) Generates in the binlog what follows:
+# --> STMT "B M C" entry if only N-Table is changed, format S.
+# --> STMT "B M R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 31, 1, COUNT(*) FROM tt_1 UNION SELECT 23, 1, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 31, 1, COUNT(*) FROM tt_1 UNION SELECT 23, 1, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 31, 1, COUNT(*) FROM tt_1 UNION SELECT 23, 1, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 32, 1, COUNT(*) FROM nt_1 UNION SELECT 24, 1, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (33, 1), (26, 1);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (33, 1), (26, 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (33, 1), (26, 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (34, 1, ''), (30, 2, fc_i_tt_5_suc (34, 1));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (34, 1, ''), (30, 2, fc_i_tt_5_suc (34, 1))
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (34, 1, ''), (30, 2, fc_i_tt_5_suc (34, 1))
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (35, 1), (29, 1);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (35, 1), (29, 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (35, 1), (29, 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (36, 1, ''), (30, 1, fc_i_nt_5_suc (36, 1));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (36, 1, ''), (30, 1, fc_i_nt_5_suc (36, 1))
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (36, 1, ''), (30, 1, fc_i_nt_5_suc (36, 1))
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#4) Generates in the binlog what follows:
+# --> STMT "B T T C" entries, format S.
+# --> ROW "B T T C" entries, format R.
+# --> MIXED "B T T C" entries, format S
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (38, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (38, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (38, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (38, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (38, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (38, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (39, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (39, 4);
+fc_i_tt_5_suc (39, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (39, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(39,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (39, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(39,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (40, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (40, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (40, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (40, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (41, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (41, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (41, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (41, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (41, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (41, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (42, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (42, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (42, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (42, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (42, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (42, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (43, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (43, 4);
+fc_i_tt_5_suc (43, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (43, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(43,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (43, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(43,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (44, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (44, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (44, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',44), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',44), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (44, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',44), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',44), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (45, 2);
+fc_i_tt_5_suc (45, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (45, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(45,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (45, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(45,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (45, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_1 VALUES ("new text 4", 4, "new text 4");
-INSERT INTO tt_2 VALUES ("new text 4", 4, "new text 4");
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (46, 2);
+fc_i_tt_5_suc (46, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (46, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
-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 tt_1 VALUES ("new text 4", 4, "new text 4")
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 4", 4, "new text 4")
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(46,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (46, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(46,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (46, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (47, 2);
+fc_i_tt_5_suc (47, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (47, 4);
+fc_i_tt_5_suc (47, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(47,2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(47,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(47,2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(47,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (48, 2);
+fc_i_tt_5_suc (48, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (48, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(48,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',48), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',48), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(48,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',48), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',48), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (49, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (49, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',49), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',49), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (49, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',49), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',49), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (49, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (50, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (50, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',50), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',50), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (50, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',50), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',50), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (50, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (51, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (51, 4);
+fc_i_tt_5_suc (51, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',51), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',51), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(51,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',51), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',51), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(51,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (52, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (52, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',52), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',52), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',52), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',52), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',52), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',52), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',52), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',52), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#1.e) "B T T C" with error in T generates in binlog the "B T T C" entries.
+#4.e) Generates in the binlog what follows:
+# --> STMT "B T C" entries, format S.
+# --> ROW "B T C" entries, format R.
+# --> MIXED "B T C" entries, format S.
#
-INSERT INTO tt_1 VALUES ("new text -2", -2, "new text -2");
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1"), ("new text -2", -2, "new text -2");
-ERROR 23000: Duplicate entry '-2' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES ("new text -3", -3, "new text -3");
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (53, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (53, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (53, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T eT C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (53, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T eT C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_2 VALUES ("new text -5", -5, "new text -5");
-INSERT INTO tt_2 VALUES ("new text -4", -4, "new text -4"), ("new text -5", -5, "new text -5");
-ERROR 23000: Duplicate entry '-5' for key 'PRIMARY'
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (54, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (54, 4), (54, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
-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 tt_1 VALUES ("new text -2", -2, "new text -2")
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (54, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Te C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (54, 2)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Te C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (55, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (55, 4), (52, 5);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text -3", -3, "new text -3")
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (55, 2)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Te-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text -5", -5, "new text -5")
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (55, 2)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Te-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (56, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) VALUES (56, 4, ''), (56, 2, fc_i_tt_5_suc (56, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (56, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Te-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (56, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Te-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (56, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (57, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (57, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B eT T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (57, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B eT T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (58, 2), (57, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (58, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (58, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (58, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (59, 2), (52, 5);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (59, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (59, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (59, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) VALUES (60, 2, ''), (59, 4, fc_i_tt_5_suc (60, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (60, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (60, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (60, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#2) "B T T R" generates in binlog an "empty" entry.
+#5) Generates in the binlog what follows:
+# --> STMT empty.
+# --> ROW empty.
+# --> MIXED empty.
#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (61, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (61, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (62, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (62, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (63, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (63, 4);
+fc_i_tt_5_suc (63, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (64, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (64, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (65, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (65, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (66, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (66, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (67, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (67, 4);
+fc_i_tt_5_suc (67, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (68, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (68, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (69, 2);
+fc_i_tt_5_suc (69, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (69, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (70, 2);
+fc_i_tt_5_suc (70, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (70, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (71, 2);
+fc_i_tt_5_suc (71, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (71, 4);
+fc_i_tt_5_suc (71, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_1 VALUES ("new text 5", 5, "new text 5");
-INSERT INTO tt_2 VALUES ("new text 5", 5, "new text 5");
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (72, 2);
+fc_i_tt_5_suc (72, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (72, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
-show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (73, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (73, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (74, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (74, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (75, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (75, 4);
+fc_i_tt_5_suc (75, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (76, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (76, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#2.e) "B T T R" with error in T generates in binlog an "empty" entry.
+#5.e) Generates in the binlog what follows:
+# --> STMT empty.
+# --> ROW empty.
+# --> MIXED empty.
#
-INSERT INTO tt_1 VALUES ("new text -7", -7, "new text -7");
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_1 VALUES ("new text -6", -6, "new text -6"), ("new text -7", -7, "new text -7");
-ERROR 23000: Duplicate entry '-7' for key 'PRIMARY'
-INSERT INTO tt_2 VALUES ("new text -8", -8, "new text -8");
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (77, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (77, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T eT R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T eT R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_2 VALUES ("new text -10", -10, "new text -10");
-INSERT INTO tt_2 VALUES ("new text -9", -9, "new text -9"), ("new text -10", -10, "new text -10");
-ERROR 23000: Duplicate entry '-10' for key 'PRIMARY'
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (78, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (78, 4), (78, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
-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 tt_1 VALUES ("new text -7", -7, "new text -7")
-master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Te R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Te R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (79, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (79, 4), (52, 5);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Te-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Te-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (80, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) VALUES (80, 4, ''), (80, 2, fc_i_tt_5_suc (80, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Te-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Te-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (60, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (81, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B eT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B eT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (82, 2), (60, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (82, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (83, 2), (52, 5);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (83, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) VALUES (84, 2, ''), (60, 4, fc_i_tt_5_suc (84, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (84, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#3) "B T N C" generates in binlog the "B T N C" entries.
+#6) Generates in the binlog what follows:
+# --> STMT "B N C B N C" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S.
#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_1 VALUES ("new text 6", 6, "new text 6");
-INSERT INTO nt_1 VALUES ("new text 6", 6, "new text 6");
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (85, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (85, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (85, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (85, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
-show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 6", 6, "new text 6")
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 6", 6, "new text 6")
-master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (85, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (85, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (86, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (86, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (86, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (86, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (86, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (86, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (87, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (87, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (87, 4);
+fc_i_nt_5_suc (87, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(87,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (87, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(87,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (88, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (88, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (88, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',88), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',88), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (88, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',88), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',88), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (89, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (89, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (89, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (89, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (89, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (89, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (90, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (90, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (90, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (90, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (90, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (90, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (91, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (91, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (91, 4);
+fc_i_nt_5_suc (91, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(91,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (91, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(91,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (92, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (92, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (92, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',92), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',92), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (92, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',92), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',92), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (93, 2);
+fc_i_nt_5_suc (93, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(93,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (93, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (93, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(93,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (93, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (94, 2);
+fc_i_nt_5_suc (94, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(94,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (94, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (94, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(94,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (94, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (95, 2);
+fc_i_nt_5_suc (95, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(95,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (95, 4);
+fc_i_nt_5_suc (95, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(95,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(95,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(95,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (96, 2);
+fc_i_nt_5_suc (96, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(96,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (96, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',96), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',96), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(96,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',96), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',96), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (97, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',97), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',97), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (97, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (97, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',97), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',97), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (97, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (98, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',98), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',98), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (98, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (98, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',98), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',98), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (98, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (99, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',99), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',99), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (99, 4);
+fc_i_nt_5_suc (99, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(99,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',99), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',99), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(99,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (100, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',100), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',100), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (100, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',100), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',100), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',100), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',100), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',100), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',100), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#3.e) "B T N C" with error in either T or N generates in binlog the "B T N C" entries.
+#6.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B N C B N C" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S.
#
-INSERT INTO tt_1 VALUES ("new text -12", -12, "new text -12");
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_1 VALUES ("new text -11", -11, "new text -11"), ("new text -12", -12, "new text -12");
-ERROR 23000: Duplicate entry '-12' for key 'PRIMARY'
-INSERT INTO nt_1 VALUES ("new text -13", -13, "new text -13");
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (101, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (101, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (101, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N eN C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (101, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N eN C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_1 VALUES ("new text -14", -14, "new text -14");
-INSERT INTO nt_1 VALUES ("new text -16", -16, "new text -16");
-INSERT INTO nt_1 VALUES ("new text -15", -15, "new text -15"), ("new text -16", -16, "new text -16");
-ERROR 23000: Duplicate entry '-16' for key 'PRIMARY'
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (102, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (102, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (102, 4), (102, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (102, 4), (102, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
-show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N Ne C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -12", -12, "new text -12")
-master-bin.000001 # Xid # # COMMIT /* XID */
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -13", -13, "new text -13")
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (102, 2)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -14", -14, "new text -14")
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -16", -16, "new text -16")
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -15", -15, "new text -15"), ("new text -16", -16, "new text -16")
-master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (102, 4), (102, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N Ne C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (103, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (103, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (103, 4), (100, 5);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (103, 4), (100, 5)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N Ne-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (103, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (103, 4), (100, 5)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N Ne-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (104, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (104, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (104, 4, ''), (104, 2, fc_i_nt_5_suc (104, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (104, 4, ''), (104, 2, fc_i_nt_5_suc (104, 4))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N Ne-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (104, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (104, 4, ''), (104, 2, fc_i_nt_5_suc (104, 4))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N Ne-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (104, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (105, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (105, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B eN N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (105, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B eN N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (106, 2), (105, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (106, 2), (105, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (106, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (106, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Ne N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (106, 2), (105, 4)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (106, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Ne N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (107, 2), (104, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (107, 2), (104, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (107, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (107, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Ne-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (107, 2), (104, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (107, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Ne-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (108, 2, ''), (107, 4, fc_i_nt_5_suc (108, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (108, 2, ''), (107, 4, fc_i_nt_5_suc (108, 2))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (108, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (108, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Ne-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (108, 2, ''), (107, 4, fc_i_nt_5_suc (108, 2))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (108, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Ne-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#4) "B T N R" generates in binlog the "B T N R" entries.
+#7) Generates in the binlog what follows:
+# --> STMT "B N C B N C" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S.
#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_1 VALUES ("new text 7", 7, "new text 7");
-INSERT INTO nt_1 VALUES ("new text 7", 7, "new text 7");
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (109, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (109, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (109, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (109, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
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
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 7", 7, "new text 7")
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 7", 7, "new text 7")
-master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (109, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (109, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (110, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (110, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (110, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (110, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (110, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (110, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (111, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (111, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (111, 4);
+fc_i_nt_5_suc (111, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(111,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (111, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(111,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (112, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (112, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (112, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',112), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',112), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (112, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',112), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',112), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (113, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (113, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (113, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (113, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (113, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (113, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (114, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (114, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (114, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (114, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (114, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (114, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (115, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (115, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (115, 4);
+fc_i_nt_5_suc (115, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(115,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (115, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(115,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (116, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (116, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (116, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',116), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',116), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (116, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',116), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',116), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (117, 2);
+fc_i_nt_5_suc (117, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(117,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (117, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (117, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(117,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (117, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (118, 2);
+fc_i_nt_5_suc (118, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(118,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (118, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (118, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(118,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (118, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (119, 2);
+fc_i_nt_5_suc (119, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(119,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (119, 4);
+fc_i_nt_5_suc (119, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(119,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(119,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(119,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (120, 2);
+fc_i_nt_5_suc (120, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(120,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (120, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',120), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',120), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(120,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',120), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',120), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (121, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',121), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',121), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (121, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (121, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',121), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',121), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (121, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (122, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',122), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',122), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (122, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (122, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',122), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',122), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (122, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (123, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',123), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',123), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (123, 4);
+fc_i_nt_5_suc (123, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(123,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',123), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',123), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(123,4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (124, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',124), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',124), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (124, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',124), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',124), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',124), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',124), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',124), NAME_CONST('in_stmt_id',4))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',124), NAME_CONST('in_stmt_id',4) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#4.e) "B T N R" with error in either T or N generates in binlog the "B T N R" entries.
+#7.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B N C B N C" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S.
#
-INSERT INTO tt_1 VALUES ("new text -17", -17, "new text -17");
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_1 VALUES ("new text -16", -16, "new text -16"), ("new text -17", -17, "new text -17");
-ERROR 23000: Duplicate entry '-17' for key 'PRIMARY'
-INSERT INTO nt_1 VALUES ("new text -18", -18, "new text -18");
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (125, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (125, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (125, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N eN R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (125, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N eN R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_1 VALUES ("new text -19", -19, "new text -19");
-INSERT INTO nt_1 VALUES ("new text -21", -21, "new text -21");
-INSERT INTO nt_1 VALUES ("new text -20", -20, "new text -20"), ("new text -21", -21, "new text -21");
-ERROR 23000: Duplicate entry '-21' for key 'PRIMARY'
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (126, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (126, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (126, 4), (126, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (126, 4), (126, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
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
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N Ne R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -17", -17, "new text -17")
-master-bin.000001 # Xid # # COMMIT /* XID */
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -18", -18, "new text -18")
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (126, 2)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -19", -19, "new text -19")
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -21", -21, "new text -21")
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -20", -20, "new text -20"), ("new text -21", -21, "new text -21")
-master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (126, 4), (126, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N Ne R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (127, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (127, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (127, 4), (124, 5);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (127, 4), (124, 5)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N Ne-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (127, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (127, 4), (124, 5)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N Ne-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (128, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (128, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (128, 4, ''), (128, 2, fc_i_nt_5_suc (128, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (128, 4, ''), (128, 2, fc_i_nt_5_suc (128, 4))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N Ne-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (128, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (128, 4, ''), (128, 2, fc_i_nt_5_suc (128, 4))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N Ne-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (128, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (129, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (129, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B eN N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (129, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B eN N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (130, 2), (129, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (130, 2), (129, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (130, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (130, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Ne N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (130, 2), (129, 4)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (130, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Ne N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (131, 2), (128, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (131, 2), (128, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (131, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (131, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Ne-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (131, 2), (128, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (131, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Ne-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (132, 2, ''), (131, 4, fc_i_nt_5_suc (132, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (132, 2, ''), (131, 4, fc_i_nt_5_suc (132, 2))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (132, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (132, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Ne-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) VALUES (132, 2, ''), (131, 4, fc_i_nt_5_suc (132, 2))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (132, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Ne-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#5) "T" generates in binlog the "B T C" entry.
+#8) Generates in the binlog what follows:
+# --> STMT "B T N C" entries, format S.
+# --> ROW "B N C B T C" entries, format R.
+# --> MIXED "B N C B T C" entries, format R in N and S in T.
#
-INSERT INTO tt_1 VALUES ("new text 8", 8, "new text 8");
-show binlog events from <binlog_start>;
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (133, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (133, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (133, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (133, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (133, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (133, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (134, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (134, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (134, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (134, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (134, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (134, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (135, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (135, 4);
+fc_i_nt_5_suc (135, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (135, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(135,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (135, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(135,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (136, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (136, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (136, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',136), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',136), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (136, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',136), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',136), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (137, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (137, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (137, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (137, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 8", 8, "new text 8")
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (137, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (137, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (138, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (138, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (138, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (138, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (138, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (138, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (139, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (139, 4);
+fc_i_nt_5_suc (139, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (139, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(139,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (139, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(139,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (140, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (140, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (140, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',140), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',140), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (140, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',140), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',140), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (141, 2);
+fc_i_tt_5_suc (141, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (141, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(141,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (141, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(141,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (141, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (142, 2);
+fc_i_tt_5_suc (142, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (142, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(142,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (142, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(142,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (142, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (143, 2);
+fc_i_tt_5_suc (143, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (143, 4);
+fc_i_nt_5_suc (143, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(143,2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(143,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(143,2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(143,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (144, 2);
+fc_i_tt_5_suc (144, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (144, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(144,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',144), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',144), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(144,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',144), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',144), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (145, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (145, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',145), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',145), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (145, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',145), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',145), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (145, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (146, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (146, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',146), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',146), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (146, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',146), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',146), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (146, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (147, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (147, 4);
+fc_i_nt_5_suc (147, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',147), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',147), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(147,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',147), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',147), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(147,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (148, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (148, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',148), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',148), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',148), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',148), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',148), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',148), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',148), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',148), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#5.e) "T" with error in T generates in binlog an "empty" entry.
+#8.e) Generates in the binlog what follows if T-* fails:
+# --> STMT "B N C" entry, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+# Otherwise, what follows if N-* fails and a N-Table is changed:
+# --> STMT "B T N C" entries, format S.
+# --> ROW "B N C B T C" entries, format R.
+# --> MIXED "B N C B T C" entries, format R in N and S in T.
#
-INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1");
-INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1"), ("new text -22", -22, "new text -22");
-ERROR 23000: Duplicate entry '-1' for key 'PRIMARY'
-INSERT INTO tt_1 VALUES ("new text -23", -23, "new text -23"), ("new text -1", -1, "new text -1");
-ERROR 23000: Duplicate entry '-1' for key 'PRIMARY'
-show binlog events from <binlog_start>;
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (136, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (149, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (149, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B eT N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (149, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B eT N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (150, 2), (136, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (150, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (150, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (150, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (151, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (150, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (151, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T eN C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (151, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T eN C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (152, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (152, 4), (150, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (152, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (152, 4), (150, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Ne C << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1")
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (152, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (152, 4), (150, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Ne C << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#6) "N" generates in binlog the "N" entry.
+#9) Generates in the binlog what follows:
+# --> STMT "B T N R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
#
-INSERT INTO nt_1 VALUES ("new text 9", 9, "new text 9");
-show binlog events from <binlog_start>;
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 9", 9, "new text 9")
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (153, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (153, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (153, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (153, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (153, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (153, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (154, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (154, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (154, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (154, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (154, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (154, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (155, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (155, 4);
+fc_i_nt_5_suc (155, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (155, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(155,4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (155, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(155,4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (156, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (156, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (156, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',156), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',156), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (156, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',156), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',156), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (157, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (157, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (157, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (157, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (157, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (157, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (158, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (158, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (158, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (158, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (158, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (158, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (159, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (159, 4);
+fc_i_nt_5_suc (159, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (159, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(159,4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (159, 2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(159,4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (160, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (160, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (160, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',160), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',160), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (160, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',160), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',160), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (161, 2);
+fc_i_tt_5_suc (161, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (161, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(161,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (161, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(161,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (161, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (162, 2);
+fc_i_tt_5_suc (162, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (162, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(162,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (162, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(162,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (162, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (163, 2);
+fc_i_tt_5_suc (163, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (163, 4);
+fc_i_nt_5_suc (163, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(163,2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(163,4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(163,2)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(163,4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (164, 2);
+fc_i_tt_5_suc (164, 2)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (164, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(164,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',164), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',164), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-func N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(164,2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',164), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',164), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-func N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (165, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (165, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',165), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',165), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (165, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',165), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',165), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (165, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (166, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (166, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',166), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',166), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (166, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',166), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',166), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (166, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (167, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (167, 4);
+fc_i_nt_5_suc (167, 4)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',167), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',167), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(167,4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',167), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',167), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(167,4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (168, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (168, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',168), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',168), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',168), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',168), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc N-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',168), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',168), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',168), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',168), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc N-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#6.e) "N" with error in N generates in binlog an empty entry if the error
-# happens in the first tuple. Otherwise, generates the "N" entry and
-# the error is appended.
+#9.e) Generates in the binlog what follows if T* fails:
+# --> STMT "B N C" entry, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+# Otherwise, what follows if N* fails and a N-Table is changed:
+# --> STMT "B T N R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
#
-INSERT INTO nt_1 VALUES ("new text -1", -1, "new text -1");
-INSERT INTO nt_1 VALUES ("new text -1", -1, "new text -1");
-ERROR 23000: Duplicate entry '-1' for key 'PRIMARY'
-INSERT INTO nt_1 VALUES ("new text -24", -24, "new text -24"), ("new text -1", -1, "new text -1");
-ERROR 23000: Duplicate entry '-1' for key 'PRIMARY'
-show binlog events from <binlog_start>;
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (152, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (169, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (169, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B eT N R << -b-b-b-b-b-b-b-b-b-b-b-
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -1", -1, "new text -1")
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -24", -24, "new text -24"), ("new text -1", -1, "new text -1")
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (169, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B eT N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Te << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (170, 2), (152, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Te << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (170, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (170, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B Te N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (170, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B Te N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (171, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> eN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (170, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> eN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T eN R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T eN R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (172, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> Ne << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (172, 4), (170, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> Ne << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (172, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (172, 4), (170, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T Ne R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (172, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (172, 4), (170, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T Ne R << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#7) "M" generates in binglog the "B M C" entries.
+#10) Generates in the binlog:
+# --> STMT "B N C B T C" entries, format S.
+# --> ROW "B N C B T C" entries, format R.
+# --> MIXED "B N C B T C" entries, format S.
#
-DELETE FROM nt_1;
-INSERT INTO nt_1 SELECT * FROM tt_1;
-DELETE FROM tt_1;
-INSERT INTO tt_1 SELECT * FROM nt_1;
-INSERT INTO tt_3 VALUES ("new text 000", 000, '');
-INSERT INTO tt_3 VALUES("new text 100", 100, f1());
-INSERT INTO nt_4 VALUES("new text 100", 100, f1());
-INSERT INTO tt_3 VALUES("new text 200", 200, f2());
-INSERT INTO nt_4 VALUES ("new text 300", 300, '');
-INSERT INTO nt_4 VALUES ("new text 400", 400, f1());
-INSERT INTO nt_4 VALUES ("new text 500", 500, f2());
-CALL pc_i_tt_3(600, "Testing...");
-UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 1", nt_4.a= "new text 1", tt_3.a= "new text 1", tt_4.a= "new text 1" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 2", tt_4.a= "new text 2", nt_3.a= "new text 2", nt_4.a = "new text 2" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 3", nt_3.a= "new text 3", nt_4.a= "new text 3", tt_4.a = "new text 3" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 4", nt_3.a= "new text 4", nt_4.a= "new text 4", tt_4.a = "new text 4" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-show binlog events from <binlog_start>;
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (173, 2);
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; DELETE FROM nt_1
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 SELECT * FROM tt_1
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; DELETE FROM tt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (173, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (173, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (173, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 SELECT * FROM nt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (173, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (173, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (174, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ("new text 000", 000, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (174, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (174, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (174, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES("new text 100", 100, f1())
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (174, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (174, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (175, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (175, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (175, 4);
+fc_i_tt_5_suc (175, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES("new text 100", 100, f1())
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(175,4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES("new text 200", 200, f2())
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (175, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(175,4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (176, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (176, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (176, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text 300", 300, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',176), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',176), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text 400", 400, f1())
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (176, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',176), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',176), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (177, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (177, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (177, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text 500", 500, f2())
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (177, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ( NAME_CONST('y',_latin1'Testing...' COLLATE 'latin1_swedish_ci'), NAME_CONST('x',600), NAME_CONST('x',600))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (177, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (177, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (178, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (178, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (178, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 1", nt_4.a= "new text 1", tt_3.a= "new text 1", tt_4.a= "new text 1" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (178, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 2", tt_4.a= "new text 2", nt_3.a= "new text 2", nt_4.a = "new text 2" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (178, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (178, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (179, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (179, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (179, 4);
+fc_i_tt_5_suc (179, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 3", nt_3.a= "new text 3", nt_4.a= "new text 3", tt_4.a = "new text 3" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(179,4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 4", nt_3.a= "new text 4", nt_4.a= "new text 4", tt_4.a = "new text 4" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (179, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(179,4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (180, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (180, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (180, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',180), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',180), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (180, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',180), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',180), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (181, 2);
+fc_i_nt_5_suc (181, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(181,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (181, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (181, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(181,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (181, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (182, 2);
+fc_i_nt_5_suc (182, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(182,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (182, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (182, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(182,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (182, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
-#
-#7.e) "M" with error in M generates in binglog the "B M R" entries.
-#
-INSERT INTO nt_3 VALUES ("new text -26", -26, '');
-SELECT * FROM tt_3;
-a b c
-new text 000 0
-new text 4 100 Testing...
-new text 200 200 Testing...
-Testing... 600 600
-INSERT INTO tt_3 VALUES ("new text -25", -25, ''), ("new text -26", -26, '');
-ERROR 23000: Duplicate entry '-26' for key 'PRIMARY'
-SELECT * FROM tt_3;
-a b c
-new text 000 0
-new text 4 100 Testing...
-new text 200 200 Testing...
-Testing... 600 600
-INSERT INTO tt_4 VALUES ("new text -26", -26, '');
-SELECT * FROM nt_4;
-a b c
-new text 4 100 Testing...
-new text 300 300
-new text 400 400 Testing...
-new text 500 500 Testing...
-INSERT INTO nt_4 VALUES ("new text -25", -25, ''), ("new text -26", -26, '');
-ERROR 23000: Duplicate entry '-26' for key 'PRIMARY'
-SELECT * FROM nt_4;
-a b c
-new text 4 100 Testing...
-new text 300 300
-new text 400 400 Testing...
-new text 500 500 Testing...
-new text -25 -25
-show binlog events from <binlog_start>;
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (183, 2);
+fc_i_nt_5_suc (183, 2)
+fc_i_nt_5_suc
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_3 VALUES ("new text -26", -26, '')
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ("new text -25", -25, ''), ("new text -26", -26, '')
-master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(183,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (183, 4);
+fc_i_tt_5_suc (183, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_4 VALUES ("new text -26", -26, '')
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(183,4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text -25", -25, ''), ("new text -26", -26, '')
-master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(183,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(183,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (184, 2);
+fc_i_nt_5_suc (184, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(184,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (184, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',184), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',184), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(184,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',184), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',184), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (185, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',185), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',185), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (185, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (185, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',185), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',185), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (185, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (186, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',186), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',186), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (186, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (186, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',186), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',186), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (186, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (187, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',187), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',187), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (187, 4);
+fc_i_tt_5_suc (187, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(187,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',187), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',187), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(187,4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T-func C << -e-e-e-e-e-e-e-e-e-e-e-
-#
-#8) "B N N T C" generates in binglog the "N N B T C" entries.
-#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO nt_1 VALUES ("new text 10", 10, "new text 10");
-INSERT INTO nt_2 VALUES ("new text 10", 10, "new text 10");
-INSERT INTO tt_1 VALUES ("new text 10", 10, "new text 10");
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (188, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',188), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',188), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (188, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
-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 nt_1 VALUES ("new text 10", 10, "new text 10")
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text 10", 10, "new text 10")
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 10", 10, "new text 10")
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',188), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',188), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T-proc C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',188), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',188), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',188), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',188), NAME_CONST('in_stmt_id',1) + 1)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T-proc C << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#8.e) "B N N T R" See 6.e and 9.e.
+#11) Generates in the binlog what follows:
+# --> STMT "B N C" entries, format S.
+# --> ROW "B N C" entries, format R.
+# --> MIXED "B N C" entries, format S.
#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (189, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (189, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (189, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (189, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (189, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (189, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (190, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (190, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (190, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',190), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',190), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (190, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',190), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',190), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (191, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (191, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (191, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (191, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (191, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (191, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (192, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (192, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (192, 4);
+fc_i_tt_5_suc (192, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(192,4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (192, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(192,4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T-func R << -e-e-e-e-e-e-e-e-e-e-e-
-#
-#9) "B N N T R" generates in binlog the "N N B T R" entries.
-#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (193, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (193, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (193, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (193, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (193, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (193, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO nt_1 VALUES ("new text 11", 11, "new text 11");
-INSERT INTO nt_2 VALUES ("new text 11", 11, "new text 11");
-INSERT INTO tt_1 VALUES ("new text 11", 11, "new text 11");
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (194, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (194, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (194, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
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 # # use `test`; INSERT INTO nt_1 VALUES ("new text 11", 11, "new text 11")
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text 11", 11, "new text 11")
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 11", 11, "new text 11")
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (194, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (194, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (194, 4)
master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (195, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (195, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (195, 4);
+fc_i_tt_5_suc (195, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(195,4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (195, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(195,4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id) VALUES (196, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (196, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (196, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',196), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',196), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-trig T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (196, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',196), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',196), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-trig T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (197, 2);
+fc_i_nt_5_suc (197, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(197,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (197, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (197, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(197,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (197, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T R << -e-e-e-e-e-e-e-e-e-e-e-
-#
-#9.e) "B N N T R" with error in N generates in binlog the "N N B T R" entries.
-#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO nt_1 VALUES ("new text -25", -25, "new text -25");
-INSERT INTO nt_2 VALUES ("new text -25", -25, "new text -25");
-INSERT INTO nt_2 VALUES ("new text -26", -26, "new text -26"), ("new text -25", -25, "new text -25");
-ERROR 23000: Duplicate entry '-25' for key 'PRIMARY'
-INSERT INTO tt_1 VALUES ("new text -27", -27, "new text -27");
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (198, 2);
+fc_i_nt_5_suc (198, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(198,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (198, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
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 # # use `test`; INSERT INTO nt_1 VALUES ("new text -25", -25, "new text -25")
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text -25", -25, "new text -25")
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text -26", -26, "new text -26"), ("new text -25", -25, "new text -25")
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -27", -27, "new text -27")
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (198, 4)
master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(198,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (198, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (199, 2);
+fc_i_nt_5_suc (199, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(199,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (199, 4);
+fc_i_tt_5_suc (199, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(199,4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(199,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(199,4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_nt_5_suc (200, 2);
+fc_i_nt_5_suc (200, 2)
+fc_i_nt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(200,2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (200, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',200), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',200), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-func T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(200,2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',200), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',200), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-func T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (201, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',201), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',201), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (201, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (201, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',201), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',201), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (201, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (202, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',202), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',202), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_tt_5_suc (202, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',202), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',202), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T-proc R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',202), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',202), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',202), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',202), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T-proc R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (203, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',203), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',203), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id) VALUES (203, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (203, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',203), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',203), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (203, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
+CALL pc_i_nt_5_suc (204, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',204), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',204), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b-
+SELECT fc_i_tt_5_suc (204, 4);
+fc_i_tt_5_suc (204, 4)
+fc_i_tt_5_suc
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(204,4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N-proc T-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',204), NAME_CONST('in_stmt_id',1))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',204), NAME_CONST('in_stmt_id',1) + 1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(204,4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N-proc T-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#10) "B N N C" generates in binglog the "N N" entries.
+#12) Generates in the binlog what follows:
+# --> STMT "B M C B T C" entries if in M only N-Table is changed, format S.
+# --> STMT "B M T C" entries, format S.
+# --> ROW "B N C B T T C" entries, format R.
+# --> MIXED "B N C B T T C" entries, format R in N/T and format S in T.
#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO nt_1 VALUES ("new text 12", 12, "new text 12");
-INSERT INTO nt_2 VALUES ("new text 12", 12, "new text 12");
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 205, 2, COUNT(*) FROM tt_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 205, 2, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (205, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
-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 nt_1 VALUES ("new text 12", 12, "new text 12")
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text 12", 12, "new text 12")
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (205, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tN T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 205, 2, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (205, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B tN T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 206, 2, COUNT(*) FROM nt_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (206, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 206, 2, COUNT(*) FROM nt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (206, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nT T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 206, 2, COUNT(*) FROM nt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (206, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B nT T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 207 --> 2", tt_3.info= "new text 207 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (207, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE nt_3, tt_3 SET nt_3.info= "new text 207 --> 2", tt_3.info= "new text 207 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (207, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE nt_3, tt_3 SET nt_3.info= "new text 207 --> 2", tt_3.info= "new text 207 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (207, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (208, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (208, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (208, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (208, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (208, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (208, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (209, 2, fc_i_tt_5_suc(209, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (209, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (209, 2, fc_i_tt_5_suc(209, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (209, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (209, 2, fc_i_tt_5_suc(209, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (209, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (210, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (210, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (210, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (211, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (211, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (211, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (212, 2, fc_i_nt_5_suc(212, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (212, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (212, 2, fc_i_nt_5_suc(212, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (212, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (212, 2, fc_i_nt_5_suc(212, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (212, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#10.e) "B N N C" See 6.e and 9.e.
-#
+#12.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B M C B T C" entries if in M only N-Table is changed, format S.
+# --> STMT "B M T C" entries, format S.
+# --> ROW "B N C B T T C" entries, format R.
+# --> MIXED "B N C B T T C" entries, format R in N/T and format S in T.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 213, 2, COUNT(*) FROM tt_1 UNION SELECT 205, 2, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 213, 2, COUNT(*) FROM tt_1 UNION SELECT 205, 2, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (213, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (213, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tNe T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 213, 2, COUNT(*) FROM tt_1 UNION SELECT 205, 2, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (213, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B tNe T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 214, 2, COUNT(*) FROM nt_1 UNION SELECT 213, 4, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (214, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (214, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nTe T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (214, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B nTe T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (215, 2), (208, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (215, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (215, 2), (208, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (215, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (215, 2), (208, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (215, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (216, 2, ''), (212, 2, fc_i_tt_5_suc (216, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (216, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (216, 2, ''), (212, 2, fc_i_tt_5_suc (216, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (216, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (216, 2, ''), (212, 2, fc_i_tt_5_suc (216, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (216, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (217, 2), (211, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (217, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (217, 2), (211, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (217, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-trig T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (217, 2), (211, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (217, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-trig T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (218, 2, ''), (212, 2, fc_i_nt_5_suc (218, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (218, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (218, 2, ''), (212, 2, fc_i_nt_5_suc (218, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (218, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-func T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (218, 2, ''), (212, 2, fc_i_nt_5_suc (218, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (218, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-func T C << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#11) "B N N R" generates in binlog the "N N" entries.
+#13) "B M T R" generates in the binlog:
+# --> STMT "B M C B T R" entries if in M only N-Table is changed, format S.
+# --> STMT "B M T R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO nt_1 VALUES ("new text 13", 13, "new text 13");
-INSERT INTO nt_2 VALUES ("new text 13", 13, "new text 13");
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 219, 2, COUNT(*) FROM tt_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 219, 2, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (219, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
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 # # use `test`; INSERT INTO nt_1 VALUES ("new text 13", 13, "new text 13")
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text 13", 13, "new text 13")
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (219, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tN T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 219, 2, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (219, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B tN T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 220, 2, COUNT(*) FROM nt_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (220, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B nT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 221 --> 2", tt_3.info= "new text 221 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (221, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE nt_3, tt_3 SET nt_3.info= "new text 221 --> 2", tt_3.info= "new text 221 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (221, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE nt_3, tt_3 SET nt_3.info= "new text 221 --> 2", tt_3.info= "new text 221 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (221, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (222, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (222, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (222, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (222, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (222, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (222, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (223, 2, fc_i_tt_5_suc(223, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (223, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (223, 2, fc_i_tt_5_suc(223, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (223, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (223, 2, fc_i_tt_5_suc(223, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (223, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 224 --> 2", nt_4.info= "new text 224 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (224, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE tt_4, nt_4 SET tt_4.info= "new text 224 --> 2", nt_4.info= "new text 224 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (224, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE tt_4, nt_4 SET tt_4.info= "new text 224 --> 2", nt_4.info= "new text 224 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (224, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (225, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (225, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (225, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (225, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (225, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (225, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (226, 2, fc_i_nt_5_suc(226, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (226, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (226, 2, fc_i_nt_5_suc(226, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (226, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (226, 2, fc_i_nt_5_suc(226, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (226, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#11.e) "B N N R" See 6.e and 9.e.
+#13.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B M C B T R" entries if in M only N-Table is changed, format S.
+# --> STMT "B M T R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 227, 2, COUNT(*) FROM tt_1 UNION SELECT 219, 2, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 227, 2, COUNT(*) FROM tt_1 UNION SELECT 219, 2, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (227, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (227, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tNe T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 227, 2, COUNT(*) FROM tt_1 UNION SELECT 219, 2, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (227, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B tNe T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 228, 2, COUNT(*) FROM nt_1 UNION SELECT 218, 4, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (228, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nTe T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B nTe T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (229, 2), (222, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (229, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (229, 2), (222, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (229, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (229, 2), (222, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (229, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (230, 2, ''), (226, 2, fc_i_tt_5_suc (230, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (230, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (230, 2, ''), (226, 2, fc_i_tt_5_suc (230, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (230, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (230, 2, ''), (226, 2, fc_i_tt_5_suc (230, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (230, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (231, 2), (211, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (231, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (231, 2), (211, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (231, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-trig T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (231, 2), (211, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (231, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-trig T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (232, 2, ''), (212, 2, fc_i_nt_5_suc (232, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (232, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (232, 2, ''), (212, 2, fc_i_nt_5_suc (232, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (232, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-func T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (232, 2, ''), (212, 2, fc_i_nt_5_suc (232, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (232, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-func T R << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#12) "B M T C" generates in the binlog the "B M T C" entries.
+#14) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B T M C" entries, format S.
+# --> ROW "B N C B T T C" entries, format R.
+# --> MIXED "B N C B T T C" entries, format R in N/T and format S in T.
#
-DELETE FROM nt_1;
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO nt_1 SELECT * FROM tt_1;
-INSERT INTO tt_2 VALUES ("new text 14", 14, "new text 14");
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (233, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 233, 4, COUNT(*) FROM tt_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
-DELETE FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (233, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 233, 4, COUNT(*) FROM tt_1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T tN C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (233, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 233, 4, COUNT(*) FROM tt_1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T tN C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_1 SELECT * FROM nt_1;
-INSERT INTO tt_2 VALUES ("new text 15", 15, "new text 15");
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (234, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 234, 4, COUNT(*) FROM nt_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (234, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 234, 4, COUNT(*) FROM nt_1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T nT C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (234, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 234, 4, COUNT(*) FROM nt_1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T nT C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_3 VALUES ("new text 700", 700, '');
-INSERT INTO tt_1 VALUES ("new text 800", 800, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (235, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 235 --> 4", tt_3.info= "new text 235 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (235, 2)
+master-bin.000001 # Query # # use `test`; UPDATE nt_3, tt_3 SET nt_3.info= "new text 235 --> 4", tt_3.info= "new text 235 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NT C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (235, 2)
+master-bin.000001 # Query # # use `test`; UPDATE nt_3, tt_3 SET nt_3.info= "new text 235 --> 4", tt_3.info= "new text 235 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NT C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_3 VALUES("new text 900", 900, f1());
-INSERT INTO tt_1 VALUES ("new text 1000", 1000, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (236, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (236, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (236, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (236, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NT-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (236, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (236, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NT-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_3 VALUES(1100, 1100, f2());
-INSERT INTO tt_1 VALUES ("new text 1200", 1200, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (237, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (237, 4, fc_i_tt_5_suc(237, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (237, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (237, 4, fc_i_tt_5_suc(237, 4))
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NT-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (237, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (237, 4, fc_i_tt_5_suc(237, 4))
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NT-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO nt_4 VALUES ("new text 1300", 1300, '');
-INSERT INTO tt_1 VALUES ("new text 1400", 1400, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (238, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (238, 2)
+master-bin.000001 # Query # # use `test`; UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TN C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (238, 2)
+master-bin.000001 # Query # # use `test`; UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TN C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO nt_4 VALUES("new text 1500", 1500, f1());
-INSERT INTO tt_1 VALUES ("new text 1600", 1600, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (239, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (239, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TN-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (239, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TN-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO nt_4 VALUES("new text 1700", 1700, f2());
-INSERT INTO tt_1 VALUES ("new text 1800", 1800, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (240, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (240, 4, fc_i_nt_5_suc(240, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (240, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (240, 4, fc_i_nt_5_suc(240, 4))
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TN-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (240, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (240, 4, fc_i_nt_5_suc(240, 4))
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TN-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#14.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B T M C" entries, format S.
+# --> ROW "B N C B T C" entry, format R.
+# --> MIXED "B N C B T C" entry, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-CALL pc_i_tt_3(1900, "Testing...");
-INSERT INTO tt_1 VALUES ("new text 2000", 2000, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (241, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 241, 4, COUNT(*) FROM tt_1 UNION SELECT 233, 4, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (241, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 241, 4, COUNT(*) FROM tt_1 UNION SELECT 233, 4, COUNT(*) FROM tt_1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T tNe C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (241, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 241, 4, COUNT(*) FROM tt_1 UNION SELECT 233, 4, COUNT(*) FROM tt_1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T tNe C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 5", nt_4.a= "new text 5", tt_3.a= "new text 5", tt_4.a= "new text 5" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-INSERT INTO tt_1 VALUES ("new text 2100", 2100, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (242, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 242, 4, COUNT(*) FROM nt_1 UNION SELECT 242, 2, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (242, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T nTe C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (242, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T nTe C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 6", tt_4.a= "new text 6", nt_3.a= "new text 6", nt_4.a = "new text 6" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-INSERT INTO tt_1 VALUES ("new text 2200", 2200, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (243, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (243, 4), (236, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (243, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (243, 4), (236, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NeT-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (243, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (243, 4), (236, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NeT-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (244, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (244, 4, ''), (240, 2, fc_i_tt_5_suc (244, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (244, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (244, 4, ''), (240, 2, fc_i_tt_5_suc (244, 4))
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NeT-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (244, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (244, 4, ''), (240, 2, fc_i_tt_5_suc (244, 4))
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NeT-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (245, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (245, 4), (239, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (245, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (245, 4), (239, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TeN-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (245, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (245, 4), (239, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TeN-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (246, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (246, 4, ''), (240, 4, fc_i_nt_5_suc (246, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (246, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (246, 4, ''), (240, 4, fc_i_nt_5_suc (246, 4))
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TeN-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (246, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (246, 4, ''), (240, 4, fc_i_nt_5_suc (246, 4))
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TeN-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#15) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B T M R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (247, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 247, 4, COUNT(*) FROM tt_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (247, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 247, 4, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T tN R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (247, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 247, 4, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T tN R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (248, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 248, 4, COUNT(*) FROM nt_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T nT R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T nT R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (249, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 249 --> 4", tt_3.info= "new text 249 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (249, 2)
+master-bin.000001 # Query # # use `test`; UPDATE nt_3, tt_3 SET nt_3.info= "new text 249 --> 4", tt_3.info= "new text 249 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NT R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (249, 2)
+master-bin.000001 # Query # # use `test`; UPDATE nt_3, tt_3 SET nt_3.info= "new text 249 --> 4", tt_3.info= "new text 249 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NT R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (250, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (250, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (250, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (250, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NT-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (250, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (250, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NT-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (251, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (251, 4, fc_i_tt_5_suc(251, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (251, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (251, 4, fc_i_tt_5_suc(251, 4))
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NT-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (251, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (251, 4, fc_i_tt_5_suc(251, 4))
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NT-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (252, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 252 --> 4", nt_4.info= "new text 252 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (252, 2)
+master-bin.000001 # Query # # use `test`; UPDATE tt_4, nt_4 SET tt_4.info= "new text 252 --> 4", nt_4.info= "new text 252 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TN R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (252, 2)
+master-bin.000001 # Query # # use `test`; UPDATE tt_4, nt_4 SET tt_4.info= "new text 252 --> 4", nt_4.info= "new text 252 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TN R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (253, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (253, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (253, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (253, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TN-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (253, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (253, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TN-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (254, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (254, 4, fc_i_nt_5_suc(254, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (254, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (254, 4, fc_i_nt_5_suc(254, 4))
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TN-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (254, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (254, 4, fc_i_nt_5_suc(254, 4))
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TN-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#15.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B T M R" entries, format S.
+# --> ROW "B N C" entry, format R.
+# --> MIXED "B N C" entry, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (255, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 255, 4, COUNT(*) FROM tt_1 UNION SELECT 247, 4, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (255, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 255, 4, COUNT(*) FROM tt_1 UNION SELECT 247, 4, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T tNe R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (255, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 255, 4, COUNT(*) FROM tt_1 UNION SELECT 247, 4, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T tNe R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (256, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 256, 4, COUNT(*) FROM nt_1 UNION SELECT 256, 2, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T nTe R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B T nTe R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (257, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (257, 4), (250, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (257, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (257, 4), (250, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NeT-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (257, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (257, 4), (250, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NeT-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (258, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (258, 4, ''), (254, 2, fc_i_tt_5_suc (258, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (258, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (258, 4, ''), (254, 2, fc_i_tt_5_suc (258, 4))
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T NeT-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (258, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (258, 4, ''), (254, 2, fc_i_tt_5_suc (258, 4))
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T NeT-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (259, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (259, 4), (239, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (259, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (259, 4), (239, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TeN-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (259, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (259, 4), (239, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TeN-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (260, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (260, 4, ''), (240, 4, fc_i_nt_5_suc (260, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (260, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (260, 4, ''), (240, 4, fc_i_nt_5_suc (260, 4))
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T TeN-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (260, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (260, 4, ''), (240, 4, fc_i_nt_5_suc (260, 4))
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T TeN-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#16) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> STMT "B M N C" entries, format S.
+# --> ROW "B N C B N C B T C" entries, format R.
+# --> MIXED "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> MIXED "B N C B N C B T C" entries, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 7", nt_3.a= "new text 7", nt_4.a= "new text 7", tt_4.a = "new text 7" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-INSERT INTO tt_1 VALUES ("new text 2300", 2300, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 261, 2, COUNT(*) FROM tt_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 261, 2, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (261, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (261, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tN N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 261, 2, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (261, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B tN N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 8", nt_3.a= "new text 8", nt_4.a= "new text 8", tt_4.a = "new text 8" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-INSERT INTO tt_1 VALUES ("new text 2400", 2400, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 262, 2, COUNT(*) FROM nt_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (262, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
-show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; DELETE FROM nt_1
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 SELECT * FROM tt_1
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 14", 14, "new text 14")
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 262, 2, COUNT(*) FROM nt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (262, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nT N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; DELETE FROM tt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 262, 2, COUNT(*) FROM nt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (262, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B nT N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 263 --> 2", tt_3.info= "new text 263 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (263, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 SELECT * FROM nt_1
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 15", 15, "new text 15")
+master-bin.000001 # Query # # use `test`; UPDATE nt_3, tt_3 SET nt_3.info= "new text 263 --> 2", tt_3.info= "new text 263 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (263, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ("new text 700", 700, '')
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 800", 800, '')
+master-bin.000001 # Query # # use `test`; UPDATE nt_3, tt_3 SET nt_3.info= "new text 263 --> 2", tt_3.info= "new text 263 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (263, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (264, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (264, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES("new text 900", 900, f1())
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 1000", 1000, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (264, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (264, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES(1100, 1100, f2())
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 1200", 1200, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (264, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (264, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (265, 2, fc_i_tt_5_suc(265, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (265, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text 1300", 1300, '')
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 1400", 1400, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (265, 2, fc_i_tt_5_suc(265, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (265, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES("new text 1500", 1500, f1())
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 1600", 1600, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (265, 2, fc_i_tt_5_suc(265, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (265, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (266, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES("new text 1700", 1700, f2())
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 1800", 1800, '')
+master-bin.000001 # Query # # use `test`; UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (266, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ( NAME_CONST('y',_latin1'Testing...' COLLATE 'latin1_swedish_ci'), NAME_CONST('x',1900), NAME_CONST('x',1900))
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2000", 2000, '')
+master-bin.000001 # Query # # use `test`; UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (266, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (267, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 5", nt_4.a= "new text 5", tt_3.a= "new text 5", tt_4.a= "new text 5" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2100", 2100, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (267, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 6", tt_4.a= "new text 6", nt_3.a= "new text 6", nt_4.a = "new text 6" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2200", 2200, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (267, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (268, 2, fc_i_nt_5_suc(268, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (268, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 7", nt_3.a= "new text 7", nt_4.a= "new text 7", tt_4.a = "new text 7" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2300", 2300, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (268, 2, fc_i_nt_5_suc(268, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (268, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 8", nt_3.a= "new text 8", nt_4.a= "new text 8", tt_4.a = "new text 8" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2400", 2400, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (268, 2, fc_i_nt_5_suc(268, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (268, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#12.e) "B M T C" with error in M generates in the binlog the "B M T C" entries.
-#
-# There is a bug in the slave that needs to be fixed before enabling
-# this part of the test. A bug report will be filed referencing this
-# test case.
+#16.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> STMT "B M N C" entries, format S.
+# --> ROW "B N C B N C B T C" entries, format R.
+# --> MIXED "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> MIXED "B N C B N C B T C" entries, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO nt_3 VALUES ("new text -28", -28, '');
-INSERT INTO tt_3 VALUES ("new text -27", -27, ''), ("new text -28", -28, '');
-ERROR 23000: Duplicate entry '-28' for key 'PRIMARY'
-INSERT INTO tt_1 VALUES ("new text -27", -27, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 269, 2, COUNT(*) FROM tt_1 UNION SELECT 268, 4, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 269, 2, COUNT(*) FROM tt_1 UNION SELECT 268, 4, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (269, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (269, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tNe N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 269, 2, COUNT(*) FROM tt_1 UNION SELECT 268, 4, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (269, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B tNe N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_4 VALUES ("new text -28", -28, '');
-INSERT INTO nt_4 VALUES ("new text -27", -27, ''), ("new text -28", -28, '');
-ERROR 23000: Duplicate entry '-28' for key 'PRIMARY'
-INSERT INTO tt_1 VALUES ("new text -28", -28, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 270, 2, COUNT(*) FROM nt_1 UNION SELECT 262, 2, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (270, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (270, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
COMMIT;
-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 nt_3 VALUES ("new text -28", -28, '')
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nTe N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ("new text -27", -27, ''), ("new text -28", -28, '')
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -27", -27, '')
-master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (270, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B nTe N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (271, 2), (264, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (271, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_4 VALUES ("new text -28", -28, '')
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text -27", -27, ''), ("new text -28", -28, '')
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -28", -28, '')
-master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (271, 2), (264, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (271, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (271, 2), (264, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (271, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (272, 2, ''), (268, 2, fc_i_tt_5_suc (272, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (272, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (272, 2, ''), (268, 2, fc_i_tt_5_suc (272, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (272, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (272, 2, ''), (268, 2, fc_i_tt_5_suc (272, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (272, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (273, 2), (267, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (273, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (273, 2), (267, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (273, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-trig N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (273, 2), (267, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (273, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-trig N C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (274, 2, ''), (268, 2, fc_i_nt_5_suc (274, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (274, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (274, 2, ''), (268, 2, fc_i_nt_5_suc (274, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (274, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-func N C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (274, 2, ''), (268, 2, fc_i_nt_5_suc (274, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (274, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-func N C << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#13) "B M T R" generates in the binlog the "B M T R" entries
+#17) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> STMT "B M N R" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> MIXED "B N C B N C" entries, format R.
#
-DELETE FROM nt_1;
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO nt_1 SELECT * FROM tt_1;
-INSERT INTO tt_2 VALUES ("new text 17", 17, "new text 17");
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 275, 2, COUNT(*) FROM tt_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 275, 2, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (275, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (275, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
-DELETE FROM tt_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tN N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 275, 2, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (275, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B tN N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_1 SELECT * FROM nt_1;
-INSERT INTO tt_2 VALUES ("new text 18", 18, "new text 18");
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 276, 2, COUNT(*) FROM nt_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (276, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
-INSERT INTO tt_1 SELECT * FROM nt_1;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 276, 2, COUNT(*) FROM nt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (276, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nT N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 276, 2, COUNT(*) FROM nt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (276, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B nT N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_3 VALUES ("new text 2500", 2500, '');
-INSERT INTO tt_1 VALUES ("new text 2600", 2600, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 277 --> 2", tt_3.info= "new text 277 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (277, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE nt_3, tt_3 SET nt_3.info= "new text 277 --> 2", tt_3.info= "new text 277 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (277, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE nt_3, tt_3 SET nt_3.info= "new text 277 --> 2", tt_3.info= "new text 277 --> 2" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (277, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_3 VALUES("new text 2700", 2700, f1());
-INSERT INTO tt_1 VALUES ("new text 2800", 2800, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (278, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (278, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (278, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (278, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (278, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (278, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_3 VALUES(2900, 2900, f2());
-INSERT INTO tt_1 VALUES ("new text 3000", 3000, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (279, 2, fc_i_tt_5_suc(279, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (279, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (279, 2, fc_i_tt_5_suc(279, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (279, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NT-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (279, 2, fc_i_tt_5_suc(279, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (279, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B NT-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO nt_4 VALUES ("new text 3100", 3100, '');
-INSERT INTO tt_1 VALUES ("new text 3200", 3200, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 280 --> 2", nt_4.info= "new text 280 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (280, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE tt_4, nt_4 SET tt_4.info= "new text 280 --> 2", nt_4.info= "new text 280 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (280, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE tt_4, nt_4 SET tt_4.info= "new text 280 --> 2", nt_4.info= "new text 280 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (280, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO nt_4 VALUES("new text 3300", 3300, f1());
-INSERT INTO tt_1 VALUES ("new text 3400", 3400, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (281, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (281, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (281, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (281, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (281, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (281, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO nt_4 VALUES("new text 3500", 3500, f2());
-INSERT INTO tt_1 VALUES ("new text 3600", 3600, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (282, 2, fc_i_nt_5_suc(282, 2));
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (282, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (282, 2, fc_i_nt_5_suc(282, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (282, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TN-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (282, 2, fc_i_nt_5_suc(282, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (282, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B TN-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#17.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> STMT "B M N R" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B M C B N C" entries if in M only N-Table is changed, format S.
+# --> MIXED "B N C B N C" entries, format R.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-CALL pc_i_tt_3(3700, "Testing...");
-INSERT INTO tt_1 VALUES ("new text 3700", 3700, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 283, 2, COUNT(*) FROM tt_1 UNION SELECT 282, 4, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 283, 2, COUNT(*) FROM tt_1 UNION SELECT 282, 4, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (283, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (283, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tNe N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 283, 2, COUNT(*) FROM tt_1 UNION SELECT 282, 4, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (283, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B tNe N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 9", nt_4.a= "new text 9", tt_3.a= "new text 9", tt_4.a= "new text 9" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-INSERT INTO tt_1 VALUES ("new text 3800", 3800, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 284, 2, COUNT(*) FROM nt_1 UNION SELECT 262, 2, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (284, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (284, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B nTe N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (284, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B nTe N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 10", tt_4.a= "new text 10", nt_3.a= "new text 10", nt_4.a = "new text 10" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-INSERT INTO tt_1 VALUES ("new text 3900", 3900, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (285, 2), (278, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (285, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (285, 2), (278, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (285, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (285, 2), (278, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (285, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 11", nt_3.a= "new text 11", nt_4.a= "new text 11", tt_4.a = "new text 11" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-INSERT INTO tt_1 VALUES ("new text 4000", 4000, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (286, 2, ''), (282, 2, fc_i_tt_5_suc (286, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (286, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (286, 2, ''), (282, 2, fc_i_tt_5_suc (286, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (286, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B NeT-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (286, 2, ''), (282, 2, fc_i_tt_5_suc (286, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (286, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B NeT-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 12", nt_3.a= "new text 12", nt_4.a= "new text 12", tt_4.a = "new text 12" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
-INSERT INTO tt_1 VALUES ("new text 4100", 4100, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (287, 2), (267, 2);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (287, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
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 # # use `test`; DELETE FROM nt_1
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 SELECT * FROM tt_1
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 17", 17, "new text 17")
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (287, 2), (267, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (287, 4)
master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-trig N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (287, 2), (267, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (287, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-trig N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (288, 2, ''), (268, 2, fc_i_nt_5_suc (288, 2));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (288, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (288, 2, ''), (268, 2, fc_i_nt_5_suc (288, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (288, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B TeN-func N R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (288, 2, ''), (268, 2, fc_i_nt_5_suc (288, 2))
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (288, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B TeN-func N R << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#18) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B N C B M C" entries if in M only N-Table is changed, format S.
+# --> STMT "B N C B M C" entries, format S.
+# --> ROW "B N C B N C B T C" entries, format R.
+# --> MIXED "B N C B N C B T C" entries, format S in first N and format R in the other.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (289, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (289, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 289, 4, COUNT(*) FROM tt_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 289, 4, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N tN C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (289, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 289, 4, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N tN C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (290, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (290, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 290, 4, COUNT(*) FROM nt_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 290, 4, COUNT(*) FROM nt_1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N nT C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (290, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 290, 4, COUNT(*) FROM nt_1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N nT C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (291, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (291, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 291 --> 4", tt_3.info= "new text 291 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE nt_3, tt_3 SET nt_3.info= "new text 291 --> 4", tt_3.info= "new text 291 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NT C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (291, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE nt_3, tt_3 SET nt_3.info= "new text 291 --> 4", tt_3.info= "new text 291 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NT C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (292, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (292, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (292, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (292, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NT-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (292, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (292, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NT-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (293, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (293, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (293, 4, fc_i_tt_5_suc(293, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (293, 4, fc_i_tt_5_suc(293, 4))
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NT-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (293, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (293, 4, fc_i_tt_5_suc(293, 4))
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NT-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (294, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (294, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TN C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (294, 2)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; DELETE FROM tt_1
+master-bin.000001 # Query # # use `test`; UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TN C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (295, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 SELECT * FROM nt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (295, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4)
master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TN-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (295, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TN-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (296, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (296, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (296, 4, fc_i_nt_5_suc(296, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (296, 4, fc_i_nt_5_suc(296, 4))
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TN-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (296, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (296, 4, fc_i_nt_5_suc(296, 4))
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TN-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#18.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B N C B M C" entries if in M only N-Table is changed, format S.
+# --> STMT "B N C B M C" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S in first N and format R in the other.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (297, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (297, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 297, 4, COUNT(*) FROM tt_1 UNION SELECT 297, 2, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 297, 4, COUNT(*) FROM tt_1 UNION SELECT 297, 2, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N tNe C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (297, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 297, 4, COUNT(*) FROM tt_1 UNION SELECT 297, 2, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N tNe C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (298, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (298, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 298, 4, COUNT(*) FROM nt_1 UNION SELECT 290, 4, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N nTe C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (298, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N nTe C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (299, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (299, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (299, 4), (292, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (299, 4), (292, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NeT-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (299, 2)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ("new text 2500", 2500, '')
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2600", 2600, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (299, 4), (292, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NeT-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (300, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (300, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (300, 4, ''), (296, 2, fc_i_tt_5_suc (300, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (300, 4, ''), (296, 2, fc_i_tt_5_suc (300, 4))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NeT-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (300, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (300, 4, ''), (296, 2, fc_i_tt_5_suc (300, 4))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NeT-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (301, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (301, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (301, 4), (295, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (301, 4), (295, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TeN-trig C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (301, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (301, 4), (295, 4)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TeN-trig C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (302, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (302, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (302, 4, ''), (296, 4, fc_i_nt_5_suc (302, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (302, 4, ''), (296, 4, fc_i_nt_5_suc (302, 4))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TeN-func C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (302, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (302, 4, ''), (296, 4, fc_i_nt_5_suc (302, 4))
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TeN-func C << -e-e-e-e-e-e-e-e-e-e-e-
+
+
+
+
+
+#
+#19) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B N C B M C" entries if in M only N-Table is changed, format S.
+# --> STMT "B N C B M R" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S in first N and format R in the other.
+#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (303, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (303, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 303, 4, COUNT(*) FROM tt_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 303, 4, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N tN R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (303, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 303, 4, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N tN R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (304, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (304, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nT << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 304, 4, COUNT(*) FROM nt_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 304, 4, COUNT(*) FROM nt_1
master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N nT R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES("new text 2700", 2700, f1())
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2800", 2800, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (304, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 304, 4, COUNT(*) FROM nt_1
master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N nT R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (305, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (305, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE nt_3, tt_3 SET nt_3.info= "new text 305 --> 4", tt_3.info= "new text 305 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES(2900, 2900, f2())
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3000", 3000, '')
+master-bin.000001 # Query # # use `test`; UPDATE nt_3, tt_3 SET nt_3.info= "new text 305 --> 4", tt_3.info= "new text 305 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1
master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NT R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (305, 2)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text 3100", 3100, '')
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3200", 3200, '')
+master-bin.000001 # Query # # use `test`; UPDATE nt_3, tt_3 SET nt_3.info= "new text 305 --> 4", tt_3.info= "new text 305 --> 4" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1
master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NT R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (306, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (306, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (306, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES("new text 3300", 3300, f1())
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3400", 3400, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (306, 4)
master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NT-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (306, 2)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES("new text 3500", 3500, f2())
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3600", 3600, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (306, 4)
master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NT-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (307, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (307, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (307, 4, fc_i_tt_5_suc(307, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ( NAME_CONST('y',_latin1'Testing...' COLLATE 'latin1_swedish_ci'), NAME_CONST('x',3700), NAME_CONST('x',3700))
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3700", 3700, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (307, 4, fc_i_tt_5_suc(307, 4))
master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NT-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (307, 2)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 9", nt_4.a= "new text 9", tt_3.a= "new text 9", tt_4.a= "new text 9" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3800", 3800, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (307, 4, fc_i_tt_5_suc(307, 4))
master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NT-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (308, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (308, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b-
+UPDATE tt_4, nt_4 SET tt_4.info= "new text 308 --> 4", nt_4.info= "new text 308 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 10", tt_4.a= "new text 10", nt_3.a= "new text 10", nt_4.a = "new text 10" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3900", 3900, '')
+master-bin.000001 # Query # # use `test`; UPDATE tt_4, nt_4 SET tt_4.info= "new text 308 --> 4", nt_4.info= "new text 308 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1
master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TN R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 11", nt_3.a= "new text 11", nt_4.a= "new text 11", tt_4.a = "new text 11" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 4000", 4000, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (308, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE tt_4, nt_4 SET tt_4.info= "new text 308 --> 4", nt_4.info= "new text 308 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1
master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TN R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (309, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 12", nt_3.a= "new text 12", nt_4.a= "new text 12", tt_4.a = "new text 12" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 4100", 4100, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (309, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (309, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (309, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TN-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (309, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (309, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TN-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (310, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (310, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (310, 4, fc_i_nt_5_suc(310, 4));
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (310, 4, fc_i_nt_5_suc(310, 4))
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TN-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (310, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (310, 4, fc_i_nt_5_suc(310, 4))
master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TN-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
#
-#13.e) "B M T R" with error in M generates in the binlog the "B M T R" entries.
+#19.e) Generates in the binlog what follows if a N-Table is changed:
+# --> STMT "B N C B M C" entries if in M only N-Table is changed, format S.
+# --> STMT "B N C B M R" entries, format S.
+# --> ROW "B N C B N C" entries, format R.
+# --> MIXED "B N C B N C" entries, format S in first N and format R in the other.
#
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (311, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (311, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tNe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 311, 4, COUNT(*) FROM tt_1 UNION SELECT 311, 2, COUNT(*) FROM tt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 311, 4, COUNT(*) FROM tt_1 UNION SELECT 311, 2, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tNe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N tNe R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (311, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 311, 4, COUNT(*) FROM tt_1 UNION SELECT 311, 2, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N tNe R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO nt_3 VALUES ("new text -30", -30, '');
-INSERT INTO tt_3 VALUES ("new text -29", -29, ''), ("new text -30", -30, '');
-ERROR 23000: Duplicate entry '-30' for key 'PRIMARY'
-INSERT INTO tt_1 VALUES ("new text -30", -30, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (312, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (312, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> nTe << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id, info) SELECT 312, 4, COUNT(*) FROM nt_1 UNION SELECT 290, 4, COUNT(*) FROM nt_1;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> nTe << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N nTe R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (312, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> B N nTe R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
BEGIN;
-INSERT INTO tt_4 VALUES ("new text -30", -30, '');
-INSERT INTO nt_4 VALUES ("new text -29", -29, ''), ("new text -30", -30, '');
-ERROR 23000: Duplicate entry '-30' for key 'PRIMARY'
-INSERT INTO tt_1 VALUES ("new text -31", -31, '');
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (313, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (313, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_4(trans_id, stmt_id) VALUES (313, 4), (306, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
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 # # use `test`; INSERT INTO nt_3 VALUES ("new text -30", -30, '')
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ("new text -29", -29, ''), ("new text -30", -30, '')
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -30", -30, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (313, 4), (306, 4)
master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NeT-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (313, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_4(trans_id, stmt_id) VALUES (313, 4), (306, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NeT-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (314, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_4 VALUES ("new text -30", -30, '')
-master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text -29", -29, ''), ("new text -30", -30, '')
-master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -31", -31, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (314, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> NeT-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (314, 4, ''), (310, 2, fc_i_tt_5_suc (314, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> NeT-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (314, 4, ''), (310, 2, fc_i_tt_5_suc (314, 4))
master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N NeT-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (314, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (314, 4, ''), (310, 2, fc_i_tt_5_suc (314, 4))
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N NeT-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (315, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (315, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-trig << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_3(trans_id, stmt_id) VALUES (315, 4), (295, 4);
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-trig << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (315, 4), (295, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TeN-trig R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (315, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_3(trans_id, stmt_id) VALUES (315, 4), (295, 4)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TeN-trig R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (316, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (316, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> TeN-func << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (316, 4, ''), (296, 4, fc_i_nt_5_suc (316, 4));
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> TeN-func << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (316, 4, ''), (296, 4, fc_i_nt_5_suc (316, 4))
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N TeN-func R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (316, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (316, 4, ''), (296, 4, fc_i_nt_5_suc (316, 4))
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N TeN-func R << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# 2 - SAVEPOINT
+###################################################################################
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (317, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> S1 << -b-b-b-b-b-b-b-b-b-b-b-
+SAVEPOINT s1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> S1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (317, 5);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R1 << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK TO s1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (317, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T S1 T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (317, 2)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T S1 T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (318, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (318, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> S1 << -b-b-b-b-b-b-b-b-b-b-b-
+SAVEPOINT s1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> S1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 7);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R1 << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK TO s1;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 4)
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 7)
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N T S1 T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (318, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 4)
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 7)
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B N T S1 T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (319, 4);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> S1 << -b-b-b-b-b-b-b-b-b-b-b-
+SAVEPOINT s1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> S1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 7);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R1 << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK TO s1;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (319, 4)
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 7)
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T N S1 T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 2)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (319, 4)
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 7)
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T N S1 T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> S1 << -b-b-b-b-b-b-b-b-b-b-b-
+SAVEPOINT s1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> S1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (320, 5);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 7);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R1 << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK TO s1;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 2)
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (320, 5)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 7)
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T S1 N T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 2)
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (320, 5)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 7)
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> B T S1 N T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# 3 - CREATE TABLE...SELECT
+###################################################################################
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-T->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE tt_xx_1 (PRIMARY KEY (stmt_id)) engine=Innodb SELECT stmt_id FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-T->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-T->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE tt_xx_1 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE tt_xx_1 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-T->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_1, nt_xx_1;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_1, nt_xx_1
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-T->T CS-T->T drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE tt_xx_1 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_1, nt_xx_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-T->T CS-T->T drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->N << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_2 (PRIMARY KEY (stmt_id)) engine=MyIsam SELECT stmt_id FROM nt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->N << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_2 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE nt_xx_2 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_2, nt_xx_2;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_2, nt_xx_2
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->N CS-N->N drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE nt_xx_2 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_2, nt_xx_2
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->N CS-N->N drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-T->N << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE tt_xx_3 (PRIMARY KEY (stmt_id)) engine=Innodb SELECT stmt_id FROM nt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-T->N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-T->N << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE tt_xx_3 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM nt_1;;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE tt_xx_3 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-T->N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_3, nt_xx_3;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_3, nt_xx_3
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-T->N CS-T->N drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE tt_xx_3 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM nt_1
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_3, nt_xx_3
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-T->N CS-T->N drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_4 (PRIMARY KEY (stmt_id)) engine=MyIsam SELECT stmt_id FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_4 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM tt_1;;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE nt_xx_4 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_4, nt_xx_4;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_4, nt_xx_4
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->T CS-N->T drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE nt_xx_4 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM tt_1
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_4, nt_xx_4
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->T CS-N->T drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_5 (PRIMARY KEY (stmt_id)) engine=MyIsam SELECT stmt_id FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_5 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM tt_1;;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE nt_xx_5 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_5, nt_xx_5;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_5, nt_xx_5
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->T CS-N->T drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE nt_xx_5 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM tt_1
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_5, nt_xx_5
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->T CS-N->T drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_6 (PRIMARY KEY (stmt_id)) engine=MyIsam SELECT stmt_id FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_6 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM tt_1;;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE nt_xx_6 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_6, nt_xx_6;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_6, nt_xx_6
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CSe-N->T CS-N->T drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE nt_xx_6 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM tt_1
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_6, nt_xx_6
+-e-e-e-e-e-e-e-e-e-e-e- >> CSe-N->T CS-N->T drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# 4 - INSERT TABLE...SELECT
+###################################################################################
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-T->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE tt_xx_7 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE tt_xx_7 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-T->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-T->T << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE tt_xx_7 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-T->T << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_7;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (328, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-T<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_7(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1;;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-T<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (328, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (328, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_xx_7(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (328, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B T IS-T<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (328, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_xx_7(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (328, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B T IS-T<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_7;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (329, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-T<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_7(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM nt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-T<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (329, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (329, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (329, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B T ISe-T<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (329, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (329, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B T ISe-T<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_7;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-T<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_7(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1;;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-T<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (330, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_xx_7(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (330, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B IS-T<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_xx_7(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (330, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B IS-T<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_7;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-T<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_7(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM nt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-T<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (331, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (331, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B ISe-T<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_7
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (331, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B ISe-T<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_7, nt_xx_7;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_7, nt_xx_7
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_7, nt_xx_7
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-T->T << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE tt_xx_8 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE tt_xx_8 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-T->T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-T->T << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE tt_xx_8 (PRIMARY KEY(trans_id, stmt_id)) engine=Innodb SELECT * FROM tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-T->T << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_8;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (334, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-T<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_8(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1;;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-T<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (334, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (334, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_xx_8(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (334, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B T IS-T<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (334, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_xx_8(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (334, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B T IS-T<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_8;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (335, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-T<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_8(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-T<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (335, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (335, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (335, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B T ISe-T<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (335, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (335, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B T ISe-T<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_8;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-T<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_8(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1;;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-T<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (336, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_xx_8(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (336, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B IS-T<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_xx_8(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (336, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B IS-T<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE tt_xx_8;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-T<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_xx_8(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-T<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (337, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (337, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-T B ISe-T<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_xx_8
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (337, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-T B ISe-T<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_8, nt_xx_8;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_8, nt_xx_8
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_8, nt_xx_8
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->N << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_9 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE nt_xx_9 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->N << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE nt_xx_9 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->N << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_9;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (340, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-N<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1;;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-N<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (340, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (340, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (340, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B T IS-N<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (340, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (340, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B T IS-N<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_9;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (341, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-N<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-N<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (341, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (341, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM tt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (341, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B T ISe-N<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (341, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM tt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (341, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B T ISe-N<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_9;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-N<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1;;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-N<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (342, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (342, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B IS-N<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (342, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B IS-N<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_9;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-N<-T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM tt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-N<-T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (343, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (343, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B ISe-N<-T T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_9
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_xx_9(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM tt_1
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (343, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B ISe-N<-T T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_9, nt_xx_9;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_9, nt_xx_9
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_9, nt_xx_9
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->N << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TABLE nt_xx_10 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE nt_xx_10 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CS-N->N << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE nt_xx_10 (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> CS-N->N << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_10;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (346, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-N<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1;;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-N<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (346, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (346, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (346, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B T IS-N<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (346, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (346, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B T IS-N<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_10;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (347, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-N<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM nt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-N<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (347, 6);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (347, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM nt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (347, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B T ISe-N<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (347, 3)
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM nt_1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (347, 6)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B T ISe-N<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_10;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> IS-N<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1;;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> IS-N<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (348, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (348, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B IS-N<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (348, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B IS-N<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N << -b-b-b-b-b-b-b-b-b-b-b-
+TRUNCATE TABLE nt_xx_10;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> ISe-N<-N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM nt_1;;
+Got one of the listed errors
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM nt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> ISe-N<-N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (349, 4);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
+COMMIT;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (349, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> trunc-CS-N B ISe-N<-N T C << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_xx_10
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_xx_10(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM nt_1
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (349, 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+-e-e-e-e-e-e-e-e-e-e-e- >> trunc-CS-N B ISe-N<-N T C << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TABLE IF EXISTS tt_xx_10, nt_xx_10;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_10, nt_xx_10
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CS << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx_10, nt_xx_10
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CS << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# 5 - ROLLBACK TEMPORARY TABLE
+###################################################################################
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (351, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CT << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TEMPORARY TABLE tt_xx_11 (a int) engine=Innodb;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (351, 2)
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx_11 (a int) engine=Innodb
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T CT R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (351, 2)
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx_11 (a int) engine=Innodb
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T CT R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TEMPORARY TABLE IF EXISTS tt_xx_11;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_11
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_11
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (353, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> S1 << -b-b-b-b-b-b-b-b-b-b-b-
+SAVEPOINT s1;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> S1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (353, 5);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CT << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TEMPORARY TABLE tt_xx_12 (a int) engine=Innodb;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R1 << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK TO s1;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> R1 << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (353, 2)
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (353, 5)
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx_12 (a int) engine=Innodb
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T S1 T CT R1 R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (353, 2)
+master-bin.000001 # Query # # use `test`; SAVEPOINT s1
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (353, 5)
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx_12 (a int) engine=Innodb
+master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T S1 T CT R1 R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TEMPORARY TABLE IF EXISTS tt_xx_12;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_12
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_12
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (355, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CT << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TEMPORARY TABLE tt_xx_13 (a int) engine=Innodb;;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (355, 5);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (355, 2)
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx_13 (a int) engine=Innodb
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (355, 5)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B T CT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (355, 2)
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx_13 (a int) engine=Innodb
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (355, 5)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B T CT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TEMPORARY TABLE IF EXISTS tt_xx_13;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_13
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_13
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> tN << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 357, 2, COUNT(*) FROM tt_1;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 357, 2, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> tN << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CT << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TEMPORARY TABLE tt_xx_14 (a int) engine=Innodb;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx_14 (a int) engine=Innodb
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (357, 5);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (357, 5)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B tN CT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id, info) SELECT 357, 2, COUNT(*) FROM tt_1
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx_14 (a int) engine=Innodb
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (357, 5)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B tN CT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TEMPORARY TABLE IF EXISTS tt_xx_14;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_14
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_14
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CT << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TEMPORARY TABLE tt_xx_15 (a int) engine=Innodb;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx_15 (a int) engine=Innodb
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (359, 3);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (359, 3)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B CT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx_15 (a int) engine=Innodb
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (359, 3)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B CT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TEMPORARY TABLE IF EXISTS tt_xx_15;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_15
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_15
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b-
+BEGIN;
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO nt_1(trans_id, stmt_id) VALUES (361, 2);
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (361, 2)
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> CT << -b-b-b-b-b-b-b-b-b-b-b-
+CREATE TEMPORARY TABLE tt_xx_16 (a int) engine=Innodb;;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx_16 (a int) engine=Innodb
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(trans_id, stmt_id) VALUES (361, 5);
+Log_name Pos Event_type Server_id End_log_pos Info
+-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (361, 5)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> B N CT T R << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (361, 2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx_16 (a int) engine=Innodb
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (361, 5)
+master-bin.000001 # Query # # ROLLBACK
+-e-e-e-e-e-e-e-e-e-e-e- >> B N CT T R << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+DROP TEMPORARY TABLE IF EXISTS tt_xx_16;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_16
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> drop-CT << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS tt_xx_16
+-e-e-e-e-e-e-e-e-e-e-e- >> drop-CT << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# CHECK CONSISTENCY
+###################################################################################
###################################################################################
# CLEAN
###################################################################################
-DROP TABLE tt_1;
-DROP TABLE tt_2;
-DROP TABLE tt_3;
-DROP TABLE tt_4;
-DROP TABLE nt_1;
-DROP TABLE nt_2;
-DROP TABLE nt_3;
-DROP TABLE nt_4;
-DROP PROCEDURE pc_i_tt_3;
-DROP FUNCTION f1;
-DROP FUNCTION f2;
diff --git a/mysql-test/suite/rpl/r/rpl_stm_multi_query.result b/mysql-test/suite/rpl/r/rpl_stm_multi_query.result
index 625c686f383..0bd57d4b78a 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_multi_query.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_multi_query.result
@@ -24,9 +24,19 @@ Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # drop database if exists mysqltest
master-bin.000001 # Query # # create database mysqltest
master-bin.000001 # Query # # use `test`; create table mysqltest.t1 ( n int)
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into mysqltest.t1 values(1)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into mysqltest.t1 values(2)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into mysqltest.t1 values(3)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into mysqltest.t1 values(4)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into mysqltest.t1 values(5)
+master-bin.000001 # Query # # COMMIT
drop database mysqltest;
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..94e8a31390d 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_reset_slave.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_reset_slave.result
@@ -43,6 +43,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
stop slave;
change master to master_user='test';
SHOW SLAVE STATUS;
@@ -84,11 +86,13 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
reset slave;
SHOW SLAVE STATUS;
Slave_IO_State #
Master_Host 127.0.0.1
-Master_User root
+Master_User test
Master_Port MASTER_PORT
Connect_Retry 1
Master_Log_File
@@ -124,6 +128,9 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
+change master to master_user='root';
start slave;
SHOW SLAVE STATUS;
Slave_IO_State #
@@ -164,6 +171,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
stop slave;
reset slave;
start slave;
diff --git a/mysql-test/suite/rpl/r/rpl_start_stop_slave.result b/mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result
index e2b1935c268..5897735c74e 100644
--- a/mysql-test/suite/rpl/r/rpl_start_stop_slave.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result
@@ -4,6 +4,8 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
create table t1(n int);
stop slave;
start slave;
@@ -22,6 +24,8 @@ insert into t1i values (5);
begin;
insert into t1i values (4);
insert into t2m values (1);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
insert into t1i values (5);
commit;
zero
diff --git a/mysql-test/suite/rpl/r/rpl_stm_stop_middle_group.result b/mysql-test/suite/rpl/r/rpl_stm_stop_middle_group.result
new file mode 100644
index 00000000000..8d37686688a
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_stm_stop_middle_group.result
@@ -0,0 +1,68 @@
+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;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+create table tm (a int auto_increment primary key) engine=myisam;
+create table ti (a int auto_increment primary key) engine=innodb;
+set @@global.debug="+d,stop_slave_middle_group";
+begin;
+insert into ti set a=null;
+insert into tm set a=null;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+commit;
+SELECT "NO" AS Last_SQL_Error, @check as `true`;
+Last_SQL_Error true
+NO 1
+select count(*) as one from tm;
+one
+1
+select count(*) as one from ti;
+one
+1
+set @@global.debug="-d";
+include/start_slave.inc
+truncate table tm;
+truncate table ti;
+set @@global.debug="+d,stop_slave_middle_group";
+set @@global.debug="+d,incomplete_group_in_relay_log";
+begin;
+insert into ti set a=null;
+insert into tm set a=null;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+commit;
+SELECT "Fatal error: ... The slave SQL is stopped, leaving the current group of events unfinished with a non-transaction table changed. If the group consists solely of Row-based events, you can try restarting the slave with --slave-exec-mode=IDEMPOTENT, which ignores duplicate key, key not found, and similar errors (see documentation for details)." AS Last_SQL_Error, @check as `true`;
+Last_SQL_Error true
+Fatal error: ... The slave SQL is stopped, leaving the current group of events unfinished with a non-transaction table changed. If the group consists solely of Row-based events, you can try restarting the slave with --slave-exec-mode=IDEMPOTENT, which ignores duplicate key, key not found, and similar errors (see documentation for details). 1
+select count(*) as one from tm;
+one
+1
+select count(*) as zero from ti;
+zero
+0
+set @@global.debug="-d";
+stop slave;
+truncate table tm;
+include/start_slave.inc
+set @@global.debug="+d,stop_slave_middle_group";
+set @@global.debug="+d,incomplete_group_in_relay_log";
+update tm as t1, ti as t2 set t1.a=t1.a * 2, t2.a=t2.a * 2;
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
+SELECT "Fatal error: ... The slave SQL is stopped, leaving the current group of events unfinished with a non-transaction table changed. If the group consists solely of Row-based events, you can try restarting the slave with --slave-exec-mode=IDEMPOTENT, which ignores duplicate key, key not found, and similar errors (see documentation for details)." AS Last_SQL_Error, @check as `true`;
+Last_SQL_Error true
+Fatal error: ... The slave SQL is stopped, leaving the current group of events unfinished with a non-transaction table changed. If the group consists solely of Row-based events, you can try restarting the slave with --slave-exec-mode=IDEMPOTENT, which ignores duplicate key, key not found, and similar errors (see documentation for details). 1
+select max(a) as two from tm;
+two
+2
+select max(a) as one from ti;
+one
+1
+set @@global.debug="-d";
+drop table tm, ti;
+include/stop_slave.inc
+drop table tm, ti;
diff --git a/mysql-test/suite/rpl/r/rpl_stm_until.result b/mysql-test/suite/rpl/r/rpl_stm_until.result
index 8cf700ecebe..9202bba0edd 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_until.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_until.result
@@ -63,6 +63,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291;
select * from t1;
n
@@ -109,7 +111,9 @@ 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;
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
+start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=891;
select * from t2;
n
1
@@ -140,7 +144,7 @@ Exec_Master_Log_Pos #
Relay_Log_Space #
Until_Condition Relay
Until_Log_File slave-relay-bin.000004
-Until_Log_Pos 746
+Until_Log_Pos 891
Master_SSL_Allowed No
Master_SSL_CA_File
Master_SSL_CA_Path
@@ -153,6 +157,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
start slave;
[on master]
[on slave]
@@ -197,6 +203,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
==== Test various error conditions ====
start slave until master_log_file='master-bin', master_log_pos=561;
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
diff --git a/mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result b/mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result
index 7447d12f9b2..37781aeac0c 100644
--- a/mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result
+++ b/mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result
@@ -23,7 +23,7 @@ binlog_format ROW
set global binlog_format=DEFAULT;
show global variables like "binlog_format%";
Variable_name Value
-binlog_format MIXED
+binlog_format STATEMENT
set global binlog_format=MIXED;
show global variables like "binlog_format%";
Variable_name Value
diff --git a/mysql-test/suite/rpl/r/rpl_sync.result b/mysql-test/suite/rpl/r/rpl_sync.result
new file mode 100644
index 00000000000..edc20c46140
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_sync.result
@@ -0,0 +1,40 @@
+=====Configuring the enviroment=======;
+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;
+call mtr.add_suppression('Attempting backtrace');
+call mtr.add_suppression("Recovery from master pos .* and file master-bin.000001");
+CREATE TABLE t1(a INT, PRIMARY KEY(a)) engine=innodb;
+insert into t1(a) values(1);
+insert into t1(a) values(2);
+insert into t1(a) values(3);
+=====Inserting data on the master but without the SQL Thread being running=======;
+stop slave SQL_THREAD;
+insert into t1(a) values(4);
+insert into t1(a) values(5);
+insert into t1(a) values(6);
+=====Removing relay log files and crashing/recoverying the slave=======;
+stop slave IO_THREAD;
+SET SESSION debug="d,crash_before_rotate_relaylog";
+FLUSH LOGS;
+ERROR HY000: Lost connection to MySQL server during query
+=====Dumping and comparing tables=======;
+start slave;
+Comparing tables master:test.t1 and slave:test.t1
+=====Corrupting the master.info=======;
+stop slave;
+FLUSH LOGS;
+insert into t1(a) values(7);
+insert into t1(a) values(8);
+insert into t1(a) values(9);
+SET SESSION debug="d,crash_before_rotate_relaylog";
+FLUSH LOGS;
+ERROR HY000: Lost connection to MySQL server during query
+=====Dumping and comparing tables=======;
+start slave;
+Comparing tables master:test.t1 and slave:test.t1
+=====Clean up=======;
+drop table t1;
diff --git a/mysql-test/suite/rpl/r/rpl_temp_table_mix_row.result b/mysql-test/suite/rpl/r/rpl_temp_table_mix_row.result
index 3a31a206b1e..3de1eb46a4c 100644
--- a/mysql-test/suite/rpl/r/rpl_temp_table_mix_row.result
+++ b/mysql-test/suite/rpl/r/rpl_temp_table_mix_row.result
@@ -67,5 +67,7 @@ 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 TEMPORARY TABLE IF EXISTS `t2_tmp` /* generated by server */
+slave-bin.000001 # Query # # BEGIN
slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (2)
+slave-bin.000001 # Query # # COMMIT
slave-bin.000001 # Query # # use `test`; DROP TABLE t3, t1
diff --git a/mysql-test/suite/rpl/r/rpl_temporary.result b/mysql-test/suite/rpl/r/rpl_temporary.result
index 87bf525aacc..bceece8d682 100644
--- a/mysql-test/suite/rpl/r/rpl_temporary.result
+++ b/mysql-test/suite/rpl/r/rpl_temporary.result
@@ -27,12 +27,12 @@ Warning 1265 Data truncated for column 'b' at row 1
DROP TABLE t1;
SET @save_select_limit=@@session.sql_select_limit;
SET @@session.sql_select_limit=10, @@session.pseudo_thread_id=100;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
SELECT @@session.sql_select_limit = @save_select_limit;
@@session.sql_select_limit = @save_select_limit
1
SET @@session.sql_select_limit=10, @@session.sql_log_bin=0;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
SELECT @@session.sql_select_limit = @save_select_limit;
@@session.sql_select_limit = @save_select_limit
1
diff --git a/mysql-test/suite/rpl/r/rpl_temporary_errors.result b/mysql-test/suite/rpl/r/rpl_temporary_errors.result
index d14380a6369..8ecbbde65b4 100644
--- a/mysql-test/suite/rpl/r/rpl_temporary_errors.result
+++ b/mysql-test/suite/rpl/r/rpl_temporary_errors.result
@@ -6,7 +6,6 @@ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
call mtr.add_suppression("Deadlock found");
**** On Master ****
-SET SESSION BINLOG_FORMAT=ROW;
CREATE TABLE t1 (a INT PRIMARY KEY, b INT);
INSERT INTO t1 VALUES (1,1), (2,2), (3,3), (4,4);
**** On Slave ****
@@ -79,6 +78,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
DROP TABLE t1;
**** On Master ****
DROP TABLE t1;
diff --git a/mysql-test/suite/rpl/r/rpl_trigger.result b/mysql-test/suite/rpl/r/rpl_trigger.result
index 86534fa8f7d..3d7757613a7 100644
--- a/mysql-test/suite/rpl/r/rpl_trigger.result
+++ b/mysql-test/suite/rpl/r/rpl_trigger.result
@@ -4,7 +4,6 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
DROP TABLE IF EXISTS t3;
diff --git a/mysql-test/suite/rpl/r/rpl_typeconv.result b/mysql-test/suite/rpl/r/rpl_typeconv.result
new file mode 100644
index 00000000000..89096153c14
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_typeconv.result
@@ -0,0 +1,558 @@
+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;
+set @saved_slave_type_conversions = @@global.slave_type_conversions;
+CREATE TABLE type_conversions (
+TestNo INT AUTO_INCREMENT PRIMARY KEY,
+Source TEXT,
+Target TEXT,
+Flags TEXT,
+On_Master TEXT,
+On_Slave TEXT,
+Expected TEXT,
+Compare INT,
+Error TEXT);
+SELECT @@global.slave_type_conversions;
+@@global.slave_type_conversions
+
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='';
+SELECT @@global.slave_type_conversions;
+@@global.slave_type_conversions
+
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_NON_LOSSY';
+SELECT @@global.slave_type_conversions;
+@@global.slave_type_conversions
+ALL_NON_LOSSY
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY';
+SELECT @@global.slave_type_conversions;
+@@global.slave_type_conversions
+ALL_LOSSY
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY,ALL_NON_LOSSY';
+SELECT @@global.slave_type_conversions;
+@@global.slave_type_conversions
+ALL_LOSSY,ALL_NON_LOSSY
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY,ALL_NON_LOSSY,NONEXISTING_BIT';
+ERROR 42000: Variable 'slave_type_conversions' can't be set to the value of 'NONEXISTING_BIT'
+SELECT @@global.slave_type_conversions;
+@@global.slave_type_conversions
+ALL_LOSSY,ALL_NON_LOSSY
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='';
+**** Running tests with @@SLAVE_TYPE_CONVERSIONS = '' ****
+**** Resetting master and slave ****
+include/stop_slave.inc
+RESET SLAVE;
+RESET MASTER;
+include/start_slave.inc
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_NON_LOSSY';
+**** Running tests with @@SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY' ****
+**** Resetting master and slave ****
+include/stop_slave.inc
+RESET SLAVE;
+RESET MASTER;
+include/start_slave.inc
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY';
+**** Running tests with @@SLAVE_TYPE_CONVERSIONS = 'ALL_LOSSY' ****
+**** Resetting master and slave ****
+include/stop_slave.inc
+RESET SLAVE;
+RESET MASTER;
+include/start_slave.inc
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY,ALL_NON_LOSSY';
+**** Running tests with @@SLAVE_TYPE_CONVERSIONS = 'ALL_LOSSY,ALL_NON_LOSSY' ****
+**** Resetting master and slave ****
+include/stop_slave.inc
+RESET SLAVE;
+RESET MASTER;
+include/start_slave.inc
+**** Result of conversions ****
+Source_Type Target_Type All_Type_Conversion_Flags Value_On_Slave
+TINYBLOB TINYBLOB <Correct value>
+TINYBLOB BLOB <Correct error>
+TINYBLOB MEDIUMBLOB <Correct error>
+TINYBLOB LONGBLOB <Correct error>
+BLOB TINYBLOB <Correct error>
+BLOB BLOB <Correct value>
+BLOB MEDIUMBLOB <Correct error>
+BLOB LONGBLOB <Correct error>
+MEDIUMBLOB TINYBLOB <Correct error>
+MEDIUMBLOB BLOB <Correct error>
+MEDIUMBLOB MEDIUMBLOB <Correct value>
+MEDIUMBLOB LONGBLOB <Correct error>
+LONGBLOB TINYBLOB <Correct error>
+LONGBLOB BLOB <Correct error>
+LONGBLOB MEDIUMBLOB <Correct error>
+LONGBLOB LONGBLOB <Correct value>
+GEOMETRY BLOB <Correct error>
+BLOB GEOMETRY <Correct error>
+GEOMETRY GEOMETRY <Correct value>
+BIT(1) BIT(1) <Correct value>
+DATE DATE <Correct value>
+ENUM('master',' ENUM('master',' <Correct value>
+CHAR(10) ENUM('master',' <Correct error>
+CHAR(10) SET('master','s <Correct error>
+ENUM('master',' CHAR(10) <Correct error>
+SET('master','s CHAR(10) <Correct error>
+SET('master','s SET('master','s <Correct value>
+SET('master','s SET('master','s <Correct value>
+SET('0','1','2' SET('0','1','2' <Correct value>
+SET('0','1','2' SET('0','1','2' <Correct error>
+SET('0','1','2' SET('0','1','2' <Correct error>
+SET('0','1','2' SET('0','1','2' <Correct error>
+TINYINT TINYINT <Correct value>
+TINYINT SMALLINT <Correct error>
+TINYINT MEDIUMINT <Correct error>
+TINYINT INT <Correct error>
+TINYINT BIGINT <Correct error>
+SMALLINT TINYINT <Correct error>
+SMALLINT TINYINT <Correct error>
+SMALLINT TINYINT UNSIGNE <Correct error>
+SMALLINT SMALLINT <Correct value>
+SMALLINT MEDIUMINT <Correct error>
+SMALLINT INT <Correct error>
+SMALLINT BIGINT <Correct error>
+MEDIUMINT TINYINT <Correct error>
+MEDIUMINT TINYINT <Correct error>
+MEDIUMINT TINYINT UNSIGNE <Correct error>
+MEDIUMINT SMALLINT <Correct error>
+MEDIUMINT MEDIUMINT <Correct value>
+MEDIUMINT INT <Correct error>
+MEDIUMINT BIGINT <Correct error>
+INT TINYINT <Correct error>
+INT TINYINT <Correct error>
+INT TINYINT UNSIGNE <Correct error>
+INT SMALLINT <Correct error>
+INT MEDIUMINT <Correct error>
+INT INT <Correct value>
+INT BIGINT <Correct error>
+BIGINT TINYINT <Correct error>
+BIGINT SMALLINT <Correct error>
+BIGINT MEDIUMINT <Correct error>
+BIGINT INT <Correct error>
+BIGINT BIGINT <Correct value>
+CHAR(20) CHAR(20) <Correct value>
+CHAR(20) CHAR(30) <Correct error>
+CHAR(20) CHAR(10) <Correct error>
+CHAR(20) VARCHAR(20) <Correct error>
+CHAR(20) VARCHAR(30) <Correct error>
+CHAR(20) VARCHAR(10) <Correct error>
+CHAR(20) TINYTEXT <Correct error>
+CHAR(20) TEXT <Correct error>
+CHAR(20) MEDIUMTEXT <Correct error>
+CHAR(20) LONGTEXT <Correct error>
+VARCHAR(20) VARCHAR(20) <Correct value>
+VARCHAR(20) VARCHAR(30) <Correct error>
+VARCHAR(20) VARCHAR(10) <Correct error>
+VARCHAR(20) CHAR(30) <Correct error>
+VARCHAR(20) CHAR(10) <Correct error>
+VARCHAR(20) TINYTEXT <Correct error>
+VARCHAR(20) TEXT <Correct error>
+VARCHAR(20) MEDIUMTEXT <Correct error>
+VARCHAR(20) LONGTEXT <Correct error>
+VARCHAR(500) VARCHAR(500) <Correct value>
+VARCHAR(500) VARCHAR(510) <Correct error>
+VARCHAR(500) VARCHAR(255) <Correct error>
+VARCHAR(500) TINYTEXT <Correct error>
+VARCHAR(500) TEXT <Correct error>
+VARCHAR(500) MEDIUMTEXT <Correct error>
+VARCHAR(500) LONGTEXT <Correct error>
+TINYTEXT VARCHAR(500) <Correct error>
+TEXT VARCHAR(500) <Correct error>
+MEDIUMTEXT VARCHAR(500) <Correct error>
+LONGTEXT VARCHAR(500) <Correct error>
+TINYTEXT CHAR(255) <Correct error>
+TINYTEXT CHAR(250) <Correct error>
+TEXT CHAR(255) <Correct error>
+MEDIUMTEXT CHAR(255) <Correct error>
+LONGTEXT CHAR(255) <Correct error>
+TINYTEXT TINYTEXT <Correct value>
+TINYTEXT TEXT <Correct error>
+TEXT TINYTEXT <Correct error>
+DECIMAL(10,5) DECIMAL(10,5) <Correct value>
+DECIMAL(10,5) DECIMAL(10,6) <Correct error>
+DECIMAL(10,5) DECIMAL(11,5) <Correct error>
+DECIMAL(10,5) DECIMAL(11,6) <Correct error>
+DECIMAL(10,5) DECIMAL(10,4) <Correct error>
+DECIMAL(10,5) DECIMAL(9,5) <Correct error>
+DECIMAL(10,5) DECIMAL(9,4) <Correct error>
+FLOAT DECIMAL(10,5) <Correct error>
+DOUBLE DECIMAL(10,5) <Correct error>
+DECIMAL(10,5) FLOAT <Correct error>
+DECIMAL(10,5) DOUBLE <Correct error>
+FLOAT FLOAT <Correct value>
+DOUBLE DOUBLE <Correct value>
+FLOAT DOUBLE <Correct error>
+DOUBLE FLOAT <Correct error>
+BIT(5) BIT(5) <Correct value>
+BIT(5) BIT(6) <Correct error>
+BIT(6) BIT(5) <Correct error>
+BIT(5) BIT(12) <Correct error>
+BIT(12) BIT(5) <Correct error>
+TINYBLOB TINYBLOB ALL_NON_LOSSY <Correct value>
+TINYBLOB BLOB ALL_NON_LOSSY <Correct value>
+TINYBLOB MEDIUMBLOB ALL_NON_LOSSY <Correct value>
+TINYBLOB LONGBLOB ALL_NON_LOSSY <Correct value>
+BLOB TINYBLOB ALL_NON_LOSSY <Correct error>
+BLOB BLOB ALL_NON_LOSSY <Correct value>
+BLOB MEDIUMBLOB ALL_NON_LOSSY <Correct value>
+BLOB LONGBLOB ALL_NON_LOSSY <Correct value>
+MEDIUMBLOB TINYBLOB ALL_NON_LOSSY <Correct error>
+MEDIUMBLOB BLOB ALL_NON_LOSSY <Correct error>
+MEDIUMBLOB MEDIUMBLOB ALL_NON_LOSSY <Correct value>
+MEDIUMBLOB LONGBLOB ALL_NON_LOSSY <Correct value>
+LONGBLOB TINYBLOB ALL_NON_LOSSY <Correct error>
+LONGBLOB BLOB ALL_NON_LOSSY <Correct error>
+LONGBLOB MEDIUMBLOB ALL_NON_LOSSY <Correct error>
+LONGBLOB LONGBLOB ALL_NON_LOSSY <Correct value>
+GEOMETRY BLOB ALL_NON_LOSSY <Correct error>
+BLOB GEOMETRY ALL_NON_LOSSY <Correct error>
+GEOMETRY GEOMETRY ALL_NON_LOSSY <Correct value>
+BIT(1) BIT(1) ALL_NON_LOSSY <Correct value>
+DATE DATE ALL_NON_LOSSY <Correct value>
+ENUM('master',' ENUM('master',' ALL_NON_LOSSY <Correct value>
+CHAR(10) ENUM('master',' ALL_NON_LOSSY <Correct error>
+CHAR(10) SET('master','s ALL_NON_LOSSY <Correct error>
+ENUM('master',' CHAR(10) ALL_NON_LOSSY <Correct error>
+SET('master','s CHAR(10) ALL_NON_LOSSY <Correct error>
+SET('master','s SET('master','s ALL_NON_LOSSY <Correct value>
+SET('master','s SET('master','s ALL_NON_LOSSY <Correct value>
+SET('0','1','2' SET('0','1','2' ALL_NON_LOSSY <Correct value>
+SET('0','1','2' SET('0','1','2' ALL_NON_LOSSY <Correct value>
+SET('0','1','2' SET('0','1','2' ALL_NON_LOSSY <Correct error>
+SET('0','1','2' SET('0','1','2' ALL_NON_LOSSY <Correct error>
+TINYINT TINYINT ALL_NON_LOSSY <Correct value>
+TINYINT SMALLINT ALL_NON_LOSSY <Correct value>
+TINYINT MEDIUMINT ALL_NON_LOSSY <Correct value>
+TINYINT INT ALL_NON_LOSSY <Correct value>
+TINYINT BIGINT ALL_NON_LOSSY <Correct value>
+SMALLINT TINYINT ALL_NON_LOSSY <Correct error>
+SMALLINT TINYINT ALL_NON_LOSSY <Correct error>
+SMALLINT TINYINT UNSIGNE ALL_NON_LOSSY <Correct error>
+SMALLINT SMALLINT ALL_NON_LOSSY <Correct value>
+SMALLINT MEDIUMINT ALL_NON_LOSSY <Correct value>
+SMALLINT INT ALL_NON_LOSSY <Correct value>
+SMALLINT BIGINT ALL_NON_LOSSY <Correct value>
+MEDIUMINT TINYINT ALL_NON_LOSSY <Correct error>
+MEDIUMINT TINYINT ALL_NON_LOSSY <Correct error>
+MEDIUMINT TINYINT UNSIGNE ALL_NON_LOSSY <Correct error>
+MEDIUMINT SMALLINT ALL_NON_LOSSY <Correct error>
+MEDIUMINT MEDIUMINT ALL_NON_LOSSY <Correct value>
+MEDIUMINT INT ALL_NON_LOSSY <Correct value>
+MEDIUMINT BIGINT ALL_NON_LOSSY <Correct value>
+INT TINYINT ALL_NON_LOSSY <Correct error>
+INT TINYINT ALL_NON_LOSSY <Correct error>
+INT TINYINT UNSIGNE ALL_NON_LOSSY <Correct error>
+INT SMALLINT ALL_NON_LOSSY <Correct error>
+INT MEDIUMINT ALL_NON_LOSSY <Correct error>
+INT INT ALL_NON_LOSSY <Correct value>
+INT BIGINT ALL_NON_LOSSY <Correct value>
+BIGINT TINYINT ALL_NON_LOSSY <Correct error>
+BIGINT SMALLINT ALL_NON_LOSSY <Correct error>
+BIGINT MEDIUMINT ALL_NON_LOSSY <Correct error>
+BIGINT INT ALL_NON_LOSSY <Correct error>
+BIGINT BIGINT ALL_NON_LOSSY <Correct value>
+CHAR(20) CHAR(20) ALL_NON_LOSSY <Correct value>
+CHAR(20) CHAR(30) ALL_NON_LOSSY <Correct value>
+CHAR(20) CHAR(10) ALL_NON_LOSSY <Correct error>
+CHAR(20) VARCHAR(20) ALL_NON_LOSSY <Correct value>
+CHAR(20) VARCHAR(30) ALL_NON_LOSSY <Correct value>
+CHAR(20) VARCHAR(10) ALL_NON_LOSSY <Correct error>
+CHAR(20) TINYTEXT ALL_NON_LOSSY <Correct value>
+CHAR(20) TEXT ALL_NON_LOSSY <Correct value>
+CHAR(20) MEDIUMTEXT ALL_NON_LOSSY <Correct value>
+CHAR(20) LONGTEXT ALL_NON_LOSSY <Correct value>
+VARCHAR(20) VARCHAR(20) ALL_NON_LOSSY <Correct value>
+VARCHAR(20) VARCHAR(30) ALL_NON_LOSSY <Correct value>
+VARCHAR(20) VARCHAR(10) ALL_NON_LOSSY <Correct error>
+VARCHAR(20) CHAR(30) ALL_NON_LOSSY <Correct value>
+VARCHAR(20) CHAR(10) ALL_NON_LOSSY <Correct error>
+VARCHAR(20) TINYTEXT ALL_NON_LOSSY <Correct value>
+VARCHAR(20) TEXT ALL_NON_LOSSY <Correct value>
+VARCHAR(20) MEDIUMTEXT ALL_NON_LOSSY <Correct value>
+VARCHAR(20) LONGTEXT ALL_NON_LOSSY <Correct value>
+VARCHAR(500) VARCHAR(500) ALL_NON_LOSSY <Correct value>
+VARCHAR(500) VARCHAR(510) ALL_NON_LOSSY <Correct value>
+VARCHAR(500) VARCHAR(255) ALL_NON_LOSSY <Correct error>
+VARCHAR(500) TINYTEXT ALL_NON_LOSSY <Correct error>
+VARCHAR(500) TEXT ALL_NON_LOSSY <Correct value>
+VARCHAR(500) MEDIUMTEXT ALL_NON_LOSSY <Correct value>
+VARCHAR(500) LONGTEXT ALL_NON_LOSSY <Correct value>
+TINYTEXT VARCHAR(500) ALL_NON_LOSSY <Correct value>
+TEXT VARCHAR(500) ALL_NON_LOSSY <Correct error>
+MEDIUMTEXT VARCHAR(500) ALL_NON_LOSSY <Correct error>
+LONGTEXT VARCHAR(500) ALL_NON_LOSSY <Correct error>
+TINYTEXT CHAR(255) ALL_NON_LOSSY <Correct value>
+TINYTEXT CHAR(250) ALL_NON_LOSSY <Correct error>
+TEXT CHAR(255) ALL_NON_LOSSY <Correct error>
+MEDIUMTEXT CHAR(255) ALL_NON_LOSSY <Correct error>
+LONGTEXT CHAR(255) ALL_NON_LOSSY <Correct error>
+TINYTEXT TINYTEXT ALL_NON_LOSSY <Correct value>
+TINYTEXT TEXT ALL_NON_LOSSY <Correct value>
+TEXT TINYTEXT ALL_NON_LOSSY <Correct error>
+DECIMAL(10,5) DECIMAL(10,5) ALL_NON_LOSSY <Correct value>
+DECIMAL(10,5) DECIMAL(10,6) ALL_NON_LOSSY <Correct value>
+DECIMAL(10,5) DECIMAL(11,5) ALL_NON_LOSSY <Correct value>
+DECIMAL(10,5) DECIMAL(11,6) ALL_NON_LOSSY <Correct value>
+DECIMAL(10,5) DECIMAL(10,4) ALL_NON_LOSSY <Correct error>
+DECIMAL(10,5) DECIMAL(9,5) ALL_NON_LOSSY <Correct error>
+DECIMAL(10,5) DECIMAL(9,4) ALL_NON_LOSSY <Correct error>
+FLOAT DECIMAL(10,5) ALL_NON_LOSSY <Correct error>
+DOUBLE DECIMAL(10,5) ALL_NON_LOSSY <Correct error>
+DECIMAL(10,5) FLOAT ALL_NON_LOSSY <Correct error>
+DECIMAL(10,5) DOUBLE ALL_NON_LOSSY <Correct error>
+FLOAT FLOAT ALL_NON_LOSSY <Correct value>
+DOUBLE DOUBLE ALL_NON_LOSSY <Correct value>
+FLOAT DOUBLE ALL_NON_LOSSY <Correct value>
+DOUBLE FLOAT ALL_NON_LOSSY <Correct error>
+BIT(5) BIT(5) ALL_NON_LOSSY <Correct value>
+BIT(5) BIT(6) ALL_NON_LOSSY <Correct value>
+BIT(6) BIT(5) ALL_NON_LOSSY <Correct error>
+BIT(5) BIT(12) ALL_NON_LOSSY <Correct value>
+BIT(12) BIT(5) ALL_NON_LOSSY <Correct error>
+TINYBLOB TINYBLOB ALL_LOSSY <Correct value>
+TINYBLOB BLOB ALL_LOSSY <Correct error>
+TINYBLOB MEDIUMBLOB ALL_LOSSY <Correct error>
+TINYBLOB LONGBLOB ALL_LOSSY <Correct error>
+BLOB TINYBLOB ALL_LOSSY <Correct value>
+BLOB BLOB ALL_LOSSY <Correct value>
+BLOB MEDIUMBLOB ALL_LOSSY <Correct error>
+BLOB LONGBLOB ALL_LOSSY <Correct error>
+MEDIUMBLOB TINYBLOB ALL_LOSSY <Correct value>
+MEDIUMBLOB BLOB ALL_LOSSY <Correct value>
+MEDIUMBLOB MEDIUMBLOB ALL_LOSSY <Correct value>
+MEDIUMBLOB LONGBLOB ALL_LOSSY <Correct error>
+LONGBLOB TINYBLOB ALL_LOSSY <Correct value>
+LONGBLOB BLOB ALL_LOSSY <Correct value>
+LONGBLOB MEDIUMBLOB ALL_LOSSY <Correct value>
+LONGBLOB LONGBLOB ALL_LOSSY <Correct value>
+GEOMETRY BLOB ALL_LOSSY <Correct error>
+BLOB GEOMETRY ALL_LOSSY <Correct error>
+GEOMETRY GEOMETRY ALL_LOSSY <Correct value>
+BIT(1) BIT(1) ALL_LOSSY <Correct value>
+DATE DATE ALL_LOSSY <Correct value>
+ENUM('master',' ENUM('master',' ALL_LOSSY <Correct value>
+CHAR(10) ENUM('master',' ALL_LOSSY <Correct error>
+CHAR(10) SET('master','s ALL_LOSSY <Correct error>
+ENUM('master',' CHAR(10) ALL_LOSSY <Correct error>
+SET('master','s CHAR(10) ALL_LOSSY <Correct error>
+SET('master','s SET('master','s ALL_LOSSY <Correct value>
+SET('master','s SET('master','s ALL_LOSSY <Correct value>
+SET('0','1','2' SET('0','1','2' ALL_LOSSY <Correct value>
+SET('0','1','2' SET('0','1','2' ALL_LOSSY <Correct error>
+SET('0','1','2' SET('0','1','2' ALL_LOSSY <Correct value>
+SET('0','1','2' SET('0','1','2' ALL_LOSSY <Correct value>
+TINYINT TINYINT ALL_LOSSY <Correct value>
+TINYINT SMALLINT ALL_LOSSY <Correct error>
+TINYINT MEDIUMINT ALL_LOSSY <Correct error>
+TINYINT INT ALL_LOSSY <Correct error>
+TINYINT BIGINT ALL_LOSSY <Correct error>
+SMALLINT TINYINT ALL_LOSSY <Correct value>
+SMALLINT TINYINT ALL_LOSSY <Correct value>
+SMALLINT TINYINT UNSIGNE ALL_LOSSY <Correct value>
+SMALLINT SMALLINT ALL_LOSSY <Correct value>
+SMALLINT MEDIUMINT ALL_LOSSY <Correct error>
+SMALLINT INT ALL_LOSSY <Correct error>
+SMALLINT BIGINT ALL_LOSSY <Correct error>
+MEDIUMINT TINYINT ALL_LOSSY <Correct value>
+MEDIUMINT TINYINT ALL_LOSSY <Correct value>
+MEDIUMINT TINYINT UNSIGNE ALL_LOSSY <Correct value>
+MEDIUMINT SMALLINT ALL_LOSSY <Correct value>
+MEDIUMINT MEDIUMINT ALL_LOSSY <Correct value>
+MEDIUMINT INT ALL_LOSSY <Correct error>
+MEDIUMINT BIGINT ALL_LOSSY <Correct error>
+INT TINYINT ALL_LOSSY <Correct value>
+INT TINYINT ALL_LOSSY <Correct value>
+INT TINYINT UNSIGNE ALL_LOSSY <Correct value>
+INT SMALLINT ALL_LOSSY <Correct value>
+INT MEDIUMINT ALL_LOSSY <Correct value>
+INT INT ALL_LOSSY <Correct value>
+INT BIGINT ALL_LOSSY <Correct error>
+BIGINT TINYINT ALL_LOSSY <Correct value>
+BIGINT SMALLINT ALL_LOSSY <Correct value>
+BIGINT MEDIUMINT ALL_LOSSY <Correct value>
+BIGINT INT ALL_LOSSY <Correct value>
+BIGINT BIGINT ALL_LOSSY <Correct value>
+CHAR(20) CHAR(20) ALL_LOSSY <Correct value>
+CHAR(20) CHAR(30) ALL_LOSSY <Correct error>
+CHAR(20) CHAR(10) ALL_LOSSY <Correct value>
+CHAR(20) VARCHAR(20) ALL_LOSSY <Correct error>
+CHAR(20) VARCHAR(30) ALL_LOSSY <Correct error>
+CHAR(20) VARCHAR(10) ALL_LOSSY <Correct value>
+CHAR(20) TINYTEXT ALL_LOSSY <Correct error>
+CHAR(20) TEXT ALL_LOSSY <Correct error>
+CHAR(20) MEDIUMTEXT ALL_LOSSY <Correct error>
+CHAR(20) LONGTEXT ALL_LOSSY <Correct error>
+VARCHAR(20) VARCHAR(20) ALL_LOSSY <Correct value>
+VARCHAR(20) VARCHAR(30) ALL_LOSSY <Correct error>
+VARCHAR(20) VARCHAR(10) ALL_LOSSY <Correct value>
+VARCHAR(20) CHAR(30) ALL_LOSSY <Correct error>
+VARCHAR(20) CHAR(10) ALL_LOSSY <Correct value>
+VARCHAR(20) TINYTEXT ALL_LOSSY <Correct error>
+VARCHAR(20) TEXT ALL_LOSSY <Correct error>
+VARCHAR(20) MEDIUMTEXT ALL_LOSSY <Correct error>
+VARCHAR(20) LONGTEXT ALL_LOSSY <Correct error>
+VARCHAR(500) VARCHAR(500) ALL_LOSSY <Correct value>
+VARCHAR(500) VARCHAR(510) ALL_LOSSY <Correct error>
+VARCHAR(500) VARCHAR(255) ALL_LOSSY <Correct value>
+VARCHAR(500) TINYTEXT ALL_LOSSY <Correct value>
+VARCHAR(500) TEXT ALL_LOSSY <Correct error>
+VARCHAR(500) MEDIUMTEXT ALL_LOSSY <Correct error>
+VARCHAR(500) LONGTEXT ALL_LOSSY <Correct error>
+TINYTEXT VARCHAR(500) ALL_LOSSY <Correct error>
+TEXT VARCHAR(500) ALL_LOSSY <Correct value>
+MEDIUMTEXT VARCHAR(500) ALL_LOSSY <Correct value>
+LONGTEXT VARCHAR(500) ALL_LOSSY <Correct value>
+TINYTEXT CHAR(255) ALL_LOSSY <Correct error>
+TINYTEXT CHAR(250) ALL_LOSSY <Correct value>
+TEXT CHAR(255) ALL_LOSSY <Correct value>
+MEDIUMTEXT CHAR(255) ALL_LOSSY <Correct value>
+LONGTEXT CHAR(255) ALL_LOSSY <Correct value>
+TINYTEXT TINYTEXT ALL_LOSSY <Correct value>
+TINYTEXT TEXT ALL_LOSSY <Correct error>
+TEXT TINYTEXT ALL_LOSSY <Correct value>
+DECIMAL(10,5) DECIMAL(10,5) ALL_LOSSY <Correct value>
+DECIMAL(10,5) DECIMAL(10,6) ALL_LOSSY <Correct error>
+DECIMAL(10,5) DECIMAL(11,5) ALL_LOSSY <Correct error>
+DECIMAL(10,5) DECIMAL(11,6) ALL_LOSSY <Correct error>
+DECIMAL(10,5) DECIMAL(10,4) ALL_LOSSY <Correct value>
+DECIMAL(10,5) DECIMAL(9,5) ALL_LOSSY <Correct value>
+DECIMAL(10,5) DECIMAL(9,4) ALL_LOSSY <Correct value>
+FLOAT DECIMAL(10,5) ALL_LOSSY <Correct value>
+DOUBLE DECIMAL(10,5) ALL_LOSSY <Correct value>
+DECIMAL(10,5) FLOAT ALL_LOSSY <Correct value>
+DECIMAL(10,5) DOUBLE ALL_LOSSY <Correct value>
+FLOAT FLOAT ALL_LOSSY <Correct value>
+DOUBLE DOUBLE ALL_LOSSY <Correct value>
+FLOAT DOUBLE ALL_LOSSY <Correct error>
+DOUBLE FLOAT ALL_LOSSY <Correct value>
+BIT(5) BIT(5) ALL_LOSSY <Correct value>
+BIT(5) BIT(6) ALL_LOSSY <Correct error>
+BIT(6) BIT(5) ALL_LOSSY <Correct value>
+BIT(5) BIT(12) ALL_LOSSY <Correct error>
+BIT(12) BIT(5) ALL_LOSSY <Correct value>
+TINYBLOB TINYBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+TINYBLOB BLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+TINYBLOB MEDIUMBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+TINYBLOB LONGBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+BLOB TINYBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+BLOB BLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+BLOB MEDIUMBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+BLOB LONGBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+MEDIUMBLOB TINYBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+MEDIUMBLOB BLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+MEDIUMBLOB MEDIUMBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+MEDIUMBLOB LONGBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+LONGBLOB TINYBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+LONGBLOB BLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+LONGBLOB MEDIUMBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+LONGBLOB LONGBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+GEOMETRY BLOB ALL_LOSSY,ALL_NON_LOSSY <Correct error>
+BLOB GEOMETRY ALL_LOSSY,ALL_NON_LOSSY <Correct error>
+GEOMETRY GEOMETRY ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+BIT(1) BIT(1) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+DATE DATE ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+ENUM('master',' ENUM('master',' ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+CHAR(10) ENUM('master',' ALL_LOSSY,ALL_NON_LOSSY <Correct error>
+CHAR(10) SET('master','s ALL_LOSSY,ALL_NON_LOSSY <Correct error>
+ENUM('master',' CHAR(10) ALL_LOSSY,ALL_NON_LOSSY <Correct error>
+SET('master','s CHAR(10) ALL_LOSSY,ALL_NON_LOSSY <Correct error>
+SET('master','s SET('master','s ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+SET('master','s SET('master','s ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+SET('0','1','2' SET('0','1','2' ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+SET('0','1','2' SET('0','1','2' ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+SET('0','1','2' SET('0','1','2' ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+SET('0','1','2' SET('0','1','2' ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+TINYINT TINYINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+TINYINT SMALLINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+TINYINT MEDIUMINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+TINYINT INT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+TINYINT BIGINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+SMALLINT TINYINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+SMALLINT TINYINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+SMALLINT TINYINT UNSIGNE ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+SMALLINT SMALLINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+SMALLINT MEDIUMINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+SMALLINT INT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+SMALLINT BIGINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+MEDIUMINT TINYINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+MEDIUMINT TINYINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+MEDIUMINT TINYINT UNSIGNE ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+MEDIUMINT SMALLINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+MEDIUMINT MEDIUMINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+MEDIUMINT INT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+MEDIUMINT BIGINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+INT TINYINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+INT TINYINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+INT TINYINT UNSIGNE ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+INT SMALLINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+INT MEDIUMINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+INT INT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+INT BIGINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+BIGINT TINYINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+BIGINT SMALLINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+BIGINT MEDIUMINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+BIGINT INT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+BIGINT BIGINT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+CHAR(20) CHAR(20) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+CHAR(20) CHAR(30) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+CHAR(20) CHAR(10) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+CHAR(20) VARCHAR(20) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+CHAR(20) VARCHAR(30) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+CHAR(20) VARCHAR(10) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+CHAR(20) TINYTEXT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+CHAR(20) TEXT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+CHAR(20) MEDIUMTEXT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+CHAR(20) LONGTEXT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+VARCHAR(20) VARCHAR(20) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+VARCHAR(20) VARCHAR(30) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+VARCHAR(20) VARCHAR(10) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+VARCHAR(20) CHAR(30) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+VARCHAR(20) CHAR(10) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+VARCHAR(20) TINYTEXT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+VARCHAR(20) TEXT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+VARCHAR(20) MEDIUMTEXT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+VARCHAR(20) LONGTEXT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+VARCHAR(500) VARCHAR(500) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+VARCHAR(500) VARCHAR(510) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+VARCHAR(500) VARCHAR(255) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+VARCHAR(500) TINYTEXT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+VARCHAR(500) TEXT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+VARCHAR(500) MEDIUMTEXT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+VARCHAR(500) LONGTEXT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+TINYTEXT VARCHAR(500) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+TEXT VARCHAR(500) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+MEDIUMTEXT VARCHAR(500) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+LONGTEXT VARCHAR(500) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+TINYTEXT CHAR(255) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+TINYTEXT CHAR(250) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+TEXT CHAR(255) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+MEDIUMTEXT CHAR(255) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+LONGTEXT CHAR(255) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+TINYTEXT TINYTEXT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+TINYTEXT TEXT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+TEXT TINYTEXT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+DECIMAL(10,5) DECIMAL(10,5) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+DECIMAL(10,5) DECIMAL(10,6) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+DECIMAL(10,5) DECIMAL(11,5) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+DECIMAL(10,5) DECIMAL(11,6) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+DECIMAL(10,5) DECIMAL(10,4) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+DECIMAL(10,5) DECIMAL(9,5) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+DECIMAL(10,5) DECIMAL(9,4) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+FLOAT DECIMAL(10,5) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+DOUBLE DECIMAL(10,5) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+DECIMAL(10,5) FLOAT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+DECIMAL(10,5) DOUBLE ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+FLOAT FLOAT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+DOUBLE DOUBLE ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+FLOAT DOUBLE ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+DOUBLE FLOAT ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+BIT(5) BIT(5) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+BIT(5) BIT(6) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+BIT(6) BIT(5) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+BIT(5) BIT(12) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+BIT(12) BIT(5) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
+DROP TABLE type_conversions;
+DROP TABLE t1;
+set global slave_type_conversions = @saved_slave_type_conversions;
diff --git a/mysql-test/suite/rpl/r/rpl_typeconv_innodb.result b/mysql-test/suite/rpl/r/rpl_typeconv_innodb.result
new file mode 100644
index 00000000000..0b4286c54eb
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_typeconv_innodb.result
@@ -0,0 +1,18 @@
+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;
+**** Resetting master and slave ****
+include/stop_slave.inc
+RESET SLAVE;
+RESET MASTER;
+include/start_slave.inc
+SET @saved_slave_type_conversions = @@GLOBAL.SLAVE_TYPE_CONVERSIONS;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = '';
+CREATE TABLE t1(b1 BIT(1), b2 BIT(2), b3 BIT(3)) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (b'0', b'01', b'101');
+Comparing tables master:test.t1 and slave:test.t1
+DROP TABLE t1;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
diff --git a/mysql-test/suite/rpl/r/rpl_udf.result b/mysql-test/suite/rpl/r/rpl_udf.result
index ccf16271d01..92ffb9cffc7 100644
--- a/mysql-test/suite/rpl/r/rpl_udf.result
+++ b/mysql-test/suite/rpl/r/rpl_udf.result
@@ -4,7 +4,6 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-set binlog_format=row;
drop table if exists t1;
"*** Test 1) Test UDFs via loadable libraries ***
"Running on the master"
@@ -156,163 +155,3 @@ affected rows: 0
"Running on the master"
DROP TABLE t1;
affected rows: 0
-set binlog_format=statement;
-drop table if exists t1;
-"*** Test 1) Test UDFs via loadable libraries ***
-"Running on the master"
-CREATE FUNCTION myfunc_double RETURNS REAL SONAME "UDF_EXAMPLE_LIB";
-affected rows: 0
-CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "UDF_EXAMPLE_LIB";
-affected rows: 0
-CREATE FUNCTION myfunc_nonexist RETURNS INTEGER SONAME "UDF_EXAMPLE_LIB";
-ERROR HY000: Can't find symbol 'myfunc_nonexist' in library
-SELECT * FROM mysql.func ORDER BY name;
-name ret dl type
-myfunc_double 1 UDF_LIB function
-myfunc_int 2 UDF_LIB function
-affected rows: 2
-"Running on the slave"
-SELECT * FROM mysql.func ORDER BY name;
-name ret dl type
-myfunc_double 1 UDF_LIB function
-myfunc_int 2 UDF_LIB function
-affected rows: 2
-"Running on the master"
-CREATE TABLE t1(sum INT, price FLOAT(24)) ENGINE=MyISAM;
-affected rows: 0
-INSERT INTO t1 VALUES(myfunc_int(100), myfunc_double(50.00));
-Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-affected rows: 1
-INSERT INTO t1 VALUES(myfunc_int(10), myfunc_double(5.00));
-Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-affected rows: 1
-INSERT INTO t1 VALUES(myfunc_int(200), myfunc_double(25.00));
-Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-affected rows: 1
-INSERT INTO t1 VALUES(myfunc_int(1), myfunc_double(500.00));
-Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-affected rows: 1
-SELECT * FROM t1 ORDER BY sum;
-sum price
-1 48.5
-10 48.75
-100 48.6
-200 49
-affected rows: 4
-"Running on the slave"
-SELECT * FROM t1 ORDER BY sum;
-sum price
-1 48.5
-10 48.75
-100 48.6
-200 49
-affected rows: 4
-SELECT myfunc_int(25);
-myfunc_int(25)
-25
-affected rows: 1
-SELECT myfunc_double(75.00);
-myfunc_double(75.00)
-50.00
-affected rows: 1
-"Running on the master"
-DROP FUNCTION myfunc_double;
-affected rows: 0
-DROP FUNCTION myfunc_int;
-affected rows: 0
-SELECT * FROM mysql.func ORDER BY name;
-name ret dl type
-affected rows: 0
-"Running on the slave"
-SELECT * FROM mysql.func ORDER BY name;
-name ret dl type
-affected rows: 0
-"Running on the master"
-DROP TABLE t1;
-affected rows: 0
-"*** Test 2) Test UDFs with SQL body ***
-"Running on the master"
-CREATE FUNCTION myfuncsql_int(i INT) RETURNS INTEGER DETERMINISTIC RETURN i;
-affected rows: 0
-CREATE FUNCTION myfuncsql_double(d DOUBLE) RETURNS INTEGER DETERMINISTIC RETURN d * 2.00;
-affected rows: 0
-SELECT db, name, type, param_list, body, comment FROM mysql.proc WHERE db = 'test' AND name LIKE 'myfuncsql%' ORDER BY name;
-db name type param_list body comment
-test myfuncsql_double FUNCTION d DOUBLE RETURN d * 2.00
-test myfuncsql_int FUNCTION i INT RETURN i
-affected rows: 2
-"Running on the slave"
-SELECT db, name, type, param_list, body, comment FROM mysql.proc WHERE db = 'test' AND name LIKE 'myfuncsql%' ORDER BY name;
-db name type param_list body comment
-test myfuncsql_double FUNCTION d DOUBLE RETURN d * 2.00
-test myfuncsql_int FUNCTION i INT RETURN i
-affected rows: 2
-"Running on the master"
-CREATE TABLE t1(sum INT, price FLOAT(24)) ENGINE=MyISAM;
-affected rows: 0
-INSERT INTO t1 VALUES(myfuncsql_int(100), myfuncsql_double(50.00));
-affected rows: 1
-INSERT INTO t1 VALUES(myfuncsql_int(10), myfuncsql_double(5.00));
-affected rows: 1
-INSERT INTO t1 VALUES(myfuncsql_int(200), myfuncsql_double(25.00));
-affected rows: 1
-INSERT INTO t1 VALUES(myfuncsql_int(1), myfuncsql_double(500.00));
-affected rows: 1
-SELECT * FROM t1 ORDER BY sum;
-sum price
-1 1000
-10 10
-100 100
-200 50
-affected rows: 4
-"Running on the slave"
-SELECT * FROM t1 ORDER BY sum;
-sum price
-1 1000
-10 10
-100 100
-200 50
-affected rows: 4
-"Running on the master"
-ALTER FUNCTION myfuncsql_int COMMENT "This was altered.";
-affected rows: 0
-ALTER FUNCTION myfuncsql_double COMMENT "This was altered.";
-affected rows: 0
-SELECT db, name, type, param_list, body, comment FROM mysql.proc WHERE db = 'test' AND name LIKE 'myfuncsql%' ORDER BY name;
-db name type param_list body comment
-test myfuncsql_double FUNCTION d DOUBLE RETURN d * 2.00 This was altered.
-test myfuncsql_int FUNCTION i INT RETURN i This was altered.
-affected rows: 2
-"Running on the slave"
-SELECT db, name, type, param_list, body, comment FROM mysql.proc WHERE db = 'test' AND name LIKE 'myfuncsql%' ORDER BY name;
-db name type param_list body comment
-test myfuncsql_double FUNCTION d DOUBLE RETURN d * 2.00 This was altered.
-test myfuncsql_int FUNCTION i INT RETURN i This was altered.
-affected rows: 2
-SELECT myfuncsql_int(25);
-myfuncsql_int(25)
-25
-affected rows: 1
-SELECT myfuncsql_double(75.00);
-myfuncsql_double(75.00)
-150
-affected rows: 1
-"Running on the master"
-DROP FUNCTION myfuncsql_double;
-affected rows: 0
-DROP FUNCTION myfuncsql_int;
-affected rows: 0
-SELECT db, name, type, param_list, body, comment FROM mysql.proc WHERE db = 'test' AND name LIKE 'myfuncsql%' ORDER BY name;
-db name type param_list body comment
-affected rows: 0
-"Running on the slave"
-SELECT db, name, type, param_list, body, comment FROM mysql.proc WHERE db = 'test' AND name LIKE 'myfuncsql%' ORDER BY name;
-db name type param_list body comment
-affected rows: 0
-"Running on the master"
-DROP TABLE t1;
-affected rows: 0
diff --git a/mysql-test/suite/rpl/r/rpl_variables_stm.result b/mysql-test/suite/rpl/r/rpl_variables_stm.result
index 51484187215..baf8ffa5256 100644
--- a/mysql-test/suite/rpl/r/rpl_variables_stm.result
+++ b/mysql-test/suite/rpl/r/rpl_variables_stm.result
@@ -4,9 +4,9 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
==== Initialization ====
[on master]
-SET @m_pseudo_thread_id= @@global.pseudo_thread_id;
SET @m_auto_increment_increment= @@global.auto_increment_increment;
SET @m_auto_increment_offset= @@global.auto_increment_offset;
SET @m_character_set_client= @@global.character_set_client;
@@ -16,7 +16,6 @@ SET @m_time_zone= @@global.time_zone;
SET @m_lc_time_names= @@global.lc_time_names;
SET @m_collation_database= @@global.collation_database;
[on slave]
-SET @s_pseudo_thread_id= @@global.pseudo_thread_id;
SET @s_auto_increment_increment= @@global.auto_increment_increment;
SET @s_auto_increment_offset= @@global.auto_increment_offset;
SET @s_character_set_client= @@global.character_set_client;
@@ -25,7 +24,6 @@ SET @s_collation_server= @@global.collation_server;
SET @s_time_zone= @@global.time_zone;
SET @s_lc_time_names= @@global.lc_time_names;
SET @s_collation_database= @@global.collation_database;
-SET @@global.pseudo_thread_id= 4711;
SET @@global.auto_increment_increment=19;
SET @@global.auto_increment_offset=4;
SET @@global.character_set_client='latin2';
@@ -505,7 +503,6 @@ DROP PROCEDURE proc;
DROP FUNCTION func;
DROP TRIGGER trig;
DROP TABLE tstmt, tproc, tfunc, ttrig, tprep, trigger_table;
-SET @@global.pseudo_thread_id= @m_pseudo_thread_id;
SET @@global.auto_increment_increment= @m_auto_increment_increment;
SET @@global.auto_increment_offset= @m_auto_increment_offset;
SET @@global.character_set_client= @m_character_set_client;
@@ -515,7 +512,6 @@ SET @@global.time_zone= @m_time_zone;
SET @@global.lc_time_names= @m_lc_time_names;
SET @@global.collation_database= @m_collation_database;
[on slave]
-SET @@global.pseudo_thread_id= @s_pseudo_thread_id;
SET @@global.auto_increment_increment= @s_auto_increment_increment;
SET @@global.auto_increment_offset= @s_auto_increment_offset;
SET @@global.character_set_client= @s_character_set_client;
diff --git a/mysql-test/suite/rpl/rpl_1slave_base.cnf b/mysql-test/suite/rpl/rpl_1slave_base.cnf
index 23b7ded9a7d..2c2949bd42c 100644
--- a/mysql-test/suite/rpl/rpl_1slave_base.cnf
+++ b/mysql-test/suite/rpl/rpl_1slave_base.cnf
@@ -1,5 +1,6 @@
# Use default setting for mysqld processes
!include include/default_mysqld.cnf
+!include include/default_client.cnf
[mysqld.1]
diff --git a/mysql-test/suite/rpl/t/disabled.def b/mysql-test/suite/rpl/t/disabled.def
index d2cb1ce9518..a5017b1a02c 100644
--- a/mysql-test/suite/rpl/t/disabled.def
+++ b/mysql-test/suite/rpl/t/disabled.def
@@ -10,4 +10,5 @@
#
##############################################################################
-rpl_row_create_table : Bug#45576 2009-12-01 joro rpl_row_create_table fails on PB2
+rpl_row_create_table : Bug#45576 2009-12-01 joro rpl_row_create_table fails on PB2
+rpl_spec_variables : BUG#47661 2009-10-27 jasonh rpl_spec_variables fails on PB2 hpux
diff --git a/mysql-test/suite/rpl/t/rpl000010.test b/mysql-test/suite/rpl/t/rpl000010.test
index 261b9148774..a95cded6496 100644
--- a/mysql-test/suite/rpl/t/rpl000010.test
+++ b/mysql-test/suite/rpl/t/rpl000010.test
@@ -6,14 +6,10 @@ source include/master-slave.inc;
create table t1 (n int not null auto_increment primary key);
insert into t1 values(NULL);
insert into t1 values(2);
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
select n from t1;
connection master;
drop table t1;
-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/rpl000011.test b/mysql-test/suite/rpl/t/rpl000011.test
index 32f6227f7c5..baff7c1a1b5 100644
--- a/mysql-test/suite/rpl/t/rpl000011.test
+++ b/mysql-test/suite/rpl/t/rpl000011.test
@@ -4,7 +4,9 @@ create table t1 (n int);
insert into t1 values(1);
sync_slave_with_master;
stop slave;
+--source include/wait_for_slave_to_stop.inc
start slave;
+--source include/wait_for_slave_to_start.inc
connection master;
insert into t1 values(2);
#let slave catch up
diff --git a/mysql-test/suite/rpl/t/rpl000013.test b/mysql-test/suite/rpl/t/rpl000013.test
index 69a102e84ce..c5a3285733a 100644
--- a/mysql-test/suite/rpl/t/rpl000013.test
+++ b/mysql-test/suite/rpl/t/rpl000013.test
@@ -9,9 +9,7 @@
--source include/have_binlog_format_mixed_or_statement.inc
source include/master-slave.inc;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
connection master;
create table t2(n int);
@@ -46,8 +44,6 @@ connection master2;
# exist in this connection.
drop table if exists t1,t2;
-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/rpl000017-slave.opt b/mysql-test/suite/rpl/t/rpl000017-slave.opt
deleted file mode 100644
index 58a964c90d0..00000000000
--- a/mysql-test/suite/rpl/t/rpl000017-slave.opt
+++ /dev/null
@@ -1 +0,0 @@
---skip-slave-start
diff --git a/mysql-test/suite/rpl/t/rpl000017-slave.sh b/mysql-test/suite/rpl/t/rpl000017-slave.sh
index 1d95798260a..1d95798260a 100755..100644
--- a/mysql-test/suite/rpl/t/rpl000017-slave.sh
+++ b/mysql-test/suite/rpl/t/rpl000017-slave.sh
diff --git a/mysql-test/suite/rpl/t/rpl000017.test b/mysql-test/suite/rpl/t/rpl000017.test
index 2ba321cd8c3..a65189657cc 100644
--- a/mysql-test/suite/rpl/t/rpl000017.test
+++ b/mysql-test/suite/rpl/t/rpl000017.test
@@ -1,11 +1,23 @@
+# The test manually replaces the relay-log.info file with connection
+# information which the slave then should pick up. However, to avoid
+# overwriting the file, no CHANGE MASTER TO nor RESET SLAVE statements
+# should be executed.
+#
+# Starting replication before granting a replication user privileges
+# to replicate will cause the start slave to fail, so we shouldn't do
+# that.
+
+let $no_change_master = 1;
+let $skip_slave_start = 1;
source include/master-slave.inc;
-connection slave;
-stop slave;
+
connection master;
grant replication slave on *.* to replicate@localhost identified by 'aaaaaaaaaaaaaaab';
grant replication slave on *.* to replicate@127.0.0.1 identified by 'aaaaaaaaaaaaaaab';
connection slave;
start slave;
+source include/wait_for_slave_to_start.inc;
+
connection master;
--disable_warnings
drop table if exists t1;
diff --git a/mysql-test/suite/rpl/t/rpl_000015-slave.opt b/mysql-test/suite/rpl/t/rpl_000015-slave.opt
index 28bc753dd56..178e9d781f6 100644
--- a/mysql-test/suite/rpl/t/rpl_000015-slave.opt
+++ b/mysql-test/suite/rpl/t/rpl_000015-slave.opt
@@ -1 +1 @@
---server-id=22 --master-connect-retry=7
+--server-id=22
diff --git a/mysql-test/suite/rpl/t/rpl_000015.test b/mysql-test/suite/rpl/t/rpl_000015.test
index 45a43cd38d0..446c2f06ae5 100644
--- a/mysql-test/suite/rpl/t/rpl_000015.test
+++ b/mysql-test/suite/rpl/t/rpl_000015.test
@@ -15,14 +15,12 @@ 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;
+ master_password='',master_port=$MASTER_MYPORT, MASTER_CONNECT_RETRY=7;
source include/show_slave_status2.inc;
start slave;
+--source include/wait_for_slave_to_start.inc
sync_with_master;
source include/show_slave_status2.inc;
connection master;
diff --git a/mysql-test/suite/rpl/t/rpl_alter.test b/mysql-test/suite/rpl/t/rpl_alter.test
index 576376a0264..6a6da9c9f24 100644
--- a/mysql-test/suite/rpl/t/rpl_alter.test
+++ b/mysql-test/suite/rpl/t/rpl_alter.test
@@ -10,15 +10,11 @@ insert into mysqltest.t1 values (1,2);
create table mysqltest.t2 (n int);
insert into mysqltest.t2 values (45);
rename table mysqltest.t2 to mysqltest.t3, mysqltest.t1 to mysqltest.t2;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
select * from mysqltest.t2;
select * from mysqltest.t3;
connection master;
drop database mysqltest;
-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_auto_increment_11932.test b/mysql-test/suite/rpl/t/rpl_auto_increment_11932.test
index d4b7872fb2b..8c95e158847 100644
--- a/mysql-test/suite/rpl/t/rpl_auto_increment_11932.test
+++ b/mysql-test/suite/rpl/t/rpl_auto_increment_11932.test
@@ -51,9 +51,7 @@ CALL simpleproc3();
select * from t1;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
use test1;
select * from t1;
diff --git a/mysql-test/suite/rpl/t/rpl_begin_commit_rollback.test b/mysql-test/suite/rpl/t/rpl_begin_commit_rollback.test
index ec56e6a4f38..583268d0f65 100644
--- a/mysql-test/suite/rpl/t/rpl_begin_commit_rollback.test
+++ b/mysql-test/suite/rpl/t/rpl_begin_commit_rollback.test
@@ -2,6 +2,12 @@ source include/master-slave.inc;
source include/have_innodb.inc;
source include/have_binlog_format_statement.inc;
+connection slave;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
+connection master;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
disable_warnings;
DROP DATABASE IF EXISTS db1;
enable_warnings;
diff --git a/mysql-test/suite/rpl/t/rpl_binlog_grant.test b/mysql-test/suite/rpl/t/rpl_binlog_grant.test
index 31163927ce2..da14b45d5c3 100644
--- a/mysql-test/suite/rpl/t/rpl_binlog_grant.test
+++ b/mysql-test/suite/rpl/t/rpl_binlog_grant.test
@@ -25,9 +25,7 @@ grant select on t to x@y;
#
rollback;
show grants for x@y;
---replace_result $VERSION VERSION
---replace_regex /\/\* xid=.* \*\//\/* XID *\//
-show binlog events;
+source include/show_binlog_events.inc;
start transaction;
insert into t values (2);
revoke select on t from x@y;
@@ -37,9 +35,7 @@ revoke select on t from x@y;
commit;
select * from t;
show grants for x@y;
---replace_result $VERSION VERSION
---replace_regex /\/\* xid=.* \*\//\/* XID *\//
-show binlog events;
+source include/show_binlog_events.inc;
drop user x@y;
drop database d1;
--sync_slave_with_master
diff --git a/mysql-test/suite/rpl/t/rpl_bit.test b/mysql-test/suite/rpl/t/rpl_bit.test
index 07b0778296c..c648159ff3a 100644
--- a/mysql-test/suite/rpl/t/rpl_bit.test
+++ b/mysql-test/suite/rpl/t/rpl_bit.test
@@ -78,10 +78,8 @@ SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034 FROM test.t1;
SELECT hex(bit1) FROM test.t1 ORDER BY bit1;
SELECT hex(bit2) from test.t1 ORDER BY bit2;
SELECT hex(bit3) from test.t1 ORDER BY bit3;
-save_master_pos;
+sync_slave_with_master;
-connection slave;
-sync_with_master;
SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034 FROM test.t1;
SELECT hex(bit1) FROM test.t1 ORDER BY bit1;
SELECT hex(bit2) from test.t1 ORDER BY bit2;
diff --git a/mysql-test/suite/rpl/t/rpl_bit_npk.test b/mysql-test/suite/rpl/t/rpl_bit_npk.test
index 12b587919f9..1df7341eafc 100644
--- a/mysql-test/suite/rpl/t/rpl_bit_npk.test
+++ b/mysql-test/suite/rpl/t/rpl_bit_npk.test
@@ -76,10 +76,8 @@ SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034
SELECT hex(bit1) from test.t1 ORDER BY bit1;
SELECT hex(bit2) from test.t1 ORDER BY bit2;
SELECT hex(bit3) from test.t1 ORDER BY bit3;
-save_master_pos;
+sync_slave_with_master;
-connection slave;
-sync_with_master;
SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034
FROM test.t1
ORDER BY oSupp, sSuppD, GSuppDf, VNotSupp, x034;
@@ -100,10 +98,8 @@ UPDATE test.t3 SET a = 2 WHERE b = 0;
SELECT a, hex(b) FROM test.t2 ORDER BY a,b;
SELECT * FROM test.t3 ORDER BY a,b;
-save_master_pos;
+sync_slave_with_master;
-connection slave;
-sync_with_master;
SELECT a, hex(b) FROM test.t2 ORDER BY a,b;
SELECT * FROM test.t3 ORDER BY a,b;
diff --git a/mysql-test/suite/rpl/t/rpl_blackhole.test b/mysql-test/suite/rpl/t/rpl_blackhole.test
index 6bf66422d62..17475e2b420 100644
--- a/mysql-test/suite/rpl/t/rpl_blackhole.test
+++ b/mysql-test/suite/rpl/t/rpl_blackhole.test
@@ -18,6 +18,8 @@
source include/master-slave.inc;
source include/have_blackhole.inc;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
# We start with no primary key
CREATE TABLE t1 (a INT, b INT, c INT);
CREATE TABLE t2 (a INT, b INT, c INT);
@@ -45,9 +47,23 @@ source extra/rpl_tests/rpl_blackhole.test;
let $statement = INSERT INTO t1 SELECT * FROM t2;
source extra/rpl_tests/rpl_blackhole.test;
+#
+# The MASTER has MyISAM as the engine for both tables. The SLAVE has Blackhole
+# on t1 (transactional engine) and MyISAM on t2 (non-transactional engine).
+#
+# In MIXED mode, the command "INSERT INTO t2 SELECT * FROM t1" is logged as
+# statement on the master. On the slave, it is tagged as unsafe because the
+# statement mixes both transactional and non-transactional engines and as such
+# its changes are logged as rows. However, due to the nature of the blackhole
+# engine, no rows are returned and thus any chain replication would make the
+# next master on the chain diverge.
+#
+# Fo this reason, we have disabled the statement.
+#
# Test INSERT-SELECT from Blackhole, no primary key
-let $statement = INSERT INTO t2 SELECT * FROM t1;
-source extra/rpl_tests/rpl_blackhole.test;
+# let $statement = INSERT INTO t2 SELECT * FROM t1;
+# source extra/rpl_tests/rpl_blackhole.test;
+#
connection master;
ALTER TABLE t1 ADD PRIMARY KEY pk_t1 (a,b);
diff --git a/mysql-test/suite/rpl/t/rpl_bug31076.test b/mysql-test/suite/rpl/t/rpl_bug31076.test
index 9176bafe022..9461a91e933 100644
--- a/mysql-test/suite/rpl/t/rpl_bug31076.test
+++ b/mysql-test/suite/rpl/t/rpl_bug31076.test
@@ -1,5 +1,9 @@
+source include/have_binlog_format_mixed_or_row.inc;
source include/master-slave.inc;
+SET @saved_slave_type_conversions = @@slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
+
CREATE DATABASE track;
USE track;
@@ -130,7 +134,10 @@ VALUES ('3m3l4rhs6do0sf5p1i9lr94g928a272v', '', '', INET_ATON('71.118.124.98'),
SELECT * FROM visits;
SELECT * FROM visits_events;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
+
# Cleanup
DROP DATABASE track;
sync_slave_with_master;
+
--echo End of 5.1 tests
diff --git a/mysql-test/suite/rpl/t/rpl_bug33931.test b/mysql-test/suite/rpl/t/rpl_bug33931.test
index 1316ddb7401..42d86a7fc1e 100644
--- a/mysql-test/suite/rpl/t/rpl_bug33931.test
+++ b/mysql-test/suite/rpl/t/rpl_bug33931.test
@@ -8,23 +8,25 @@ source include/have_log_bin.inc;
connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT,);
-
connection master;
reset master;
connection slave;
+reset slave;
# Add suppression for expected warnings in slaves error log
call mtr.add_suppression("Failed during slave I/O thread initialization");
---disable_warnings
-stop slave;
---enable_warnings
-reset slave;
-
# Set debug flags on slave to force errors to occur
SET GLOBAL debug="d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init";
+--disable_query_log
+eval CHANGE MASTER TO MASTER_USER='root',
+ MASTER_CONNECT_RETRY=1,
+ MASTER_HOST='127.0.0.1',
+ MASTER_PORT=$MASTER_MYPORT;
+--enable_query_log
+
start slave;
connection master;
diff --git a/mysql-test/suite/rpl/t/rpl_bug41902-slave.opt b/mysql-test/suite/rpl/t/rpl_bug41902-slave.opt
new file mode 100644
index 00000000000..37fc56036fb
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_bug41902-slave.opt
@@ -0,0 +1 @@
+--loose-debug=-d,simulate_find_log_pos_error
diff --git a/mysql-test/suite/rpl/t/rpl_bug41902.test b/mysql-test/suite/rpl/t/rpl_bug41902.test
new file mode 100644
index 00000000000..d16fb986cea
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_bug41902.test
@@ -0,0 +1,61 @@
+# Test for Bug #41902 MYSQL_BIN_LOG::reset_logs() doesn't call my_error()
+# in face of an error
+#
+
+source include/have_debug.inc;
+source include/master-slave.inc;
+
+#
+# test checks that
+# a. there is no crash when find_log_pos() returns with an error
+# that tests expect to receive;
+# b. in the case of multiple error messages the first error message is
+# reported to the user and others are available as warnings.
+#
+
+connection slave;
+stop slave;
+
+SET @@debug="d,simulate_find_log_pos_error";
+
+--error ER_UNKNOWN_TARGET_BINLOG
+reset slave;
+show warnings;
+
+SET @@debug="";
+reset slave;
+change master to master_host='dummy';
+
+SET @@debug="d,simulate_find_log_pos_error";
+
+--error ER_UNKNOWN_TARGET_BINLOG
+change master to master_host='dummy';
+
+SET @@debug="";
+reset slave;
+change master to master_host='dummy';
+
+connection master;
+SET @@debug="d,simulate_find_log_pos_error";
+--error ER_UNKNOWN_TARGET_BINLOG
+reset master;
+
+SET @@debug="";
+reset master;
+
+SET @@debug="d,simulate_find_log_pos_error";
+--error ER_UNKNOWN_TARGET_BINLOG
+purge binary logs to 'master-bin.000001';
+
+SET @@debug="";
+purge binary logs to 'master-bin.000001';
+
+--disable_query_log
+call mtr.add_suppression("Failed to locate old binlog or relay log files");
+call mtr.add_suppression("MYSQL_BIN_LOG::purge_logs was called with file ./master-bin.000001 not listed in the index");
+connection slave;
+call mtr.add_suppression("Failed to locate old binlog or relay log files");
+call mtr.add_suppression("MYSQL_BIN_LOG::purge_logs was called with file ./master-bin.000001 not listed in the index");
+--enable_query_log
+
+--echo End of the tests
diff --git a/mysql-test/suite/rpl/t/rpl_change_master.test b/mysql-test/suite/rpl/t/rpl_change_master.test
index d0cd40e2e11..997cca42e82 100644
--- a/mysql-test/suite/rpl/t/rpl_change_master.test
+++ b/mysql-test/suite/rpl/t/rpl_change_master.test
@@ -28,8 +28,59 @@ sync_with_master;
select * from t1;
connection master;
drop table t1;
-save_master_pos;
+sync_slave_with_master;
+
+# End of 4.1 tests
+
+#
+# BUG#12190 CHANGE MASTER has differ path requiremts on MASTER_LOG_FILE and RELAY_LOG_FILE
+#
+
+source include/master-slave-reset.inc;
+
+connection master;
+create table t1 (a int);
+insert into t1 values (1);
+flush logs;
+insert into t1 values (2);
+
+# Note: the master positon saved by this will also be used by the
+# 'sync_with_master' below.
+sync_slave_with_master;
+
+# Check if the table t1 and t2 are identical on master and slave;
+let $diff_table_1= master:test.t1
+let $diff_table_2= slave:test.t1
+source include/diff_tables.inc;
+
connection slave;
+source include/stop_slave.inc;
+delete from t1 where a=2;
+
+# start replication from the second insert, after fix of BUG#12190,
+# relay_log_file does not use absolute path, only the filename is
+# required
+#
+# Note: the follow change master will automatically reset
+# relay_log_purge to false, save the old value to restore
+let $relay_log_purge= `select @@global.relay_log_purge`;
+CHANGE MASTER TO relay_log_file='slave-relay-bin.000005', relay_log_pos=4;
+start slave sql_thread;
+source include/wait_for_slave_sql_to_start.inc;
+
+# Sync to the same position saved by the 'sync_slave_with_master' above.
sync_with_master;
-# End of 4.1 tests
+# Check if the table t1 and t2 are identical on master and slave;
+let $diff_table_1= master:test.t1
+let $diff_table_2= slave:test.t1
+source include/diff_tables.inc;
+
+# clean up
+connection slave;
+start slave io_thread;
+source include/wait_for_slave_io_to_start.inc;
+eval set global relay_log_purge=$relay_log_purge;
+connection master;
+drop table t1;
+sync_slave_with_master;
diff --git a/mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test b/mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test
index 3633462d68e..2f1b86c2c31 100644
--- a/mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test
+++ b/mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test
@@ -7,6 +7,9 @@
#############################################################
--source include/have_innodb.inc
+# Use wait_for_slave_to_(start|stop) for current connections
+let $keep_connection= 1;
+
# Set up circular ring and new names for servers
--echo *** Set up circular ring by schema A->B->C->D->A ***
--source include/circular_rpl_for_4_hosts_init.inc
diff --git a/mysql-test/suite/rpl/t/rpl_colSize.test b/mysql-test/suite/rpl/t/rpl_colSize.test
index c20f2c3fd35..4c808ef3dfd 100644
--- a/mysql-test/suite/rpl/t/rpl_colSize.test
+++ b/mysql-test/suite/rpl/t/rpl_colSize.test
@@ -16,8 +16,12 @@ DROP TABLE IF EXISTS t1;
--echo *** Create "wider" table on slave ***
sync_slave_with_master;
STOP SLAVE;
+--source include/wait_for_slave_to_stop.inc
RESET SLAVE;
+SET @saved_slave_type_conversions = @@slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
+
eval CREATE TABLE t1 (
a float (47),
b double (143,9),
@@ -69,6 +73,7 @@ RESET MASTER;
--echo *** Start replication ***
connection slave;
START SLAVE;
+--source include/wait_for_slave_to_start.inc
--echo *** Insert data on master and display it. ***
connection master;
@@ -217,4 +222,6 @@ connection master;
DROP TABLE t1;
sync_slave_with_master;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
+
# END 5.1 Test Case
diff --git a/mysql-test/suite/rpl/t/rpl_concurrency_error.test b/mysql-test/suite/rpl/t/rpl_concurrency_error.test
index da2951afb1a..46a0adc560f 100644
--- a/mysql-test/suite/rpl/t/rpl_concurrency_error.test
+++ b/mysql-test/suite/rpl/t/rpl_concurrency_error.test
@@ -21,6 +21,8 @@
--source include/have_innodb.inc
--source include/have_binlog_format_statement.inc
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
--echo ########################################################################
--echo # Environment
--echo ########################################################################
diff --git a/mysql-test/suite/rpl/t/rpl_cross_version-master.opt b/mysql-test/suite/rpl/t/rpl_cross_version-master.opt
index 0ea05290c11..815a8f81d32 100644
--- a/mysql-test/suite/rpl/t/rpl_cross_version-master.opt
+++ b/mysql-test/suite/rpl/t/rpl_cross_version-master.opt
@@ -1 +1 @@
---replicate-same-server-id --relay-log=slave-relay-bin --secure-file-priv=$MYSQL_TMP_DIR
+--replicate-same-server-id --relay-log=slave-relay-bin
diff --git a/mysql-test/suite/rpl/t/rpl_do_grant.test b/mysql-test/suite/rpl/t/rpl_do_grant.test
index d6a06f43d18..f43ac3cf340 100644
--- a/mysql-test/suite/rpl/t/rpl_do_grant.test
+++ b/mysql-test/suite/rpl/t/rpl_do_grant.test
@@ -8,9 +8,7 @@ connection master;
delete from mysql.user where user=_binary'rpl_do_grant';
delete from mysql.db where user=_binary'rpl_do_grant';
flush privileges;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
# if these DELETE did nothing on the master, we need to do them manually on the
# slave.
delete from mysql.user where user=_binary'rpl_ignore_grant';
@@ -21,17 +19,13 @@ flush privileges;
connection master;
grant select on *.* to rpl_do_grant@localhost;
grant drop on test.* to rpl_do_grant@localhost;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
show grants for rpl_do_grant@localhost;
# test replication of SET PASSWORD
connection master;
set password for rpl_do_grant@localhost=password("does it work?");
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
select password<>_binary'' from mysql.user where user=_binary'rpl_do_grant';
#
@@ -44,9 +38,7 @@ select password<>'' from mysql.user where user='rpl_do_grant';
set sql_mode='ANSI_QUOTES';
set password for rpl_do_grant@localhost=password('does it work?');
set sql_mode='';
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
select password<>'' from mysql.user where user='rpl_do_grant';
diff --git a/mysql-test/suite/rpl/t/rpl_drop.test b/mysql-test/suite/rpl/t/rpl_drop.test
index b38007a755f..6f586d90de3 100644
--- a/mysql-test/suite/rpl/t/rpl_drop.test
+++ b/mysql-test/suite/rpl/t/rpl_drop.test
@@ -7,10 +7,6 @@ drop table if exists t1, t2;
create table t1 (a int);
--error 1051
drop table t1, t2;
-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_drop_view.test b/mysql-test/suite/rpl/t/rpl_drop_view.test
index 11633a0a7e8..05bf112b8b8 100644
--- a/mysql-test/suite/rpl/t/rpl_drop_view.test
+++ b/mysql-test/suite/rpl/t/rpl_drop_view.test
@@ -20,9 +20,7 @@ drop view v1, not_exist_view;
--error 1146
select * from v1;
drop view v2, v3;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
--error 1146
select * from v1;
--error 1146
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..b2530e83b89 100644
--- a/mysql-test/suite/rpl/t/rpl_dual_pos_advance.test
+++ b/mysql-test/suite/rpl/t/rpl_dual_pos_advance.test
@@ -22,6 +22,7 @@ connection master;
eval change master to master_host="127.0.0.1",master_port=$SLAVE_MYPORT,master_user="root";
start slave;
+--source include/wait_for_slave_to_start.inc
# now we test it
@@ -38,12 +39,11 @@ sync_with_master;
# log-slave-updates and circul repl
#
stop slave;
+--source include/wait_for_slave_to_stop.inc
create table t2 (n int); # create one ignored event
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
connection slave;
@@ -85,6 +85,7 @@ start slave until master_log_file="slave-bin.000001",master_log_pos=663;
select * from t3;
start slave;
+--source include/wait_for_slave_to_start.inc
# BUG#13023 is that Exec_master_log_pos may stay too low "forever":
@@ -94,9 +95,7 @@ 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;
+sync_slave_with_master;
connection slave;
@@ -114,11 +113,10 @@ show tables;
# cleanup
stop slave;
+--source include/wait_for_slave_to_stop.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-master.opt b/mysql-test/suite/rpl/t/rpl_empty_master_crash-master.opt
deleted file mode 100644
index cef79bc8585..00000000000
--- a/mysql-test/suite/rpl/t/rpl_empty_master_crash-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---force-restart
diff --git a/mysql-test/suite/rpl/t/rpl_empty_master_crash.test b/mysql-test/suite/rpl/t/rpl_empty_master_crash.test
deleted file mode 100644
index f8e7870ae3c..00000000000
--- a/mysql-test/suite/rpl/t/rpl_empty_master_crash.test
+++ /dev/null
@@ -1,14 +0,0 @@
-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
-#
---error 1218
-load table t1 from master;
-connection slave;
---error 1188
-load table t1 from master;
-
-# End of 4.1 tests
diff --git a/mysql-test/suite/rpl/t/rpl_empty_master_host.test b/mysql-test/suite/rpl/t/rpl_empty_master_host.test
new file mode 100644
index 00000000000..7d245b1d5d5
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_empty_master_host.test
@@ -0,0 +1,51 @@
+#
+# BUG
+# ---
+# BUG#28796: CHANGE MASTER TO MASTER_HOST="" leads to invalid master.info
+#
+# Description
+# -----------
+#
+# This test aims at:
+# i) verifying that an error is thrown when setting MASTER_HOST=''
+# ii) no error is thrown when setting non empty MASTER_HOST
+# iii) replication works after setting a correct host name/ip
+#
+# Implementation is performed by feeding different values (according
+# to i), ii) and iii) ) to CHANGE MASTER TO MASTER_HOST= x and checking
+# along the way if error/no error is thrown and/or if replication starts
+# working when expected.
+
+--source include/master-slave.inc
+
+connection slave;
+STOP SLAVE;
+--source include/wait_for_slave_to_stop.inc
+
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master_Host = '$master_host' (expected '127.0.0.1')
+
+# attempt to change to an empty master host should
+# result in error ER_WRONG_ARGUMENTS: "Incorrect arguments to ..."
+error ER_WRONG_ARGUMENTS;
+CHANGE MASTER TO MASTER_HOST="";
+
+# show slave status still holds previous information
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master_Host = '$master_host' (expected '127.0.0.1')
+
+# changing master to other than empty master host succeeds
+CHANGE MASTER TO MASTER_HOST="foo";
+
+# show slave status should hold "foo" as master host
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master_Host = '$master_host' (expected 'foo')
+
+# changing back to localhost
+CHANGE MASTER TO MASTER_HOST="127.0.0.1";
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master_Host = '$master_host' (expected '127.0.0.1')
+
+# start slave must succeed.
+START SLAVE;
+--source include/wait_for_slave_to_start.inc
diff --git a/mysql-test/suite/rpl/t/rpl_err_ignoredtable.test b/mysql-test/suite/rpl/t/rpl_err_ignoredtable.test
index f358c0ee356..077daba9a3a 100644
--- a/mysql-test/suite/rpl/t/rpl_err_ignoredtable.test
+++ b/mysql-test/suite/rpl/t/rpl_err_ignoredtable.test
@@ -7,7 +7,9 @@
-- source include/master-slave.inc
-CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
+-- disable_query_log
+CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT.");
+-- enable_query_log
connection master;
create table t1 (a int primary key);
diff --git a/mysql-test/suite/rpl/t/rpl_events.test b/mysql-test/suite/rpl/t/rpl_events.test
index 7720ad6658c..6e5bed8aa21 100644
--- a/mysql-test/suite/rpl/t/rpl_events.test
+++ b/mysql-test/suite/rpl/t/rpl_events.test
@@ -1,11 +1,9 @@
##################################################################
# Author: Giuseppe #
# Date: 2006-12-20 #
-# Purpose: To test that event effects are replicated #
-# in both row based and statement based format #
+# Purpose: To test that event effects are replicated. #
##################################################################
---source include/not_embedded.inc
--source include/master-slave.inc
SET @old_event_scheduler = @@global.event_scheduler;
@@ -13,14 +11,6 @@ set global event_scheduler=1;
let $engine_type= MyISAM;
-set binlog_format=row;
-
-# Embedded server doesn't support binlogging
---source include/rpl_events.inc
-
-set binlog_format=statement;
-
-# Embedded server doesn't support binlogging
--source include/rpl_events.inc
#
diff --git a/mysql-test/suite/rpl/t/rpl_extraColmaster_innodb.test b/mysql-test/suite/rpl/t/rpl_extraColmaster_innodb.test
index 5255a9cfbad..29758366577 100644
--- a/mysql-test/suite/rpl/t/rpl_extraColmaster_innodb.test
+++ b/mysql-test/suite/rpl/t/rpl_extraColmaster_innodb.test
@@ -1,16 +1,9 @@
#############################################################
# Purpose: To test having extra columns on the master WL#3915
#############################################################
+-- source include/have_binlog_format_row.inc
-- source include/master-slave.inc
-- source include/have_innodb.inc
let $engine_type = 'InnoDB';
-
-set binlog_format=row;
--- source extra/rpl_tests/rpl_extraMaster_Col.test
-
-set binlog_format=statement;
--- source extra/rpl_tests/rpl_extraMaster_Col.test
-
-set binlog_format=mixed;
--- source extra/rpl_tests/rpl_extraMaster_Col.test
+--source extra/rpl_tests/rpl_extraMaster_Col.test
diff --git a/mysql-test/suite/rpl/t/rpl_extraColmaster_myisam.test b/mysql-test/suite/rpl/t/rpl_extraColmaster_myisam.test
index e6b41eabd0d..31529a19cfc 100644
--- a/mysql-test/suite/rpl/t/rpl_extraColmaster_myisam.test
+++ b/mysql-test/suite/rpl/t/rpl_extraColmaster_myisam.test
@@ -1,15 +1,8 @@
#############################################################
# Purpose: To test having extra columns on the master WL#3915
#############################################################
+-- source include/have_binlog_format_row.inc
-- source include/master-slave.inc
let $engine_type = 'MyISAM';
-
-set binlog_format=row;
--- source extra/rpl_tests/rpl_extraMaster_Col.test
-
-set binlog_format=statement;
--- source extra/rpl_tests/rpl_extraMaster_Col.test
-
-set binlog_format=mixed;
--- source extra/rpl_tests/rpl_extraMaster_Col.test
+--source extra/rpl_tests/rpl_extraMaster_Col.test
diff --git a/mysql-test/suite/rpl/t/rpl_flush_logs-master.opt b/mysql-test/suite/rpl/t/rpl_flush_logs-master.opt
new file mode 100644
index 00000000000..36eab1d6c8f
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_flush_logs-master.opt
@@ -0,0 +1 @@
+--log-error=$MYSQLTEST_VARDIR/tmp/master_log.err
diff --git a/mysql-test/suite/rpl/t/rpl_flush_logs.test b/mysql-test/suite/rpl/t/rpl_flush_logs.test
new file mode 100644
index 00000000000..2118b48f946
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_flush_logs.test
@@ -0,0 +1,172 @@
+#
+# WL#5124
+# This test verifies if the 'flush individual logs' statement
+# works fine.
+#
+
+--source include/master-slave.inc
+--source include/have_binlog_format_statement.inc
+connection master;
+
+# Test 'flush error logs' statement.
+--echo # Make sure the 'master_log.err-old' file does not
+--echo # exist before execute 'flush error logs' statement.
+--error 1
+file_exists $MYSQLTEST_VARDIR/tmp/master_log.err-old;
+
+--echo # Test if support 'flush error logs' statement.
+flush error logs;
+
+--echo # Check the 'master_log.err-old' file is created
+--echo # after executed 'flush error logs' statement.
+file_exists $MYSQLTEST_VARDIR/tmp/master_log.err-old;
+file_exists $MYSQLTEST_VARDIR/tmp/master_log.err;
+
+--echo # Make sure binary logs was not be flushed
+--echo # after execute 'flush error logs' statement.
+--error 1
+file_exists $MYSQLTEST_VARDIR/mysqld.1/data/master-bin.000002;
+
+sync_slave_with_master;
+--echo # Make sure relay logs was not be flushed
+--echo # after execute 'flush error logs' statement.
+--error 1
+file_exists $MYSQLTEST_VARDIR/mysqld.2/data/slave-relay-bin.000004;
+
+
+# Test 'flush relay logs' statement.
+--echo # Make sure the 'slave-relay-bin.000004' file does not
+--echo # exist before execute 'flush relay logs' statement.
+--error 1
+file_exists $MYSQLTEST_VARDIR/mysqld.2/data/slave-relay-bin.000004;
+
+connection master;
+--echo # Test if support 'flush relay logs' statement.
+flush relay logs;
+
+sync_slave_with_master;
+--echo # Check the 'slave-relay-bin.000004' file is created
+--echo # after executed 'flush relay logs' statement.
+file_exists $MYSQLTEST_VARDIR/mysqld.2/data/slave-relay-bin.000004;
+
+connection master;
+--echo # Make sure binary logs was not be flushed
+--echo # after execute 'flush relay logs' statement.
+--error 1
+file_exists $MYSQLTEST_VARDIR/mysqld.1/data/master-bin.000002;
+
+
+# Test 'flush slow logs' statement.
+--echo # Test if support 'flush slow logs' statement.
+flush slow logs;
+
+--echo # Make sure binary logs was not be flushed
+--echo # after execute 'flush slow logs' statement.
+--error 1
+file_exists $MYSQLTEST_VARDIR/mysqld.1/data/master-bin.000002;
+
+
+# Test 'flush general logs' statement.
+--echo # Test if support 'flush general logs' statement.
+flush general logs;
+
+--echo # Make sure binary logs was not be flushed
+--echo # after execute 'flush general logs' statement.
+--error 1
+file_exists $MYSQLTEST_VARDIR/mysqld.1/data/master-bin.000002;
+
+
+# Test 'flush engine logs' statement.
+--echo # Test if support 'flush engine logs' statement.
+flush engine logs;
+
+--echo # Make sure binary logs was not be flushed
+--echo # after execute 'flush engine logs' statement.
+--error 1
+file_exists $MYSQLTEST_VARDIR/mysqld.1/data/master-bin.000002;
+
+
+# Test 'flush binary logs' statement.
+--echo # Make sure the 'master-bin.000002' file does not
+--echo # exist before execute 'flush binary logs' statement.
+--error 1
+file_exists $MYSQLTEST_VARDIR/mysqld.1/data/master-bin.000002;
+
+--echo # Test if support 'flush binary logs' statement.
+flush binary logs;
+
+--echo # Check the 'master-bin.000002' file is created
+--echo # after executed 'flush binary logs' statement.
+file_exists $MYSQLTEST_VARDIR/mysqld.1/data/master-bin.000002;
+file_exists $MYSQLTEST_VARDIR/mysqld.1/data/master-bin.000001;
+
+
+# Test 'flush error logs, relay logs' statement
+sync_slave_with_master;
+--echo # Make sure the 'slave-relay-bin.000007' file does not exist
+--echo # exist before execute 'flush error logs, relay logs' statement.
+--error 1
+file_exists $MYSQLTEST_VARDIR/mysqld.2/data/slave-relay-bin.000007;
+
+connection master;
+remove_file $MYSQLTEST_VARDIR/tmp/master_log.err-old;
+
+--echo # Make sure the 'master_log.err-old' file does not exist
+--echo # before execute 'flush error logs, relay logs' statement.
+--error 1
+file_exists $MYSQLTEST_VARDIR/tmp/master_log.err-old;
+
+--echo # Test if support to combine all kinds of logs into one statement.
+flush error logs, relay logs;
+
+--echo # Check the 'master_log.err-old' file is created
+--echo # after executed 'flush error logs, relay logs' statement.
+file_exists $MYSQLTEST_VARDIR/tmp/master_log.err-old;
+file_exists $MYSQLTEST_VARDIR/tmp/master_log.err;
+
+--echo # Make sure binary logs was not be flushed
+--echo # after execute 'flush error logs, relay logs' statement.
+--error 1
+file_exists $MYSQLTEST_VARDIR/mysqld.1/data/master-bin.000003;
+
+sync_slave_with_master;
+--echo # Check the 'slave-relay-bin.000007' file is created after
+--echo # execute 'flush error logs, relay logs' statement.
+file_exists $MYSQLTEST_VARDIR/mysqld.2/data/slave-relay-bin.000007;
+
+
+# Test 'flush logs' statement
+--echo # Make sure the 'slave-relay-bin.000008' and 'slave-relay-bin.000009'
+--echo # files do not exist before execute 'flush error logs, relay logs'
+--echo # statement.
+--error 1
+file_exists $MYSQLTEST_VARDIR/mysqld.2/data/slave-relay-bin.000008;
+--error 1
+file_exists $MYSQLTEST_VARDIR/mysqld.2/data/slave-relay-bin.000009;
+
+connection master;
+remove_file $MYSQLTEST_VARDIR/tmp/master_log.err-old;
+
+--echo # Make sure the 'master_log.err-old' file does not exist
+--echo # before execute 'flush logs' statement.
+--error 1
+file_exists $MYSQLTEST_VARDIR/tmp/master_log.err-old;
+
+--echo # Test if 'flush logs' statement works fine and flush all the logs.
+flush logs;
+
+--echo # Check the 'master_log.err-old' file is created
+--echo # after executed 'flush logs' statement.
+file_exists $MYSQLTEST_VARDIR/tmp/master_log.err-old;
+file_exists $MYSQLTEST_VARDIR/tmp/master_log.err;
+
+--echo # Check 'master-bin.000003' is created
+--echo # after execute 'flush logs' statement.
+file_exists $MYSQLTEST_VARDIR/mysqld.1/data/master-bin.000003;
+
+sync_slave_with_master;
+--echo # Check the 'slave-relay-bin.000008' and 'slave-relay-bin.000009'
+--echo # files are created after execute 'flush logs' statement.
+file_exists $MYSQLTEST_VARDIR/mysqld.2/data/slave-relay-bin.000008;
+file_exists $MYSQLTEST_VARDIR/mysqld.2/data/slave-relay-bin.000009;
+
diff --git a/mysql-test/suite/rpl/t/rpl_flushlog_loop-master.sh b/mysql-test/suite/rpl/t/rpl_flushlog_loop-master.sh
index a321dd690cd..a321dd690cd 100755..100644
--- a/mysql-test/suite/rpl/t/rpl_flushlog_loop-master.sh
+++ b/mysql-test/suite/rpl/t/rpl_flushlog_loop-master.sh
diff --git a/mysql-test/suite/rpl/t/rpl_flushlog_loop-slave.sh b/mysql-test/suite/rpl/t/rpl_flushlog_loop-slave.sh
index e46ea6d400b..e46ea6d400b 100755..100644
--- a/mysql-test/suite/rpl/t/rpl_flushlog_loop-slave.sh
+++ b/mysql-test/suite/rpl/t/rpl_flushlog_loop-slave.sh
diff --git a/mysql-test/suite/rpl/t/rpl_flushlog_loop.test b/mysql-test/suite/rpl/t/rpl_flushlog_loop.test
index a8befe612c2..a873c1fa3a9 100644
--- a/mysql-test/suite/rpl/t/rpl_flushlog_loop.test
+++ b/mysql-test/suite/rpl/t/rpl_flushlog_loop.test
@@ -1,6 +1,8 @@
# Testing if "flush logs" command bouncing resulting in logs created in a loop
# in case of bi-directional replication
-- source include/master-slave.inc
+# Use wait_for_slave_to_(start|stop) for current connections
+let $keep_connection= 1;
let $MYSQLD_DATADIR= `select @@datadir`;
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR/
@@ -9,18 +11,20 @@ show variables like 'relay_log%';
connection slave;
--disable_warnings
stop slave;
+--source include/wait_for_slave_to_stop.inc
--enable_warnings
--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;
start slave;
-
+--source include/wait_for_slave_to_start.inc
#
# Start replication slave -> master
#
connection master;
--disable_warnings
stop slave;
+--source include/wait_for_slave_to_stop.inc
--enable_warnings
--replace_result $SLAVE_MYPORT SLAVE_PORT
eval change master to master_host='127.0.0.1',master_user='root',
diff --git a/mysql-test/suite/rpl/t/rpl_get_lock.test b/mysql-test/suite/rpl/t/rpl_get_lock.test
index 87366f41ba2..1120d4aeb7d 100644
--- a/mysql-test/suite/rpl/t/rpl_get_lock.test
+++ b/mysql-test/suite/rpl/t/rpl_get_lock.test
@@ -1,6 +1,6 @@
source include/master-slave.inc;
-CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
+CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
create table t1(n int);
# Use of get_lock gives a warning for unsafeness if binlog_format=statement
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 24309e8a14a..7d9f1f4aa1c 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
@@ -19,6 +19,7 @@ source include/have_debug.inc;
connection slave;
call mtr.add_suppression("Slave I/O: Master command COM_REGISTER_SLAVE failed: .*");
+call mtr.add_suppression("Slave I/O: .* failed with error: Lost connection to MySQL server at 'reading initial communication packet'");
call mtr.add_suppression("Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; .*");
call mtr.add_suppression("Slave I/O thread .* register on master");
diff --git a/mysql-test/suite/rpl/t/rpl_heartbeat.test b/mysql-test/suite/rpl/t/rpl_heartbeat.test
new file mode 100644
index 00000000000..3b0d21052ee
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_heartbeat.test
@@ -0,0 +1,168 @@
+# Testing master to slave heartbeat protocol
+#
+# Including:
+# - user interface, grammar, checking the range and warnings about
+# unreasonable values for the heartbeat period;
+# - no rotation of relay log if heartbeat is less that slave_net_timeout
+# - SHOW STATUS like 'Slave_received_heartbeats' action
+# - SHOW STATUS like 'Slave_heartbeat_period' report
+
+-- source include/have_log_bin.inc
+
+connect (master,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK);
+connect (slave,localhost,root,,test,$SLAVE_MYPORT,$SLAVE_MYSOCK);
+
+connection master;
+reset master;
+
+connection slave;
+set @restore_slave_net_timeout= @@global.slave_net_timeout;
+set @@global.slave_net_timeout= 10;
+
+###
+### Checking the range
+###
+
+#
+# default period slave_net_timeout/2
+#
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval change master to master_host='127.0.0.1',master_port=$MASTER_MYPORT, master_user='root';
+--query_vertical show status like 'Slave_heartbeat_period';
+
+#
+# the max for the period is ULONG_MAX/1000; an attempt to exceed it is denied
+#
+--replace_result $MASTER_MYPORT MASTER_PORT
+--error ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE
+eval change master to master_host='127.0.0.1',master_port=$MASTER_MYPORT, master_user='root', master_heartbeat_period= 4294968;
+--query_vertical show status like 'Slave_heartbeat_period';
+
+#
+# the min value for the period is 1 millisecond an attempt to assign a
+# lesser will be warned with treating the value as zero
+#
+connection slave;
+--replace_result $MASTER_MYPORT MASTER_PORT
+### 5.1 mtr does not have --warning ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE
+eval change master to master_host='127.0.0.1',master_port=$MASTER_MYPORT, master_user='root', master_heartbeat_period= 0.0009999;
+--query_vertical show status like 'Slave_heartbeat_period';
+
+#
+# the actual max and min must be accepted
+#
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval change master to master_host='127.0.0.1',master_port=$MASTER_MYPORT, master_user='root', master_heartbeat_period= 4294967;
+--query_vertical show status like 'Slave_heartbeat_period';
+
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval change master to master_host='127.0.0.1',master_port=$MASTER_MYPORT, master_user='root', master_heartbeat_period= 0.001;
+--query_vertical show status like 'Slave_heartbeat_period';
+
+reset slave;
+
+#
+# A warning if period greater than slave_net_timeout
+#
+set @@global.slave_net_timeout= 5;
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval change master to master_host='127.0.0.1',master_port=$MASTER_MYPORT, master_user='root', master_heartbeat_period= 5.001;
+--query_vertical show status like 'Slave_heartbeat_period';
+
+reset slave;
+
+#
+# A warning if slave_net_timeout is set to less than the current HB period
+#
+set @@global.slave_net_timeout= 5;
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval change master to master_host='127.0.0.1',master_port=$MASTER_MYPORT, master_user='root', master_heartbeat_period= 4;
+--query_vertical show status like 'Slave_heartbeat_period';
+set @@global.slave_net_timeout= 3 /* must be a warning */;
+
+reset slave;
+
+
+###
+### checking no rotation
+###
+
+connection master;
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+#
+# Even though master_heartbeat_period= 0.5 is 20 times less than
+# @@global.slave_net_timeout= 10 in some circumstances master will
+# not be able to send any heartbeat during the slave's net timeout
+# and slave's relay log will rotate.
+# The probability for such a scenario is pretty small so the following
+# part is almost deterministic.
+#
+
+connection slave;
+set @@global.slave_net_timeout= 10;
+--replace_result $MASTER_MYPORT MASTER_PORT
+# no error this time but rather a warning
+eval change master to master_host='127.0.0.1',master_port=$MASTER_MYPORT, master_user='root', master_heartbeat_period= 0.5;
+--query_vertical show status like 'Slave_heartbeat_period';
+
+start slave;
+
+connection master;
+create table t1 (f1 int);
+
+#connection slave;
+sync_slave_with_master;
+source include/show_slave_status.inc;
+
+# there is an explicit sleep lasting longer than slave_net_timeout
+# to ensure that nothing will come to slave from master for that period.
+# That would cause reconnecting and relaylog rotation w/o the fix i.e
+# without a heartbeat received.
+
+real_sleep 15;
+
+# check (compare with the previous show's results) that no rotation happened
+source include/show_slave_status.inc;
+
+###
+### SHOW STATUS like 'Slave_heartbeat_period' and 'Slave_received_heartbeats'
+###
+
+--query_vertical show status like 'Slave_heartbeat_period';
+
+#
+# proof that there has been received at least one heartbeat;
+# The exact number of received heartbeat is an indeterministic value
+# and therefore it's not recorded into results.
+#
+
+let $slave_wait_param_counter= 300;
+let $slave_value= query_get_value("SHOW STATUS like 'Slave_received_heartbeats'", Value, 1);
+# Checking the fact that at least one heartbeat is received
+while (`select $slave_value = 0`)
+{
+ dec $slave_wait_param_counter;
+ if (!$slave_wait_param_counter)
+ {
+ --echo ERROR: failed while waiting for slave parameter $slave_param: $slave_param_value
+ query_vertical show slave status;
+ SHOW STATUS like 'Slave_received_heartbeats';
+ exit;
+ }
+ sleep 0.1;
+ let $slave_value= query_get_value("SHOW STATUS like 'Slave_received_heartbeats'", Value, 1);
+}
+--echo A heartbeat has been received by the slave
+# cleanup
+
+connection master;
+drop table t1;
+
+#connection slave;
+sync_slave_with_master;
+set @@global.slave_net_timeout= @restore_slave_net_timeout;
+
+
+--echo End of tests
diff --git a/mysql-test/suite/rpl/t/rpl_heartbeat_2slaves.cnf b/mysql-test/suite/rpl/t/rpl_heartbeat_2slaves.cnf
new file mode 100644
index 00000000000..a3ed77c8bd2
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_heartbeat_2slaves.cnf
@@ -0,0 +1,17 @@
+!include ../my.cnf
+
+[mysqld.1]
+server_id=1
+
+[mysqld.2]
+server_id=2
+
+[mysqld.3]
+server_id=3
+
+[ENV]
+SLAVE_MYPORT1= @mysqld.3.port
+SLAVE_MYSOCK1= @mysqld.3.socket
+
+
+
diff --git a/mysql-test/suite/rpl/t/rpl_heartbeat_2slaves.test b/mysql-test/suite/rpl/t/rpl_heartbeat_2slaves.test
new file mode 100644
index 00000000000..81737feea9e
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_heartbeat_2slaves.test
@@ -0,0 +1,142 @@
+#############################################################
+# Author: Serge Kozlov <Serge.Kozlov@Sun.COM>
+# Date: 02/19/2009
+# Purpose: Testing heartbeat for schema
+# 1 master and 2 slaves
+#############################################################
+--source include/master-slave.inc
+--echo
+
+--echo *** Preparing ***
+--connection master
+let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1);
+--connection slave
+--echo [on slave]
+--source include/stop_slave.inc
+RESET SLAVE;
+--replace_result $MASTER_MYPORT MASTER_PORT $binlog_file MASTER_BINLOG
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.1, MASTER_LOG_FILE='$binlog_file';
+--source include/start_slave.inc
+--disconnect slave1
+--connect(slave1,127.0.0.1,root,,test,$SLAVE_MYPORT1,)
+--connection slave1
+--echo [on slave1]
+--disable_warnings
+STOP SLAVE;
+--enable_warnings
+RESET SLAVE;
+--replace_result $MASTER_MYPORT MASTER_PORT $binlog_file MASTER_BINLOG
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=1, MASTER_LOG_FILE='$binlog_file';
+--source include/start_slave.inc
+--echo
+
+#
+# Testing heartbeat
+#
+
+# Check that heartbeat events sent to both slaves with correct periods
+--echo *** 2 slaves ***
+--connection slave
+let $status_var= slave_received_heartbeats;
+let $status_var_value= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+let $status_var_comparsion= >;
+--source include/wait_for_status_var.inc
+--echo Slave has received heartbeat event
+--connection slave1
+let $status_var= slave_received_heartbeats;
+let $status_var_value= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+let $status_var_comparsion= >;
+--source include/wait_for_status_var.inc
+let $slave1_rcvd_heartbeats= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+--echo Slave1 has received heartbeat event
+--connection slave
+let $slave_rcvd_heartbeats= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+let $result= query_get_value(SELECT ($slave_rcvd_heartbeats DIV $slave1_rcvd_heartbeats) > 1 AS Result, Result, 1);
+--echo Slave has received more heartbeats than Slave1 (1 means 'yes'): $result
+--echo
+
+
+# Create topology A->B->C and check that C receives heartbeat while B gets data
+# Slave1 (B) started w/o --log-slave-updates because B should not send data from A to C
+--echo *** Master->data->Slave1->heartbeat->Slave: ***
+--connection slave1
+--echo [on slave1]
+RESET MASTER;
+let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1);
+--connection slave
+--echo [on slave]
+--source include/stop_slave.inc
+RESET SLAVE;
+--replace_result $SLAVE_MYPORT1 SLAVE1_PORT $binlog_file SLAVE1_BINLOG
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$SLAVE_MYPORT1, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.2, MASTER_LOG_FILE='$binlog_file';
+--source include/start_slave.inc
+# Check heartbeat for new replication channel slave1->slave
+let $status_var= slave_received_heartbeats;
+let $status_var_value= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+let $status_var_comparsion= >;
+--source include/wait_for_status_var.inc
+--echo Slave has received heartbeat event
+--connection master
+--echo [on master]
+CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(10), c LONGTEXT);
+INSERT INTO t1 VALUES (1, 'on master', '');
+--save_master_pos
+SHOW TABLES;
+--connection slave1
+--sync_with_master 0
+--echo [on slave1]
+SHOW TABLES;
+let $slave_pos_before= query_get_value(SHOW SLAVE STATUS, Read_Master_Log_Pos, 1);
+--save_master_pos
+--connection slave
+--sync_with_master 0
+--echo [on slave]
+SHOW TABLES;
+--connection master
+--echo [on master]
+--echo creating updates on master and send to slave1 during 5 second
+# Generate events on master and send to slave1 during 5 second
+let $i= 1;
+let $j= 1;
+let $k= 1;
+--disable_query_log
+while ($i) {
+ eval SET @c_text=REPEAT('1234567890', $j);
+ eval UPDATE t1 SET a=$j, c=@c_text;
+ --connection slave1
+ let $slave_pos= query_get_value(SHOW SLAVE STATUS, Read_Master_Log_Pos, 1);
+ if (`SELECT ($k*($slave_pos - $slave_pos_before)) > 0`) {
+ --connection slave
+ let $slave_rcvd_heartbeats_before= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+ let $k= 0;
+ let $time_before = `SELECT NOW()`;
+ }
+ if (`SELECT ((1-$k)*TIMESTAMPDIFF(SECOND,'$time_before',NOW())) > 5`) {
+ --connection slave
+ let $slave_rcvd_heartbeats_after= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+ let $i= 0;
+ }
+ --connection master
+ inc $j;
+ sleep 0.1;
+}
+--enable_query_log
+--connection slave
+--echo [on slave]
+let $result= query_get_value(SELECT ($slave_rcvd_heartbeats_after - $slave_rcvd_heartbeats_before) > 0 AS Result, Result, 1);
+--echo Slave has received heartbeats (1 means 'yes'): $result
+--echo
+
+#
+# Clean up
+#
+--echo *** Clean up ***
+--connection master
+DROP TABLE t1;
+--save_master_pos
+--connection slave1
+--sync_with_master 0
+--echo
+
+# End of 6.0 test
+--echo End of 6.0 test
diff --git a/mysql-test/suite/rpl/t/rpl_heartbeat_basic.cnf b/mysql-test/suite/rpl/t/rpl_heartbeat_basic.cnf
new file mode 100644
index 00000000000..a4a291bca79
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_heartbeat_basic.cnf
@@ -0,0 +1,7 @@
+!include ../my.cnf
+
+[mysqld.1]
+log-slave-updates
+
+[mysqld.2]
+log-slave-updates
diff --git a/mysql-test/suite/rpl/t/rpl_heartbeat_basic.test b/mysql-test/suite/rpl/t/rpl_heartbeat_basic.test
new file mode 100644
index 00000000000..739cbe155ca
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_heartbeat_basic.test
@@ -0,0 +1,535 @@
+#############################################################
+# Author: Serge Kozlov <Serge.Kozlov@Sun.COM>
+# Date: 02/19/2009
+# Purpose: Testing basic functionality of heartbeat.
+# Description:
+# * Testing different values for slave_heartbeat_period.
+# * How to affect various statements to slave_heartbeat_period
+# * Various states of slave and heartbeat
+# * Various states of master and heartbeat
+# * Circular replication
+#############################################################
+--source include/master-slave.inc
+--echo
+
+--echo *** Preparing ***
+--connection slave
+--source include/stop_slave.inc
+RESET SLAVE;
+SET @restore_slave_net_timeout=@@global.slave_net_timeout;
+let $slave_heartbeat_timeout= query_get_value(SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period', Value, 1);
+--disable_query_log
+eval SET @restore_slave_heartbeat_timeout=$slave_heartbeat_timeout;
+--enable_query_log
+
+--connection master
+RESET MASTER;
+SET @restore_slave_net_timeout=@@global.slave_net_timeout;
+SET @restore_event_scheduler=@@global.event_scheduler;
+--echo
+
+#
+# Test slave_heartbeat_period
+#
+
+--connection slave
+
+# Default value of slave_heartbeat_timeout = slave_net_timeout/2
+--echo *** Default value ***
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root';
+let $slave_net_timeout= query_get_value(SHOW VARIABLES LIKE 'slave_net_timeout', Value, 1);
+let $slave_heartbeat_timeout= query_get_value(SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period', Value, 1);
+let $result= query_get_value(SELECT $slave_net_timeout/$slave_heartbeat_timeout AS Result, Result, 1);
+--echo slave_net_timeout/slave_heartbeat_timeout=$result
+RESET SLAVE;
+--echo
+
+# Reset slave set slave_heartbeat_timeout = slave_net_timeout/2
+--echo *** Reset slave affect ***
+--disable_warnings
+SET @@global.slave_net_timeout=30;
+--enable_warnings
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=5;
+RESET SLAVE;
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+--echo
+
+# Check default value of slave_heartbeat_timeout if slave_net_timeout is changed
+--echo *** Default value if slave_net_timeout changed ***
+--disable_warnings
+SET @@global.slave_net_timeout=50;
+--enable_warnings
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root';
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+SET @@global.slave_net_timeout=@restore_slave_net_timeout;
+RESET SLAVE;
+--echo
+
+# Set slave_net_timeout less than current value of slave_heartbeat_period
+--echo *** Warning if updated slave_net_timeout < slave_heartbeat_timeout ***
+let $slave_heartbeat_timeout= query_get_value(SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period', Value, 1);
+--replace_result $slave_heartbeat_timeout SLAVE_HEARTBEAT_TIMEOUT
+eval SET @@global.slave_net_timeout=FLOOR($slave_heartbeat_timeout)-1;
+SET @@global.slave_net_timeout=@restore_slave_net_timeout;
+RESET SLAVE;
+--echo
+
+# Set value of slave_heartbeat_period greater than slave_net_timeout
+--echo *** Warning if updated slave_heartbeat_timeout > slave_net_timeout ***
+let $slave_net_timeout= query_get_value(SHOW VARIABLES LIKE 'slave_net_timeout', Value, 1);
+inc $slave_net_timeout;
+--replace_result $MASTER_MYPORT MASTER_PORT $slave_net_timeout SLAVE_NET_TIMEOUT
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=$slave_net_timeout;
+RESET SLAVE;
+--echo
+
+# Changing of slave_net_timeout shouldn't affect to current value of slave_heartbeat_period
+--echo *** CHANGE MASTER statement only updates slave_heartbeat_period ***
+--disable_warnings
+SET @@global.slave_net_timeout=20;
+--enable_warnings
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=5;
+SHOW VARIABLES LIKE 'slave_net_timeout';
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+SET @@global.slave_net_timeout=2*@@global.slave_net_timeout;
+SHOW VARIABLES LIKE 'slave_net_timeout';
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+SET @@global.slave_net_timeout=@restore_slave_net_timeout;
+RESET SLAVE;
+--echo
+
+# Master value of slave_net_timeout shouldn't affect to slave's slave_heartbeat_period
+--echo *** Update slave_net_timeout on master ***
+--connection master
+--disable_warnings
+SET @@global.slave_net_timeout=500;
+--enable_warnings
+--connection slave
+SET @@global.slave_net_timeout=200;
+RESET SLAVE;
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root';
+--source include/start_slave.inc
+--sync_with_master
+SHOW VARIABLES LIKE 'slave_net_timeout';
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+SET @@global.slave_net_timeout=@restore_slave_net_timeout;
+--source include/stop_slave.inc
+RESET SLAVE;
+--connection master
+SET @@global.slave_net_timeout=@restore_slave_net_timeout;
+--echo
+
+# Start/stop slave shouldn't change slave_heartbeat_period
+--echo *** Start/stop slave ***
+--connection slave
+--disable_warnings
+SET @@global.slave_net_timeout=100;
+--enable_warnings
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=20;
+--source include/start_slave.inc
+--sync_with_master
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+--source include/stop_slave.inc
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+--echo
+
+# Reload slave shouldn't change slave_heartbeat_period
+--echo *** Reload slave ***
+--connection slave
+--disable_warnings
+SET @@global.slave_net_timeout=50;
+--enable_warnings
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=30;
+--write_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
+wait
+EOF
+--echo Reload slave
+--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
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+SET @restore_slave_net_timeout=@@global.slave_net_timeout;
+--echo
+
+# Disable heartbeat
+--echo *** Disable heartbeat ***
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0;
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+SHOW STATUS LIKE 'slave_received_heartbeats';
+--source include/start_slave.inc
+--sync_with_master
+--sleep 2
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+SHOW STATUS LIKE 'slave_received_heartbeats';
+--source include/stop_slave.inc
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+SHOW STATUS LIKE 'slave_received_heartbeats';
+RESET SLAVE;
+let $slave_heartbeat_timeout= query_get_value(SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period', Value, 1);
+--replace_result $slave_heartbeat_timeout SLAVE_HEARTBEAT_TIMEOUT
+--eval SELECT $slave_heartbeat_timeout = 0 AS Result
+--echo
+
+#
+# Check limits for slave_heartbeat_timeout
+#
+
+--echo *** Min slave_heartbeat_timeout ***
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.001;
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+RESET SLAVE;
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.0009;
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+RESET SLAVE;
+--echo
+
+--echo *** Max slave_heartbeat_timeout ***
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=4294967;
+SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
+RESET SLAVE;
+--replace_result $MASTER_MYPORT MASTER_PORT
+--error ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=4294968;
+RESET SLAVE;
+# Check double size of max allowed value for master_heartbeat_period
+--replace_result $MASTER_MYPORT MASTER_PORT
+--error ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=8589935;
+RESET SLAVE;
+# Check 2^32
+--replace_result $MASTER_MYPORT MASTER_PORT
+--error ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=4294967296;
+RESET SLAVE;
+--echo
+
+--echo *** Misc incorrect values ***
+--replace_result $MASTER_MYPORT MASTER_PORT
+--error ER_PARSE_ERROR
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD='-1';
+RESET SLAVE;
+--replace_result $MASTER_MYPORT MASTER_PORT
+--error ER_PARSE_ERROR
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD='123abc';
+RESET SLAVE;
+--replace_result $MASTER_MYPORT MASTER_PORT
+--error ER_PARSE_ERROR
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD='';
+RESET SLAVE;
+--echo
+
+#
+# Testing heartbeat
+#
+
+# Check received heartbeat events for running slave
+--echo *** Running slave ***
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.1;
+--source include/start_slave.inc
+--sync_with_master
+let $status_var_value= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+let $status_var= slave_received_heartbeats;
+let $status_var_comparsion= >;
+--source include/wait_for_status_var.inc
+--echo Heartbeat event received
+--echo
+
+# Check received heartbeat events for stopped slave
+--echo *** Stopped slave ***
+--source include/stop_slave.inc
+let $rcvd_heartbeats_before= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+sleep 2;
+let $rcvd_heartbeats_after= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+let $result= query_get_value(SELECT ($rcvd_heartbeats_after - $rcvd_heartbeats_before) AS Result, Result, 1);
+--echo Number of received heartbeat events while slave stopped: $result
+--echo
+
+# Check received heartbeat events for started slave
+--echo *** Started slave ***
+--source include/start_slave.inc
+let $status_var_value= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+--source include/wait_for_status_var.inc
+--echo Heartbeat event received
+--echo
+
+# Check received heartbeat events for stopped IO thread
+--echo *** Stopped IO thread ***
+STOP SLAVE IO_THREAD;
+--source include/wait_for_slave_io_to_stop.inc
+let $rcvd_heartbeats_before= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+sleep 2;
+let $rcvd_heartbeats_after= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+let $result= query_get_value(SELECT ($rcvd_heartbeats_after - $rcvd_heartbeats_before) AS Result, Result, 1);
+--echo Number of received heartbeat events while io thread stopped: $result
+--echo
+
+# Check received heartbeat events for started IO thread
+--echo *** Started IO thread ***
+START SLAVE IO_THREAD;
+--source include/wait_for_slave_io_to_start.inc
+let $status_var_value= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+--source include/wait_for_status_var.inc
+--echo Heartbeat event received
+--echo
+
+# Check received heartbeat events for stopped SQL thread
+--echo *** Stopped SQL thread ***
+STOP SLAVE SQL_THREAD;
+--source include/wait_for_slave_sql_to_stop.inc
+let $rcvd_heartbeats_before= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+sleep 2;
+let $rcvd_heartbeats_after= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+let $result= query_get_value(SELECT ($rcvd_heartbeats_after - $rcvd_heartbeats_before) > 0 AS Result, Result, 1);
+--echo Heartbeat events are received while sql thread stopped (1 means 'yes'): $result
+--echo
+
+# Check received heartbeat events for started SQL thread
+--echo *** Started SQL thread ***
+START SLAVE SQL_THREAD;
+--source include/wait_for_slave_sql_to_start.inc
+let $status_var_value= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+--source include/wait_for_status_var.inc
+--echo Heartbeat event received
+--echo
+
+# Check received heartbeat event for stopped SQL thread by error
+--echo *** Stopped SQL thread by error ***
+--connection master
+CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(10), c LONGTEXT);
+--sync_slave_with_master
+INSERT INTO t1 VALUES (1, 'on slave', NULL);
+--connection master
+INSERT INTO t1 VALUES (1, 'on master', NULL);
+--connection slave
+let $slave_errno= ER_DUP_ENTRY
+--source include/wait_for_slave_sql_error.inc
+let $rcvd_heartbeats_before= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+sleep 2;
+let $rcvd_heartbeats_after= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+let $result= query_get_value(SELECT ($rcvd_heartbeats_after - $rcvd_heartbeats_before) > 0 AS Result, Result, 1);
+--echo Heartbeat events are received while sql thread stopped (1 means 'yes'): $result
+--source include/stop_slave.inc
+DROP TABLE t1;
+--echo
+
+# Check received heartbeat events while master send events to slave
+--echo *** Master send to slave ***
+--connection master
+# Create the event that will update table t1 every second
+DELIMITER |;
+CREATE EVENT e1
+ ON SCHEDULE EVERY 1 SECOND
+ DO
+ BEGIN
+ UPDATE test.t1 SET a = a + 1 WHERE a < 10;
+ END|
+DELIMITER ;|
+--connection slave
+RESET SLAVE;
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=5;
+--source include/start_slave.inc
+--connection master
+# Enable scheduler
+SET @@global.event_scheduler=1;
+--connection slave
+let $rcvd_heartbeats_before= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+--sync_with_master
+# Wait some updates for table t1 from master
+let $wait_condition= SELECT COUNT(*)=1 FROM t1 WHERE a > 5;
+--source include/wait_condition.inc
+let $rcvd_heartbeats_after= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+let $result= query_get_value(SELECT ($rcvd_heartbeats_after - $rcvd_heartbeats_before) > 0 AS Result, Result, 1);
+--echo Number of received heartbeat events: $result
+--connection master
+DELETE FROM t1;
+DROP EVENT e1;
+--echo
+
+
+
+
+# Check received heartbeat events while logs flushed on slave
+--connection slave
+--echo *** Flush logs on slave ***
+STOP SLAVE;
+RESET SLAVE;
+DROP TABLE t1;
+--connection master
+DROP TABLE t1;
+RESET MASTER;
+--connection slave
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.5;
+let $slave_param_comparison= =;
+--source include/start_slave.inc
+let $rcvd_heartbeats_before= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+# Flush logs every 0.1 second during 5 sec
+--disable_query_log
+let $i=50;
+while ($i) {
+ FLUSH LOGS;
+ dec $i;
+ sleep 0.1;
+}
+--enable_query_log
+let $rcvd_heartbeats_after= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+let $result= query_get_value(SELECT ($rcvd_heartbeats_after - $rcvd_heartbeats_before) > 0 AS Result, Result, 1);
+--echo Heartbeat events are received while rotation of relay logs (1 means 'yes'): $result
+--echo
+
+# Use compressed protocol between master and slave
+--echo *** Compressed protocol ***
+--connection master
+SET @@global.slave_compressed_protocol=1;
+--connection slave
+--source include/stop_slave.inc
+RESET SLAVE;
+SET @@global.slave_compressed_protocol=1;
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.1;
+--source include/start_slave.inc
+let $status_var_value= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+let $status_var= slave_received_heartbeats;
+let $status_var_comparsion= >;
+--source include/wait_for_status_var.inc
+--echo Heartbeat event received
+SET @@global.slave_compressed_protocol=0;
+--connection master
+SET @@global.slave_compressed_protocol=0;
+--echo
+
+
+# Check received heartbeat events after reset of master
+--echo *** Reset master ***
+--connection slave
+STOP SLAVE;
+RESET SLAVE;
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.1;
+--source include/start_slave.inc
+let $rcvd_heartbeats_before= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+--connection master
+RESET MASTER;
+--enable_query_log
+--sync_slave_with_master
+--sleep 2
+let $rcvd_heartbeats_after= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+let $result= query_get_value(SELECT ($rcvd_heartbeats_after - $rcvd_heartbeats_before) > 0 AS Result, Result, 1);
+--echo Heartbeat events are received after reset of master (1 means 'yes'): $result
+--echo
+
+# Reloaded master should restore heartbeat
+--echo *** Reload master ***
+--connection slave
+STOP SLAVE;
+RESET SLAVE;
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.1;
+--source include/start_slave.inc
+# Wait until slave_received_heartbeats will be incremented
+let $status_var_value= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+let $status_var= slave_received_heartbeats;
+let $status_var_comparsion= >;
+--source include/wait_for_status_var.inc
+--echo Heartbeat event received
+--connection master
+--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
+wait
+EOF
+--echo Reload master
+--shutdown_server 10
+--source include/wait_until_disconnected.inc
+--append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
+restart
+EOF
+--enable_reconnect
+--source include/wait_until_connected_again.inc
+--connection slave
+# Wait until slave_received_heartbeats will be incremented
+let $status_var_value= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+let $status_var= slave_received_heartbeats;
+let $status_var_comparsion= >;
+--source include/wait_for_status_var.inc
+--echo Heartbeat event received
+--echo
+
+# Circular replication
+--echo *** Circular replication ***
+# Configure circular replication
+--source include/master-slave-reset.inc
+--connection slave
+--source include/stop_slave.inc
+let $slave_binlog= query_get_value(SHOW MASTER STATUS, File, 1);
+--connection master
+--replace_result $SLAVE_MYPORT SLAVE_PORT $slave_binlog SLAVE_BINLOG
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$SLAVE_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=1, MASTER_LOG_FILE='$slave_binlog';
+--source include/start_slave.inc
+
+# Insert data on master and on slave and make sure that it replicated for both directions
+CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(10));
+INSERT INTO t1 VALUES(1, 'on master');
+--save_master_pos
+--connection slave
+--source include/start_slave.inc
+--sync_with_master
+INSERT INTO t1 VALUES(2, 'on slave');
+--save_master_pos
+--connection master
+--sync_with_master
+SELECT * FROM t1 ORDER BY a;
+let $master_rcvd_heartbeats_before= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+--connection slave
+SELECT * FROM t1 ORDER BY a;
+# Wait heartbeat event on master
+--connection master
+let $status_var= slave_received_heartbeats;
+let $status_var_value= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+let $status_var_comparsion= >;
+--source include/wait_for_status_var.inc
+--echo Heartbeat event received on master
+let $master_rcvd_heartbeats= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+# Wait heartbeat event on slave
+--connection slave
+let $status_var= slave_received_heartbeats;
+let $status_var_value= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+let $status_var_comparsion= >;
+--source include/wait_for_status_var.inc
+--echo Heartbeat event received on slave
+let $slave_rcvd_heartbeats= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+# Heartbeat period on slave less than on master therefore number of received events on slave
+# should be greater than on master
+let $result= query_get_value(SELECT ($slave_rcvd_heartbeats DIV $master_rcvd_heartbeats) > 1 AS Result, Result, 1);
+--echo Slave has received more events than master (1 means 'yes'): $result
+--echo
+
+#
+# Clean up and restore system variables
+#
+--echo *** Clean up ***
+--connection master
+--source include/stop_slave.inc
+DROP TABLE t1;
+--sync_slave_with_master
+--source include/stop_slave.inc
+SET @@global.slave_net_timeout=@restore_slave_net_timeout;
+--echo
+
+# End of 6.0 test
+--echo End of 6.0 test
diff --git a/mysql-test/suite/rpl/t/rpl_heartbeat_ssl.test b/mysql-test/suite/rpl/t/rpl_heartbeat_ssl.test
new file mode 100644
index 00000000000..6460b157b52
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_heartbeat_ssl.test
@@ -0,0 +1,54 @@
+#############################################################
+# Author: Serge Kozlov <Serge.Kozlov@Sun.COM>
+# Date: 02/19/2009
+# Purpose: Testing basic functionality of heartbeat over SSL
+#############################################################
+--source include/have_ssl_communication.inc
+--source include/master-slave.inc
+--echo
+
+#
+# Testing heartbeat over SSL
+#
+
+# Heartbeat over SSL
+--echo *** Heartbeat over SSL ***
+--connection master
+let $master_binlog= query_get_value(SHOW MASTER STATUS, File, 1);
+--connection slave
+--source include/stop_slave.inc
+RESET SLAVE;
+# Connect to master with SSL
+--replace_result $MASTER_MYPORT MASTER_PORT $MYSQL_TEST_DIR MYSQL_TEST_DIR $master_binlog MASTER_BINLOG
+eval CHANGE MASTER TO
+ MASTER_HOST='127.0.0.1',
+ MASTER_PORT=$MASTER_MYPORT,
+ MASTER_USER='root',
+ MASTER_HEARTBEAT_PERIOD=0.1,
+ MASTER_LOG_FILE='$master_binlog',
+ MASTER_SSL=1,
+ MASTER_SSL_CA='$MYSQL_TEST_DIR/std_data/cacert.pem',
+ MASTER_SSL_CERT='$MYSQL_TEST_DIR/std_data/client-cert.pem',
+ MASTER_SSL_KEY='$MYSQL_TEST_DIR/std_data/client-key.pem';
+--source include/start_slave.inc
+# Check SSL state of slave
+let $slave_ssl_status= query_get_value(SHOW SLAVE STATUS, Master_SSL_Allowed, 1);
+--echo Master_SSL_Allowed: $slave_ssl_status
+# Wait until hearbeat event will received
+let $status_var_value= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+let $status_var= slave_received_heartbeats;
+let $status_var_comparsion= >;
+--source include/wait_for_status_var.inc
+--echo Heartbeat event has received
+--echo
+
+#
+# Clean up
+#
+--echo *** Clean up ***
+--connection master
+--sync_slave_with_master
+--echo
+
+# End of 6.0 test
+--echo End of 6.0 test
diff --git a/mysql-test/suite/rpl/t/rpl_idempotency-slave.opt b/mysql-test/suite/rpl/t/rpl_idempotency-slave.opt
deleted file mode 100644
index 03fc19ca6ae..00000000000
--- a/mysql-test/suite/rpl/t/rpl_idempotency-slave.opt
+++ /dev/null
@@ -1 +0,0 @@
---slave-exec-mode=IDEMPOTENT
diff --git a/mysql-test/suite/rpl/t/rpl_idempotency.test b/mysql-test/suite/rpl/t/rpl_idempotency.test
index c96b88a1b1a..a1931ce9b60 100644
--- a/mysql-test/suite/rpl/t/rpl_idempotency.test
+++ b/mysql-test/suite/rpl/t/rpl_idempotency.test
@@ -2,18 +2,12 @@
# work the same way under statement based as under row based.
source include/master-slave.inc;
-connection master;
-source include/have_innodb.inc;
-connection slave;
-source include/have_innodb.inc;
# Add suppression for expected warning(s) in slaves error log
call mtr.add_suppression("Slave: Can't find record in 't.' Error_code: 1032");
call mtr.add_suppression("Slave: Cannot delete or update a parent row: a foreign key constraint fails .* Error_code: 1451");
call mtr.add_suppression("Slave: Cannot add or update a child row: a foreign key constraint fails .* Error_code: 1452");
-SET @old_slave_exec_mode= @@global.slave_exec_mode;
-
connection master;
CREATE TABLE t1 (a INT PRIMARY KEY);
CREATE TABLE t2 (a INT);
@@ -21,6 +15,9 @@ INSERT INTO t1 VALUES (-1),(-2),(-3);
INSERT INTO t2 VALUES (-1),(-2),(-3);
sync_slave_with_master;
+SET @old_slave_exec_mode= @@global.slave_exec_mode;
+SET @@global.slave_exec_mode= IDEMPOTENT;
+
# A delete for a row that does not exist, the statement is
# deliberately written to be idempotent for statement-based
# replication as well. We test this towards both a table with a
@@ -58,6 +55,7 @@ disable_query_log;
eval SELECT "$last_error" AS Last_SQL_Error;
enable_query_log;
+
# BUG#19958: RBR idempotency issue for UPDATE and DELETE
# Statement-based and row-based replication have different behaviour
@@ -89,316 +87,4 @@ connection master;
DROP TABLE t1, t2;
sync_slave_with_master;
-# bug#31609 Not all RBR slave errors reported as errors
-# bug#31552 Replication breaks when deleting rows from out-of-sync table
-# without PK
-
-#
-# Idempotent applying is not default any longer.
-# The default for slave-exec-mode option and server
-# variable slave_exec_mode is 'STRICT'.
-# When 'STRICT' mode is set, the slave SQL thread will stop whenever
-# the row to change is not found. In 'IDEMPOTENT' mode, the SQL thread
-# will continue running and apply the row - replace if it's Write_rows event -
-# or skip to the next event.
-
-# the previous part of the tests was with IDEMPOTENT slave's mode.
-
-
-#
-# Other than above idempotent errors dealing with foreign keys constraint
-#
-
-select @@global.slave_exec_mode /* must be IDEMPOTENT */;
-
-connection master;
-
-create table ti1 (b int primary key) engine = innodb;
-create table ti2 (a int primary key, b int, foreign key (b) references ti1(b))
- engine = innodb;
-set foreign_key_checks=1 /* ensure the check */;
-
-insert into ti1 values (1),(2),(3);
-insert into ti2 set a=2, b=2;
-
-sync_slave_with_master;
-
-#connection slave;
-select * from ti1 order by b /* must be (1),(2),(3) */;
-insert into ti2 set a=1, b=1;
-select * from ti2 order by b /* must be (1,1) (2,2) */;
-
-connection master;
-
-# from now on checking rbr specific idempotent errors
-set @save_binlog_format= @@session.binlog_format;
-set @@session.binlog_format= row;
-delete from ti1 where b=1;
-
-select * from ti1 order by b /* must be (2),(3) */;
-
-# slave must catch up (expect some warnings in error.log)
-sync_slave_with_master;
-
-#connection slave;
-select * from ti1 order by b /* must stays as were on master (1),(2),(3) */;
-
-delete from ti1 where b=3;
-
-connection master;
-insert into ti2 set a=3, b=3;
-
-# slave must catch up (expect some warnings in error.log)
-sync_slave_with_master;
-
-#connection slave;
-select * from ti2 order by b /* must be (1,1),(2,2) - not inserted */;
-
-
-#
-# Checking the new global sys variable
-#
-
-connection slave;
-
-set global slave_exec_mode='IDEMPOTENT';
-set global slave_exec_mode='STRICT';
-
-# checking mutual exclusion for the options
---error ER_SLAVE_AMBIGOUS_EXEC_MODE
-set global slave_exec_mode='IDEMPOTENT,STRICT';
-
-select @@global.slave_exec_mode /* must be STRICT */;
-
-#
-# Checking stops.
-# In the following sections strict slave sql thread is going to
-# stop when faces an idempotent error. In order to proceed
-# the mode is temporarily switched to indempotent.
-#
-
-#
---echo *** foreign keys errors as above now forces to stop
-#
-
-connection master;
-
-set foreign_key_checks=0;
-drop table ti2, ti1;
-
-create table ti1 (b int primary key) engine = innodb;
-create table ti2 (a int primary key, b int, foreign key (b) references ti1(b))
- engine = innodb;
-set foreign_key_checks=1 /* ensure the check */;
-
-insert into ti1 values (1),(2),(3);
-insert into ti2 set a=2, b=2;
-
-sync_slave_with_master;
-
-#connection slave;
-select * from ti1 order by b /* must be (1),(2),(3) */;
---echo *** conspire future problem
-insert into ti2 set a=1, b=1;
-select * from ti2 order by b /* must be (1,1) (2,2) */;
-
-connection master;
-
-delete from ti1 where b=1 /* offending delete event */;
-select * from ti1 order by b /* must be (2),(3) */;
-
-# foreign key: row is referenced
-
---echo *** slave must stop (Trying to delete a referenced foreing key)
-connection slave;
-source include/wait_for_slave_sql_to_stop.inc;
-
-let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1);
-disable_query_log;
-eval SELECT "$last_error" AS Last_SQL_Error;
-enable_query_log;
-
-select * from ti1 order by b /* must be (1),(2),(3) - not deleted */;
-set foreign_key_checks= 0;
-delete from ti2 where b=1;
-set foreign_key_checks= 1;
-set global slave_exec_mode='IDEMPOTENT';
-start slave sql_thread;
-connection master;
-sync_slave_with_master;
-#connection slave;
-set global slave_exec_mode='STRICT';
-
-connection master;
-
-sync_slave_with_master;
-
-#connection slave;
---echo *** conspire the following insert failure
-# foreign key: no referenced row
-
---echo *** conspire future problem
-delete from ti1 where b=3;
-
-connection master;
-insert into ti2 set a=3, b=3 /* offending write event */;
-
---echo *** slave must stop (Trying to insert an invalid foreign key)
-connection slave;
-source include/wait_for_slave_sql_to_stop.inc;
-
-let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1);
-disable_query_log;
-eval SELECT "$last_error" AS Last_SQL_Error;
-enable_query_log;
-
-select * from ti2 order by b /* must be (2,2) */;
-set foreign_key_checks= 0;
-insert into ti1 set b=3;
-set foreign_key_checks= 1;
-set global slave_exec_mode='IDEMPOTENT';
-start slave sql_thread;
-connection master;
-sync_slave_with_master;
-#connection slave;
-set global slave_exec_mode='STRICT';
-
-connection master;
-
-sync_slave_with_master;
-
-select * from ti2 order by b /* must be (2,2),(3,3) */;
-
-#
---echo *** other errors
-#
-
-# dup key insert
-
-#connection slave;
---echo *** conspiring query
-insert into ti1 set b=1;
-
-connection master;
-insert into ti1 set b=1 /* offending write event */;
-
---echo *** slave must stop (Trying to insert a dupliacte key)
-connection slave;
-source include/wait_for_slave_sql_to_stop.inc;
-
-let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1);
-disable_query_log;
-eval SELECT "$last_error" AS Last_SQL_Error;
-enable_query_log;
-
-set foreign_key_checks= 0;
-delete from ti1 where b=1;
-set foreign_key_checks= 1;
-set global slave_exec_mode='IDEMPOTENT';
-start slave sql_thread;
-connection master;
-sync_slave_with_master;
-#connection slave;
-set global slave_exec_mode='STRICT';
-
-# key not found
-
-connection master;
-
-CREATE TABLE t1 (a INT PRIMARY KEY);
-CREATE TABLE t2 (a INT);
-INSERT INTO t1 VALUES (-1),(-2),(-3);
-INSERT INTO t2 VALUES (-1),(-2),(-3);
-sync_slave_with_master;
-
-#connection slave;
-DELETE FROM t1 WHERE a = -2;
-DELETE FROM t2 WHERE a = -2;
-connection master;
-DELETE FROM t1 WHERE a = -2;
-
---echo *** slave must stop (Key was not found)
-connection slave;
-source include/wait_for_slave_sql_to_stop.inc;
-
-let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1);
-disable_query_log;
-eval SELECT "$last_error" AS Last_SQL_Error;
-enable_query_log;
-
-set global slave_exec_mode='IDEMPOTENT';
-start slave sql_thread;
-connection master;
-sync_slave_with_master;
-#connection slave;
-set global slave_exec_mode='STRICT';
-
-connection master;
-DELETE FROM t2 WHERE a = -2;
---echo *** slave must stop (Key was not found)
-connection slave;
-source include/wait_for_slave_sql_to_stop.inc;
-
-let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1);
-disable_query_log;
-eval SELECT "$last_error" AS Last_SQL_Error;
-enable_query_log;
-
-set global slave_exec_mode='IDEMPOTENT';
-start slave sql_thread;
-connection master;
-sync_slave_with_master;
-#connection slave;
-set global slave_exec_mode='STRICT';
-
-UPDATE t1 SET a = 1 WHERE a = -1;
-UPDATE t2 SET a = 1 WHERE a = -1;
-
-connection master;
-UPDATE t1 SET a = 1 WHERE a = -1;
-
---echo *** slave must stop (Key was not found)
-connection slave;
-source include/wait_for_slave_sql_to_stop.inc;
-
-let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1);
-disable_query_log;
-eval SELECT "$last_error" AS Last_SQL_Error;
-enable_query_log;
-
-set global slave_exec_mode='IDEMPOTENT';
-start slave sql_thread;
-connection master;
-sync_slave_with_master;
-#connection slave;
-set global slave_exec_mode='STRICT';
-
-
-connection master;
-UPDATE t2 SET a = 1 WHERE a = -1;
-
---echo *** slave must stop (Key was not found)
-connection slave;
-source include/wait_for_slave_sql_to_stop.inc;
-
-let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1);
-disable_query_log;
-eval SELECT "$last_error" AS Last_SQL_Error;
-enable_query_log;
-
-set global slave_exec_mode='IDEMPOTENT';
-start slave sql_thread;
-connection master;
-sync_slave_with_master;
-#connection slave;
SET @@global.slave_exec_mode= @old_slave_exec_mode;
-
-# cleanup for bug#31609 tests
-
-connection master;
-set @@session.binlog_format= @save_binlog_format;
-drop table t1,t2,ti2,ti1;
-
---source include/master-slave-end.inc
-
---echo *** end of tests
diff --git a/mysql-test/suite/rpl/t/rpl_insert.test b/mysql-test/suite/rpl/t/rpl_insert.test
index d304dfb6cc7..9146975fd04 100644
--- a/mysql-test/suite/rpl/t/rpl_insert.test
+++ b/mysql-test/suite/rpl/t/rpl_insert.test
@@ -6,6 +6,10 @@
--source include/not_embedded.inc
--source include/not_windows.inc
+disable_query_log;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+enable_query_log;
+
--disable_warnings
CREATE SCHEMA IF NOT EXISTS mysqlslap;
USE mysqlslap;
diff --git a/mysql-test/suite/rpl/t/rpl_insert_id.test b/mysql-test/suite/rpl/t/rpl_insert_id.test
index 45cc32c9d39..d160f285520 100644
--- a/mysql-test/suite/rpl/t/rpl_insert_id.test
+++ b/mysql-test/suite/rpl/t/rpl_insert_id.test
@@ -9,3 +9,4 @@
-- source include/have_innodb.inc
let $engine_type=myisam;
-- source extra/rpl_tests/rpl_insert_id.test
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
diff --git a/mysql-test/suite/rpl/t/rpl_insert_ignore.test b/mysql-test/suite/rpl/t/rpl_insert_ignore.test
index 2709430f85d..733e359f7d7 100644
--- a/mysql-test/suite/rpl/t/rpl_insert_ignore.test
+++ b/mysql-test/suite/rpl/t/rpl_insert_ignore.test
@@ -4,6 +4,9 @@
-- source include/not_ndb_default.inc
-- source include/have_innodb.inc
-- source include/master-slave.inc
+
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
let $engine_type=innodb;
let $engine_type2=myisam;
-- source extra/rpl_tests/rpl_insert_ignore.test
diff --git a/mysql-test/suite/rpl/t/rpl_invoked_features.test b/mysql-test/suite/rpl/t/rpl_invoked_features.test
index e73964a6e14..076685a7c3a 100644
--- a/mysql-test/suite/rpl/t/rpl_invoked_features.test
+++ b/mysql-test/suite/rpl/t/rpl_invoked_features.test
@@ -8,6 +8,10 @@
--source include/master-slave.inc
--source include/have_innodb.inc
+disable_query_log;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+enable_query_log;
+
# --disable_warnings/--enable_warnings added before/after query
# if one uses UUID() function because we need to avoid warnings
# for STATEMENT binlog format
@@ -166,25 +170,19 @@ INSERT INTO t1 VALUES (103,103,'');
# Do some actions for transactional tables
--echo
+--disable_warnings
CREATE TABLE t13 SELECT * FROM v11;
INSERT INTO t11 VALUES (3,3,'');
UPDATE t11 SET c='2' WHERE a = 1;
---disable_warnings
INSERT INTO t11 VALUES(4,4,f1(4));
---enable_warnings
INSERT INTO t11 VALUES (100,100,'');
---disable_warnings
CALL p11(5, UUID());
---enable_warnings
INSERT INTO t11 VALUES (101,101,'');
---disable_warnings
INSERT INTO t11 VALUES(6,6,f1(6));
---enable_warnings
INSERT INTO t11 VALUES (102,102,'');
---disable_warnings
INSERT INTO t11 VALUES(7,7,f2(7));
---enable_warnings
INSERT INTO t11 VALUES (103,103,'');
+--enable_warnings
# Scheduler is on
--echo
@@ -268,7 +266,9 @@ SELECT a,b FROM v11 ORDER BY a;
UPDATE t1 SET c='';
UPDATE t2 SET c='';
UPDATE t3 SET c='';
+--disable_warnings
UPDATE t11 SET c='';
+--enable_warnings
UPDATE t12 SET c='';
UPDATE t13 SET c='';
diff --git a/mysql-test/suite/rpl/t/rpl_ip_mix.cnf b/mysql-test/suite/rpl/t/rpl_ip_mix.cnf
new file mode 100644
index 00000000000..00e2637d822
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_ip_mix.cnf
@@ -0,0 +1,56 @@
+# Use default setting for mysqld processes
+!include include/default_mysqld.cnf
+!include include/default_client.cnf
+
+[mysqld.1]
+
+# Run the master.sh script before starting this process
+#!run-master-sh
+
+log-bin= master-bin
+
+loose-innodb
+
+skip-name-resolve
+bind-address= ::
+
+
+[mysqld.2]
+# Run the slave.sh script before starting this process
+#!run-slave-sh
+
+# Append <testname>-slave.opt file to the list of argument used when
+# starting the mysqld
+#!use-slave-opt
+
+log-bin= slave-bin
+relay-log= slave-relay-bin
+
+init-rpl-role= slave
+log-slave-updates
+master-retry-count= 10
+
+# Values reported by slave when it connect to master
+# and shows up in SHOW SLAVE STATUS;
+report-host= localhost
+report-port= @mysqld.2.port
+report-user= root
+
+skip-slave-start
+skip-name-resolve
+bind-address= 0.0.0.0
+
+# Directory where slaves find the dumps generated by "load data"
+# on the server. The path need to have constant length otherwise
+# test results will vary, thus a relative path is used.
+slave-load-tmpdir= ../../tmp
+
+loose-innodb
+
+[ENV]
+MASTER_MYPORT= @mysqld.1.port
+MASTER_MYSOCK= @mysqld.1.socket
+
+SLAVE_MYPORT= @mysqld.2.port
+SLAVE_MYSOCK= @mysqld.2.socket
+
diff --git a/mysql-test/suite/rpl/t/rpl_ip_mix.test b/mysql-test/suite/rpl/t/rpl_ip_mix.test
new file mode 100644
index 00000000000..68aa2fc87a9
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_ip_mix.test
@@ -0,0 +1,93 @@
+# Copyright (C) 2009 SUN Microsystems
+# All rights reserved. Use is subject to license terms.
+# Author: Horst Hunger
+# Nov. 19, 2009
+# Test of ipv6 format, especially "change master host=..."
+# Options: --skip-name-resolve, master: --bind-address=::, slave: --bind-address=0.0.0.0
+# (see corresponding cnf file)
+#
+--source include/check_ipv6.inc
+# Can't be tested with windows due to mixed format like 0::0000:FFFF:127.0.0.1
+--source include/not_windows.inc
+--source include/have_log_bin.inc
+
+let $IPv6= ::1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix.inc
+
+let $IPv6= ::1/128;
+#--echo #################### IP: $IPv6 ###########################
+#--source include/rpl_ip_mix.inc
+
+let $IPv6= 0000:0000:0000:0000:0000:0000:0000:0001;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix.inc
+
+let $IPv6= 0:0:0:0:0:0:0:1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix.inc
+
+let $IPv6= 127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix.inc
+
+let $IPv6= 0:0:0:0:0:FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix.inc
+
+let $IPv6= 0000:0000:0000:0000:0000:FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix.inc
+
+let $IPv6= 0:0000:0000:0:0000:FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix.inc
+
+let $IPv6= 0::0000:FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix.inc
+
+#let $IPv6= 0:0:0:0:0:FFFF:127.0.0.1/96;
+#--echo #################### IP: $IPv6 ###########################
+#--source include/rpl_ip_mix.inc
+
+let $IPv6= ::FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix.inc
+
+#let $IPv6= ::FFFF:127.0.0.1/96;
+#--echo #################### IP: $IPv6 ###########################
+#--source include/rpl_ip_mix.inc
+
+let $IPv6= ::1;
+--echo #################### IP: $IPv6 mix #######################
+--echo connect (master,$IPv6,root,,test,MASTER_MYPORT);
+connect (master,$IPv6,root,,test,$MASTER_MYPORT);
+--echo connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT);
+--echo connection master;
+connection master;
+reset master;
+source include/show_master_status.inc;
+save_master_pos;
+--echo connection slave;
+connection slave;
+reset slave;
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='$IPv6';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='::FFFF:127.0.0.1';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='0:0:0:0:0:0:0:1';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+--echo disconnect slave;
+disconnect slave;
+--echo disconnect master;
+disconnect master;
+--echo connection default;
+connection default;
+
diff --git a/mysql-test/suite/rpl/t/rpl_ip_mix2.cnf b/mysql-test/suite/rpl/t/rpl_ip_mix2.cnf
new file mode 100644
index 00000000000..306df437bcc
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_ip_mix2.cnf
@@ -0,0 +1,56 @@
+# Use default setting for mysqld processes
+!include include/default_mysqld.cnf
+!include include/default_client.cnf
+
+[mysqld.1]
+
+# Run the master.sh script before starting this process
+#!run-master-sh
+
+log-bin= master-bin
+
+loose-innodb
+
+skip-name-resolve
+bind-address= 0.0.0.0
+
+
+[mysqld.2]
+# Run the slave.sh script before starting this process
+#!run-slave-sh
+
+# Append <testname>-slave.opt file to the list of argument used when
+# starting the mysqld
+#!use-slave-opt
+
+log-bin= slave-bin
+relay-log= slave-relay-bin
+
+init-rpl-role= slave
+log-slave-updates
+master-retry-count= 10
+
+# Values reported by slave when it connect to master
+# and shows up in SHOW SLAVE STATUS;
+report-host= localhost
+report-port= @mysqld.2.port
+report-user= root
+
+skip-slave-start
+skip-name-resolve
+bind-address= ::
+
+# Directory where slaves find the dumps generated by "load data"
+# on the server. The path need to have constant length otherwise
+# test results will vary, thus a relative path is used.
+slave-load-tmpdir= ../../tmp
+
+loose-innodb
+
+[ENV]
+MASTER_MYPORT= @mysqld.1.port
+MASTER_MYSOCK= @mysqld.1.socket
+
+SLAVE_MYPORT= @mysqld.2.port
+SLAVE_MYSOCK= @mysqld.2.socket
+
diff --git a/mysql-test/suite/rpl/t/rpl_ip_mix2.test b/mysql-test/suite/rpl/t/rpl_ip_mix2.test
new file mode 100644
index 00000000000..d6435d710c1
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_ip_mix2.test
@@ -0,0 +1,109 @@
+# Copyright (C) 2009 SUN Microsystems
+# All rights reserved. Use is subject to license terms.
+# Author: Horst Hunger
+# Nov. 19, 2009
+# Test of ipv6 format, especially "change master host=..."
+# Options: --skip-name-resolve, master: --bind-address=0.0.0.0, slave: --bind-address=::
+# (see corresponding cnf file)
+#
+# Check if ipv6 is available. If not, server is crashing (see BUG#48915).
+--disable_query_log
+--disable_abort_on_error
+connect (checkcon123456789,::1,root,,test,$SLAVE_MYPORT);
+if($mysql_errno)
+{
+skip wrong IP for slave;
+}
+connection default;
+disconnect checkcon123456789;
+--enable_abort_on_error
+--enable_query_log
+# end check
+
+# Can't be tested with windows due to mixed format like 0::0000:FFFF:127.0.0.1
+--source include/not_windows.inc
+--source include/have_log_bin.inc
+
+let $IPv6= ::1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix2.inc
+let $IPv6= ::1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix2.inc
+
+let $IPv6= ::1/128;
+#--echo #################### IP: $IPv6 ###########################
+#--source include/rpl_ip_mix2.inc
+
+let $IPv6= 0000:0000:0000:0000:0000:0000:0000:0001;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix2.inc
+
+let $IPv6= 0:0:0:0:0:0:0:1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix2.inc
+
+let $IPv6= 127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix2.inc
+
+let $IPv6= 0:0:0:0:0:FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix2.inc
+
+let $IPv6= 0000:0000:0000:0000:0000:FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix2.inc
+
+let $IPv6= 0:0000:0000:0:0000:FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix2.inc
+
+let $IPv6= 0::0000:FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix2.inc
+
+#let $IPv6= 0:0:0:0:0:FFFF:127.0.0.1/96;
+#--echo #################### IP: $IPv6 ###########################
+#--source include/rpl_ip_mix2.inc
+
+let $IPv6= ::FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix2.inc
+
+#let $IPv6= ::FFFF:127.0.0.1/96;
+#--echo #################### IP: $IPv6 ###########################
+#--source include/rpl_ip_mix2.inc
+
+let $IPv6= ::1;
+--echo #################### IP: $IPv6 mix #######################
+--echo connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (master,127.0.0.1,root,,test,$MASTER_MYPORT);
+--echo connect (slave,$IPv6,root,,test,SLAVE_MYPORT);
+connect (slave,$IPv6,root,,test,$SLAVE_MYPORT);
+--echo connection master;
+connection master;
+reset master;
+source include/show_master_status.inc;
+save_master_pos;
+--echo connection slave;
+connection slave;
+reset slave;
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='$IPv6';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='::FFFF:127.0.0.1';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='0:0:0:0:0:0:0:1';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+--echo disconnect slave;
+disconnect slave;
+--echo disconnect master;
+disconnect master;
+--echo connection default;
+connection default;
+
diff --git a/mysql-test/suite/rpl/t/rpl_ip_mix2_win.cnf b/mysql-test/suite/rpl/t/rpl_ip_mix2_win.cnf
new file mode 100644
index 00000000000..306df437bcc
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_ip_mix2_win.cnf
@@ -0,0 +1,56 @@
+# Use default setting for mysqld processes
+!include include/default_mysqld.cnf
+!include include/default_client.cnf
+
+[mysqld.1]
+
+# Run the master.sh script before starting this process
+#!run-master-sh
+
+log-bin= master-bin
+
+loose-innodb
+
+skip-name-resolve
+bind-address= 0.0.0.0
+
+
+[mysqld.2]
+# Run the slave.sh script before starting this process
+#!run-slave-sh
+
+# Append <testname>-slave.opt file to the list of argument used when
+# starting the mysqld
+#!use-slave-opt
+
+log-bin= slave-bin
+relay-log= slave-relay-bin
+
+init-rpl-role= slave
+log-slave-updates
+master-retry-count= 10
+
+# Values reported by slave when it connect to master
+# and shows up in SHOW SLAVE STATUS;
+report-host= localhost
+report-port= @mysqld.2.port
+report-user= root
+
+skip-slave-start
+skip-name-resolve
+bind-address= ::
+
+# Directory where slaves find the dumps generated by "load data"
+# on the server. The path need to have constant length otherwise
+# test results will vary, thus a relative path is used.
+slave-load-tmpdir= ../../tmp
+
+loose-innodb
+
+[ENV]
+MASTER_MYPORT= @mysqld.1.port
+MASTER_MYSOCK= @mysqld.1.socket
+
+SLAVE_MYPORT= @mysqld.2.port
+SLAVE_MYSOCK= @mysqld.2.socket
+
diff --git a/mysql-test/suite/rpl/t/rpl_ip_mix2_win.test b/mysql-test/suite/rpl/t/rpl_ip_mix2_win.test
new file mode 100644
index 00000000000..f9a2022ddd4
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_ip_mix2_win.test
@@ -0,0 +1,78 @@
+# Copyright (C) 2009 SUN Microsystems
+# All rights reserved. Use is subject to license terms.
+# Author: Horst Hunger
+# Nov. 19, 2009
+# Test of ipv6 format, especially "change master host=..."
+# Options: --skip-name-resolve, master: --bind-address=0.0.0.0, slave: --bind-address=::
+# (see corresponding cnf file)
+#
+# Check if ipv6 is available. If not, server is crashing (see BUG#48915).
+--disable_query_log
+--disable_abort_on_error
+connect (checkcon123456789,::1,root,,test,$SLAVE_MYPORT);
+if($mysql_errno)
+{
+skip wrong IP for slave;
+}
+connection default;
+disconnect checkcon123456789;
+--enable_abort_on_error
+--enable_query_log
+# end check
+
+# For windows due to missing the mixed format like 0::0000:FFFF:127.0.0.1
+--source include/windows.inc
+--source include/have_log_bin.inc
+
+let $IPv6= ::1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix2.inc
+
+let $IPv6= ::1/128;
+#--echo #################### IP: $IPv6 ###########################
+#--source include/rpl_ip_mix2.inc
+
+let $IPv6= 0000:0000:0000:0000:0000:0000:0000:0001;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix2.inc
+
+let $IPv6= 0:0:0:0:0:0:0:1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix2.inc
+
+let $IPv6= 127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix2.inc
+
+let $IPv6= ::1;
+--echo #################### IP: $IPv6 mix #######################
+--echo connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (master,127.0.0.1,root,,test,$MASTER_MYPORT);
+--echo connect (slave,$IPv6,root,,test,SLAVE_MYPORT);
+connect (slave,$IPv6,root,,test,$SLAVE_MYPORT);
+--echo connection master;
+connection master;
+reset master;
+source include/show_master_status.inc;
+save_master_pos;
+--echo connection slave;
+connection slave;
+reset slave;
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='$IPv6';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='127.0.0.1';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='0:0:0:0:0:0:0:1';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+--echo disconnect slave;
+disconnect slave;
+--echo disconnect master;
+disconnect master;
+--echo connection default;
+connection default;
+--exit
diff --git a/mysql-test/suite/rpl/t/rpl_ip_mix_win.cnf b/mysql-test/suite/rpl/t/rpl_ip_mix_win.cnf
new file mode 100644
index 00000000000..00e2637d822
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_ip_mix_win.cnf
@@ -0,0 +1,56 @@
+# Use default setting for mysqld processes
+!include include/default_mysqld.cnf
+!include include/default_client.cnf
+
+[mysqld.1]
+
+# Run the master.sh script before starting this process
+#!run-master-sh
+
+log-bin= master-bin
+
+loose-innodb
+
+skip-name-resolve
+bind-address= ::
+
+
+[mysqld.2]
+# Run the slave.sh script before starting this process
+#!run-slave-sh
+
+# Append <testname>-slave.opt file to the list of argument used when
+# starting the mysqld
+#!use-slave-opt
+
+log-bin= slave-bin
+relay-log= slave-relay-bin
+
+init-rpl-role= slave
+log-slave-updates
+master-retry-count= 10
+
+# Values reported by slave when it connect to master
+# and shows up in SHOW SLAVE STATUS;
+report-host= localhost
+report-port= @mysqld.2.port
+report-user= root
+
+skip-slave-start
+skip-name-resolve
+bind-address= 0.0.0.0
+
+# Directory where slaves find the dumps generated by "load data"
+# on the server. The path need to have constant length otherwise
+# test results will vary, thus a relative path is used.
+slave-load-tmpdir= ../../tmp
+
+loose-innodb
+
+[ENV]
+MASTER_MYPORT= @mysqld.1.port
+MASTER_MYSOCK= @mysqld.1.socket
+
+SLAVE_MYPORT= @mysqld.2.port
+SLAVE_MYSOCK= @mysqld.2.socket
+
diff --git a/mysql-test/suite/rpl/t/rpl_ip_mix_win.test b/mysql-test/suite/rpl/t/rpl_ip_mix_win.test
new file mode 100644
index 00000000000..7d78f71bd1b
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_ip_mix_win.test
@@ -0,0 +1,65 @@
+# Copyright (C) 2009 SUN Microsystems
+# All rights reserved. Use is subject to license terms.
+# Author: Horst Hunger
+# Nov. 19, 2009
+# Test of ipv6 format, especially "change master host=..."
+# Options: --skip-name-resolve, master: --bind-address=::, slave: --bind-address=0.0.0.0
+# (see corresponding cnf file)
+#
+--source include/check_ipv6.inc
+# For windows due to missing the mixed format like 0::0000:FFFF:127.0.0.1
+--source include/windows.inc
+--source include/have_log_bin.inc
+
+let $IPv6= ::1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix.inc
+
+let $IPv6= ::1/128;
+#--echo #################### IP: $IPv6 ###########################
+#--source include/rpl_ip_mix.inc
+
+let $IPv6= 0000:0000:0000:0000:0000:0000:0000:0001;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix.inc
+
+let $IPv6= 0:0:0:0:0:0:0:1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix.inc
+
+let $IPv6= 127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ip_mix.inc
+
+let $IPv6= ::1;
+--echo #################### IP: $IPv6 mix #######################
+--echo connect (master,$IPv6,root,,test,MASTER_MYPORT);
+connect (master,$IPv6,root,,test,$MASTER_MYPORT);
+--echo connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT);
+--echo connection master;
+connection master;
+reset master;
+source include/show_master_status.inc;
+save_master_pos;
+--echo connection slave;
+connection slave;
+reset slave;
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='$IPv6';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='127.0.0.1';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='0:0:0:0:0:0:0:1';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+--echo disconnect slave;
+disconnect slave;
+--echo disconnect master;
+disconnect master;
+--echo connection default;
+connection default;
+--exit
diff --git a/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6.cnf b/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6.cnf
new file mode 100644
index 00000000000..b646a4088ff
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6.cnf
@@ -0,0 +1,56 @@
+# Use default setting for mysqld processes
+!include include/default_mysqld.cnf
+!include include/default_client.cnf
+
+[mysqld.1]
+
+# Run the master.sh script before starting this process
+#!run-master-sh
+
+log-bin= master-bin
+
+loose-innodb
+
+skip-name-resolve
+bind-address= 0.0.0.0
+
+
+[mysqld.2]
+# Run the slave.sh script before starting this process
+#!run-slave-sh
+
+# Append <testname>-slave.opt file to the list of argument used when
+# starting the mysqld
+#!use-slave-opt
+
+log-bin= slave-bin
+relay-log= slave-relay-bin
+
+init-rpl-role= slave
+log-slave-updates
+master-retry-count= 10
+
+# Values reported by slave when it connect to master
+# and shows up in SHOW SLAVE STATUS;
+report-host= localhost
+report-port= @mysqld.2.port
+report-user= root
+
+skip-slave-start
+skip-name-resolve
+bind-address= 0.0.0.0
+
+# Directory where slaves find the dumps generated by "load data"
+# on the server. The path need to have constant length otherwise
+# test results will vary, thus a relative path is used.
+slave-load-tmpdir= ../../tmp
+
+loose-innodb
+
+[ENV]
+MASTER_MYPORT= @mysqld.1.port
+MASTER_MYSOCK= @mysqld.1.socket
+
+SLAVE_MYPORT= @mysqld.2.port
+SLAVE_MYSOCK= @mysqld.2.socket
+
diff --git a/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6.test b/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6.test
new file mode 100644
index 00000000000..f4e5ad6af7b
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6.test
@@ -0,0 +1,90 @@
+# Copyright (C) 2009 SUN Microsystems
+# All rights reserved. Use is subject to license terms.
+# Author: Horst Hunger
+# Nov. 19, 2009
+# Test of ipv4 (127.0.0.1) in ipv6 format, especially "change master host=..."
+# Options: --skip-name-resolve, --bind-address=0.0.0.0 (see corresponding cnf file)
+# for master and slave
+#
+# Check if ipv4 is available.
+--disable_query_log
+--disable_abort_on_error
+connect (checkcon123456789,127.0.0.1,root,,test);
+if($mysql_errno)
+{
+skip wrong IP;
+}
+connection default;
+disconnect checkcon123456789;
+--enable_abort_on_error
+--enable_query_log
+# end check
+
+# Can't be tested with windows due to mixed format like 0::0000:FFFF:127.0.0.1
+--source include/not_windows.inc
+--source include/have_log_bin.inc
+
+let $IPv6= 127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+let $IPv6= 0:0:0:0:0:FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+let $IPv6= 0000:0000:0000:0000:0000:FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+let $IPv6= 0:0000:0000:0:0000:FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+let $IPv6= 0::0000:FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+#let $IPv6= 0:0:0:0:0:FFFF:127.0.0.1/96;
+#--echo #################### IP: $IPv6 ###########################
+#--source include/rpl_ipv6.inc
+
+let $IPv6= ::FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+#let $IPv6= ::FFFF:127.0.0.1/96;
+#--echo #################### IP: $IPv6 ###########################
+#--source include/rpl_ipv6.inc
+
+let $IPv6= ::1;
+--echo #################### IP: $IPv6 ###########################
+--echo connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (master,127.0.0.1,root,,test,$MASTER_MYPORT);
+--echo connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT);
+--echo connection master;
+connection master;
+reset master;
+source include/show_master_status.inc;
+save_master_pos;
+--echo connection slave;
+connection slave;
+reset slave;
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='$IPv6';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='::FFFF:127.0.0.1';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='0:0:0:0:0:0:0:1';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+--echo disconnect slave;
+disconnect slave;
+--echo disconnect master;
+disconnect master;
+--echo connection default;
+connection default;
+
diff --git a/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6_win.cnf b/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6_win.cnf
new file mode 100644
index 00000000000..b646a4088ff
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6_win.cnf
@@ -0,0 +1,56 @@
+# Use default setting for mysqld processes
+!include include/default_mysqld.cnf
+!include include/default_client.cnf
+
+[mysqld.1]
+
+# Run the master.sh script before starting this process
+#!run-master-sh
+
+log-bin= master-bin
+
+loose-innodb
+
+skip-name-resolve
+bind-address= 0.0.0.0
+
+
+[mysqld.2]
+# Run the slave.sh script before starting this process
+#!run-slave-sh
+
+# Append <testname>-slave.opt file to the list of argument used when
+# starting the mysqld
+#!use-slave-opt
+
+log-bin= slave-bin
+relay-log= slave-relay-bin
+
+init-rpl-role= slave
+log-slave-updates
+master-retry-count= 10
+
+# Values reported by slave when it connect to master
+# and shows up in SHOW SLAVE STATUS;
+report-host= localhost
+report-port= @mysqld.2.port
+report-user= root
+
+skip-slave-start
+skip-name-resolve
+bind-address= 0.0.0.0
+
+# Directory where slaves find the dumps generated by "load data"
+# on the server. The path need to have constant length otherwise
+# test results will vary, thus a relative path is used.
+slave-load-tmpdir= ../../tmp
+
+loose-innodb
+
+[ENV]
+MASTER_MYPORT= @mysqld.1.port
+MASTER_MYSOCK= @mysqld.1.socket
+
+SLAVE_MYPORT= @mysqld.2.port
+SLAVE_MYSOCK= @mysqld.2.socket
+
diff --git a/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6_win.test b/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6_win.test
new file mode 100644
index 00000000000..db786536c2d
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6_win.test
@@ -0,0 +1,63 @@
+# Copyright (C) 2009 SUN Microsystems
+# All rights reserved. Use is subject to license terms.
+# Author: Horst Hunger
+# Nov. 19, 2009
+# Test of ipv4 (127.0.0.1) in ipv6 format, especially "change master host=..."
+# Options: --skip-name-resolve, --bind-address=0.0.0.0 (see corresponding cnf file)
+# for master and slave
+#
+# Check if ipv4 is available.
+--disable_query_log
+--disable_abort_on_error
+connect (checkcon123456789,127.0.0.1,root,,test);
+if($mysql_errno)
+{
+skip wrong IP;
+}
+connection default;
+disconnect checkcon123456789;
+--enable_abort_on_error
+--enable_query_log
+# end check
+
+# For windows due to missing the mixed format like 0::0000:FFFF:127.0.0.1
+--source include/windows.inc
+--source include/have_log_bin.inc
+
+let $IPv6= 127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+let $IPv6= ::1;
+--echo #################### IP: $IPv6 ###########################
+--echo connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (master,127.0.0.1,root,,test,$MASTER_MYPORT);
+--echo connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT);
+--echo connection master;
+connection master;
+reset master;
+source include/show_master_status.inc;
+save_master_pos;
+--echo connection slave;
+connection slave;
+reset slave;
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='$IPv6';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='127.0.0.1';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='0:0:0:0:0:0:0:1';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+--echo disconnect slave;
+disconnect slave;
+--echo disconnect master;
+disconnect master;
+--echo connection default;
+connection default;
+--exit
+
diff --git a/mysql-test/suite/rpl/t/rpl_ipv6.cnf b/mysql-test/suite/rpl/t/rpl_ipv6.cnf
new file mode 100644
index 00000000000..c657e7c5115
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_ipv6.cnf
@@ -0,0 +1,56 @@
+# Use default setting for mysqld processes
+!include include/default_mysqld.cnf
+!include include/default_client.cnf
+
+[mysqld.1]
+
+# Run the master.sh script before starting this process
+#!run-master-sh
+
+log-bin= master-bin
+
+loose-innodb
+
+skip-name-resolve
+bind-address= ::
+
+
+[mysqld.2]
+# Run the slave.sh script before starting this process
+#!run-slave-sh
+
+# Append <testname>-slave.opt file to the list of argument used when
+# starting the mysqld
+#!use-slave-opt
+
+log-bin= slave-bin
+relay-log= slave-relay-bin
+
+init-rpl-role= slave
+log-slave-updates
+master-retry-count= 10
+
+# Values reported by slave when it connect to master
+# and shows up in SHOW SLAVE STATUS;
+report-host= localhost
+report-port= @mysqld.2.port
+report-user= root
+
+skip-slave-start
+skip-name-resolve
+bind-address= ::
+
+# Directory where slaves find the dumps generated by "load data"
+# on the server. The path need to have constant length otherwise
+# test results will vary, thus a relative path is used.
+slave-load-tmpdir= ../../tmp
+
+loose-innodb
+
+[ENV]
+MASTER_MYPORT= @mysqld.1.port
+MASTER_MYSOCK= @mysqld.1.socket
+
+SLAVE_MYPORT= @mysqld.2.port
+SLAVE_MYSOCK= @mysqld.2.socket
+
diff --git a/mysql-test/suite/rpl/t/rpl_ipv6.test b/mysql-test/suite/rpl/t/rpl_ipv6.test
new file mode 100644
index 00000000000..71fedcb4208
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_ipv6.test
@@ -0,0 +1,93 @@
+# Copyright (C) 2009 SUN Microsystems
+# All rights reserved. Use is subject to license terms.
+# Author: Horst Hunger
+# Nov. 19, 2009
+# Test of ipv6 format, especially "change master host=..."
+# Options: --skip-name-resolve, --bind-address=:: (see corresponding cnf file)
+# for master and slave.
+#
+--source include/check_ipv6.inc
+# Can't be tested with windows due to mixed format like 0::0000:FFFF:127.0.0.1
+--source include/not_windows.inc
+--source include/have_log_bin.inc
+
+let $IPv6= ::1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+let $IPv6= ::1/128;
+#--echo #################### IP: $IPv6 ###########################
+#--source include/rpl_ipv6.inc
+
+let $IPv6= 0000:0000:0000:0000:0000:0000:0000:0001;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+let $IPv6= 0:0:0:0:0:0:0:1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+let $IPv6= 127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+let $IPv6= 0:0:0:0:0:FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+let $IPv6= 0000:0000:0000:0000:0000:FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+let $IPv6= 0:0000:0000:0:0000:FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+let $IPv6= 0::0000:FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+#let $IPv6= 0:0:0:0:0:FFFF:127.0.0.1/96;
+#--echo #################### IP: $IPv6 ###########################
+#--source include/rpl_ipv6.inc
+
+let $IPv6= ::FFFF:127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+#let $IPv6= ::FFFF:127.0.0.1/96;
+#--echo #################### IP: $IPv6 ###########################
+#--source include/rpl_ipv6.inc
+
+let $IPv6= ::1;
+--echo #################### IP: $IPv6 mix #######################
+--echo connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (master,127.0.0.1,root,,test,$MASTER_MYPORT);
+--echo connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT);
+--echo connection master;
+connection master;
+reset master;
+source include/show_master_status.inc;
+save_master_pos;
+--echo connection slave;
+connection slave;
+reset slave;
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='$IPv6';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='::FFFF:127.0.0.1';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='0:0:0:0:0:0:0:1';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+--echo disconnect slave;
+disconnect slave;
+--echo disconnect master;
+disconnect master;
+--echo connection default;
+connection default;
+
diff --git a/mysql-test/suite/rpl/t/rpl_ipv6_win.cnf b/mysql-test/suite/rpl/t/rpl_ipv6_win.cnf
new file mode 100644
index 00000000000..c657e7c5115
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_ipv6_win.cnf
@@ -0,0 +1,56 @@
+# Use default setting for mysqld processes
+!include include/default_mysqld.cnf
+!include include/default_client.cnf
+
+[mysqld.1]
+
+# Run the master.sh script before starting this process
+#!run-master-sh
+
+log-bin= master-bin
+
+loose-innodb
+
+skip-name-resolve
+bind-address= ::
+
+
+[mysqld.2]
+# Run the slave.sh script before starting this process
+#!run-slave-sh
+
+# Append <testname>-slave.opt file to the list of argument used when
+# starting the mysqld
+#!use-slave-opt
+
+log-bin= slave-bin
+relay-log= slave-relay-bin
+
+init-rpl-role= slave
+log-slave-updates
+master-retry-count= 10
+
+# Values reported by slave when it connect to master
+# and shows up in SHOW SLAVE STATUS;
+report-host= localhost
+report-port= @mysqld.2.port
+report-user= root
+
+skip-slave-start
+skip-name-resolve
+bind-address= ::
+
+# Directory where slaves find the dumps generated by "load data"
+# on the server. The path need to have constant length otherwise
+# test results will vary, thus a relative path is used.
+slave-load-tmpdir= ../../tmp
+
+loose-innodb
+
+[ENV]
+MASTER_MYPORT= @mysqld.1.port
+MASTER_MYSOCK= @mysqld.1.socket
+
+SLAVE_MYPORT= @mysqld.2.port
+SLAVE_MYSOCK= @mysqld.2.socket
+
diff --git a/mysql-test/suite/rpl/t/rpl_ipv6_win.test b/mysql-test/suite/rpl/t/rpl_ipv6_win.test
new file mode 100644
index 00000000000..7c9d437541a
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_ipv6_win.test
@@ -0,0 +1,65 @@
+# Copyright (C) 2009 SUN Microsystems
+# All rights reserved. Use is subject to license terms.
+# Author: Horst Hunger
+# Nov. 19, 2009
+# Test of ipv6 format, especially "change master host=..."
+# Options: --skip-name-resolve, --bind-address=:: (see corresponding cnf file)
+# for master and slave.
+#
+--source include/check_ipv6.inc
+# For windows due to missing the mixed format like 0::0000:FFFF:127.0.0.1
+--source include/windows.inc
+--source include/have_log_bin.inc
+
+let $IPv6= ::1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+let $IPv6= ::1/128;
+#--echo #################### IP: $IPv6 ###########################
+#--source include/rpl_ipv6.inc
+
+let $IPv6= 0000:0000:0000:0000:0000:0000:0000:0001;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+let $IPv6= 0:0:0:0:0:0:0:1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+let $IPv6= 127.0.0.1;
+--echo #################### IP: $IPv6 ###########################
+--source include/rpl_ipv6.inc
+
+let $IPv6= ::1;
+--echo #################### IP: $IPv6 mix #######################
+--echo connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
+connect (master,127.0.0.1,root,,test,$MASTER_MYPORT);
+--echo connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
+connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT);
+--echo connection master;
+connection master;
+reset master;
+source include/show_master_status.inc;
+save_master_pos;
+--echo connection slave;
+connection slave;
+reset slave;
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='$IPv6';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='127.0.0.1';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+eval change master to master_host='0:0:0:0:0:0:0:1';
+let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
+--echo Master-Host: $master_host
+--echo disconnect slave;
+disconnect slave;
+--echo disconnect master;
+disconnect master;
+--echo connection default;
+connection default;
+--exit
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..60bccaad0d3 100644
--- a/mysql-test/suite/rpl/t/rpl_known_bugs_detection.test
+++ b/mysql-test/suite/rpl/t/rpl_known_bugs_detection.test
@@ -34,12 +34,14 @@ SELECT * FROM t1;
# restart replication for the next testcase
stop slave;
+--source include/wait_for_slave_to_stop.inc
reset slave;
connection master;
reset master;
drop table t1;
connection slave;
start slave;
+--source include/wait_for_slave_to_start.inc
# testcase with INSERT SELECT
connection master;
diff --git a/mysql-test/suite/rpl/t/rpl_load_from_master.test b/mysql-test/suite/rpl/t/rpl_load_from_master.test
deleted file mode 100644
index 0f085457817..00000000000
--- a/mysql-test/suite/rpl/t/rpl_load_from_master.test
+++ /dev/null
@@ -1,181 +0,0 @@
-# This one assumes we are ignoring updates on tables in database mysqltest2,
-# but doing the ones in database mysqltest
-#################################################################
-# Change Author: JBM
-# Change Date: 2006-02-02
-# Change: Added ENGINE=MyISAM
-# Reason: LOAD from master is only supported by MyISAM
-#################################################################
-
-source include/master-slave.inc;
---disable_warnings
-drop database if exists mysqltest;
-drop database if exists mysqltest2;
-drop database if exists mysqltest3;
-connection slave;
-drop database if exists mysqltest;
-drop database if exists mysqltest2;
-drop database if exists mysqltest3;
-connection master;
-create database mysqltest2;
-create database mysqltest;
---enable_warnings
-
-save_master_pos;
-connection slave;
-sync_with_master;
-create database mysqltest2;
-create table mysqltest2.foo (n int)ENGINE=MyISAM;
-insert into mysqltest2.foo values(4);
-connection master;
-create table mysqltest2.foo (n int)ENGINE=MyISAM;
-insert into mysqltest2.foo values(5);
-create table mysqltest.bar (m int)ENGINE=MyISAM;
-insert into mysqltest.bar values(15);
-save_master_pos;
-connection slave;
-sync_with_master;
-select mysqltest2.foo.n,mysqltest.bar.m from mysqltest2.foo,mysqltest.bar;
-connection master;
-drop database mysqltest;
-drop database if exists mysqltest2;
-save_master_pos;
-connection slave;
-sync_with_master;
---error 1008
-drop database mysqltest;
-drop database mysqltest2;
-
-# Now let's test load data from master
-
-# First create some databases and tables on the master
-
-connection master;
-set sql_log_bin = 0;
-create database mysqltest2;
-create database mysqltest;
-show databases like 'mysql%';
-create table mysqltest2.t1(n int, s char(20))ENGINE=MyISAM;
-create table mysqltest2.t2(n int, s text)ENGINE=MyISAM;
-insert into mysqltest2.t1 values (1, 'one'), (2, 'two'), (3, 'three');
-insert into mysqltest2.t2 values (11, 'eleven'), (12, 'twelve'), (13, 'thirteen');
-
-create table mysqltest.t1(n int, s char(20))ENGINE=MyISAM;
-create table mysqltest.t2(n int, s text)ENGINE=MyISAM;
-insert into mysqltest.t1 values (1, 'one test'), (2, 'two test'), (3, 'three test');
-insert into mysqltest.t2 values (11, 'eleven test'), (12, 'twelve test'),
- (13, 'thirteen test');
-set sql_log_bin = 1;
-save_master_pos;
-connection slave;
-sync_with_master;
-
-# This should show that the slave is empty at this point
-show databases like 'mysql%';
-# Create mysqltest2 and mysqltest3 on slave; we expect that LOAD DATA FROM
-# MASTER will neither touch database mysqltest nor mysqltest3
-create database mysqltest2;
-create table mysqltest2.t1(n int, s char(20))ENGINE=MyISAM;
-insert into mysqltest2.t1 values (1, 'original foo.t1');
-create table mysqltest2.t3(n int, s char(20))ENGINE=MyISAM;
-insert into mysqltest2.t3 values (1, 'original foo.t3');
-create database mysqltest3;
-create table mysqltest3.t1(n int, s char(20))ENGINE=MyISAM;
-insert into mysqltest3.t1 values (1, 'original foo2.t1');
-
-# Create mysqltest, and mysqltest.t1, to check that it gets replaced,
-# and mysqltest.t3 to check that it is not touched (there is no
-# mysqltest.t3 on master)
-create database mysqltest;
-create table mysqltest.t1(n int, s char(20))ENGINE=MyISAM;
-insert into mysqltest.t1 values (1, 'original bar.t1');
-create table mysqltest.t3(n int, s char(20))ENGINE=MyISAM;
-insert into mysqltest.t3 values (1, 'original bar.t3');
-
-load data from master;
-
-# Now let's check if we have the right tables and the right data in them
-show databases like 'mysql%';
-use mysqltest2;
-
-# LOAD DATA FROM MASTER uses only replicate_*_db rules to decide which
-# databases have to be copied. So it thinks "mysqltest" has to be
-# copied. Before 4.0.16 it would first drop "mysqltest", then create
-# "mysqltest". This "drop" is a bug; in that case t3 would disappear. So
-# here the effect of this bug (BUG#1248) would be to leave an empty
-# "mysqltest" on the slave.
-
-show tables; # should be t1 & t3
-select * from t1; # should be slave's original
-use mysqltest3;
-show tables; # should be t1
-select * from t1; # should be slave's original
-use mysqltest;
-show tables; # should contain master's copied t1&t2, slave's original t3
-select * from mysqltest.t1;
-select * from mysqltest.t2;
-select * from mysqltest.t3;
-
-# Now let's see if replication works
-connection master;
-insert into mysqltest.t1 values (4, 'four test');
-save_master_pos;
-connection slave;
-sync_with_master;
-select * from mysqltest.t1;
-
-# Check that LOAD DATA FROM MASTER is able to create master.info
-# if needed (if RESET SLAVE was used before), before writing to it (BUG#2922).
-
-stop slave;
-reset slave;
-load data from master;
-start slave;
-# see if replication coordinates were restored fine
-connection master;
-insert into mysqltest.t1 values (5, 'five bar');
-save_master_pos;
-connection slave;
-sync_with_master;
-select * from mysqltest.t1;
-
-# Check that LOAD DATA FROM MASTER reports the error if it can't drop a
-# table to be overwritten.
-# DISABLED FOR NOW AS chmod IS NOT PORTABLE ON NON-UNIX
-# insert into mysqltest.t1 values(10, 'should be there');
-# flush tables;
-let $MYSQLD_SLAVE_DATADIR= `select @@datadir`;
-# system chmod 500 $MYSQLD_SLAVE_DATADIR/mysqltest/;
-# --error 6
-# load data from master; # should fail (errno 13)
-# system chmod 700 $MYSQLD_SLAVE_DATADIR/mysqltest/;
-# select * from mysqltest.t1; # should contain the row (10, ...)
-
-
-# Check that LOAD TABLE FROM MASTER fails if the table exists on slave
---error 1050
-load table mysqltest.t1 from master;
-drop table mysqltest.t1;
-load table mysqltest.t1 from master;
-
-# Check what happens when requestion not existing table
-#
---error 1188
-load table bar.t1 from master;
-
-# as LOAD DATA FROM MASTER failed it did not restart slave threads
-# DISABLED FOR NOW
-# start slave;
-
-# Now time for cleanup
-connection master;
-drop database mysqltest;
-drop database mysqltest2;
-save_master_pos;
-connection slave;
-sync_with_master;
-# These have to be dropped on slave because they are not replicated
-drop database mysqltest2;
-drop database mysqltest3;
-
-# End of 4.1 tests
diff --git a/mysql-test/suite/rpl/t/rpl_load_table_from_master.test b/mysql-test/suite/rpl/t/rpl_load_table_from_master.test
deleted file mode 100644
index aad113878d3..00000000000
--- a/mysql-test/suite/rpl/t/rpl_load_table_from_master.test
+++ /dev/null
@@ -1,98 +0,0 @@
-###########################################################
-# Change Author: JBM
-# Change Date: 2006-2-2
-# Change: Added ENGINE=$engine_type for first create table
-# Reason: Only MyISAM supports load from master no need to
-# run test case for other engines, in addition test will
-# fail if other engines are set as default engine
-###########################################################
-# Change Author: JBM
-# Change Date: 2006-2-3
-# Change: removed ENGINE=$engine_type for first create table
-# and renamed test file to rpl_load_table_from_master.test.
-# In addition added test requirements.
-# Reason: Request from review.
-############################################################
-# REQUIREMENT TEST 1:
-# LOAD TABLE FROM MASTER must work with a forced timestamp.
-############################################################
-#
-# Test forced timestamp
-#
--- source include/master-slave.inc
-
--- echo "******************** Test Requirment 1 *************"
-
-# Don't log table creating to the slave as we want to test LOAD TABLE
-SET SQL_LOG_BIN=0,timestamp=200006;
-eval CREATE TABLE t1(t TIMESTAMP NOT NULL,a CHAR(1))ENGINE=MyISAM;
-INSERT INTO t1 ( a) VALUE ('F');
-select unix_timestamp(t) from t1;
-connection slave;
-load table t1 from master;
-select unix_timestamp(t) from t1;
-
-# Delete the created table on master and slave
-connection master;
-set SQL_LOG_BIN=1,timestamp=default;
-drop table t1;
-save_master_pos;
-connection slave;
-sync_with_master;
-connection master;
-
-#
-# Test copying table with checksum
-#
-
-# Don't log table creating to the slave as we want to test LOAD TABLE
-set SQL_LOG_BIN=0;
-
-#######################################################
-# REQUIREMENTi TEST 2:
-#LOAD TABLE FROM MASTER must work with table checksum
-#######################################################
--- echo "******************** Test Requirment 2 *************"
-
-eval CREATE TABLE t1 (a INT NOT NULL) ENGINE=MyISAM MAX_ROWS=4000 CHECKSUM=1;
-INSERT INTO t1 VALUES (1);
-save_master_pos;
-connection slave;
-sync_with_master;
-load table t1 from master;
-check table t1;
-drop table t1;
-connection master;
-drop table t1;
-save_master_pos;
-connection slave;
-sync_with_master;
-
-connection master;
-set SQL_LOG_BIN=0;
-create table t1 (word char(20) not null, index(word))ENGINE=MyISAM;
-load data infile '../../std_data/words.dat' into table t1;
-create table t2 (word char(20) not null)ENGINE=MyISAM;
-load data infile '../../std_data/words.dat' into table t2;
-create table t3 (word char(20) not null primary key)ENGINE=MyISAM;
-connection slave;
-load table t1 from master;
-load table t2 from master;
-load table t3 from master;
-check table t1;
-select count(*) from t2;
-select count(*) from t3;
-connection master;
-set SQL_LOG_BIN=1;
-drop table if exists t1,t2,t3;
-save_master_pos;
-connection slave;
-sync_with_master;
-create table t1(n int);
-drop table t1;
-
-
-
-
-
-# End of 4.1 tests
diff --git a/mysql-test/suite/rpl/t/rpl_loaddata.test b/mysql-test/suite/rpl/t/rpl_loaddata.test
index 6f9ee4ef80a..c47b84144ff 100644
--- a/mysql-test/suite/rpl/t/rpl_loaddata.test
+++ b/mysql-test/suite/rpl/t/rpl_loaddata.test
@@ -3,5 +3,7 @@
# Added to skip if ndb is default #
########################################################
-- source include/not_ndb_default.inc
+-- source include/have_binlog_format_mixed_or_statement.inc
+
let $engine_type=MyISAM;
-- source extra/rpl_tests/rpl_loaddata.test
diff --git a/mysql-test/suite/rpl/t/rpl_loaddata_charset.test b/mysql-test/suite/rpl/t/rpl_loaddata_charset.test
index 031a0f6c351..3e1bc917a41 100644
--- a/mysql-test/suite/rpl/t/rpl_loaddata_charset.test
+++ b/mysql-test/suite/rpl/t/rpl_loaddata_charset.test
@@ -23,9 +23,7 @@ load data infile '../../std_data/loaddata6.dat' into table t1 character set koi8
select hex(a) from t1;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
select hex(a) 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..d1baaacb672 100644
--- a/mysql-test/suite/rpl/t/rpl_loaddata_fatal.test
+++ b/mysql-test/suite/rpl/t/rpl_loaddata_fatal.test
@@ -8,7 +8,7 @@ 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;
+source include/show_slave_status2.inc;
# Now we feed it a load data infile, which should make it stop with a
# fatal error.
@@ -17,7 +17,7 @@ LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE t1;
connection slave;
wait_for_slave_to_stop;
-source include/show_slave_status.inc;
+source include/show_slave_status2.inc;
connection slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
diff --git a/mysql-test/suite/rpl/t/rpl_loaddata_m.test b/mysql-test/suite/rpl/t/rpl_loaddata_m.test
index 42c3ad99f33..48451c4aee1 100644
--- a/mysql-test/suite/rpl/t/rpl_loaddata_m.test
+++ b/mysql-test/suite/rpl/t/rpl_loaddata_m.test
@@ -28,9 +28,7 @@ LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE mysqltest.t1;
SELECT COUNT(*) FROM mysqltest.t1;
# Now lets check the slave to see what we have :-)
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
SHOW DATABASES;
diff --git a/mysql-test/suite/rpl/t/rpl_loaddata_s.test b/mysql-test/suite/rpl/t/rpl_loaddata_s.test
index 2dd2218eb5c..91ebcf058a6 100644
--- a/mysql-test/suite/rpl/t/rpl_loaddata_s.test
+++ b/mysql-test/suite/rpl/t/rpl_loaddata_s.test
@@ -16,9 +16,7 @@ load data infile '../../std_data/rpl_loaddata.dat' into table test.t1;
# Test logging on slave;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
select count(*) from test.t1; # check that LOAD was replicated
source include/show_binlog_events.inc;
diff --git a/mysql-test/suite/rpl/t/rpl_loaddatalocal.test b/mysql-test/suite/rpl/t/rpl_loaddatalocal.test
index a93a82d6d9f..ed556f3aedf 100644
--- a/mysql-test/suite/rpl/t/rpl_loaddatalocal.test
+++ b/mysql-test/suite/rpl/t/rpl_loaddatalocal.test
@@ -27,15 +27,11 @@ truncate table t1;
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
eval load data local infile '$MYSQLD_DATADIR/rpl_loaddatalocal.select_outfile' into table t1;
--remove_file $MYSQLD_DATADIR/rpl_loaddatalocal.select_outfile
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
select a,count(*) from t1 group by a;
connection master;
drop table t1;
-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_log_pos.test b/mysql-test/suite/rpl/t/rpl_log_pos.test
index 48effa00b64..cc3f5d41a09 100644
--- a/mysql-test/suite/rpl/t/rpl_log_pos.test
+++ b/mysql-test/suite/rpl/t/rpl_log_pos.test
@@ -23,7 +23,7 @@ source include/wait_for_slave_sql_to_start.inc;
source include/wait_for_slave_io_to_stop.inc;
source include/stop_slave.inc;
-source include/show_slave_status.inc;
+source include/show_slave_status2.inc;
connection master;
source include/show_master_status.inc;
create table if not exists t1 (n int);
diff --git a/mysql-test/suite/rpl/t/rpl_master_pos_wait.test b/mysql-test/suite/rpl/t/rpl_master_pos_wait.test
index 2f7b18ae04b..ea107a28954 100644
--- a/mysql-test/suite/rpl/t/rpl_master_pos_wait.test
+++ b/mysql-test/suite/rpl/t/rpl_master_pos_wait.test
@@ -1,9 +1,7 @@
# See if master_pos_wait(,,timeout)
# Terminates with "timeout expired" (-1)
source include/master-slave.inc;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
# Ask for a master log that has certainly not been reached yet
# timeout= 2 seconds
select master_pos_wait('master-bin.999999',0,2);
diff --git a/mysql-test/suite/rpl/t/rpl_misc_functions-slave.sh b/mysql-test/suite/rpl/t/rpl_misc_functions-slave.sh
index 8ce79797822..8ce79797822 100755..100644
--- a/mysql-test/suite/rpl/t/rpl_misc_functions-slave.sh
+++ b/mysql-test/suite/rpl/t/rpl_misc_functions-slave.sh
diff --git a/mysql-test/suite/rpl/t/rpl_found_rows.test b/mysql-test/suite/rpl/t/rpl_mix_found_rows.test
index ff8d2c3107a..9b8346ef21b 100644
--- a/mysql-test/suite/rpl/t/rpl_found_rows.test
+++ b/mysql-test/suite/rpl/t/rpl_mix_found_rows.test
@@ -1,16 +1,15 @@
source include/master-slave.inc;
+source include/have_binlog_format_mixed.inc;
# It is not possible to replicate FOUND_ROWS() using statement-based
# replication, but there is a workaround that stores the result of
# FOUND_ROWS() into a user variable and then replicates this instead.
+#
+# The purpose of this test case is to test that the workaround works
+# properly even when inside stored programs (i.e., stored routines and
+# triggers).
-# The purpose of this test case is to test that the workaround
-# function properly even when inside stored programs (i.e., stored
-# routines and triggers).
-
---echo ==== 0. Setting it all up ====
-
-SET BINLOG_FORMAT=STATEMENT;
+--echo ==== Initialize ====
--echo **** On Master ****
connection master;
@@ -25,106 +24,10 @@ INSERT INTO t1 SELECT 2*a+3 FROM t1;
INSERT INTO t1 SELECT 2*a+3 FROM t1;
INSERT INTO t1 SELECT 2*a+3 FROM t1;
---echo #### 1. Using statement mode ####
-
---echo ==== 1.1. Simple test ====
-
-SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
-
-# Instead of
-# INSERT INTO logtbl VALUES(1, 1, FOUND_ROWS());
-# we write
-SELECT FOUND_ROWS() INTO @a;
-INSERT INTO logtbl VALUES(1,1,@a);
-
-SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a < 5 ORDER BY a LIMIT 1;
-# Instead of
-# INSERT INTO logtbl VALUES(1, 2, FOUND_ROWS());
-# we write
-SELECT FOUND_ROWS() INTO @a;
-INSERT INTO logtbl VALUES(1,2,@a);
-
-SELECT * FROM logtbl WHERE sect = 1 ORDER BY sect,test;
---echo **** On Slave ****
-sync_slave_with_master;
-SELECT * FROM logtbl WHERE sect = 1 ORDER BY sect,test;
-
---echo ==== 1.2. Stored procedure ====
-
-# Here we do both the calculation and the logging. We also do it twice
-# to make sure that there are no limitations on how many times it can
-# be used.
-
---echo **** On Master ****
-connection master;
---delimiter $$
-CREATE PROCEDURE calc_and_log(sect INT, test INT) BEGIN
- DECLARE cnt INT;
- SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a < 5 ORDER BY a LIMIT 1;
- SELECT FOUND_ROWS() INTO cnt;
- INSERT INTO logtbl VALUES(sect,test,cnt);
- SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
- SELECT FOUND_ROWS() INTO cnt;
- INSERT INTO logtbl VALUES(sect,test+1,cnt);
-END $$
---delimiter ;
-
-CALL calc_and_log(2,1);
-
---delimiter $$
-CREATE PROCEDURE just_log(sect INT, test INT, found_rows INT) BEGIN
- INSERT INTO logtbl VALUES (sect,test,found_rows);
-END $$
---delimiter ;
-
-SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
-SELECT FOUND_ROWS() INTO @found_rows;
-CALL just_log(2,3,@found_rows);
-
-SELECT * FROM logtbl WHERE sect = 2 ORDER BY sect,test;
---echo **** On Slave ****
-sync_slave_with_master;
-SELECT * FROM logtbl WHERE sect = 2 ORDER BY sect,test;
-
---echo ==== 1.3. Stored functions ====
---echo **** On Master ****
-connection master;
---delimiter $$
-CREATE FUNCTION log_rows(sect INT, test INT, found_rows INT)
- RETURNS INT
-BEGIN
- INSERT INTO logtbl VALUES(sect,test,found_rows);
- RETURN found_rows;
-END $$
---delimiter ;
-
-SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
-SELECT FOUND_ROWS() INTO @found_rows;
-SELECT log_rows(3,1,@found_rows), log_rows(3,2,@found_rows);
-
-SELECT * FROM logtbl WHERE sect = 3 ORDER BY sect,test;
---echo **** On Slave ****
-sync_slave_with_master;
-SELECT * FROM logtbl WHERE sect = 3 ORDER BY sect,test;
-
---echo ==== 1.9. Cleanup ====
---echo **** On Master ****
-connection master;
-DELETE FROM logtbl;
-DROP PROCEDURE just_log;
-DROP PROCEDURE calc_and_log;
-DROP FUNCTION log_rows;
-sync_slave_with_master;
-
-source include/reset_master_and_slave.inc;
-
---echo #### 2. Using mixed mode ####
-
---echo ==== 2.1. Checking a procedure ====
+--echo ==== Checking a procedure ====
--echo **** On Master ****
connection master;
-SET BINLOG_FORMAT=MIXED;
# We will now check some stuff that will not work in statement-based
# replication, but which should cause the binary log to switch to
@@ -139,7 +42,6 @@ sync_slave_with_master;
--echo **** On Master 1 ****
connection master1;
-SET BINLOG_FORMAT=MIXED;
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
CALL just_log(1,1);
@@ -167,7 +69,7 @@ SELECT * FROM logtbl WHERE sect = 1 ORDER BY sect,test;
sync_slave_with_master;
SELECT * FROM logtbl WHERE sect = 1 ORDER BY sect,test;
---echo ==== 2.1. Checking a stored function ====
+--echo ==== Checking a stored function ====
--echo **** On Master ****
connection master;
--delimiter $$
diff --git a/mysql-test/suite/rpl/t/rpl_mix_insert_delayed.test b/mysql-test/suite/rpl/t/rpl_mix_insert_delayed.test
new file mode 100644
index 00000000000..2c44829a649
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_mix_insert_delayed.test
@@ -0,0 +1,5 @@
+--source include/have_binlog_format_mixed.inc
+--source include/master-slave.inc
+--source include/not_embedded.inc
+--source include/not_windows.inc
+--source extra/rpl_tests/rpl_insert_delayed.test
diff --git a/mysql-test/suite/rpl/t/rpl_binlog_max_cache_size-master.opt b/mysql-test/suite/rpl/t/rpl_mixed_binlog_max_cache_size-master.opt
index 45631525481..45631525481 100644
--- a/mysql-test/suite/rpl/t/rpl_binlog_max_cache_size-master.opt
+++ b/mysql-test/suite/rpl/t/rpl_mixed_binlog_max_cache_size-master.opt
diff --git a/mysql-test/suite/rpl/t/rpl_mixed_binlog_max_cache_size.test b/mysql-test/suite/rpl/t/rpl_mixed_binlog_max_cache_size.test
new file mode 100644
index 00000000000..1d407f87dfa
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_mixed_binlog_max_cache_size.test
@@ -0,0 +1,7 @@
+--source include/have_innodb.inc
+--source include/master-slave.inc
+--source include/not_embedded.inc
+--source include/not_windows.inc
+--source include/have_binlog_format_mixed.inc
+
+--source extra/rpl_tests/rpl_binlog_max_cache_size.test
diff --git a/mysql-test/suite/rpl/t/rpl_mixed_bit_pk.test b/mysql-test/suite/rpl/t/rpl_mixed_bit_pk.test
index 55f6ad61446..9e9547f652d 100644
--- a/mysql-test/suite/rpl/t/rpl_mixed_bit_pk.test
+++ b/mysql-test/suite/rpl/t/rpl_mixed_bit_pk.test
@@ -30,6 +30,10 @@
--source include/master-slave.inc
+disable_query_log;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+enable_query_log;
+
--disable_warnings
# setup
diff --git a/mysql-test/suite/rpl/t/rpl_mixed_ddl_dml.test b/mysql-test/suite/rpl/t/rpl_mixed_ddl_dml.test
index 6a1f81abed3..85335d47c3a 100644
--- a/mysql-test/suite/rpl/t/rpl_mixed_ddl_dml.test
+++ b/mysql-test/suite/rpl/t/rpl_mixed_ddl_dml.test
@@ -18,6 +18,7 @@ show slave hosts;
drop table t1;
sync_slave_with_master;
stop slave;
+--source include/wait_for_slave_to_stop.inc
connection master;
# Test replication of timestamp
@@ -35,6 +36,7 @@ create table t5 select * from t4;
save_master_pos;
connection slave;
start slave;
+--source include/wait_for_slave_to_start.inc
sync_with_master;
select * from t2;
show create table t3;
diff --git a/mysql-test/suite/rpl/t/rpl_mixed_implicit_commit_binlog.test b/mysql-test/suite/rpl/t/rpl_mixed_implicit_commit_binlog.test
new file mode 100644
index 00000000000..6e1d3286f07
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_mixed_implicit_commit_binlog.test
@@ -0,0 +1,9 @@
+################################################################################
+# Check file extra/rpl_tests/rpl_implicit_commit_binlog.test
+################################################################################
+--source include/have_binlog_format_mixed.inc
+--source include/master-slave.inc
+--source include/have_innodb.inc
+
+--let $engine=Innodb
+--source extra/rpl_tests/rpl_implicit_commit_binlog.test
diff --git a/mysql-test/suite/rpl/t/rpl_mixed_mixing_engines.test b/mysql-test/suite/rpl/t/rpl_mixed_mixing_engines.test
new file mode 100644
index 00000000000..8bb5b61210b
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_mixed_mixing_engines.test
@@ -0,0 +1,10 @@
+###################################################################################
+# This test cases evaluates the mixture of non-transactional and transcational
+# tables. For further details, please, read WL#2687 and WL#5072.
+###################################################################################
+--source include/have_binlog_format_mixed.inc
+--source include/master-slave.inc
+--source include/have_innodb.inc
+
+let $engine_type=Innodb;
+--source extra/rpl_tests/rpl_mixing_engines.test
diff --git a/mysql-test/suite/rpl/t/rpl_mixed_row_innodb.test b/mysql-test/suite/rpl/t/rpl_mixed_row_innodb.test
new file mode 100644
index 00000000000..3f7ee971347
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_mixed_row_innodb.test
@@ -0,0 +1,8 @@
+# File for specialities regarding replication from or to InnoDB
+# tables.
+
+source include/master-slave.inc;
+source include/have_innodb.inc;
+source include/have_binlog_format_mixed_or_row.inc;
+
+source extra/rpl_tests/rpl_innodb.test;
diff --git a/mysql-test/suite/rpl/t/rpl_multi_delete.test b/mysql-test/suite/rpl/t/rpl_multi_delete.test
index a251cbf8833..568a8a578a9 100644
--- a/mysql-test/suite/rpl/t/rpl_multi_delete.test
+++ b/mysql-test/suite/rpl/t/rpl_multi_delete.test
@@ -19,8 +19,6 @@ select * from t2;
connection master;
drop table t1,t2;
-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_multi_delete2.test b/mysql-test/suite/rpl/t/rpl_multi_delete2.test
index 81379d4056b..c3f939276e0 100644
--- a/mysql-test/suite/rpl/t/rpl_multi_delete2.test
+++ b/mysql-test/suite/rpl/t/rpl_multi_delete2.test
@@ -25,13 +25,11 @@ INSERT INTO a VALUES(1);
DELETE alias FROM a alias WHERE alias.i=1;
SELECT * FROM a;
insert into a values(2),(3);
-delete a alias FROM a alias where alias.i=2;
+delete alias FROM a alias where alias.i=2;
select * from a;
-save_master_pos;
-connection slave;
+sync_slave_with_master;
use mysqltest_to;
-sync_with_master;
select * from a;
# BUG#3461
diff --git a/mysql-test/suite/rpl/t/rpl_mysql_upgrade.test b/mysql-test/suite/rpl/t/rpl_mysql_upgrade.test
index bf5c6d2b921..273d8f692a2 100644
--- a/mysql-test/suite/rpl/t/rpl_mysql_upgrade.test
+++ b/mysql-test/suite/rpl/t/rpl_mysql_upgrade.test
@@ -10,6 +10,8 @@
# Only run test if "mysql_upgrade" is found
--source include/have_mysql_upgrade.inc
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
connection master;
--disable_warnings
DROP DATABASE IF EXISTS `#mysql50#mysqltest-1`;
diff --git a/mysql-test/suite/rpl/t/rpl_optimize.test b/mysql-test/suite/rpl/t/rpl_optimize.test
index 87eb9dce818..cca135b8ce0 100644
--- a/mysql-test/suite/rpl/t/rpl_optimize.test
+++ b/mysql-test/suite/rpl/t/rpl_optimize.test
@@ -13,7 +13,10 @@
-- source include/not_ndb_default.inc
-- source include/master-slave.inc
+disable_query_log;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
CALL mtr.add_suppression('Statement may not be safe to log in statement format.');
+enable_query_log;
create table t1 (a int not null auto_increment primary key, b int, key(b));
INSERT INTO t1 (a) VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
@@ -49,8 +52,7 @@ sync_with_master; # won't work if slave SQL thread stopped
connection master; # cleanup
drop table t1;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
# If the machine is so fast that slave syncs before OPTIMIZE
# starts, this test wil demonstrate nothing but will pass.
diff --git a/mysql-test/suite/rpl/t/rpl_packet.test b/mysql-test/suite/rpl/t/rpl_packet.test
index bfc144c759b..61a1ad9d987 100644
--- a/mysql-test/suite/rpl/t/rpl_packet.test
+++ b/mysql-test/suite/rpl/t/rpl_packet.test
@@ -38,20 +38,15 @@ select @@net_buffer_length, @@max_allowed_packet;
create table `t1` (`f1` LONGTEXT) ENGINE=MyISAM;
INSERT INTO `t1`(`f1`) VALUES ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1023');
-save_master_pos;
+sync_slave_with_master;
-connection slave;
-sync_with_master;
eval select count(*) from `$db`.`t1` /* must be 1 */;
SHOW STATUS LIKE 'Slave_running';
select * from information_schema.session_status where variable_name= 'SLAVE_RUNNING';
connection master;
eval drop database $db;
-save_master_pos;
-
-connection slave;
-sync_with_master;
+sync_slave_with_master;
#
# Bug #23755: Replicated event larger that max_allowed_packet infinitely re-transmits
diff --git a/mysql-test/suite/rpl/t/rpl_ps.test b/mysql-test/suite/rpl/t/rpl_ps.test
index b00dec6b80c..143f75e5477 100644
--- a/mysql-test/suite/rpl/t/rpl_ps.test
+++ b/mysql-test/suite/rpl/t/rpl_ps.test
@@ -6,9 +6,7 @@
###########################################################
source include/master-slave.inc;
-#save_master_pos;
-#connection slave;
-#sync_with_master;
+#sync_slave_with_master;
#reset master;
#connection master;
@@ -30,20 +28,16 @@ prepare stmt2 from @var2;
set @var1='from-master-3';
execute stmt2 using @var1;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
SELECT * FROM t1 ORDER BY n;
connection master;
drop table t1;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
stop slave;
-
+source include/wait_for_slave_to_stop.inc;
# End of 4.1 tests
#
@@ -102,13 +96,12 @@ use mysqltest1;
EXECUTE stmt_d_1;
--echo
---save_master_pos
+--sync_slave_with_master
+
--echo
--echo # Connection: slave
--echo
---connection slave
---sync_with_master
--echo
SELECT * FROM t1;
@@ -125,13 +118,12 @@ DROP DATABASE mysqltest1;
use test;
DROP TABLE t1;
--echo
---save_master_pos
+--sync_slave_with_master
+
--echo
--echo # Connection: slave
--echo
---connection slave
---sync_with_master
--echo
STOP SLAVE;
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..6a9a30fcb0e 100644
--- a/mysql-test/suite/rpl/t/rpl_rbr_to_sbr.test
+++ b/mysql-test/suite/rpl/t/rpl_rbr_to_sbr.test
@@ -1,15 +1,9 @@
--- source include/have_binlog_format_mixed_or_statement.inc
+-- source include/have_binlog_format_mixed.inc
-- source include/not_ndb_default.inc
-- source include/master-slave.inc
-# Test that the slave temporarily switches to ROW when seeing binrow
-# events when it is in STATEMENT or MIXED mode
-
-SET @old_binlog_format= @@global.binlog_format;
-
-SET BINLOG_FORMAT=MIXED;
-SET GLOBAL BINLOG_FORMAT=MIXED;
-SELECT @@GLOBAL.BINLOG_FORMAT, @@SESSION.BINLOG_FORMAT;
+# Test that the slave temporarily switches to ROW when seeing row
+# events when it is in MIXED mode
--echo **** On Master ****
CREATE TABLE t1 (a INT, b LONG);
@@ -23,7 +17,7 @@ SHOW BINLOG EVENTS;
sync_slave_with_master;
--echo **** On Slave ****
--replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 8 # 9 # 23 # 33 # 34 # 35 #
+--replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 34 # 35 #
--query_vertical SHOW SLAVE STATUS
--replace_result $VERSION VERSION
--replace_column 2 # 5 #
@@ -35,7 +29,6 @@ SHOW BINLOG EVENTS;
connection master;
DROP TABLE IF EXISTS t1;
-SET @@global.binlog_format= @old_binlog_format;
# Let's compare. Note: If they match test will pass, if they do not match
# the test will show that the diff statement failed and not reject file
diff --git a/mysql-test/suite/rpl/t/rpl_read_only.test b/mysql-test/suite/rpl/t/rpl_read_only.test
index 62864b62a28..cfc340ab9fe 100644
--- a/mysql-test/suite/rpl/t/rpl_read_only.test
+++ b/mysql-test/suite/rpl/t/rpl_read_only.test
@@ -2,6 +2,8 @@
-- source include/master-slave.inc
-- source include/have_innodb.inc
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
# Create a test and replicate it to slave
connection master;
create user test;
@@ -40,12 +42,16 @@ set global read_only=0;
connection master1;
BEGIN;
insert into t1 values(1002);
+--disable_warnings
insert into t2 values(2002);
+--enable_warnings
connection master2;
BEGIN;
insert into t1 values(1003);
+--disable_warnings
insert into t2 values(2003);
+--enable_warnings
connection master;
set global read_only=1;
diff --git a/mysql-test/suite/rpl/t/rpl_relayspace.test b/mysql-test/suite/rpl/t/rpl_relayspace.test
index 0fc564cdb46..45b46674c05 100644
--- a/mysql-test/suite/rpl/t/rpl_relayspace.test
+++ b/mysql-test/suite/rpl/t/rpl_relayspace.test
@@ -4,6 +4,7 @@
source include/master-slave.inc;
connection slave;
stop slave;
+--source include/wait_for_slave_to_stop.inc
connection master;
# This will generate a master's binlog > 10 bytes
create table t1 (a int);
diff --git a/mysql-test/suite/rpl/t/rpl_replicate_do.test b/mysql-test/suite/rpl/t/rpl_replicate_do.test
index fea168ee9f1..3e22984aef8 100644
--- a/mysql-test/suite/rpl/t/rpl_replicate_do.test
+++ b/mysql-test/suite/rpl/t/rpl_replicate_do.test
@@ -18,18 +18,14 @@ insert into t1 values(15),(16),(17);
update t1 set m=20 where m=16;
delete from t1 where m=17;
create table t11 select * from t1;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
select * from t1 ORDER BY m;
select * from t2;
--error 1146
select * from t11;
connection master;
drop table if exists t1,t2,t11;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_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 #
diff --git a/mysql-test/suite/rpl/t/rpl_rotate_logs-slave.sh b/mysql-test/suite/rpl/t/rpl_rotate_logs-slave.sh
index 81490a54b4b..81490a54b4b 100755..100644
--- a/mysql-test/suite/rpl/t/rpl_rotate_logs-slave.sh
+++ b/mysql-test/suite/rpl/t/rpl_rotate_logs-slave.sh
diff --git a/mysql-test/suite/rpl/t/rpl_rotate_logs.test b/mysql-test/suite/rpl/t/rpl_rotate_logs.test
index e06099fd707..2490471018b 100644
--- a/mysql-test/suite/rpl/t/rpl_rotate_logs.test
+++ b/mysql-test/suite/rpl/t/rpl_rotate_logs.test
@@ -56,6 +56,7 @@ connection master;
reset master;
connection slave;
start slave;
+--source include/wait_for_slave_to_start.inc
connection master;
#
@@ -100,6 +101,7 @@ connection slave;
#restart slave skipping one event
set global sql_slave_skip_counter=1;
start slave;
+--source include/wait_for_slave_to_start.inc
connection master;
@@ -161,9 +163,7 @@ select count(*) from t3 where n >= 4;
create table t4 select * from temp_table;
source include/show_binary_logs.inc;
source include/show_master_status.inc;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
select * from t4;
source include/show_slave_status2.inc;
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 5904585a050..4a1e21f33bf 100644
--- a/mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test
+++ b/mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test
@@ -1,4 +1,5 @@
--source include/have_binlog_format_row.inc
+--source include/have_innodb.inc
let $SERVER_VERSION=`select version()`;
diff --git a/mysql-test/suite/rpl/t/rpl_row_basic_3innodb.test b/mysql-test/suite/rpl/t/rpl_row_basic_3innodb.test
index 3786a697e3f..41cf1cc622a 100644
--- a/mysql-test/suite/rpl/t/rpl_row_basic_3innodb.test
+++ b/mysql-test/suite/rpl/t/rpl_row_basic_3innodb.test
@@ -2,6 +2,8 @@
-- source include/have_binlog_format_row.inc
-- source include/master-slave.inc
+connection slave;
+let $bit_field_special = ALL_LOSSY;
let $type= 'INNODB' ;
let $extra_index= ;
-- source extra/rpl_tests/rpl_row_basic.test
diff --git a/mysql-test/suite/rpl/t/rpl_row_binlog_max_cache_size-master.opt b/mysql-test/suite/rpl/t/rpl_row_binlog_max_cache_size-master.opt
new file mode 100644
index 00000000000..45631525481
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_row_binlog_max_cache_size-master.opt
@@ -0,0 +1 @@
+--binlog_cache_size=4096 --max_binlog_cache_size=7680
diff --git a/mysql-test/suite/rpl/t/rpl_row_binlog_max_cache_size.test b/mysql-test/suite/rpl/t/rpl_row_binlog_max_cache_size.test
new file mode 100644
index 00000000000..5133c8b1b5e
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_row_binlog_max_cache_size.test
@@ -0,0 +1,7 @@
+--source include/have_innodb.inc
+--source include/master-slave.inc
+--source include/not_embedded.inc
+--source include/not_windows.inc
+--source include/have_binlog_format_row.inc
+
+--source extra/rpl_tests/rpl_binlog_max_cache_size.test
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 54dcbd24419..de5de130c58 100644
--- a/mysql-test/suite/rpl/t/rpl_row_create_table.test
+++ b/mysql-test/suite/rpl/t/rpl_row_create_table.test
@@ -25,8 +25,10 @@ sync_slave_with_master;
--disable_query_log
set @storage_engine = @@global.storage_engine;
STOP SLAVE;
+--source include/wait_for_slave_to_stop.inc
SET GLOBAL storage_engine=memory;
START SLAVE;
+--source include/wait_for_slave_to_start.inc
--enable_query_log
--source include/reset_master_and_slave.inc
@@ -38,7 +40,7 @@ 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
+--query_vertical SHOW BINLOG EVENTS FROM 107
--echo **** On Master ****
--query_vertical SHOW CREATE TABLE t1
--query_vertical SHOW CREATE TABLE t2
@@ -76,7 +78,7 @@ 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;
+SHOW BINLOG EVENTS FROM 107;
# Test that INSERT-SELECT works the same way as for SBR.
CREATE TABLE t7 (a INT, b INT UNIQUE);
@@ -86,7 +88,7 @@ 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;
+SHOW BINLOG EVENTS FROM 107;
sync_slave_with_master;
SELECT * FROM t7 ORDER BY a,b;
@@ -100,7 +102,7 @@ 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;
+SHOW BINLOG EVENTS FROM 107;
SELECT * FROM t7 ORDER BY a,b;
sync_slave_with_master;
SELECT * FROM t7 ORDER BY a,b;
@@ -118,7 +120,7 @@ CREATE TEMPORARY TABLE tt7 SELECT 1;
--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;
+SHOW BINLOG EVENTS FROM 107;
sync_slave_with_master;
--echo **** On Slave ****
--query_vertical SHOW CREATE TABLE t8
@@ -129,8 +131,10 @@ DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8,t9;
sync_slave_with_master;
# Here we reset the value of the default storage engine
STOP SLAVE;
+--source include/wait_for_slave_to_stop.inc
SET GLOBAL storage_engine=@storage_engine;
START SLAVE;
+--source include/wait_for_slave_to_start.inc
--enable_ps_protocol
# BUG#22864 (Rollback following CREATE ... SELECT discards 'CREATE
@@ -138,11 +142,13 @@ START SLAVE;
--echo ================ BUG#22864 ================
connection slave;
STOP SLAVE;
+--source include/wait_for_slave_to_stop.inc
RESET SLAVE;
connection master;
RESET MASTER;
connection slave;
START SLAVE;
+--source include/wait_for_slave_to_start.inc
connection master;
SET AUTOCOMMIT=0;
CREATE TABLE t1 (a INT);
@@ -170,7 +176,7 @@ 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;
+SHOW BINLOG EVENTS FROM 107;
sync_slave_with_master;
SHOW TABLES;
SELECT TABLE_NAME,ENGINE
@@ -190,6 +196,7 @@ sync_slave_with_master;
# Some tests with temporary tables
connection slave;
STOP SLAVE;
+--source include/wait_for_slave_to_stop.inc
RESET SLAVE;
connection master;
@@ -197,6 +204,7 @@ RESET MASTER;
connection slave;
START SLAVE;
+--source include/wait_for_slave_to_start.inc
connection master;
CREATE TABLE t1 (a INT);
@@ -216,7 +224,7 @@ 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;
+SHOW BINLOG EVENTS FROM 107;
sync_slave_with_master;
SELECT * FROM t2 ORDER BY a;
@@ -239,7 +247,7 @@ 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;
+SHOW BINLOG EVENTS FROM 107;
sync_slave_with_master;
SELECT * FROM t2 ORDER BY a;
diff --git a/mysql-test/suite/rpl/t/rpl_row_flsh_tbls.test b/mysql-test/suite/rpl/t/rpl_row_flsh_tbls.test
index 667e1d9a1a8..d2996bbe525 100644
--- a/mysql-test/suite/rpl/t/rpl_row_flsh_tbls.test
+++ b/mysql-test/suite/rpl/t/rpl_row_flsh_tbls.test
@@ -1,7 +1,7 @@
# depends on the binlog output
-- source include/have_binlog_format_row.inc
-let $rename_event_pos= 897;
+let $rename_event_pos= 898;
# Bug#18326: Do not lock table for writing during prepare of statement
# The use of the ps protocol causes extra table maps in the binlog, so
diff --git a/mysql-test/suite/rpl/t/rpl_row_idempotency.test b/mysql-test/suite/rpl/t/rpl_row_idempotency.test
new file mode 100644
index 00000000000..cd62280f1d4
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_row_idempotency.test
@@ -0,0 +1,331 @@
+# Testing various forms of idempotency for replication. This file is
+# for tests that should only be executed in row mode.
+
+source include/have_binlog_format_row.inc;
+source include/master-slave.inc;
+connection master;
+source include/have_innodb.inc;
+connection slave;
+source include/have_innodb.inc;
+
+# Add suppression for expected warning(s) in slaves error log
+call mtr.add_suppression("Slave: Can't find record in 't.' Error_code: 1032");
+call mtr.add_suppression("Slave: Cannot delete or update a parent row: a foreign key constraint fails .* Error_code: 1451");
+call mtr.add_suppression("Slave: Cannot add or update a child row: a foreign key constraint fails .* Error_code: 1452");
+
+
+# bug#31609 Not all RBR slave errors reported as errors
+# bug#31552 Replication breaks when deleting rows from out-of-sync table
+# without PK
+
+# The default for slave-exec-mode option and server
+# variable slave_exec_mode is 'STRICT'.
+# When 'STRICT' mode is set, the slave SQL thread will stop whenever
+# the row to change is not found. In 'IDEMPOTENT' mode, the SQL thread
+# will continue running and apply the row - replace if it's Write_rows event -
+# or skip to the next event.
+
+# the previous part of the tests was with IDEMPOTENT slave's mode.
+
+
+#
+# Other than above idempotent errors dealing with foreign keys constraint
+#
+connection slave;
+
+set @old_slave_exec_mode= @@global.slave_exec_mode;
+set @@global.slave_exec_mode= IDEMPOTENT;
+
+connection master;
+
+create table ti1 (b int primary key) engine = innodb;
+create table ti2 (a int primary key, b int, foreign key (b) references ti1(b))
+ engine = innodb;
+set foreign_key_checks=1 /* ensure the check */;
+
+insert into ti1 values (1),(2),(3);
+insert into ti2 set a=2, b=2;
+
+sync_slave_with_master;
+
+#connection slave;
+select * from ti1 order by b /* must be (1),(2),(3) */;
+insert into ti2 set a=1, b=1;
+select * from ti2 order by b /* must be (1,1) (2,2) */;
+
+connection master;
+
+# from now on checking rbr specific idempotent errors
+set @save_binlog_format= @@session.binlog_format;
+set @@session.binlog_format= row;
+delete from ti1 where b=1;
+
+select * from ti1 order by b /* must be (2),(3) */;
+
+# slave must catch up (expect some warnings in error.log)
+sync_slave_with_master;
+
+#connection slave;
+select * from ti1 order by b /* must stays as were on master (1),(2),(3) */;
+
+delete from ti1 where b=3;
+
+connection master;
+insert into ti2 set a=3, b=3;
+
+# slave must catch up (expect some warnings in error.log)
+sync_slave_with_master;
+
+#connection slave;
+select * from ti2 order by b /* must be (1,1),(2,2) - not inserted */;
+
+
+#
+# Checking the new global sys variable
+#
+
+connection slave;
+
+set global slave_exec_mode='IDEMPOTENT';
+set global slave_exec_mode='STRICT';
+
+# checking mutual exclusion for the options
+--error ER_WRONG_VALUE_FOR_VAR
+set global slave_exec_mode='IDEMPOTENT,STRICT';
+
+select @@global.slave_exec_mode /* must be STRICT */;
+
+#
+# Checking stops.
+# In the following sections strict slave sql thread is going to
+# stop when faces an idempotent error. In order to proceed
+# the mode is temporarily switched to indempotent.
+#
+
+#
+--echo *** foreign keys errors as above now forces to stop
+#
+
+connection master;
+
+set foreign_key_checks=0;
+drop table ti2, ti1;
+
+create table ti1 (b int primary key) engine = innodb;
+create table ti2 (a int primary key, b int, foreign key (b) references ti1(b))
+ engine = innodb;
+set foreign_key_checks=1 /* ensure the check */;
+
+insert into ti1 values (1),(2),(3);
+insert into ti2 set a=2, b=2;
+
+sync_slave_with_master;
+
+#connection slave;
+select * from ti1 order by b /* must be (1),(2),(3) */;
+--echo *** conspire future problem
+insert into ti2 set a=1, b=1;
+select * from ti2 order by b /* must be (1,1) (2,2) */;
+
+connection master;
+
+delete from ti1 where b=1 /* offending delete event */;
+select * from ti1 order by b /* must be (2),(3) */;
+
+# foreign key: row is referenced
+
+--echo *** slave must stop (Trying to delete a referenced foreing key)
+connection slave;
+source include/wait_for_slave_sql_to_stop.inc;
+
+let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1);
+disable_query_log;
+eval SELECT "$last_error" AS Last_SQL_Error;
+enable_query_log;
+
+select * from ti1 order by b /* must be (1),(2),(3) - not deleted */;
+set foreign_key_checks= 0;
+delete from ti2 where b=1;
+set foreign_key_checks= 1;
+set global slave_exec_mode='IDEMPOTENT';
+start slave sql_thread;
+connection master;
+sync_slave_with_master;
+#connection slave;
+set global slave_exec_mode='STRICT';
+
+connection master;
+
+sync_slave_with_master;
+
+#connection slave;
+--echo *** conspire the following insert failure
+# foreign key: no referenced row
+
+--echo *** conspire future problem
+delete from ti1 where b=3;
+
+connection master;
+insert into ti2 set a=3, b=3 /* offending write event */;
+
+--echo *** slave must stop (Trying to insert an invalid foreign key)
+connection slave;
+source include/wait_for_slave_sql_to_stop.inc;
+
+let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1);
+disable_query_log;
+eval SELECT "$last_error" AS Last_SQL_Error;
+enable_query_log;
+
+select * from ti2 order by b /* must be (2,2) */;
+set foreign_key_checks= 0;
+insert into ti1 set b=3;
+set foreign_key_checks= 1;
+set global slave_exec_mode='IDEMPOTENT';
+start slave sql_thread;
+connection master;
+sync_slave_with_master;
+#connection slave;
+set global slave_exec_mode='STRICT';
+
+connection master;
+
+sync_slave_with_master;
+
+select * from ti2 order by b /* must be (2,2),(3,3) */;
+
+#
+--echo *** other errors
+#
+
+# dup key insert
+
+#connection slave;
+--echo *** conspiring query
+insert into ti1 set b=1;
+
+connection master;
+insert into ti1 set b=1 /* offending write event */;
+
+--echo *** slave must stop (Trying to insert a dupliacte key)
+connection slave;
+source include/wait_for_slave_sql_to_stop.inc;
+
+let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1);
+disable_query_log;
+eval SELECT "$last_error" AS Last_SQL_Error;
+enable_query_log;
+
+set foreign_key_checks= 0;
+delete from ti1 where b=1;
+set foreign_key_checks= 1;
+set global slave_exec_mode='IDEMPOTENT';
+start slave sql_thread;
+connection master;
+sync_slave_with_master;
+#connection slave;
+set global slave_exec_mode='STRICT';
+
+# key not found
+
+connection master;
+
+CREATE TABLE t1 (a INT PRIMARY KEY);
+CREATE TABLE t2 (a INT);
+INSERT INTO t1 VALUES (-1),(-2),(-3);
+INSERT INTO t2 VALUES (-1),(-2),(-3);
+sync_slave_with_master;
+
+#connection slave;
+DELETE FROM t1 WHERE a = -2;
+DELETE FROM t2 WHERE a = -2;
+connection master;
+DELETE FROM t1 WHERE a = -2;
+
+--echo *** slave must stop (Key was not found)
+connection slave;
+source include/wait_for_slave_sql_to_stop.inc;
+
+let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1);
+disable_query_log;
+eval SELECT "$last_error" AS Last_SQL_Error;
+enable_query_log;
+
+set global slave_exec_mode='IDEMPOTENT';
+start slave sql_thread;
+connection master;
+sync_slave_with_master;
+#connection slave;
+set global slave_exec_mode='STRICT';
+
+connection master;
+DELETE FROM t2 WHERE a = -2;
+--echo *** slave must stop (Key was not found)
+connection slave;
+source include/wait_for_slave_sql_to_stop.inc;
+
+let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1);
+disable_query_log;
+eval SELECT "$last_error" AS Last_SQL_Error;
+enable_query_log;
+
+set global slave_exec_mode='IDEMPOTENT';
+start slave sql_thread;
+connection master;
+sync_slave_with_master;
+#connection slave;
+set global slave_exec_mode='STRICT';
+
+UPDATE t1 SET a = 1 WHERE a = -1;
+UPDATE t2 SET a = 1 WHERE a = -1;
+
+connection master;
+UPDATE t1 SET a = 1 WHERE a = -1;
+
+--echo *** slave must stop (Key was not found)
+connection slave;
+source include/wait_for_slave_sql_to_stop.inc;
+
+let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1);
+disable_query_log;
+eval SELECT "$last_error" AS Last_SQL_Error;
+enable_query_log;
+
+set global slave_exec_mode='IDEMPOTENT';
+start slave sql_thread;
+connection master;
+sync_slave_with_master;
+#connection slave;
+set global slave_exec_mode='STRICT';
+
+
+connection master;
+UPDATE t2 SET a = 1 WHERE a = -1;
+
+--echo *** slave must stop (Key was not found)
+connection slave;
+source include/wait_for_slave_sql_to_stop.inc;
+
+let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1);
+disable_query_log;
+eval SELECT "$last_error" AS Last_SQL_Error;
+enable_query_log;
+
+set global slave_exec_mode='IDEMPOTENT';
+start slave sql_thread;
+connection master;
+sync_slave_with_master;
+#connection slave;
+SET @@global.slave_exec_mode= @old_slave_exec_mode;
+
+# cleanup for bug#31609 tests
+
+connection master;
+
+drop table t1,t2,ti2,ti1;
+sync_slave_with_master;
+set @@global.slave_exec_mode= @old_slave_exec_mode;
+
+--source include/master-slave-end.inc
+
+--echo *** end of tests
diff --git a/mysql-test/suite/rpl/t/rpl_row_implicit_commit_binlog.test b/mysql-test/suite/rpl/t/rpl_row_implicit_commit_binlog.test
new file mode 100644
index 00000000000..5c3b163eea3
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_row_implicit_commit_binlog.test
@@ -0,0 +1,9 @@
+################################################################################
+# Check file extra/rpl_tests/rpl_implicit_commit_binlog.test
+################################################################################
+--source include/have_binlog_format_row.inc
+--source include/master-slave.inc
+--source include/have_innodb.inc
+
+--let $engine=Innodb
+--source extra/rpl_tests/rpl_implicit_commit_binlog.test
diff --git a/mysql-test/suite/rpl/t/rpl_row_insert_delayed.test b/mysql-test/suite/rpl/t/rpl_row_insert_delayed.test
index 9aeb57c4fa2..436c0a9f517 100644
--- a/mysql-test/suite/rpl/t/rpl_row_insert_delayed.test
+++ b/mysql-test/suite/rpl/t/rpl_row_insert_delayed.test
@@ -2,13 +2,4 @@
--source include/master-slave.inc
--source include/not_embedded.inc
--source include/not_windows.inc
-
-connection master;
-set @old_global_binlog_format = @@global.binlog_format;
-
-let $binlog_format_statement=0;
-set @@global.binlog_format = row;
--source extra/rpl_tests/rpl_insert_delayed.test
-
-connection master;
-set @@global.binlog_format = @old_global_binlog_format;
diff --git a/mysql-test/suite/rpl/t/rpl_loaddata_concurrent.test b/mysql-test/suite/rpl/t/rpl_row_loaddata_concurrent.test
index 494a0db79fa..1a4b1c1306d 100644
--- a/mysql-test/suite/rpl/t/rpl_loaddata_concurrent.test
+++ b/mysql-test/suite/rpl/t/rpl_row_loaddata_concurrent.test
@@ -1,5 +1,6 @@
-- source include/not_ndb_default.inc
-- source include/have_log_bin.inc
+-- source include/have_binlog_format_row.inc
let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
CREATE TABLE t1 (c1 char(50));
diff --git a/mysql-test/suite/rpl/t/rpl_row_mixing_engines.test b/mysql-test/suite/rpl/t/rpl_row_mixing_engines.test
new file mode 100644
index 00000000000..8af1ae51bb9
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_row_mixing_engines.test
@@ -0,0 +1,11 @@
+###################################################################################
+# This test cases evaluates the mixture of non-transactional and transcational
+# tables. For further details, please, read WL#2687 and WL#5072.
+###################################################################################
+--source include/have_binlog_format_row.inc
+--source include/master-slave.inc
+--source include/have_innodb.inc
+
+let $engine_type=Innodb;
+--source extra/rpl_tests/rpl_mixing_engines.test
+
diff --git a/mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test b/mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test
index 3328d582692..9a645baead0 100644
--- a/mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test
+++ b/mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test
@@ -116,16 +116,14 @@ sync_slave_with_master;
#(the server was started with skip-slave-start)
--disable_warnings
stop slave;
+--source include/wait_for_slave_to_stop.inc
--enable_warnings
---require r/slave-stopped.result
-show status like 'Slave_running';
connection master;
reset master;
connection slave;
reset slave;
start slave;
---require r/slave-running.result
-show status like 'Slave_running';
+--source include/wait_for_slave_to_start.inc
connection master;
# We should be clean at this point, now we will run in the file from above.
@@ -170,7 +168,7 @@ select "--- Test 2 position test --" as "";
--enable_query_log
let $MYSQLD_DATADIR= `select @@datadir;`;
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
---exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --position=416 --stop-position=569 $MYSQLD_DATADIR/master-bin.000001
+--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --position=417 --stop-position=570 $MYSQLD_DATADIR/master-bin.000001
# These are tests for remote binlog.
# They should return the same as previous test.
@@ -183,8 +181,6 @@ select "--- Test 3 First Remote test --" as "";
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --stop-position=569 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
-# This part is disabled due to bug #17654
-
--disable_query_log
select "--- Test 4 Second Remote test --" as "";
--enable_query_log
@@ -206,16 +202,14 @@ sync_slave_with_master;
--disable_warnings
stop slave;
+--source include/wait_for_slave_to_stop.inc
--enable_warnings
---require r/slave-stopped.result
-show status like 'Slave_running';
connection master;
reset master;
connection slave;
reset slave;
start slave;
---require r/slave-running.result
-show status like 'Slave_running';
+--source include/wait_for_slave_to_start.inc
connection master;
# We should be clean at this point, now we will run in the file from above.
@@ -272,8 +266,8 @@ let $MYSQLD_DATADIR= `select @@datadir;`;
select "--- Test 7 reading stdin w/position --" as "";
--enable_query_log
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
---exec $MYSQL_BINLOG --short-form --position=416 --stop-position=569 - < $MYSQLD_DATADIR/master-bin.000001
-
+--exec $MYSQL_BINLOG --short-form --position=417 --stop-position=570 - < $MYSQLD_DATADIR/master-bin.000001
+
# Bug#16217 (mysql client did not know how not switch its internal charset)
--disable_query_log
select "--- Test 8 switch internal charset --" as "";
@@ -285,16 +279,14 @@ sync_slave_with_master;
--disable_warnings
stop slave;
+--source include/wait_for_slave_to_stop.inc
--enable_warnings
---require r/slave-stopped.result
-show status like 'Slave_running';
connection master;
reset master;
connection slave;
reset slave;
start slave;
---require r/slave-running.result
-show status like 'Slave_running';
+--source include/wait_for_slave_to_start.inc
connection master;
create table t4 (f text character set utf8);
diff --git a/mysql-test/suite/rpl/t/rpl_row_show_relaylog_events.test b/mysql-test/suite/rpl/t/rpl_row_show_relaylog_events.test
new file mode 100644
index 00000000000..6a426efc7ea
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_row_show_relaylog_events.test
@@ -0,0 +1,18 @@
+# BUG#28777 SHOW BINLOG EVENTS does not work on relay log files
+#
+# GOAL
+# ====
+#
+# Test that SHOW BINLOG EVENTS and the new SHOW RELAYLOG EVENTS works after
+# the patch, both on master and slave.
+#
+# HOW
+# ===
+#
+# This test issues SHOW [BINLOG|RELAYLOG] EVENTS both on master and slave after
+# some statements have been issued.
+
+-- source include/master-slave.inc
+-- source include/have_binlog_format_row.inc
+
+-- source extra/rpl_tests/rpl_show_relaylog_events.inc
diff --git a/mysql-test/suite/rpl/t/rpl_row_sp001.test b/mysql-test/suite/rpl/t/rpl_row_sp001.test
index 1595c4a21d5..34d42d985f9 100644
--- a/mysql-test/suite/rpl/t/rpl_row_sp001.test
+++ b/mysql-test/suite/rpl/t/rpl_row_sp001.test
@@ -90,9 +90,7 @@ delimiter ;//
INSERT INTO test.t2 VALUES(NULL,'NEW'),(NULL,'NEW'),(NULL,'NEW'),(NULL,'NEW');
SELECT * FROM t2 ORDER BY a;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
SELECT * FROM t2 ORDER BY a;
connection master;
@@ -105,17 +103,13 @@ SELECT * FROM t2 ORDER BY a;
connection master;
call test.p2(2);
SELECT * FROM t2 ORDER BY a;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
SELECT * FROM t2 ORDER BY a;
connection master;
call test.p2(3);
SELECT * FROM t2 ORDER BY a;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
SELECT * FROM t2 ORDER BY a;
##Used for debugging
diff --git a/mysql-test/suite/rpl/t/rpl_row_sp005.test b/mysql-test/suite/rpl/t/rpl_row_sp005.test
index f5a74325b7c..abc7fb4f490 100644
--- a/mysql-test/suite/rpl/t/rpl_row_sp005.test
+++ b/mysql-test/suite/rpl/t/rpl_row_sp005.test
@@ -74,9 +74,7 @@ SELECT * FROM test.t2 ORDER BY id2;
let $message=< ---- Slave selects-- >;
--source include/show_msg.inc
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
SELECT * FROM test.t1 ORDER BY id;
SELECT * FROM test.t2 ORDER BY id2;
@@ -92,8 +90,7 @@ SELECT * FROM test.t3 ORDER BY id3;
let $message=< ---- Slave selects-- >;
--source include/show_msg.inc
-connection slave;
-sync_with_master;
+sync_slave_with_master;
SELECT * FROM test.t3 ORDER BY id3;
connection master;
diff --git a/mysql-test/suite/rpl/t/rpl_row_sp008.test b/mysql-test/suite/rpl/t/rpl_row_sp008.test
index b1295820c99..80603c28d27 100644
--- a/mysql-test/suite/rpl/t/rpl_row_sp008.test
+++ b/mysql-test/suite/rpl/t/rpl_row_sp008.test
@@ -41,9 +41,7 @@ SELECT * FROM test.t2;
let $message=< ---- Slave selects-- >;
--source include/show_msg.inc
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
SELECT * FROM test.t2;
# Cleanup
diff --git a/mysql-test/suite/rpl/t/rpl_row_sp009.test b/mysql-test/suite/rpl/t/rpl_row_sp009.test
index 92d47c6f50f..77860621961 100644
--- a/mysql-test/suite/rpl/t/rpl_row_sp009.test
+++ b/mysql-test/suite/rpl/t/rpl_row_sp009.test
@@ -71,9 +71,7 @@ delimiter ;|
CALL test.p1('a');
SELECT * FROM test.t2 ORDER BY a;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
SELECT * FROM test.t2 ORDER BY a;
connection master;
truncate test.t2;
@@ -81,17 +79,13 @@ truncate test.t2;
# this next call fails, but should not
call test.p1('b');
select * from test.t2 ORDER BY a;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
SELECT * FROM test.t2 ORDER BY a;
connection master;
truncate test.t2;
SELECT * FROM test.t2 ORDER BY a;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
SELECT * FROM test.t2 ORDER BY a;
# Cleanup
diff --git a/mysql-test/suite/rpl/t/rpl_row_sp010.test b/mysql-test/suite/rpl/t/rpl_row_sp010.test
index 28b82217517..7fa0077f117 100644
--- a/mysql-test/suite/rpl/t/rpl_row_sp010.test
+++ b/mysql-test/suite/rpl/t/rpl_row_sp010.test
@@ -39,9 +39,7 @@ delimiter ;|
CALL test.p2();
SELECT * FROM test.t1 ORDER BY a;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
show tables;
connection master;
@@ -61,9 +59,7 @@ delimiter ;|
CALL test.p4();
SELECT * FROM test.t2 ORDER BY a;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
SELECT * FROM test.t2 ORDER BY a;
# Cleanup
diff --git a/mysql-test/suite/rpl/t/rpl_row_stop_middle_update-master.opt b/mysql-test/suite/rpl/t/rpl_row_stop_middle_update-master.opt
deleted file mode 100644
index b7db8f97bdd..00000000000
--- a/mysql-test/suite/rpl/t/rpl_row_stop_middle_update-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---loose-binlog-row-event-max-size=256
diff --git a/mysql-test/suite/rpl/t/rpl_row_stop_middle_update-slave.opt b/mysql-test/suite/rpl/t/rpl_row_stop_middle_update-slave.opt
deleted file mode 100644
index ea49a27adf4..00000000000
--- a/mysql-test/suite/rpl/t/rpl_row_stop_middle_update-slave.opt
+++ /dev/null
@@ -1 +0,0 @@
---loose-debug=d,STOP_SLAVE_after_first_Rows_event
diff --git a/mysql-test/suite/rpl/t/rpl_row_stop_middle_update.test b/mysql-test/suite/rpl/t/rpl_row_stop_middle_update.test
deleted file mode 100644
index 9b24c78e62d..00000000000
--- a/mysql-test/suite/rpl/t/rpl_row_stop_middle_update.test
+++ /dev/null
@@ -1,32 +0,0 @@
--- source include/have_binlog_format_row.inc
--- source include/have_debug.inc
--- source include/master-slave.inc
-
-# master is asked to create small Rows events: if only one event is
-# created, stopping slave at the end of that one will show no bug, we
-# need at least two (and stop after first); in this test we use three.
-
-connection master;
-create table t1 (words varchar(20)) engine=myisam;
-
-load data infile '../../std_data/words.dat' into table t1 (words);
-select count(*) from t1;
-save_master_pos;
-
-connection slave;
-
-# slave will automatically stop the sql thread thanks to the .opt
-# file; it will initiate the stop request after the first
-# Rows_log_event (out of 3) but should wait until the last one is
-# executed before stopping.
-
-source include/wait_for_slave_sql_to_stop.inc;
-
-# check that we inserted all rows (waited until the last Rows event)
-select count(*) from t1;
-
-connection master;
-drop table t1;
-connection slave; # slave SQL thread is stopped
-source include/stop_slave.inc;
-drop table t1;
diff --git a/mysql-test/suite/rpl/t/rpl_row_trig002.test b/mysql-test/suite/rpl/t/rpl_row_trig002.test
index 7ca8a68f060..1ea245498d5 100644
--- a/mysql-test/suite/rpl/t/rpl_row_trig002.test
+++ b/mysql-test/suite/rpl/t/rpl_row_trig002.test
@@ -39,9 +39,7 @@ INSERT INTO test.t1 VALUES (1, 'example.com'),(2, 'mysql.com'),(3, 'earthmotherw
SELECT * FROM test.t1 ORDER BY id;
#show binlog events;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
SELECT * FROM test.t1 ORDER BY id;
connection master;
@@ -51,9 +49,7 @@ INSERT INTO test.t2 VALUES ('Yes', 1, NULL, 'spamfilter','scan_incoming');
select * from test.t2;
select * from test.t3;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
select * from test.t2;
select * from test.t3;
connection master;
@@ -63,9 +59,7 @@ DELETE FROM test.t1 WHERE id = 1;
SELECT * FROM test.t1 ORDER BY id;
connection master;
SELECT * FROM test.t1 ORDER BY id;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
SELECT * FROM test.t1 ORDER BY id;
# Cleanup
diff --git a/mysql-test/suite/rpl/t/rpl_row_trig003.test b/mysql-test/suite/rpl/t/rpl_row_trig003.test
index 5d667e29d69..781862161c1 100644
--- a/mysql-test/suite/rpl/t/rpl_row_trig003.test
+++ b/mysql-test/suite/rpl/t/rpl_row_trig003.test
@@ -120,9 +120,7 @@ DELETE FROM test.t1 WHERE id = 1;
DELETE FROM test.t2 WHERE id = 1;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
connection master;
# time to dump the databases and so we can see if they match
diff --git a/mysql-test/suite/rpl/t/rpl_row_until.test b/mysql-test/suite/rpl/t/rpl_row_until.test
index fe859218ed3..52e38fa3e57 100644
--- a/mysql-test/suite/rpl/t/rpl_row_until.test
+++ b/mysql-test/suite/rpl/t/rpl_row_until.test
@@ -11,31 +11,32 @@ let $VERSION=`select version()`;
connection master;
CREATE TABLE t1(n INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
INSERT INTO t1 VALUES (1),(2),(3),(4);
-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_pos_drop_t1= query_get_value(SHOW MASTER STATUS, Position, 1);
+DROP TABLE t1;
+#show binlog events;
-CREATE TABLE t2(n INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
# Save master log postion for query CREATE TABLE t2
-save_master_pos;
-let $master_pos_create_t2= query_get_value(SHOW BINLOG EVENTS, Pos, 8);
+let $master_pos_create_t2= query_get_value(SHOW MASTER STATUS, Position, 1);
+CREATE TABLE t2(n INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
+#show binlog events;
INSERT INTO t2 VALUES (1),(2);
-save_master_pos;
# Save master log postion for query INSERT INTO t2 VALUES (1),(2);
-let $master_pos_insert1_t2= query_get_value(SHOW BINLOG EVENTS, End_log_pos, 12);
+let $master_pos_insert1_t2= query_get_value(SHOW MASTER STATUS, Position, 1);
sync_slave_with_master;
+#show binlog events;
# Save relay log postion for query INSERT INTO t2 VALUES (1),(2);
-let $relay_pos_insert1_t2= query_get_value(show slave status, Relay_Log_Pos, 1);
+let $relay_pos_insert1_t2= query_get_value(SHOW SLAVE STATUS, Relay_Log_Pos, 1);
connection master;
INSERT INTO t2 VALUES (3),(4);
DROP TABLE t2;
-# Save master log postion for query INSERT INTO t2 VALUES (1),(2);
-let $master_pos_drop_t2= query_get_value(SHOW BINLOG EVENTS, End_log_pos, 17);
+# Save master log postion for query DROP TABLE t2;
+let $master_pos_drop_t2= query_get_value(SHOW MASTER STATUS, Position, 1);
sync_slave_with_master;
+#show binlog events;
--source include/stop_slave.inc
# Reset slave.
@@ -45,6 +46,7 @@ eval CHANGE MASTER TO MASTER_USER='root', MASTER_CONNECT_RETRY=1, MASTER_HOST='1
--enable_query_log
# 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;
--disable_query_log
diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync-master.opt b/mysql-test/suite/rpl/t/rpl_semi_sync-master.opt
new file mode 100644
index 00000000000..58029d28ace
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_semi_sync-master.opt
@@ -0,0 +1 @@
+$SEMISYNC_PLUGIN_OPT
diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync-slave.opt b/mysql-test/suite/rpl/t/rpl_semi_sync-slave.opt
new file mode 100644
index 00000000000..58029d28ace
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_semi_sync-slave.opt
@@ -0,0 +1 @@
+$SEMISYNC_PLUGIN_OPT
diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync.test b/mysql-test/suite/rpl/t/rpl_semi_sync.test
new file mode 100644
index 00000000000..4900acc1e91
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_semi_sync.test
@@ -0,0 +1,585 @@
+source include/have_semisync_plugin.inc;
+source include/not_embedded.inc;
+source include/have_innodb.inc;
+source include/master-slave.inc;
+
+let $engine_type= InnoDB;
+#let $engine_type= MyISAM;
+
+# Suppress warnings that might be generated during the test
+disable_query_log;
+connection master;
+call mtr.add_suppression("Timeout waiting for reply of binlog");
+call mtr.add_suppression("Read semi-sync reply");
+connection slave;
+call mtr.add_suppression("Master server does not support semi-sync");
+call mtr.add_suppression("Semi-sync slave .* reply");
+enable_query_log;
+connection master;
+
+# After fix of BUG#45848, semi-sync slave should not create any extra
+# connections on master, save the count of connections before start
+# semi-sync slave for comparison below.
+let $_connections_normal_slave= query_get_value(SHOW STATUS LIKE 'Threads_connected', Value, 1);
+
+--echo #
+--echo # Uninstall semi-sync plugins on master and slave
+--echo #
+connection slave;
+disable_query_log;
+source include/stop_slave.inc;
+reset slave;
+disable_warnings;
+error 0,1305;
+UNINSTALL PLUGIN rpl_semi_sync_slave;
+error 0,1305;
+UNINSTALL PLUGIN rpl_semi_sync_master;
+enable_warnings;
+
+connection master;
+reset master;
+set sql_log_bin=0;
+disable_warnings;
+error 0,1305;
+UNINSTALL PLUGIN rpl_semi_sync_slave;
+error 0,1305;
+UNINSTALL PLUGIN rpl_semi_sync_master;
+enable_warnings;
+set sql_log_bin=1;
+enable_query_log;
+
+--echo #
+--echo # Main test of semi-sync replication start here
+--echo #
+
+connection master;
+echo [ on master ];
+
+disable_query_log;
+let $value = query_get_value(show variables like 'rpl_semi_sync_master_enabled', Value, 1);
+if (`select '$value' = 'No such row'`)
+{
+ set sql_log_bin=0;
+ eval INSTALL PLUGIN rpl_semi_sync_master SONAME '$SEMISYNC_MASTER_PLUGIN';
+ set global rpl_semi_sync_master_timeout= 5000; /* 5s */
+ set sql_log_bin=1;
+}
+enable_query_log;
+
+echo [ default state of semi-sync on master should be OFF ];
+show variables like 'rpl_semi_sync_master_enabled';
+
+echo [ enable semi-sync on master ];
+set global rpl_semi_sync_master_enabled = 1;
+show variables like 'rpl_semi_sync_master_enabled';
+
+echo [ status of semi-sync on master should be ON even without any semi-sync slaves ];
+show status like 'Rpl_semi_sync_master_clients';
+show status like 'Rpl_semi_sync_master_status';
+show status like 'Rpl_semi_sync_master_yes_tx';
+
+--echo #
+--echo # BUG#45672 Semisync repl: ActiveTranx:insert_tranx_node: transaction node allocation failed
+--echo # BUG#45673 Semisynch reports correct operation even if no slave is connected
+--echo #
+
+# BUG#45672 When semi-sync is enabled on master, it would allocate
+# transaction node even without semi-sync slave connected, and would
+# finally result in transaction node allocation error.
+#
+# Semi-sync master will pre-allocate 'max_connections' transaction
+# nodes, so here we do more than that much transactions to check if it
+# will fail or not.
+# select @@global.max_connections + 1;
+let $i= `select @@global.max_connections + 1`;
+disable_query_log;
+eval create table t1 (a int) engine=$engine_type;
+while ($i)
+{
+ eval insert into t1 values ($i);
+ dec $i;
+}
+drop table t1;
+enable_query_log;
+
+# BUG#45673
+echo [ status of semi-sync on master should be OFF ];
+show status like 'Rpl_semi_sync_master_clients';
+show status like 'Rpl_semi_sync_master_status';
+show status like 'Rpl_semi_sync_master_yes_tx';
+
+disable_query_log;
+# reset master to make sure the following test will start with a clean environment
+reset master;
+enable_query_log;
+
+--echo #
+--echo # INSTALL PLUGIN semi-sync on slave
+--echo #
+
+connection slave;
+echo [ on slave ];
+
+disable_query_log;
+let $value= query_get_value(show variables like 'rpl_semi_sync_slave_enabled', Value, 1);
+if (`select '$value' = 'No such row'`)
+{
+ set sql_log_bin=0;
+ eval INSTALL PLUGIN rpl_semi_sync_slave SONAME '$SEMISYNC_SLAVE_PLUGIN';
+ set sql_log_bin=1;
+}
+enable_query_log;
+
+echo [ default state of semi-sync on slave should be OFF ];
+show variables like 'rpl_semi_sync_slave_enabled';
+
+echo [ enable semi-sync on slave ];
+set global rpl_semi_sync_slave_enabled = 1;
+show variables like 'rpl_semi_sync_slave_enabled';
+source include/start_slave.inc;
+
+connection master;
+echo [ on master ];
+
+# NOTE: Rpl_semi_sync_master_client will only be updated when
+# semi-sync slave has started binlog dump request
+let $status_var= Rpl_semi_sync_master_clients;
+let $status_var_value= 1;
+source include/wait_for_status_var.inc;
+
+echo [ initial master state after the semi-sync slave connected ];
+show status like 'Rpl_semi_sync_master_clients';
+show status like 'Rpl_semi_sync_master_status';
+show status like 'Rpl_semi_sync_master_no_tx';
+show status like 'Rpl_semi_sync_master_yes_tx';
+
+replace_result $engine_type ENGINE_TYPE;
+eval create table t1(a int) engine = $engine_type;
+
+echo [ master state after CREATE TABLE statement ];
+show status like 'Rpl_semi_sync_master_status';
+show status like 'Rpl_semi_sync_master_no_tx';
+show status like 'Rpl_semi_sync_master_yes_tx';
+
+# After fix of BUG#45848, semi-sync slave should not create any extra
+# connections on master.
+let $_connections_semisync_slave= query_get_value(SHOW STATUS LIKE 'Threads_connected', Value, 1);
+replace_result $_connections_semisync_slave CONNECTIONS_SEMISYNC_SLAVE;
+replace_result $_connections_normal_slave CONNECTIONS_NORMAL_SLAVE;
+eval select $_connections_semisync_slave - $_connections_normal_slave as 'Should be 0';
+
+let $i=300;
+echo [ insert records to table ];
+disable_query_log;
+while ($i)
+{
+ eval insert into t1 values ($i);
+ dec $i;
+}
+enable_query_log;
+
+echo [ master status after inserts ];
+show status like 'Rpl_semi_sync_master_status';
+show status like 'Rpl_semi_sync_master_no_tx';
+show status like 'Rpl_semi_sync_master_yes_tx';
+
+sync_slave_with_master;
+echo [ on slave ];
+
+echo [ slave status after replicated inserts ];
+show status like 'Rpl_semi_sync_slave_status';
+
+select count(distinct a) from t1;
+select min(a) from t1;
+select max(a) from t1;
+
+--echo #
+--echo # Test semi-sync master will switch OFF after one transacton
+--echo # timeout waiting for slave reply.
+--echo #
+connection slave;
+source include/stop_slave.inc;
+
+connection master;
+echo [ on master ];
+
+# The first semi-sync check should be on because after slave stop,
+# there are no transactions on the master.
+echo [ master status should be ON ];
+show status like 'Rpl_semi_sync_master_status';
+show status like 'Rpl_semi_sync_master_no_tx';
+show status like 'Rpl_semi_sync_master_yes_tx';
+show status like 'Rpl_semi_sync_master_clients';
+
+echo [ semi-sync replication of these transactions will fail ];
+insert into t1 values (500);
+
+# Wait for the semi-sync replication of this transaction to timeout
+let $status_var= Rpl_semi_sync_master_status;
+let $status_var_value= OFF;
+source include/wait_for_status_var.inc;
+
+# The second semi-sync check should be off because one transaction
+# times out during waiting.
+echo [ master status should be OFF ];
+show status like 'Rpl_semi_sync_master_status';
+show status like 'Rpl_semi_sync_master_no_tx';
+show status like 'Rpl_semi_sync_master_yes_tx';
+
+# Semi-sync status on master is now OFF, so all these transactions
+# will be replicated asynchronously.
+let $i=300;
+disable_query_log;
+while ($i)
+{
+ eval delete from t1 where a=$i;
+ dec $i;
+}
+enable_query_log;
+
+insert into t1 values (100);
+
+echo [ master status should be OFF ];
+show status like 'Rpl_semi_sync_master_status';
+show status like 'Rpl_semi_sync_master_no_tx';
+show status like 'Rpl_semi_sync_master_yes_tx';
+
+--echo #
+--echo # Test semi-sync status on master will be ON again when slave catches up
+--echo #
+
+# Save the master position for later use.
+save_master_pos;
+
+connection slave;
+echo [ on slave ];
+
+echo [ slave status should be OFF ];
+show status like 'Rpl_semi_sync_slave_status';
+source include/start_slave.inc;
+sync_with_master;
+
+echo [ slave status should be ON ];
+show status like 'Rpl_semi_sync_slave_status';
+
+select count(distinct a) from t1;
+select min(a) from t1;
+select max(a) from t1;
+
+connection master;
+echo [ on master ];
+
+# The master semi-sync status should be on again after slave catches up.
+echo [ master status should be ON again after slave catches up ];
+show status like 'Rpl_semi_sync_master_status';
+show status like 'Rpl_semi_sync_master_no_tx';
+show status like 'Rpl_semi_sync_master_yes_tx';
+show status like 'Rpl_semi_sync_master_clients';
+
+--echo #
+--echo # Test disable/enable master semi-sync on the fly.
+--echo #
+
+drop table t1;
+sync_slave_with_master;
+echo [ on slave ];
+
+source include/stop_slave.inc;
+
+--echo #
+--echo # Flush status
+--echo #
+connection master;
+echo [ Semi-sync master status variables before FLUSH STATUS ];
+SHOW STATUS LIKE 'Rpl_semi_sync_master_no_tx';
+SHOW STATUS LIKE 'Rpl_semi_sync_master_yes_tx';
+# Do not write the FLUSH STATUS to binlog, to make sure we'll get a
+# clean status after this.
+FLUSH NO_WRITE_TO_BINLOG STATUS;
+echo [ Semi-sync master status variables after FLUSH STATUS ];
+SHOW STATUS LIKE 'Rpl_semi_sync_master_no_tx';
+SHOW STATUS LIKE 'Rpl_semi_sync_master_yes_tx';
+
+connection master;
+echo [ on master ];
+
+source include/show_master_logs.inc;
+show variables like 'rpl_semi_sync_master_enabled';
+
+echo [ disable semi-sync on the fly ];
+set global rpl_semi_sync_master_enabled=0;
+show variables like 'rpl_semi_sync_master_enabled';
+show status like 'Rpl_semi_sync_master_status';
+
+echo [ enable semi-sync on the fly ];
+set global rpl_semi_sync_master_enabled=1;
+show variables like 'rpl_semi_sync_master_enabled';
+show status like 'Rpl_semi_sync_master_status';
+
+--echo #
+--echo # Test RESET MASTER/SLAVE
+--echo #
+
+connection slave;
+echo [ on slave ];
+
+source include/start_slave.inc;
+
+connection master;
+echo [ on master ];
+
+replace_result $engine_type ENGINE_TYPE;
+eval create table t1 (a int) engine = $engine_type;
+drop table t1;
+
+##show status like 'Rpl_semi_sync_master_status';
+
+sync_slave_with_master;
+--replace_column 2 #
+show status like 'Rpl_relay%';
+
+echo [ test reset master ];
+connection master;
+echo [ on master];
+
+reset master;
+
+show status like 'Rpl_semi_sync_master_status';
+show status like 'Rpl_semi_sync_master_no_tx';
+show status like 'Rpl_semi_sync_master_yes_tx';
+
+connection slave;
+echo [ on slave ];
+
+source include/stop_slave.inc;
+reset slave;
+
+# Kill the dump thread on master for previous slave connection and
+# wait for it to exit
+connection master;
+let $_tid= `select id from information_schema.processlist where command = 'Binlog Dump' limit 1`;
+if ($_tid)
+{
+ disable_query_log;
+ eval kill query $_tid;
+ enable_query_log;
+
+ # After dump thread exit, Rpl_semi_sync_master_clients will be 0
+ let $status_var= Rpl_semi_sync_master_clients;
+ let $status_var_value= 0;
+ source include/wait_for_status_var.inc;
+}
+
+connection slave;
+source include/start_slave.inc;
+
+connection master;
+echo [ on master ];
+
+# Wait for dump thread to start, Rpl_semi_sync_master_clients will be
+# 1 after dump thread started.
+let $status_var= Rpl_semi_sync_master_clients;
+let $status_var_value= 1;
+source include/wait_for_status_var.inc;
+
+replace_result $engine_type ENGINE_TYPE;
+eval create table t1 (a int) engine = $engine_type;
+insert into t1 values (1);
+insert into t1 values (2), (3);
+
+sync_slave_with_master;
+echo [ on slave ];
+
+select * from t1;
+
+connection master;
+echo [ on master ];
+
+echo [ master semi-sync status should be ON ];
+show status like 'Rpl_semi_sync_master_status';
+show status like 'Rpl_semi_sync_master_no_tx';
+show status like 'Rpl_semi_sync_master_yes_tx';
+
+--echo #
+--echo # Start semi-sync replication without SUPER privilege
+--echo #
+connection slave;
+source include/stop_slave.inc;
+reset slave;
+connection master;
+echo [ on master ];
+reset master;
+
+# Kill the dump thread on master for previous slave connection and wait for it to exit
+let $_tid= `select id from information_schema.processlist where command = 'Binlog Dump' limit 1`;
+if ($_tid)
+{
+ disable_query_log;
+ eval kill query $_tid;
+ enable_query_log;
+
+ # After dump thread exit, Rpl_semi_sync_master_clients will be 0
+ let $status_var= Rpl_semi_sync_master_clients;
+ let $status_var_value= 0;
+ source include/wait_for_status_var.inc;
+}
+
+# Do not binlog the following statement because it will generate
+# different events for ROW and STATEMENT format
+set sql_log_bin=0;
+grant replication slave on *.* to rpl@127.0.0.1 identified by 'rpl';
+flush privileges;
+set sql_log_bin=1;
+connection slave;
+echo [ on slave ];
+grant replication slave on *.* to rpl@127.0.0.1 identified by 'rpl';
+flush privileges;
+change master to master_user='rpl',master_password='rpl';
+source include/start_slave.inc;
+show status like 'Rpl_semi_sync_slave_status';
+connection master;
+echo [ on master ];
+
+# Wait for the semi-sync binlog dump thread to start
+let $status_var= Rpl_semi_sync_master_clients;
+let $status_var_value= 1;
+source include/wait_for_status_var.inc;
+echo [ master semi-sync should be ON ];
+show status like 'Rpl_semi_sync_master_clients';
+show status like 'Rpl_semi_sync_master_status';
+show status like 'Rpl_semi_sync_master_no_tx';
+show status like 'Rpl_semi_sync_master_yes_tx';
+insert into t1 values (4);
+insert into t1 values (5);
+echo [ master semi-sync should be ON ];
+show status like 'Rpl_semi_sync_master_clients';
+show status like 'Rpl_semi_sync_master_status';
+show status like 'Rpl_semi_sync_master_no_tx';
+show status like 'Rpl_semi_sync_master_yes_tx';
+
+--echo #
+--echo # Test semi-sync slave connect to non-semi-sync master
+--echo #
+
+# Disable semi-sync on master
+connection slave;
+echo [ on slave ];
+source include/stop_slave.inc;
+SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
+
+connection master;
+echo [ on master ];
+
+# Kill the dump thread on master for previous slave connection and wait for it to exit
+let $_tid= `select id from information_schema.processlist where command = 'Binlog Dump' limit 1`;
+if ($_tid)
+{
+ disable_query_log;
+ eval kill query $_tid;
+ enable_query_log;
+
+ # After dump thread exit, Rpl_semi_sync_master_clients will be 0
+ let $status_var= Rpl_semi_sync_master_clients;
+ let $status_var_value= 0;
+ source include/wait_for_status_var.inc;
+}
+
+echo [ Semi-sync status on master should be ON ];
+show status like 'Rpl_semi_sync_master_clients';
+show status like 'Rpl_semi_sync_master_status';
+set global rpl_semi_sync_master_enabled= 0;
+
+connection slave;
+echo [ on slave ];
+SHOW VARIABLES LIKE 'rpl_semi_sync_slave_enabled';
+source include/start_slave.inc;
+connection master;
+echo [ on master ];
+insert into t1 values (8);
+let $status_var= Rpl_semi_sync_master_clients;
+let $status_var_value= 1;
+source include/wait_for_status_var.inc;
+echo [ master semi-sync clients should be 1, status should be OFF ];
+show status like 'Rpl_semi_sync_master_clients';
+show status like 'Rpl_semi_sync_master_status';
+sync_slave_with_master;
+echo [ on slave ];
+show status like 'Rpl_semi_sync_slave_status';
+
+# Uninstall semi-sync plugin on master
+connection slave;
+source include/stop_slave.inc;
+connection master;
+echo [ on master ];
+set sql_log_bin=0;
+UNINSTALL PLUGIN rpl_semi_sync_master;
+set sql_log_bin=1;
+enable_query_log;
+SHOW VARIABLES LIKE 'rpl_semi_sync_master_enabled';
+
+connection slave;
+echo [ on slave ];
+SHOW VARIABLES LIKE 'rpl_semi_sync_slave_enabled';
+source include/start_slave.inc;
+
+connection master;
+echo [ on master ];
+insert into t1 values (10);
+sync_slave_with_master;
+echo [ on slave ];
+SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
+
+--echo #
+--echo # Test non-semi-sync slave connect to semi-sync master
+--echo #
+
+connection master;
+set sql_log_bin=0;
+replace_result $SEMISYNC_MASTER_PLUGIN SEMISYNC_MASTER_PLUGIN;
+eval INSTALL PLUGIN rpl_semi_sync_master SONAME '$SEMISYNC_MASTER_PLUGIN';
+set global rpl_semi_sync_master_timeout= 5000; /* 5s */
+set sql_log_bin=1;
+set global rpl_semi_sync_master_enabled= 1;
+
+connection slave;
+echo [ on slave ];
+source include/stop_slave.inc;
+SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
+
+echo [ uninstall semi-sync slave plugin ];
+UNINSTALL PLUGIN rpl_semi_sync_slave;
+SHOW VARIABLES LIKE 'rpl_semi_sync_slave_enabled';
+source include/start_slave.inc;
+SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
+source include/stop_slave.inc;
+
+echo [ reinstall semi-sync slave plugin and disable semi-sync ];
+replace_result $SEMISYNC_SLAVE_PLUGIN SEMISYNC_SLAVE_PLUGIN;
+eval INSTALL PLUGIN rpl_semi_sync_slave SONAME '$SEMISYNC_SLAVE_PLUGIN';
+set global rpl_semi_sync_slave_enabled= 0;
+SHOW VARIABLES LIKE 'rpl_semi_sync_slave_enabled';
+SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
+source include/start_slave.inc;
+SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
+
+--echo #
+--echo # Clean up
+--echo #
+
+connection slave;
+source include/stop_slave.inc;
+UNINSTALL PLUGIN rpl_semi_sync_slave;
+
+connection master;
+UNINSTALL PLUGIN rpl_semi_sync_master;
+
+connection slave;
+source include/start_slave.inc;
+
+connection master;
+drop table t1;
+sync_slave_with_master;
+
+connection master;
+drop user rpl@127.0.0.1;
+flush privileges;
diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync_event-master.opt b/mysql-test/suite/rpl/t/rpl_semi_sync_event-master.opt
new file mode 100644
index 00000000000..3c4a05d640c
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_semi_sync_event-master.opt
@@ -0,0 +1 @@
+$SEMISYNC_PLUGIN_OPT --max-connections=23
diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync_event-slave.opt b/mysql-test/suite/rpl/t/rpl_semi_sync_event-slave.opt
new file mode 100644
index 00000000000..58029d28ace
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_semi_sync_event-slave.opt
@@ -0,0 +1 @@
+$SEMISYNC_PLUGIN_OPT
diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync_event.test b/mysql-test/suite/rpl/t/rpl_semi_sync_event.test
new file mode 100644
index 00000000000..df2ea1abf0c
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_semi_sync_event.test
@@ -0,0 +1,109 @@
+source include/have_semisync_plugin.inc;
+source include/not_embedded.inc;
+source include/master-slave.inc;
+source include/have_innodb.inc;
+
+let $engine_type= InnoDB;
+
+# Suppress warnings that might be generated during the test
+disable_query_log;
+connection master;
+call mtr.add_suppression("Timeout waiting for reply of binlog");
+call mtr.add_suppression("Semi-sync master .* waiting for slave reply");
+call mtr.add_suppression("Read semi-sync reply");
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT.");
+connection slave;
+call mtr.add_suppression("Master server does not support semi-sync");
+call mtr.add_suppression("Semi-sync slave .* reply");
+enable_query_log;
+
+connection master;
+disable_query_log;
+let $value = query_get_value(show variables like 'rpl_semi_sync_master_enabled', Value, 1);
+if (`select '$value' = 'No such row'`)
+{
+ set sql_log_bin=0;
+ eval INSTALL PLUGIN rpl_semi_sync_master SONAME '$SEMISYNC_MASTER_PLUGIN';
+ SET GLOBAL rpl_semi_sync_master_enabled = 1;
+ set sql_log_bin=1;
+}
+enable_query_log;
+
+connection slave;
+source include/stop_slave.inc;
+
+disable_query_log;
+let $value= query_get_value(show variables like 'rpl_semi_sync_slave_enabled', Value, 1);
+if (`select '$value' = 'No such row'`)
+{
+ set sql_log_bin=0;
+ eval INSTALL PLUGIN rpl_semi_sync_slave SONAME '$SEMISYNC_SLAVE_PLUGIN';
+ SET GLOBAL rpl_semi_sync_slave_enabled = 1;
+ set sql_log_bin=1;
+}
+enable_query_log;
+
+source include/start_slave.inc;
+
+connection master;
+SET GLOBAL event_scheduler = ON;
+
+replace_result $engine_type ENGINE_TYPE;
+eval CREATE TABLE t1 (i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, f varchar(8)) ENGINE=$engine_type;
+INSERT INTO t1 (f) VALUES ('a'),('a'),('a'),('a'),('a');
+INSERT INTO t1 SELECT i+5, f FROM t1;
+INSERT INTO t1 SELECT i+10, f FROM t1;
+
+CREATE EVENT ev1 ON SCHEDULE EVERY 1 SECOND
+DO INSERT INTO t1 VALUES (SLEEP(5),CONCAT('ev1_',CONNECTION_ID()));
+CREATE EVENT ev2 ON SCHEDULE EVERY 1 SECOND
+DO INSERT INTO t1 VALUES (SLEEP(5),CONCAT('ev2_',CONNECTION_ID()));
+
+connection slave;
+STOP SLAVE IO_THREAD;
+
+connection master;
+let $run = 20;
+while ($run)
+{
+ connect (m$run,localhost,root,,);
+ connection m$run;
+ send;
+ eval UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = $run;
+ connection master;
+ dec $run;
+}
+
+connection master;
+SET GLOBAL event_scheduler = OFF;
+
+let $run = 20;
+while ($run)
+{
+ connection m$run;
+ reap;
+ disconnect m$run;
+ dec $run;
+}
+
+#
+# Clean up
+#
+connection slave;
+source include/stop_slave.inc;
+
+disable_warnings;
+UNINSTALL PLUGIN rpl_semi_sync_slave;
+
+connection master;
+UNINSTALL PLUGIN rpl_semi_sync_master;
+enable_warnings;
+
+connection slave;
+source include/start_slave.inc;
+
+connection master;
+DROP EVENT ev1;
+DROP EVENT ev2;
+DROP TABLE t1;
+sync_slave_with_master;
diff --git a/mysql-test/suite/rpl/t/rpl_server_id2.test b/mysql-test/suite/rpl/t/rpl_server_id2.test
index 488a3aa6ab6..5c51a7fc08e 100644
--- a/mysql-test/suite/rpl/t/rpl_server_id2.test
+++ b/mysql-test/suite/rpl/t/rpl_server_id2.test
@@ -7,9 +7,11 @@ create table t1 (n int);
reset master;
# replicate ourselves
stop slave;
+--source include/wait_for_slave_to_stop.inc
--replace_result $SLAVE_MYPORT SLAVE_PORT
eval change master to master_port=$SLAVE_MYPORT;
start slave;
+--source include/wait_for_slave_to_start.inc
insert into t1 values (1);
save_master_pos;
sync_with_master;
@@ -18,6 +20,7 @@ select * from t1; # check that indeed 2 were inserted
# 'drop table t1' executed twice, so an error in the slave.err
# (not critical).
stop slave;
+--source include/wait_for_slave_to_stop.inc
drop table t1;
diff --git a/mysql-test/suite/rpl/t/rpl_server_id_ignore-slave.opt b/mysql-test/suite/rpl/t/rpl_server_id_ignore-slave.opt
new file mode 100644
index 00000000000..302889525dd
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_server_id_ignore-slave.opt
@@ -0,0 +1 @@
+--disable-log-slave-updates --replicate-same-server-id
diff --git a/mysql-test/suite/rpl/t/rpl_server_id_ignore.test b/mysql-test/suite/rpl/t/rpl_server_id_ignore.test
new file mode 100644
index 00000000000..1b38bd34d3d
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_server_id_ignore.test
@@ -0,0 +1,114 @@
+# This test checks that the slave rejects events originating
+# by a server from the list of ignored originators (bug#27808 etc)
+#
+# phases of tests:
+#
+# 0. master_id new line in show slave status
+# 1. syntax related:
+# a. error reporting if options clash;
+# b. overriding the old IGNORE_SERVER_IDS setup by the following
+# CHANGE MASTER ... IGNORE_SERVER_IDS= (list);
+# c. the old setup preserving by CHANGE MASTER w/o IGNORE_SERVER_IDS
+# d. resetting the ignored server ids with the empty list arg to
+# IGNORE_SERVER_IDS=()
+# e. RESET SLAVE preserves the list
+# 2. run time related:
+# a. observing no processing events from a master listed in IGNORE_SERVER_IDS
+# b. nullifying the list and resuming of taking binlog from the very beginning with
+# executing events this time
+
+source include/master-slave.inc;
+
+connection slave;
+
+# a new line for master_id
+let $master_id= query_get_value(SHOW SLAVE STATUS, Master_Server_Id, 1);
+echo master_id: $master_id;
+
+stop slave;
+--echo *** --replicate-same-server-id and change master option can clash ***
+--error ER_SLAVE_IGNORE_SERVER_IDS
+change master to IGNORE_SERVER_IDS= (2, 1);
+--echo *** must be empty due to the error ***
+let $ignore_list= query_get_value(SHOW SLAVE STATUS, Replicate_Ignore_Server_Ids, 1);
+echo ignore server id list: $ignore_list;
+
+change master to IGNORE_SERVER_IDS= (10, 100);
+--echo *** must be 10, 100 ***
+let $ignore_list= query_get_value(SHOW SLAVE STATUS, Replicate_Ignore_Server_Ids, 1);
+echo ignore server id list: $ignore_list;
+reset slave;
+--echo *** must be empty due to reset slave ***
+let $ignore_list= query_get_value(SHOW SLAVE STATUS, Replicate_Ignore_Server_Ids, 1);
+echo ignore server id list: $ignore_list;
+change master to IGNORE_SERVER_IDS= (10, 100);
+--echo *** CHANGE MASTER with IGNORE_SERVER_IDS option overrides (does not increment) the previous setup ***
+change master to IGNORE_SERVER_IDS= (5, 1, 4, 3, 1);
+--echo *** must be 1, 3, 4, 5 due to overriding policy ***
+let $ignore_list= query_get_value(SHOW SLAVE STATUS, Replicate_Ignore_Server_Ids, 1);
+echo ignore server id list: $ignore_list;
+--echo *** ignore master (server 1) queries for a while ***
+start slave;
+
+connection master;
+
+#connection slave;
+sync_slave_with_master;
+let $slave_relay_pos0= query_get_value(SHOW SLAVE STATUS, Relay_Log_Pos, 1);
+
+connection master;
+create table t1 (n int);
+let $master_binlog_end= query_get_value(SHOW MASTER STATUS, Position, 1);
+
+connection slave;
+let $slave_param= Exec_Master_Log_Pos;
+let $slave_param_value= $master_binlog_end;
+source include/wait_for_slave_param.inc;
+--echo *** must be empty as the event is to be filtered out ***
+show tables;
+--echo *** allowing events from master ***
+let $slave_relay_pos1= query_get_value(SHOW SLAVE STATUS, Relay_Log_Pos, 1);
+#
+# checking stability of relay log pos
+#
+if (`select $slave_relay_pos1 - $slave_relay_pos0`)
+{
+ --echo Error: relay log position changed: $slave_relay_pos0, $slave_relay_pos1
+ query_vertical show slave status;
+}
+
+stop slave;
+source include/wait_for_slave_to_stop.inc;
+reset slave;
+change master to IGNORE_SERVER_IDS= (10, 100);
+--echo *** the list must remain (10, 100) after reset slave ***
+let $ignore_list= query_get_value(SHOW SLAVE STATUS, Replicate_Ignore_Server_Ids, 1);
+
+change master to IGNORE_SERVER_IDS= ();
+--echo *** must be empty due to IGNORE_SERVER_IDS empty list ***
+let $ignore_list= query_get_value(SHOW SLAVE STATUS, Replicate_Ignore_Server_Ids, 1);
+echo ignore server id list: $ignore_list;
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval change master to master_host='127.0.0.1', master_port=$MASTER_MYPORT, master_user='root';
+start slave;
+
+connection master;
+
+#connection slave;
+sync_slave_with_master;
+--echo *** must have caught create table ***
+show tables;
+
+# cleanup
+connection master;
+drop table t1;
+#connection slave
+sync_slave_with_master;
+
+--echo end of the tests
+
+
+
+
+
+
diff --git a/mysql-test/suite/rpl/t/rpl_session_var.test b/mysql-test/suite/rpl/t/rpl_session_var.test
index 50efc8930a1..a8ad62d4a56 100644
--- a/mysql-test/suite/rpl/t/rpl_session_var.test
+++ b/mysql-test/suite/rpl/t/rpl_session_var.test
@@ -2,6 +2,11 @@
# FOREIGN_KEY_CHECKS is tested in rpl_insert_id.test
source include/master-slave.inc;
+
+disable_query_log;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+enable_query_log;
+
drop table if exists t1;
create table t1(a varchar(100),b int);
set @@session.sql_mode=pipes_as_concat;
@@ -9,9 +14,7 @@ insert into t1 values('My'||'SQL', 1);
set @@session.sql_mode=default;
insert into t1 values('1'||'2', 2);
select * from t1 where b<3 order by a;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
select * from t1 where b<3 order by a;
connection master;
# if the slave does the next sync_with_master fine, then it means it accepts the
@@ -31,15 +34,11 @@ set @@session.sql_auto_is_null=0;
insert into t1 values(null);
insert into t2 select 2,a from t1 where a is null;
select * from t2 order by b;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
select * from t2 order by b;
connection master;
drop table t1,t2;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
#
# Bug #29878 Garbage data generation when executing SESSION_USER() on a slave.
@@ -54,12 +53,9 @@ CREATE TABLE t1 (
--disable_warnings
INSERT INTO t1(data) VALUES(SESSION_USER());
--enable_warnings
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
SELECT length(data) < 100 FROM t1;
connection master;
drop table t1;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
+
diff --git a/mysql-test/suite/rpl/t/rpl_set_charset.test b/mysql-test/suite/rpl/t/rpl_set_charset.test
index c70eb2681f5..241c1c5738b 100644
--- a/mysql-test/suite/rpl/t/rpl_set_charset.test
+++ b/mysql-test/suite/rpl/t/rpl_set_charset.test
@@ -20,16 +20,12 @@ INSERT INTO t1 VALUES ('àáâãäåæçèéêëìíîï','E0');
INSERT INTO t1 VALUES ('ðñòóôõö÷øùúûüýþÿ','F0');
select "--- on master ---";
select hex(a),b from t1 order by b;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
use mysqltest1;
select "--- on slave ---";
select hex(a),b from t1 order by b;
connection master;
drop database mysqltest1;
-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_show_slave_hosts.cnf b/mysql-test/suite/rpl/t/rpl_show_slave_hosts.cnf
new file mode 100644
index 00000000000..288f0132fba
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_show_slave_hosts.cnf
@@ -0,0 +1,20 @@
+!include ../my.cnf
+
+[mysqld.1]
+server_id=1
+
+[mysqld.2]
+server_id=2
+report-host=
+report-user=
+
+[mysqld.3]
+server_id=3
+report-host=slave2
+slave-net-timeout=5
+
+[ENV]
+SLAVE_MYPORT2= @mysqld.3.port
+SLAVE_MYSOCK2= @mysqld.3.socket
+
+
diff --git a/mysql-test/suite/rpl/t/rpl_show_slave_hosts.test b/mysql-test/suite/rpl/t/rpl_show_slave_hosts.test
new file mode 100644
index 00000000000..9f202487968
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_show_slave_hosts.test
@@ -0,0 +1,47 @@
+###############################################################################
+# Bug#13963 SHOW SLAVE HOSTS is unreliable
+#
+# Slaves only appear in the output of SHOW SLAVE HOSTS when report-host option
+# is set. If an expected slave does not appear in the list, nobody knows
+# whether the slave does not connect or has started without the "report-host"
+# option.
+#
+# Remove the "Rpl_recovery_rank" column from SHOW SLAVE HOSTS, It is not
+# implemented.
+#######################################################################
+source include/master-slave.inc;
+connect (slave2,127.0.0.1,root,,test,$SLAVE_MYPORT2,);
+
+connection slave2;
+RESET SLAVE;
+--replace_result $MASTER_MYPORT MASTER_PORT
+--eval CHANGE MASTER TO master_host='127.0.0.1',master_port=$MASTER_MYPORT,master_user='root'
+START SLAVE IO_THREAD;
+source include/wait_for_slave_io_to_start.inc;
+
+connection master;
+let $show_statement= SHOW SLAVE HOSTS;
+let $field= Server_id;
+# 3 is server_id of slave2.
+let $connection= ='3';
+source include/wait_show_condition.inc;
+--replace_result $SLAVE_MYPORT SLAVE_PORT $DEFAULT_MASTER_PORT DEFAULT_PORT
+SHOW SLAVE HOSTS;
+
+connection slave2;
+STOP SLAVE IO_THREAD;
+source include/wait_for_slave_io_to_stop.inc;
+
+connection master;
+let $show_statement= SHOW SLAVE HOSTS;
+let $field= Server_id;
+# 3 is server_id of slave2.
+let $condition= <> '3';
+# All rows of 'SHOW SLAVE HOSTS' are not equal to 3. It mean that master has
+# knew the leave of slave2 and has unregistered it.
+let $wait_for_all= 1;
+source include/wait_show_condition.inc;
+--replace_result $SLAVE_MYPORT SLAVE_PORT
+SHOW SLAVE HOSTS;
+
+source include/master-slave-end.inc;
diff --git a/mysql-test/suite/rpl/t/rpl_slave_skip.test b/mysql-test/suite/rpl/t/rpl_slave_skip.test
index f4cb0f69e93..587a812d0ae 100644
--- a/mysql-test/suite/rpl/t/rpl_slave_skip.test
+++ b/mysql-test/suite/rpl/t/rpl_slave_skip.test
@@ -1,3 +1,9 @@
+# Every statement in this test is either executing under ROW or
+# STATEMENT format, which requires the slave thread to be able to apply
+# both statement and row events. Hence, we only need to execute this
+# test for MIXED mode.
+source include/have_binlog_format_mixed.inc;
+
source include/master-slave.inc;
source include/have_innodb.inc;
@@ -5,6 +11,7 @@ source include/have_innodb.inc;
connection slave;
source include/have_innodb.inc;
STOP SLAVE;
+--source include/wait_for_slave_to_stop.inc
--echo **** On Master ****
connection master;
@@ -27,7 +34,7 @@ connection slave;
# Stop when reaching the the first table map event.
START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=762;
-wait_for_slave_to_stop;
+--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;
@@ -37,6 +44,7 @@ query_vertical SHOW SLAVE STATUS;
# changed.
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;
+--source include/wait_for_slave_to_start.inc
sync_with_master;
# These values should be what was inserted, not what was
@@ -47,6 +55,7 @@ SELECT * FROM t1;
SELECT * FROM t2;
STOP SLAVE;
+--source include/wait_for_slave_to_stop.inc
RESET SLAVE;
connection master;
RESET MASTER;
@@ -59,9 +68,10 @@ source include/show_binlog_events.inc;
connection slave;
START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=106;
-wait_for_slave_to_stop;
+--source include/wait_for_slave_sql_to_stop.inc
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;
+--source include/wait_for_slave_to_start.inc
sync_with_master;
--replace_result $MASTER_MYPORT MASTER_PORT
--replace_column 1 # 8 # 9 # 23 # 33 # 35 # 36 #
diff --git a/mysql-test/suite/rpl/t/rpl_slave_status.test b/mysql-test/suite/rpl/t/rpl_slave_status.test
index 4edf1802a5d..02fd555d13c 100644
--- a/mysql-test/suite/rpl/t/rpl_slave_status.test
+++ b/mysql-test/suite/rpl/t/rpl_slave_status.test
@@ -54,6 +54,7 @@ sync_slave_with_master;
source include/stop_slave.inc;
START SLAVE;
source include/wait_for_slave_sql_to_start.inc;
+source include/wait_for_slave_io_to_stop.inc;
--echo ==== Verify that Slave_IO_Running = No ====
let $result= query_get_value("SHOW SLAVE STATUS", Slave_IO_Running, 1);
diff --git a/mysql-test/suite/rpl/t/rpl_slow_query_log-slave.opt b/mysql-test/suite/rpl/t/rpl_slow_query_log-slave.opt
new file mode 100644
index 00000000000..a27d3a0f5a7
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_slow_query_log-slave.opt
@@ -0,0 +1 @@
+--force-restart --log-slow-slave-statements --log-slow-queries
diff --git a/mysql-test/suite/rpl/t/rpl_slow_query_log.test b/mysql-test/suite/rpl/t/rpl_slow_query_log.test
new file mode 100644
index 00000000000..c310d6a8a4f
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_slow_query_log.test
@@ -0,0 +1,193 @@
+#
+# BUG#23300: Slow query log on slave does not log slow replicated statements
+#
+# Description:
+# The slave should log slow queries replicated from master when
+# --log-slow-slave-statements is used.
+#
+# Test is implemented as follows:
+# i) stop slave
+# ii) On slave, set long_query_time to a small value.
+# ii) start slave so that long_query_time variable is picked by sql thread
+# iii) On master, do one short time query and one long time query, on slave
+# and check that slow query is logged to slow query log but fast query
+# is not.
+# iv) On slave, check that slow queries go into the slow log and fast dont,
+# when issued through a regular client connection
+# v) On slave, check that slow queries go into the slow log and fast dont
+# when we use SET TIMESTAMP= 1 on a regular client connection.
+# vi) check that when setting slow_query_log= OFF in a connection 'extra2'
+# prevents logging slow queries in a connection 'extra'
+#
+# OBS:
+# This test only runs for statement binlogging format because on row format
+# slow queries do not get slow query logged.
+# Note that due to the sleep() command the insert is written to the binary
+# log in row format.
+
+source include/master-slave.inc;
+source include/have_binlog_format_statement.inc;
+
+CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
+
+# Prepare slave for different long_query_time we need to stop the slave
+# and restart it as long_query_time variable is dynamic and, after
+# setting it, it only takes effect on new connections.
+#
+# Reference:
+# http://dev.mysql.com/doc/refman/6.0/en/set-option.html
+connection slave;
+
+source include/stop_slave.inc;
+
+SET @old_log_output= @@log_output;
+SET GLOBAL log_output= 'TABLE';
+SET @old_long_query_time= @@long_query_time;
+SET GLOBAL long_query_time= 2;
+TRUNCATE mysql.slow_log;
+
+source include/start_slave.inc;
+
+connection master;
+CREATE TABLE t1 (a int, b int);
+
+# test:
+# check that slave logs the slow query to the slow log, but not the fast one.
+
+let $slow_query= INSERT INTO t1 values(1, sleep(3));
+let $fast_query= INSERT INTO t1 values(1, 1);
+
+eval $fast_query;
+--disable_warnings
+eval $slow_query;
+--enable_warnings
+sync_slave_with_master;
+
+let $found_fast_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$fast_query'`;
+let $found_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`;
+
+if ($found_fast_query)
+{
+ SELECT * FROM mysql.slow_log;
+ die "Assertion failed! Fast query FOUND in slow query log. Bailing out!";
+}
+
+if (!$found_slow_query)
+{
+ SELECT * FROM mysql.slow_log;
+ die "Assertion failed! Slow query NOT FOUND in slow query log. Bailing out!";
+}
+TRUNCATE mysql.slow_log;
+
+# regular checks for slow query log (using a new connection - 'extra' - to slave)
+
+# test:
+# when using direct connections to the slave, check that slow query is logged
+# but not the fast one.
+
+connect(extra,127.0.0.1,root,,test,$SLAVE_MYPORT);
+connection extra;
+
+let $fast_query= SELECT 1;
+let $slow_query= SELECT 1, sleep(3);
+
+eval $slow_query;
+eval $fast_query;
+
+let $found_fast_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$fast_query'`;
+let $found_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`;
+
+if ($found_fast_query)
+{
+ SELECT * FROM mysql.slow_log;
+ die "Assertion failed! Fast query FOUND in slow query log. Bailing out!";
+}
+
+if (!$found_slow_query)
+{
+ SELECT * FROM mysql.slow_log;
+ die "Assertion failed! Slow query NOT FOUND in slow query log. Bailing out!";
+}
+TRUNCATE mysql.slow_log;
+
+# test:
+# when using direct connections to the slave, check that when setting timestamp to 1 the
+# slow query is logged but the fast one is not.
+
+let $fast_query= SELECT 2;
+let $slow_query= SELECT 2, sleep(3);
+
+SET TIMESTAMP= 1;
+eval $slow_query;
+eval $fast_query;
+
+let $found_fast_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$fast_query'`;
+let $found_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`;
+
+if ($found_fast_query)
+{
+ SELECT * FROM mysql.slow_log;
+ die "Assertion failed! Fast query FOUND in slow query log. Bailing out!";
+}
+
+if (!$found_slow_query)
+{
+ SELECT * FROM mysql.slow_log;
+ die "Assertion failed! Slow query NOT FOUND in slow query log. Bailing out!";
+}
+TRUNCATE mysql.slow_log;
+
+# test:
+# check that when setting the slow_query_log= OFF on connection 'extra2'
+# prevents connection 'extra' from logging to slow query log.
+
+let $fast_query= SELECT 3;
+let $slow_query= SELECT 3, sleep(3);
+
+connect(extra2,127.0.0.1,root,,test,$SLAVE_MYPORT);
+connection extra2;
+
+SET @old_slow_query_log= @@slow_query_log;
+SET GLOBAL slow_query_log= 'OFF';
+
+connection extra;
+
+eval $slow_query;
+eval $fast_query;
+
+let $found_fast_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$fast_query'`;
+let $found_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`;
+
+if ($found_fast_query)
+{
+ SELECT * FROM mysql.slow_log;
+ die "Assertion failed! Fast query FOUND in slow query log when slow_query_log= OFF. Bailing out!";
+}
+
+if ($found_slow_query)
+{
+ SELECT * FROM mysql.slow_log;
+ die "Assertion failed! Slow query FOUND in slow query log when slow_query_log= OFF. Bailing out!";
+}
+TRUNCATE mysql.slow_log;
+
+# clean up: drop tables, reset the variables back to the previous value,
+# disconnect extra connections
+connection extra2;
+
+SET GLOBAL slow_query_log= @old_slow_query_log;
+
+connection master;
+DROP TABLE t1;
+sync_slave_with_master;
+
+source include/stop_slave.inc;
+
+SET GLOBAL long_query_time= @old_long_query_time;
+SET GLOBAL log_output= @old_log_output;
+
+source include/start_slave.inc;
+
+disconnect extra;
+disconnect extra2;
diff --git a/mysql-test/suite/rpl/t/rpl_sp-master.opt b/mysql-test/suite/rpl/t/rpl_sp-master.opt
index 709a224fd92..18c5c96955f 100644
--- a/mysql-test/suite/rpl/t/rpl_sp-master.opt
+++ b/mysql-test/suite/rpl/t/rpl_sp-master.opt
@@ -1 +1 @@
---log_bin_trust_routine_creators=0
+--log_bin_trust_function_creators=0
diff --git a/mysql-test/suite/rpl/t/rpl_sp-slave.opt b/mysql-test/suite/rpl/t/rpl_sp-slave.opt
index 709a224fd92..18c5c96955f 100644
--- a/mysql-test/suite/rpl/t/rpl_sp-slave.opt
+++ b/mysql-test/suite/rpl/t/rpl_sp-slave.opt
@@ -1 +1 @@
---log_bin_trust_routine_creators=0
+--log_bin_trust_function_creators=0
diff --git a/mysql-test/suite/rpl/t/rpl_sp.test b/mysql-test/suite/rpl/t/rpl_sp.test
index 9be630e9ae8..96a41d9a9ad 100644
--- a/mysql-test/suite/rpl/t/rpl_sp.test
+++ b/mysql-test/suite/rpl/t/rpl_sp.test
@@ -3,11 +3,6 @@
# Test of replication of stored procedures (WL#2146 for MySQL 5.0)
# Modified by WL#2971.
-# Note that in the .opt files we still use the old variable name
-# log-bin-trust-routine-creators so that this test checks that it's
-# still accepted (this test also checks that the new name is
-# accepted). The old name could be removed in 5.1 or 6.0.
-
source include/have_binlog_format_mixed.inc;
source include/master-slave.inc;
@@ -241,16 +236,11 @@ begin
end|
delimiter ;|
connection master;
-set @old_log_bin_trust_routine_creators= @@global.log_bin_trust_routine_creators;
set @old_log_bin_trust_function_creators= @@global.log_bin_trust_function_creators;
-# test old variable name:
-set global log_bin_trust_routine_creators=1;
-# now use new name:
set global log_bin_trust_function_creators=0;
set global log_bin_trust_function_creators=1;
# slave needs it too otherwise will not execute what master allowed:
connection slave;
-set @old_log_bin_trust_routine_creators= @@global.log_bin_trust_routine_creators;
set @old_log_bin_trust_function_creators= @@global.log_bin_trust_function_creators;
set global log_bin_trust_function_creators=1;
@@ -466,9 +456,7 @@ DROP FUNCTION IF EXISTS f1;
--echo
--echo ---> Synchronizing slave with master...
---save_master_pos
---connection slave
---sync_with_master
+--sync_slave_with_master
--echo
--echo ---> connection: master
@@ -492,9 +480,7 @@ SHOW CREATE FUNCTION f1;
--echo
--echo ---> Synchronizing slave with master...
---save_master_pos
---connection slave
---sync_with_master
+--sync_slave_with_master
--echo ---> connection: master
@@ -516,9 +502,7 @@ SHOW CREATE FUNCTION f1;
DROP PROCEDURE p1;
DROP FUNCTION f1;
---save_master_pos
---connection slave
---sync_with_master
+--sync_slave_with_master
--connection master
@@ -568,19 +552,15 @@ 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.
# This is a cleanup for all parts above where we tested stored
# functions and triggers.
connection slave;
-set @@global.log_bin_trust_routine_creators= @old_log_bin_trust_routine_creators;
set @@global.log_bin_trust_function_creators= @old_log_bin_trust_function_creators;
connection master;
-set @@global.log_bin_trust_routine_creators= @old_log_bin_trust_routine_creators;
set @@global.log_bin_trust_function_creators= @old_log_bin_trust_function_creators;
# Clean up
diff --git a/mysql-test/suite/rpl/t/rpl_sp004.test b/mysql-test/suite/rpl/t/rpl_sp004.test
index 967e7007c15..2f9b329eb66 100644
--- a/mysql-test/suite/rpl/t/rpl_sp004.test
+++ b/mysql-test/suite/rpl/t/rpl_sp004.test
@@ -46,9 +46,7 @@ delimiter ;|
CALL test.p1();
SELECT * FROM test.t1 ORDER BY a;
SELECT * FROM test.t2 ORDER BY a;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
SELECT * FROM test.t1 ORDER BY a;
SELECT * FROM test.t2 ORDER BY a;
@@ -57,9 +55,7 @@ CALL test.p2();
USE test;
SHOW TABLES;
#SELECT * FROM test.t3;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
USE test;
SHOW TABLES;
#SELECT * FROM test.t3;
@@ -69,9 +65,7 @@ CALL test.p1();
SELECT * FROM test.t1 ORDER BY a;
SELECT * FROM test.t2 ORDER BY a;
#SELECT * FROM test.t3;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
SELECT * FROM test.t1 ORDER BY a;
SELECT * FROM test.t2 ORDER BY a;
#SELECT * FROM test.t3;
diff --git a/mysql-test/suite/rpl/t/rpl_sp_effects-master.opt b/mysql-test/suite/rpl/t/rpl_sp_effects-master.opt
index 61dd7a6ad0e..27fad1403d2 100644
--- a/mysql-test/suite/rpl/t/rpl_sp_effects-master.opt
+++ b/mysql-test/suite/rpl/t/rpl_sp_effects-master.opt
@@ -1 +1 @@
---log_bin_trust_routine_creators=1
+--log_bin_trust_function_creators=1
diff --git a/mysql-test/suite/rpl/t/rpl_sp_effects-slave.opt b/mysql-test/suite/rpl/t/rpl_sp_effects-slave.opt
index 61dd7a6ad0e..27fad1403d2 100644
--- a/mysql-test/suite/rpl/t/rpl_sp_effects-slave.opt
+++ b/mysql-test/suite/rpl/t/rpl_sp_effects-slave.opt
@@ -1 +1 @@
---log_bin_trust_routine_creators=1
+--log_bin_trust_function_creators=1
diff --git a/mysql-test/suite/rpl/r/rpl_row_basic_11bugs-master.opt b/mysql-test/suite/rpl/t/rpl_spec_variables-slave.opt
index 627becdbfb5..627becdbfb5 100644
--- a/mysql-test/suite/rpl/r/rpl_row_basic_11bugs-master.opt
+++ b/mysql-test/suite/rpl/t/rpl_spec_variables-slave.opt
diff --git a/mysql-test/suite/rpl/t/rpl_spec_variables.test b/mysql-test/suite/rpl/t/rpl_spec_variables.test
new file mode 100644
index 00000000000..a60738316c8
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_spec_variables.test
@@ -0,0 +1,306 @@
+#############################################################
+# Author: Serge Kozlov <skozlov@mysql.com>
+# Date: 07/01/2008
+# Purpose: Testing possible affects of some system dynamic
+# variables to the replication.
+# Scenario for each variable:
+# 1) Set different values for master and slave
+# 2) Create and replicate a data from master to slave
+# 3) Check results on master and slave: changes on slave
+# shouldn't be affected to replicated data.
+#############################################################
+--source include/have_innodb.inc
+--source include/master-slave.inc
+--echo
+
+#
+# AUTO_INCREMENT
+#
+--echo * auto_increment_increment, auto_increment_offset *
+
+--connection master
+SET @@global.auto_increment_increment=2;
+SET @@session.auto_increment_increment=2;
+SET @@global.auto_increment_offset=10;
+SET @@session.auto_increment_offset=10;
+
+--connection slave
+SET @@global.auto_increment_increment=3;
+SET @@session.auto_increment_increment=3;
+SET @@global.auto_increment_offset=20;
+SET @@session.auto_increment_offset=20;
+
+--connection master
+CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM;
+INSERT INTO t1 (b) VALUES ('master');
+INSERT INTO t1 (b) VALUES ('master');
+SELECT * FROM t1 ORDER BY a;
+
+--sync_slave_with_master
+CREATE TABLE t2 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM;
+INSERT INTO t1 (b) VALUES ('slave');
+INSERT INTO t1 (b) VALUES ('slave');
+INSERT INTO t2 (b) VALUES ('slave');
+INSERT INTO t2 (b) VALUES ('slave');
+SELECT * FROM t1 ORDER BY a;
+SELECT * FROM t2 ORDER BY a;
+
+--connection master
+--disable_warnings
+DROP TABLE IF EXISTS t1,t2;
+--enable_warnings
+SET @@global.auto_increment_increment=1;
+SET @@session.auto_increment_increment=1;
+SET @@global.auto_increment_offset=1;
+SET @@session.auto_increment_offset=1;
+
+--connection slave
+SET @@global.auto_increment_increment=1;
+SET @@session.auto_increment_increment=1;
+SET @@global.auto_increment_offset=1;
+SET @@session.auto_increment_offset=1;
+
+--connection slave
+SET auto_increment_increment=1;
+SET auto_increment_offset=1;
+--echo
+
+#
+# CHARACTER_SET_DATABASE, COLLATION_SERVER
+#
+--echo * character_set_database, collation_server *
+
+--connection master
+SET @restore_master_character_set_database=@@global.character_set_database;
+SET @restore_master_collation_server=@@global.collation_server;
+SET @@global.character_set_database=latin1;
+SET @@session.character_set_database=latin1;
+SET @@global.collation_server=latin1_german1_ci;
+SET @@session.collation_server=latin1_german1_ci;
+
+--connection slave
+SET @restore_slave_character_set_database=@@global.character_set_database;
+SET @restore_slave_collation_server=@@global.collation_server;
+SET @@global.character_set_database=utf8;
+SET @@session.character_set_database=utf8;
+SET @@global.collation_server=utf8_bin;
+SET @@session.collation_server=utf8_bin;
+
+--connection master
+CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM;
+SHOW CREATE TABLE t1;
+
+--sync_slave_with_master
+CREATE TABLE t2 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM;
+SHOW CREATE TABLE t1;
+SHOW CREATE TABLE t2;
+
+SET @@global.collation_server=latin1_swedish_ci;
+SET @@session.collation_server=latin1_swedish_ci;
+
+--connection master
+SET @@global.collation_server=latin1_swedish_ci;
+SET @@session.collation_server=latin1_swedish_ci;
+
+--disable_warnings
+DROP TABLE IF EXISTS t1,t2;
+--enable_warnings
+--echo
+
+#
+# DEFAULT_WEEK_FORMAT
+#
+--echo * default_week_format *
+
+--connection master
+SET @@global.default_week_format=0;
+SET @@session.default_week_format=0;
+
+--connection slave
+SET @@global.default_week_format=1;
+SET @@session.default_week_format=1;
+
+--connection master
+CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10), c INT) ENGINE=MyISAM;
+INSERT INTO t1 VALUES (1, 'master ', WEEK('2008-01-07'));
+SELECT * FROM t1 ORDER BY a;
+
+--sync_slave_with_master
+INSERT INTO t1 VALUES (2, 'slave ', WEEK('2008-01-07'));
+SELECT * FROM t1 ORDER BY a;
+
+--connection master
+DROP TABLE t1;
+
+--connection slave
+SET @@global.default_week_format=0;
+SET @@session.default_week_format=0;
+--echo
+
+#
+# LOCAL_INFILE
+#
+--echo * local_infile *
+
+--connection slave
+SET @@global.local_infile=0;
+
+--connection master
+CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(20), c CHAR(254)) ENGINE=MyISAM;
+--copy_file ./std_data/words.dat $MYSQLTEST_VARDIR/tmp/words.dat
+--copy_file ./std_data/words2.dat $MYSQLTEST_VARDIR/tmp/words2.dat
+--replace_regex /\'.+\'/'FILE'/
+--eval LOAD DATA LOCAL INFILE '$MYSQLTEST_VARDIR/tmp/words.dat' INTO TABLE t1 (b)
+SELECT COUNT(*) FROM t1;
+--sync_slave_with_master
+--replace_regex /\'.+\'/'FILE2'/
+--error 1148
+--eval LOAD DATA LOCAL INFILE '$MYSQLTEST_VARDIR/tmp/words2.dat' INTO TABLE t1 (b)
+SELECT COUNT(*) FROM t1;
+
+SET @@global.local_infile=1;
+
+--connection master
+DROP TABLE t1;
+--echo
+
+#
+# MAX_HEAP_TABLE_SIZE
+#
+--echo * max_heap_table_size *
+
+--connection slave
+SET @restore_slave_max_heap_table_size=@@global.max_heap_table_size;
+SET @@global.max_heap_table_size=16384;
+SET @@session.max_heap_table_size=16384;
+
+--connection master
+CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10), c CHAR(254)) ENGINE=MEMORY;
+let $counter=2000;
+--disable_query_log
+while ($counter) {
+ INSERT INTO t1 (b,c) VALUES ('master', REPEAT('A', 254));
+ dec $counter;
+}
+--enable_query_log
+SELECT COUNT(*)=2000 FROM t1;
+
+--sync_slave_with_master
+let $counter=2000;
+--disable_query_log
+while ($counter) {
+ --error 0,1114
+ INSERT INTO t1 (b,c) VALUES ('slave', REPEAT('A', 254));
+ dec $counter;
+}
+CREATE TABLE t2 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10), c CHAR(254)) ENGINE=MEMORY;
+let $counter=2000;
+--disable_query_log
+while ($counter) {
+ --error 0,1114
+ INSERT INTO t2 (b,c) VALUES ('slave', REPEAT('A', 254));
+ dec $counter;
+}
+--enable_query_log
+# We don't know how many memory used and can't check exact values so need to check following
+# conditions
+SELECT COUNT(*)=2000 FROM t1 WHERE b='master' GROUP BY b ORDER BY b;
+SELECT COUNT(*)<2000 AND COUNT(*)>0 FROM t1 WHERE b='slave' GROUP BY b ORDER BY b;
+SELECT COUNT(*)<2000 AND COUNT(*)>0 FROM t2 WHERE b='slave' GROUP BY b ORDER BY b;
+
+--connection master
+--disable_warnings
+DROP TABLE IF EXISTS t1,t2;
+--enable_warnings
+--echo
+
+#
+# STORAGE_ENGINE
+#
+--echo * storage_engine *
+
+--connection master
+SET @restore_master_storage_engine=@@global.storage_engine;
+SET @@global.storage_engine=InnoDB;
+SET @@session.storage_engine=InnoDB;
+
+--connection slave
+SET @restore_slave_storage_engine=@@global.storage_engine;
+SET @@global.storage_engine=Memory;
+SET @@session.storage_engine=Memory;
+
+--connection master
+CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10));
+CREATE TABLE t2 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)) ENGINE=InnoDB;
+
+--sync_slave_with_master
+CREATE TABLE t3 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10));
+
+--connection master
+SHOW CREATE TABLE t1;
+SHOW CREATE TABLE t2;
+
+--connection slave
+SHOW CREATE TABLE t1;
+SHOW CREATE TABLE t2;
+SHOW CREATE TABLE t3;
+
+SET @@global.storage_engine=InnoDB;
+SET @@session.storage_engine=InnoDB;
+
+--connection master
+--disable_warnings
+DROP TABLE IF EXISTS t1,t2,t3;
+--enable_warnings
+--echo
+
+#
+# SQL_MODE
+#
+--echo * sql_mode *
+
+--connection master
+SET @@global.sql_mode=ANSI;
+SET @@session.sql_mode=ANSI;
+
+--connection slave
+SET @@global.sql_mode=TRADITIONAL;
+SET @@session.sql_mode=TRADITIONAL;
+
+--connection master
+CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10), c DATE);
+INSERT INTO t1 VALUES (1, 'master', '0000-00-00');
+SELECT * FROM t1 ORDER BY a;
+
+--sync_slave_with_master
+--error 1292
+INSERT INTO t1 VALUES (1, 'slave', '0000-00-00');
+SELECT * FROM t1 ORDER BY a;
+SET @@global.sql_mode='';
+SET @@session.sql_mode='';
+
+--connection master
+SET @@global.sql_mode='';
+SET @@session.sql_mode='';
+DROP TABLE t1;
+--echo
+
+
+# Clean up
+--echo *** clean up ***
+--connection master
+SET @@global.character_set_database=@restore_master_character_set_database;
+SET @@global.collation_server=@restore_master_collation_server;
+SET @@global.storage_engine=@restore_master_storage_engine;
+--sync_slave_with_master
+SET @@global.character_set_database=@restore_slave_character_set_database;
+SET @@global.collation_server=@restore_slave_collation_server;
+SET @@global.max_heap_table_size=@restore_slave_max_heap_table_size;
+SET @@global.storage_engine=@restore_slave_storage_engine;
+
+# Put at the end since the test otherwise emptied the table.
+
+--echo
+call mtr.add_suppression("The table 't[12]' is full");
+
+# End of 5.1 test
diff --git a/mysql-test/suite/rpl/t/rpl_sporadic_master.test b/mysql-test/suite/rpl/t/rpl_sporadic_master.test
index 824f7abc9f5..6640544b0ed 100644
--- a/mysql-test/suite/rpl/t/rpl_sporadic_master.test
+++ b/mysql-test/suite/rpl/t/rpl_sporadic_master.test
@@ -14,7 +14,9 @@ truncate table t1;
insert into t1 values (4),(NULL);
sync_slave_with_master;
stop slave;
+--source include/wait_for_slave_to_stop.inc
start slave;
+--source include/wait_for_slave_to_start.inc
connection master;
insert into t1 values (NULL),(NULL);
flush logs;
diff --git a/mysql-test/suite/rpl/t/rpl_ssl1.test b/mysql-test/suite/rpl/t/rpl_ssl1.test
index b5355d737d5..85f073d9c09 100644
--- a/mysql-test/suite/rpl/t/rpl_ssl1.test
+++ b/mysql-test/suite/rpl/t/rpl_ssl1.test
@@ -9,14 +9,13 @@ source include/master-slave.inc;
connection master;
grant replication slave on *.* to replssl@localhost require ssl;
create table t1 (t int);
-save_master_pos;
#syncing with master
-connection slave;
-sync_with_master;
+sync_slave_with_master;
#trying to use this user without ssl
stop slave;
+--source include/wait_for_slave_to_stop.inc
change master to master_user='replssl',master_password='';
start slave;
@@ -31,15 +30,15 @@ select * from t1;
#showing that replication could work with ssl params
stop slave;
+--source include/wait_for_slave_to_stop.inc
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
eval change master to master_ssl=1 , master_ssl_ca ='$MYSQL_TEST_DIR/std_data/cacert.pem', master_ssl_cert='$MYSQL_TEST_DIR/std_data/client-cert.pem', master_ssl_key='$MYSQL_TEST_DIR/std_data/client-key.pem';
start slave;
+--source include/wait_for_slave_to_start.inc
#avoiding unneeded sleeps
connection master;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
#checking that replication is ok
select * from t1;
@@ -51,14 +50,14 @@ query_vertical show slave status;
#checking if replication works without ssl also performing clean up
stop slave;
+--source include/wait_for_slave_to_stop.inc
change master to master_user='root',master_password='', master_ssl=0;
start slave;
+--source include/wait_for_slave_to_start.inc
connection master;
drop user replssl@localhost;
drop table t1;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_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;
@@ -68,6 +67,7 @@ query_vertical show slave status;
# Start replication with ssl_verify_server_cert turned on
connection slave;
stop slave;
+--source include/wait_for_slave_to_stop.inc
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
eval change master to
master_host="localhost",
@@ -77,6 +77,7 @@ eval change master to
master_ssl_key='$MYSQL_TEST_DIR/std_data/client-key.pem',
master_ssl_verify_server_cert=1;
start slave;
+--source include/wait_for_slave_to_start.inc
connection master;
create table t1 (t int);
diff --git a/mysql-test/suite/rpl/t/rpl_stm_auto_increment_bug33029.test b/mysql-test/suite/rpl/t/rpl_stm_auto_increment_bug33029.test
index a8139bbbcd2..f10ddc8b480 100644
--- a/mysql-test/suite/rpl/t/rpl_stm_auto_increment_bug33029.test
+++ b/mysql-test/suite/rpl/t/rpl_stm_auto_increment_bug33029.test
@@ -11,6 +11,8 @@
source include/have_binlog_format_statement.inc;
source include/master-slave.inc;
+CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
--disable_warnings
DROP TABLE IF EXISTS t1, t2;
DROP PROCEDURE IF EXISTS p1;
@@ -108,3 +110,5 @@ DROP FUNCTION IF EXISTS f1;
DROP TRIGGER IF EXISTS tr1;
enable_warnings;
sync_slave_with_master;
+
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
diff --git a/mysql-test/suite/rpl/t/rpl_stm_binlog_max_cache_size-master.opt b/mysql-test/suite/rpl/t/rpl_stm_binlog_max_cache_size-master.opt
new file mode 100644
index 00000000000..45631525481
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_stm_binlog_max_cache_size-master.opt
@@ -0,0 +1 @@
+--binlog_cache_size=4096 --max_binlog_cache_size=7680
diff --git a/mysql-test/suite/rpl/t/rpl_stm_binlog_max_cache_size.test b/mysql-test/suite/rpl/t/rpl_stm_binlog_max_cache_size.test
new file mode 100644
index 00000000000..7e43b7a9e7d
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_stm_binlog_max_cache_size.test
@@ -0,0 +1,7 @@
+--source include/have_innodb.inc
+--source include/master-slave.inc
+--source include/not_embedded.inc
+--source include/not_windows.inc
+--source include/have_binlog_format_statement.inc
+
+--source extra/rpl_tests/rpl_binlog_max_cache_size.test
diff --git a/mysql-test/suite/rpl/t/rpl_stm_flsh_tbls.test b/mysql-test/suite/rpl/t/rpl_stm_flsh_tbls.test
index a8a33d05e8b..791132cef5a 100644
--- a/mysql-test/suite/rpl/t/rpl_stm_flsh_tbls.test
+++ b/mysql-test/suite/rpl/t/rpl_stm_flsh_tbls.test
@@ -1,7 +1,7 @@
# depends on the binlog output
--source include/have_binlog_format_mixed_or_statement.inc
-let $rename_event_pos= 656;
+let $rename_event_pos= 931;
-- source extra/rpl_tests/rpl_flsh_tbls.test
# End of 4.1 tests
diff --git a/mysql-test/suite/rpl/t/rpl_stm_found_rows.test b/mysql-test/suite/rpl/t/rpl_stm_found_rows.test
new file mode 100644
index 00000000000..8ea62f17eed
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_stm_found_rows.test
@@ -0,0 +1,125 @@
+source include/have_binlog_format_statement.inc;
+source include/master-slave.inc;
+
+disable_query_log;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+enable_query_log;
+
+# It is not possible to replicate FOUND_ROWS() using statement-based
+# replication, but there is a workaround that stores the result of
+# FOUND_ROWS() into a user variable and then replicates this instead.
+#
+# The purpose of this test case is to test that the workaround works
+# properly even when inside stored programs (i.e., stored routines and
+# triggers).
+
+--echo ==== Initialize ====
+
+--echo **** On Master ****
+connection master;
+CREATE TABLE t1 (a INT);
+CREATE TABLE logtbl (sect INT, test INT, count INT);
+
+INSERT INTO t1 VALUES (1),(2),(3);
+INSERT INTO t1 SELECT 2*a+3 FROM t1;
+INSERT INTO t1 SELECT 2*a+3 FROM t1;
+INSERT INTO t1 SELECT 2*a+3 FROM t1;
+INSERT INTO t1 SELECT 2*a+3 FROM t1;
+INSERT INTO t1 SELECT 2*a+3 FROM t1;
+INSERT INTO t1 SELECT 2*a+3 FROM t1;
+
+
+--echo ==== Simple test ====
+
+SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
+
+# Instead of
+# INSERT INTO logtbl VALUES(1, 1, FOUND_ROWS());
+# we write
+SELECT FOUND_ROWS() INTO @a;
+INSERT INTO logtbl VALUES(1,1,@a);
+
+SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a < 5 ORDER BY a LIMIT 1;
+# Instead of
+# INSERT INTO logtbl VALUES(1, 2, FOUND_ROWS());
+# we write
+SELECT FOUND_ROWS() INTO @a;
+INSERT INTO logtbl VALUES(1,2,@a);
+
+SELECT * FROM logtbl WHERE sect = 1 ORDER BY sect,test;
+--echo **** On Slave ****
+sync_slave_with_master;
+SELECT * FROM logtbl WHERE sect = 1 ORDER BY sect,test;
+
+
+--echo ==== Stored procedure ====
+
+# Here we do both the calculation and the logging. We also do it twice
+# to make sure that there are no limitations on how many times it can
+# be used.
+
+--echo **** On Master ****
+connection master;
+--delimiter $$
+CREATE PROCEDURE calc_and_log(sect INT, test INT) BEGIN
+ DECLARE cnt INT;
+ SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a < 5 ORDER BY a LIMIT 1;
+ SELECT FOUND_ROWS() INTO cnt;
+ INSERT INTO logtbl VALUES(sect,test,cnt);
+ SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
+ SELECT FOUND_ROWS() INTO cnt;
+ INSERT INTO logtbl VALUES(sect,test+1,cnt);
+END $$
+--delimiter ;
+
+CALL calc_and_log(2,1);
+
+--delimiter $$
+CREATE PROCEDURE just_log(sect INT, test INT, found_rows INT) BEGIN
+ INSERT INTO logtbl VALUES (sect,test,found_rows);
+END $$
+--delimiter ;
+
+SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
+SELECT FOUND_ROWS() INTO @found_rows;
+CALL just_log(2,3,@found_rows);
+
+SELECT * FROM logtbl WHERE sect = 2 ORDER BY sect,test;
+--echo **** On Slave ****
+sync_slave_with_master;
+SELECT * FROM logtbl WHERE sect = 2 ORDER BY sect,test;
+
+
+--echo ==== Stored functions ====
+--echo **** On Master ****
+connection master;
+--delimiter $$
+CREATE FUNCTION log_rows(sect INT, test INT, found_rows INT)
+ RETURNS INT
+BEGIN
+ INSERT INTO logtbl VALUES(sect,test,found_rows);
+ RETURN found_rows;
+END $$
+--delimiter ;
+
+SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
+SELECT FOUND_ROWS() INTO @found_rows;
+SELECT log_rows(3,1,@found_rows), log_rows(3,2,@found_rows);
+
+SELECT * FROM logtbl WHERE sect = 3 ORDER BY sect,test;
+--echo **** On Slave ****
+sync_slave_with_master;
+SELECT * FROM logtbl WHERE sect = 3 ORDER BY sect,test;
+
+
+--echo ==== Cleanup ====
+--echo **** On Master ****
+connection master;
+DROP TABLE t1, logtbl;
+DROP PROCEDURE just_log;
+DROP PROCEDURE calc_and_log;
+DROP FUNCTION log_rows;
+sync_slave_with_master;
+
+source include/reset_master_and_slave.inc;
+
diff --git a/mysql-test/suite/rpl/t/rpl_stm_implicit_commit_binlog.test b/mysql-test/suite/rpl/t/rpl_stm_implicit_commit_binlog.test
new file mode 100644
index 00000000000..87dd3eb3295
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_stm_implicit_commit_binlog.test
@@ -0,0 +1,9 @@
+################################################################################
+# Check file extra/rpl_tests/rpl_implicit_commit_binlog.test
+################################################################################
+--source include/have_binlog_format_statement.inc
+--source include/master-slave.inc
+--source include/have_innodb.inc
+
+--let $engine=Innodb
+--source extra/rpl_tests/rpl_implicit_commit_binlog.test
diff --git a/mysql-test/suite/rpl/t/rpl_stm_innodb.test b/mysql-test/suite/rpl/t/rpl_stm_innodb.test
new file mode 100644
index 00000000000..cbdc402d407
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_stm_innodb.test
@@ -0,0 +1,8 @@
+# File for specialities regarding replication from or to InnoDB
+# tables.
+
+source include/master-slave.inc;
+source include/have_innodb.inc;
+source include/have_binlog_format_statement.inc;
+
+source extra/rpl_tests/rpl_innodb.test;
diff --git a/mysql-test/suite/rpl/t/rpl_stm_insert_delayed.test b/mysql-test/suite/rpl/t/rpl_stm_insert_delayed.test
index d55e3a4da2c..18f43eb838e 100644
--- a/mysql-test/suite/rpl/t/rpl_stm_insert_delayed.test
+++ b/mysql-test/suite/rpl/t/rpl_stm_insert_delayed.test
@@ -1,20 +1,8 @@
-# we run first in statement-based then in mixed binlogging
-
---source include/have_binlog_format_mixed_or_statement.inc
+--source include/have_binlog_format_statement.inc
--source include/master-slave.inc
--source include/not_embedded.inc
--source include/not_windows.inc
-
-connection master;
-set @old_global_binlog_format = @@global.binlog_format;
-
-let $binlog_format_statement=1;
-set @@global.binlog_format = statement;
+disable_query_log;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+enable_query_log;
--source extra/rpl_tests/rpl_insert_delayed.test
-
-let $binlog_format_statement=0;
-set @@global.binlog_format = mixed;
---source extra/rpl_tests/rpl_insert_delayed.test
-
-connection master;
-set @@global.binlog_format = @old_global_binlog_format;
diff --git a/mysql-test/suite/rpl/t/rpl_stm_loaddata_concurrent.test b/mysql-test/suite/rpl/t/rpl_stm_loaddata_concurrent.test
new file mode 100644
index 00000000000..2ea95a63fb5
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_stm_loaddata_concurrent.test
@@ -0,0 +1,15 @@
+-- source include/not_ndb_default.inc
+-- source include/have_log_bin.inc
+-- source include/have_binlog_format_statement.inc
+RESET MASTER;
+
+let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
+CREATE TABLE t1 (c1 char(50));
+LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE t1;
+LOAD DATA CONCURRENT INFILE '../../std_data/words.dat' INTO TABLE t1;
+-- source include/show_binlog_events.inc
+DROP TABLE t1;
+
+let $lock_option= CONCURRENT;
+let $engine_type=MyISAM;
+-- source extra/rpl_tests/rpl_loaddata.test
diff --git a/mysql-test/suite/rpl/t/rpl_stm_loadfile.test b/mysql-test/suite/rpl/t/rpl_stm_loadfile.test
index 3db8385a2f2..8ab71d165d3 100644
--- a/mysql-test/suite/rpl/t/rpl_stm_loadfile.test
+++ b/mysql-test/suite/rpl/t/rpl_stm_loadfile.test
@@ -16,5 +16,9 @@
-- source include/master-slave.inc
-- source include/have_binlog_format_statement.inc
+disable_query_log;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+enable_query_log;
+
-- source extra/rpl_tests/rpl_loadfile.test
diff --git a/mysql-test/suite/rpl/t/rpl_stm_mix_show_relaylog_events.test b/mysql-test/suite/rpl/t/rpl_stm_mix_show_relaylog_events.test
new file mode 100644
index 00000000000..523e883d9fa
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_stm_mix_show_relaylog_events.test
@@ -0,0 +1,18 @@
+# BUG#28777 SHOW BINLOG EVENTS does not work on relay log files
+#
+# GOAL
+# ====
+#
+# Test that SHOW BINLOG EVENTS and the new SHOW RELAYLOG EVENTS works after
+# the patch, both on master and slave.
+#
+# HOW
+# ===
+#
+# This test issues SHOW [BINLOG|RELAYLOG] EVENTS both on master and slave after
+# some statements have been issued.
+
+-- source include/master-slave.inc
+-- source include/have_binlog_format_mixed_or_statement.inc
+
+-- source extra/rpl_tests/rpl_show_relaylog_events.inc
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..39a9522bf6c 100644
--- a/mysql-test/suite/rpl/t/rpl_stm_mixing_engines.test
+++ b/mysql-test/suite/rpl/t/rpl_stm_mixing_engines.test
@@ -1,5 +1,10 @@
+###################################################################################
+# This test cases evaluates the mixture of non-transactional and transcational
+# tables. For further details, please, read WL#2687 and WL#5072.
+###################################################################################
--source include/have_binlog_format_statement.inc
--source include/master-slave.inc
--source include/have_innodb.inc
+let $engine_type=Innodb;
--source extra/rpl_tests/rpl_mixing_engines.test
diff --git a/mysql-test/suite/rpl/t/rpl_stm_start_stop_slave.test b/mysql-test/suite/rpl/t/rpl_stm_start_stop_slave.test
new file mode 100644
index 00000000000..067c4b7c9b6
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_stm_start_stop_slave.test
@@ -0,0 +1,8 @@
+################################################################################
+# Please, check ./extra/rpl_tests/rpl_start_stop_slave.test
+################################################################################
+--source include/master-slave.inc
+--source include/have_binlog_format_statement.inc
+--source include/have_innodb.inc
+
+--source ./extra/rpl_tests/rpl_start_stop_slave.test
diff --git a/mysql-test/suite/rpl/t/rpl_stm_stop_middle_group.test b/mysql-test/suite/rpl/t/rpl_stm_stop_middle_group.test
new file mode 100644
index 00000000000..649690ebbbe
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_stm_stop_middle_group.test
@@ -0,0 +1,9 @@
+###################################################################################
+# Please, check extra/rpl_tests/rpl_stop_middle_group.test.
+###################################################################################
+-- source include/have_debug.inc
+-- source include/master-slave.inc
+-- source include/have_innodb.inc
+-- source include/have_binlog_format_statement.inc
+
+-- source extra/rpl_tests/rpl_stop_middle_group.test
diff --git a/mysql-test/suite/rpl/t/rpl_stm_until.test b/mysql-test/suite/rpl/t/rpl_stm_until.test
index d78f8380961..72ea6ef4c1c 100644
--- a/mysql-test/suite/rpl/t/rpl_stm_until.test
+++ b/mysql-test/suite/rpl/t/rpl_stm_until.test
@@ -22,6 +22,9 @@
# Test is dependent on binlog positions
+# prepare version for substitutions
+let $VERSION=`select version()`;
+
# Stop slave before it starts replication. Also sync with master
# to avoid nondeterministic behaviour.
--echo [on slave]
@@ -61,7 +64,7 @@ select * from t1;
source include/show_slave_status2.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;
+start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=891;
--source include/wait_for_slave_io_to_start.inc
--source include/wait_for_slave_sql_to_stop.inc
select * from t2;
diff --git a/mysql-test/suite/rpl/t/rpl_switch_stm_row_mixed.test b/mysql-test/suite/rpl/t/rpl_switch_stm_row_mixed.test
index e6c1d5256a0..ce5d9f15b9f 100644
--- a/mysql-test/suite/rpl/t/rpl_switch_stm_row_mixed.test
+++ b/mysql-test/suite/rpl/t/rpl_switch_stm_row_mixed.test
@@ -1,17 +1,25 @@
#
# rpl_switch_stm_row_mixed tests covers
#
-# - switching explicitly between STATEMENT, ROW, and MIXED binlog format
-# showing when it is possible and when not.
-# - switching from MIXED to RBR implicitly listing all use cases,
-# e.g a query invokes UUID(), thereafter to serve as the definition
-# of MIXED binlog format
+# - Master is switching explicitly between STATEMENT, ROW, and MIXED
+# binlog format showing when it is possible and when not.
+# - Master switching from MIXED to RBR implicitly listing all use
+# cases, e.g a query invokes UUID(), thereafter to serve as the
+# definition of MIXED binlog format
# - correctness of execution
-- source include/not_ndb_default.inc
-- source include/master-slave.inc
+# Since this test generates row-based events in the binary log, the
+# slave SQL thread cannot be in STATEMENT mode to execute this test,
+# so we only execute it for MIXED and ROW as default value of
+# BINLOG_FORMAT.
+
+connection slave;
+-- source include/have_binlog_format_mixed_or_row.inc
+
connection master;
--disable_warnings
drop database if exists mysqltest1;
@@ -145,7 +153,9 @@ create table t3 select 1 union select UUID();
create table t4 select * from t1 where 3 in (select 1 union select 2 union select UUID() union select 3);
create table t5 select * from t1 where 3 in (select 1 union select 2 union select curdate() union select 3);
# what if UUID() is first:
+--disable_warnings
insert into t5 select UUID() from t1 where 3 in (select 1 union select 2 union select 3 union select * from t4);
+--enable_warnings
# inside a stored procedure
diff --git a/mysql-test/suite/rpl/t/rpl_sync-slave.opt b/mysql-test/suite/rpl/t/rpl_sync-slave.opt
new file mode 100644
index 00000000000..77809a42c43
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_sync-slave.opt
@@ -0,0 +1 @@
+--sync-relay-log-info=1 --relay-log-recovery=1
diff --git a/mysql-test/suite/rpl/t/rpl_sync.test b/mysql-test/suite/rpl/t/rpl_sync.test
new file mode 100644
index 00000000000..80b6a144187
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_sync.test
@@ -0,0 +1,148 @@
+########################################################################################
+# This test verifies the options --sync-relay-log-info and --relay-log-recovery by
+# crashing the slave in two different situations:
+# (case-1) - Corrupt the relay log with changes which were not processed by
+# the SQL Thread and crashes it.
+# (case-2) - Corrupt the master.info with wrong coordinates and crashes it.
+#
+# Case 1:
+# 1 - Stops the SQL Thread
+# 2 - Inserts new records into the master.
+# 3 - Corrupts the relay-log.bin* which most likely has such changes.
+# 4 - Crashes the slave
+# 5 - Verifies if the slave is sync with the master which means that the information
+# loss was circumvented by the recovery process.
+#
+# Case 2:
+# 1 - Stops the SQL/IO Threads
+# 2 - Inserts new records into the master.
+# 3 - Corrupts the master.info with wrong coordinates.
+# 4 - Crashes the slave
+# 5 - Verifies if the slave is sync with the master which means that the information
+# loss was circumvented by the recovery process.
+########################################################################################
+
+########################################################################################
+# Configuring the environment
+########################################################################################
+--echo =====Configuring the enviroment=======;
+--source include/master-slave.inc
+--source include/not_embedded.inc
+--source include/not_valgrind.inc
+--source include/have_debug.inc
+--source include/have_innodb.inc
+
+call mtr.add_suppression('Attempting backtrace');
+call mtr.add_suppression("Recovery from master pos .* and file master-bin.000001");
+CREATE TABLE t1(a INT, PRIMARY KEY(a)) engine=innodb;
+
+insert into t1(a) values(1);
+insert into t1(a) values(2);
+insert into t1(a) values(3);
+
+########################################################################################
+# Case 1: Corrupt a relay-log.bin*
+########################################################################################
+--echo =====Inserting data on the master but without the SQL Thread being running=======;
+sync_slave_with_master;
+
+connection slave;
+let $MYSQLD_SLAVE_DATADIR= `select @@datadir`;
+--replace_result $MYSQLD_SLAVE_DATADIR MYSQLD_SLAVE_DATADIR
+--copy_file $MYSQLD_SLAVE_DATADIR/master.info $MYSQLD_SLAVE_DATADIR/master.backup
+stop slave SQL_THREAD;
+source include/wait_for_slave_sql_to_stop.inc;
+
+connection master;
+insert into t1(a) values(4);
+insert into t1(a) values(5);
+insert into t1(a) values(6);
+
+--echo =====Removing relay log files and crashing/recoverying the slave=======;
+connection slave;
+stop slave IO_THREAD;
+source include/wait_for_slave_io_to_stop.inc;
+
+let $file= query_get_value("SHOW SLAVE STATUS", Relay_Log_File, 1);
+--replace_result $MYSQLD_SLAVE_DATADIR MYSQLD_SLAVE_DATADIR
+--exec echo "failure" > $MYSQLD_SLAVE_DATADIR/$file
+
+--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
+SET SESSION debug="d,crash_before_rotate_relaylog";
+--error 2013
+FLUSH LOGS;
+
+--enable_reconnect
+--source include/wait_until_connected_again.inc
+
+--echo =====Dumping and comparing tables=======;
+start slave;
+source include/wait_for_slave_to_start.inc;
+
+connection master;
+sync_slave_with_master;
+
+let $diff_table_1=master:test.t1;
+let $diff_table_2=slave:test.t1;
+source include/diff_tables.inc;
+
+########################################################################################
+# Case 2: Corrupt a master.info
+########################################################################################
+--echo =====Corrupting the master.info=======;
+connection slave;
+stop slave;
+source include/wait_for_slave_to_stop.inc;
+
+connection master;
+FLUSH LOGS;
+
+insert into t1(a) values(7);
+insert into t1(a) values(8);
+insert into t1(a) values(9);
+
+connection slave;
+--replace_result $MYSQLD_SLAVE_DATADIR MYSQLD_SLAVE_DATADIR
+--exec cat $MYSQLD_SLAVE_DATADIR/master.backup > $MYSQLD_SLAVE_DATADIR/master.info
+
+let MYSQLD_SLAVE_DATADIR=`select @@datadir`;
+
+--perl
+use strict;
+use warnings;
+my $src= "$ENV{'MYSQLD_SLAVE_DATADIR'}/master.backup";
+my $dst= "$ENV{'MYSQLD_SLAVE_DATADIR'}/master.info";
+open(FILE, "<", $src) or die;
+my @content= <FILE>;
+close FILE;
+open(FILE, ">", $dst) or die;
+binmode FILE;
+print FILE @content;
+close FILE;
+EOF
+
+--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
+SET SESSION debug="d,crash_before_rotate_relaylog";
+--error 2013
+FLUSH LOGS;
+
+--enable_reconnect
+--source include/wait_until_connected_again.inc
+
+--echo =====Dumping and comparing tables=======;
+start slave;
+source include/wait_for_slave_to_start.inc;
+
+connection master;
+sync_slave_with_master;
+
+let $diff_table_1=master:test.t1;
+let $diff_table_2=slave:test.t1;
+source include/diff_tables.inc;
+
+########################################################################################
+# Clean up
+########################################################################################
+--echo =====Clean up=======;
+connection master;
+drop table t1;
diff --git a/mysql-test/suite/rpl/t/rpl_temp_table.test b/mysql-test/suite/rpl/t/rpl_temp_table.test
index 9b73961aeea..dc24f2fc87b 100644
--- a/mysql-test/suite/rpl/t/rpl_temp_table.test
+++ b/mysql-test/suite/rpl/t/rpl_temp_table.test
@@ -54,6 +54,4 @@ show status like 'Slave_open_temp_tables';
connect (master2,localhost,root,,);
connection master2;
drop table if exists t1,t2;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
diff --git a/mysql-test/suite/rpl/t/rpl_temporary.test b/mysql-test/suite/rpl/t/rpl_temporary.test
index 29b214e5169..66d1eeaa9e3 100644
--- a/mysql-test/suite/rpl/t/rpl_temporary.test
+++ b/mysql-test/suite/rpl/t/rpl_temporary.test
@@ -1,6 +1,5 @@
# Test need anonymous user when connection are made as "zedjzlcsjhd"
source include/add_anonymous_users.inc;
-
-- source include/master-slave.inc
# Clean up old slave's binlogs.
diff --git a/mysql-test/suite/rpl/t/rpl_temporary_errors.test b/mysql-test/suite/rpl/t/rpl_temporary_errors.test
index 3b373e00a62..30fe54d0e72 100644
--- a/mysql-test/suite/rpl/t/rpl_temporary_errors.test
+++ b/mysql-test/suite/rpl/t/rpl_temporary_errors.test
@@ -1,10 +1,10 @@
+source include/have_binlog_format_row.inc;
source include/master-slave.inc;
call mtr.add_suppression("Deadlock found");
--echo **** On Master ****
connection master;
-SET SESSION BINLOG_FORMAT=ROW;
CREATE TABLE t1 (a INT PRIMARY KEY, b INT);
INSERT INTO t1 VALUES (1,1), (2,2), (3,3), (4,4);
--echo **** On Slave ****
diff --git a/mysql-test/suite/rpl/t/rpl_timezone.test b/mysql-test/suite/rpl/t/rpl_timezone.test
index 45d1f12b5d5..943742a0973 100644
--- a/mysql-test/suite/rpl/t/rpl_timezone.test
+++ b/mysql-test/suite/rpl/t/rpl_timezone.test
@@ -13,6 +13,10 @@
# timezone used in CONVERT_TZ is not binlogged. To debug (by Guilhem
# and possibly Konstantin).
+--disable_query_log
+CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+--enable_query_log
+
--disable_ps_protocol
source include/master-slave.inc;
diff --git a/mysql-test/suite/rpl/t/rpl_trigger.test b/mysql-test/suite/rpl/t/rpl_trigger.test
index e296da01bad..04f4717b41e 100644
--- a/mysql-test/suite/rpl/t/rpl_trigger.test
+++ b/mysql-test/suite/rpl/t/rpl_trigger.test
@@ -5,7 +5,9 @@
--source include/have_binlog_format_mixed_or_statement.inc
--source include/master-slave.inc
-CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
+disable_query_log;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+enable_query_log;
--disable_warnings
DROP TABLE IF EXISTS t1;
@@ -518,7 +520,9 @@ create trigger tr
for each row insert into log values ( new.f );
set autocommit = 0;
+--disable_warnings
insert into t1 values ( 1 );
+--enable_warnings
rollback;
sync_slave_with_master;
diff --git a/mysql-test/suite/rpl/t/rpl_typeconv-slave.opt b/mysql-test/suite/rpl/t/rpl_typeconv-slave.opt
new file mode 100644
index 00000000000..73ca7001985
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_typeconv-slave.opt
@@ -0,0 +1 @@
+--innodb \ No newline at end of file
diff --git a/mysql-test/suite/rpl/t/rpl_typeconv.test b/mysql-test/suite/rpl/t/rpl_typeconv.test
new file mode 100644
index 00000000000..2a6a3f3b33d
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_typeconv.test
@@ -0,0 +1,69 @@
+--source include/have_binlog_format_row.inc
+--source include/master-slave.inc
+
+connection slave;
+set @saved_slave_type_conversions = @@global.slave_type_conversions;
+CREATE TABLE type_conversions (
+ TestNo INT AUTO_INCREMENT PRIMARY KEY,
+ Source TEXT,
+ Target TEXT,
+ Flags TEXT,
+ On_Master TEXT,
+ On_Slave TEXT,
+ Expected TEXT,
+ Compare INT,
+ Error TEXT);
+
+SELECT @@global.slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='';
+SELECT @@global.slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_NON_LOSSY';
+SELECT @@global.slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY';
+SELECT @@global.slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY,ALL_NON_LOSSY';
+SELECT @@global.slave_type_conversions;
+--error ER_WRONG_VALUE_FOR_VAR
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY,ALL_NON_LOSSY,NONEXISTING_BIT';
+SELECT @@global.slave_type_conversions;
+
+# Checking strict interpretation of type conversions
+connection slave;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='';
+source extra/rpl_tests/type_conversions.test;
+
+# Checking lossy integer type conversions
+connection slave;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_NON_LOSSY';
+source extra/rpl_tests/type_conversions.test;
+
+# Checking non-lossy integer type conversions
+connection slave;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY';
+source extra/rpl_tests/type_conversions.test;
+
+# Checking all type conversions
+connection slave;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY,ALL_NON_LOSSY';
+source extra/rpl_tests/type_conversions.test;
+
+connection slave;
+--echo **** Result of conversions ****
+disable_query_log;
+SELECT RPAD(Source, 15, ' ') AS Source_Type,
+ RPAD(Target, 15, ' ') AS Target_Type,
+ RPAD(Flags, 25, ' ') AS All_Type_Conversion_Flags,
+ IF(Compare IS NULL AND Error IS NOT NULL, '<Correct error>',
+ IF(Compare, '<Correct value>',
+ CONCAT("'", On_Slave, "' != '", Expected, "'")))
+ AS Value_On_Slave
+ FROM type_conversions;
+enable_query_log;
+DROP TABLE type_conversions;
+
+connection master;
+DROP TABLE t1;
+sync_slave_with_master;
+
+set global slave_type_conversions = @saved_slave_type_conversions;
+
diff --git a/mysql-test/suite/rpl/t/rpl_typeconv_innodb.test b/mysql-test/suite/rpl/t/rpl_typeconv_innodb.test
new file mode 100644
index 00000000000..729a622348f
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_typeconv_innodb.test
@@ -0,0 +1,29 @@
+--source include/have_binlog_format_row.inc
+--source include/have_innodb.inc
+--source include/master-slave.inc
+
+#
+# BUG#49618: Field length stored incorrectly in binary log for InnoDB
+#
+
+source include/reset_master_and_slave.inc;
+
+connection slave;
+SET @saved_slave_type_conversions = @@GLOBAL.SLAVE_TYPE_CONVERSIONS;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = '';
+
+connection master;
+CREATE TABLE t1(b1 BIT(1), b2 BIT(2), b3 BIT(3)) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (b'0', b'01', b'101');
+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;
+
+connection slave;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
diff --git a/mysql-test/suite/rpl/t/rpl_udf.test b/mysql-test/suite/rpl/t/rpl_udf.test
index 262ad04630c..23b6a4b5a6c 100644
--- a/mysql-test/suite/rpl/t/rpl_udf.test
+++ b/mysql-test/suite/rpl/t/rpl_udf.test
@@ -5,18 +5,11 @@
# statement based format. This tests work completed in WL#3629. #
###################################################################
---source include/not_embedded.inc
--source include/master-slave.inc
-let $engine_type= MyISAM;
-
-set binlog_format=row;
-
-# Embedded server doesn't support binlogging
---source include/rpl_udf.inc
+disable_query_log;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+enable_query_log;
-set binlog_format=statement;
-
-# Embedded server doesn't support binlogging
+let $engine_type= MyISAM;
--source include/rpl_udf.inc
-
diff --git a/mysql-test/suite/rpl/t/rpl_user_variables.test b/mysql-test/suite/rpl/t/rpl_user_variables.test
index 8d570f28f64..9292fcdda5e 100644
--- a/mysql-test/suite/rpl/t/rpl_user_variables.test
+++ b/mysql-test/suite/rpl/t/rpl_user_variables.test
@@ -5,6 +5,11 @@
###################################
-- source include/master-slave.inc
+
+disable_query_log;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+enable_query_log;
+
# Disable PS as the log positions differs
--disable_ps_protocol
@@ -20,9 +25,7 @@
# test the slave immediately writes DROP TEMPORARY TABLE this_old_table).
# We wait for the slave to have written all he wants to the binlog
# (otherwise RESET MASTER may come too early).
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
reset master;
connection master;
diff --git a/mysql-test/suite/rpl/t/rpl_variables_stm.test b/mysql-test/suite/rpl/t/rpl_variables_stm.test
index 85152ae878a..74b0871086e 100644
--- a/mysql-test/suite/rpl/t/rpl_variables_stm.test
+++ b/mysql-test/suite/rpl/t/rpl_variables_stm.test
@@ -55,6 +55,7 @@
source include/master-slave.inc;
source include/have_binlog_format_mixed_or_statement.inc;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
--echo ==== Initialization ====
@@ -63,7 +64,6 @@ source include/have_binlog_format_mixed_or_statement.inc;
--echo [on master]
connection master;
-SET @m_pseudo_thread_id= @@global.pseudo_thread_id;
SET @m_auto_increment_increment= @@global.auto_increment_increment;
SET @m_auto_increment_offset= @@global.auto_increment_offset;
SET @m_character_set_client= @@global.character_set_client;
@@ -75,7 +75,6 @@ SET @m_collation_database= @@global.collation_database;
--echo [on slave]
connection slave;
-SET @s_pseudo_thread_id= @@global.pseudo_thread_id;
SET @s_auto_increment_increment= @@global.auto_increment_increment;
SET @s_auto_increment_offset= @@global.auto_increment_offset;
SET @s_character_set_client= @@global.character_set_client;
@@ -85,7 +84,6 @@ SET @s_time_zone= @@global.time_zone;
SET @s_lc_time_names= @@global.lc_time_names;
SET @s_collation_database= @@global.collation_database;
-SET @@global.pseudo_thread_id= 4711;
SET @@global.auto_increment_increment=19;
SET @@global.auto_increment_offset=4;
SET @@global.character_set_client='latin2';
@@ -377,8 +375,9 @@ BEGIN
END|
DELIMITER ;|
+--disable_warnings
SELECT func();
-
+--enable_warnings
--echo ==== Insert variables from a trigger ====
@@ -471,7 +470,9 @@ BEGIN
END|
DELIMITER ;|
+--disable_warnings
INSERT INTO trigger_table VALUES ('bye.');
+--enable_warnings
--echo ==== Insert variables from a prepared statement ====
@@ -610,7 +611,6 @@ DROP FUNCTION func;
DROP TRIGGER trig;
DROP TABLE tstmt, tproc, tfunc, ttrig, tprep, trigger_table;
-SET @@global.pseudo_thread_id= @m_pseudo_thread_id;
SET @@global.auto_increment_increment= @m_auto_increment_increment;
SET @@global.auto_increment_offset= @m_auto_increment_offset;
SET @@global.character_set_client= @m_character_set_client;
@@ -622,7 +622,6 @@ SET @@global.collation_database= @m_collation_database;
--echo [on slave]
connection slave;
-SET @@global.pseudo_thread_id= @s_pseudo_thread_id;
SET @@global.auto_increment_increment= @s_auto_increment_increment;
SET @@global.auto_increment_offset= @s_auto_increment_offset;
SET @@global.character_set_client= @s_character_set_client;
diff --git a/mysql-test/suite/rpl/t/rpl_view.test b/mysql-test/suite/rpl/t/rpl_view.test
index 1053514bfec..01b4dc5ef55 100644
--- a/mysql-test/suite/rpl/t/rpl_view.test
+++ b/mysql-test/suite/rpl/t/rpl_view.test
@@ -74,9 +74,7 @@ DROP VIEW IF EXISTS v1;
--echo
--echo ---> Synchronizing slave with master...
---save_master_pos
---connection slave
---sync_with_master
+--sync_slave_with_master
--echo
--echo ---> connection: master
@@ -104,9 +102,7 @@ SELECT * FROM t1;
--echo
--echo ---> Synchronizing slave with master...
---save_master_pos
---connection slave
---sync_with_master
+--sync_slave_with_master
--echo ---> connection: master
@@ -127,9 +123,7 @@ SELECT * FROM t1;
DROP VIEW v1;
DROP TABLE t1;
---save_master_pos
---connection slave
---sync_with_master
+--sync_slave_with_master
--connection master
#
diff --git a/mysql-test/suite/rpl_ndb/combinations b/mysql-test/suite/rpl_ndb/combinations
new file mode 100644
index 00000000000..75712d234e1
--- /dev/null
+++ b/mysql-test/suite/rpl_ndb/combinations
@@ -0,0 +1,5 @@
+[row]
+binlog-format=row
+
+[mix]
+binlog-format=mixed
diff --git a/mysql-test/suite/rpl_ndb/my.cnf b/mysql-test/suite/rpl_ndb/my.cnf
index 58fec36eedd..191683fc9df 100644
--- a/mysql-test/suite/rpl_ndb/my.cnf
+++ b/mysql-test/suite/rpl_ndb/my.cnf
@@ -1,5 +1,6 @@
!include include/default_mysqld.cnf
!include include/default_ndbd.cnf
+!include include/default_client.cnf
[cluster_config.1]
NoOfReplicas= 2
@@ -29,16 +30,6 @@ log-bin= master-bin
# starting the mysqld
#!use-slave-opt
-# Connect mysqld in the second cluster as save to first mysqld
-# Hardcode the host to 127.0.0.1 until running on more
-# than one host and it probably need to be masked anyway
-# master-host= @mysqld.1.#host
-master-host= 127.0.0.1
-master-port= @mysqld.1.1.port
-master-password= @mysqld.1.1.#password
-master-user= @mysqld.1.1.#user
-master-connect-retry= 1
-
log-bin= slave-bin
relay-log= slave-relay-bin
diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_2innodb.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_2innodb.result
index 9857f621bbe..b4e6c7c77b5 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_2innodb.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_2innodb.result
@@ -924,4 +924,5 @@ DELETE FROM t1;
--- End test 5 key partition testing ---
--- Do Cleanup ---
DROP TABLE IF EXISTS t1;
+set @@global.slave_exec_mode= DEFAULT;
drop table mysql.ndb_apply_status;
diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_2myisam.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_2myisam.result
index 44ee9d01709..935a7d61dfa 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_2myisam.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_2myisam.result
@@ -924,4 +924,5 @@ DELETE FROM t1;
--- End test 5 key partition testing ---
--- Do Cleanup ---
DROP TABLE IF EXISTS t1;
+set @@global.slave_exec_mode= DEFAULT;
drop table mysql.ndb_apply_status;
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..6680f3fd70f 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_basic.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_basic.result
@@ -179,6 +179,8 @@ Last_IO_Errno <Last_IO_Errno>
Last_IO_Error <Last_IO_Error>
Last_SQL_Errno <Last_SQL_Errno>
Last_SQL_Error <Last_SQL_Error>
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
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_binlog_format_errors.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_binlog_format_errors.result
new file mode 100644
index 00000000000..35f54455179
--- /dev/null
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_binlog_format_errors.result
@@ -0,0 +1,174 @@
+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;
+==== Initialize ====
+[on slave]
+SET @old_binlog_format= @@global.binlog_format;
+INSTALL PLUGIN example SONAME 'ha_example.so';
+[on master]
+SET @old_binlog_format= @@global.binlog_format;
+INSTALL PLUGIN example SONAME 'ha_example.so';
+CREATE TABLE t (a VARCHAR(100)) ENGINE = MYISAM;
+CREATE TABLE t_self_logging (a VARCHAR(100)) ENGINE = NDB;
+CREATE TABLE t_row (a VARCHAR(100)) ENGINE = INNODB;
+CREATE TABLE t_stmt (a VARCHAR(100)) ENGINE = EXAMPLE;
+CREATE TABLE t_slave_stmt (a VARCHAR(100)) ENGINE = MYISAM;
+CREATE TABLE t_autoinc (a INT KEY AUTO_INCREMENT) ENGINE = MYISAM;
+CREATE TABLE t_double_autoinc (a INT KEY AUTO_INCREMENT) ENGINE = MYISAM;
+CREATE TRIGGER trig_autoinc BEFORE INSERT ON t_autoinc FOR EACH ROW BEGIN INSERT INTO t_stmt VALUES ('x'); END;
+CREATE TRIGGER trig_double_autoinc BEFORE INSERT ON t_double_autoinc FOR EACH ROW BEGIN INSERT INTO t_autoinc VALUES (NULL); END;
+CREATE DATABASE other;
+SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
+[on slave]
+DROP TABLE t_slave_stmt;
+CREATE TABLE t_slave_stmt (a INT) ENGINE = EXAMPLE;
+[on master]
+BINLOG '
+1gRVSg8BAAAAZgAAAGoAAAABAAQANS4xLjM2LWRlYnVnLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAADWBFVKEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC
+';
+==== Test ====
+---- binlog_format=row ----
+* Modify tables of more than one engine, one of which is self-logging
+CREATE TRIGGER trig_1 AFTER INSERT ON t_self_logging FOR EACH ROW BEGIN INSERT INTO t VALUES (1); END;
+INSERT INTO t_self_logging VALUES (1);
+ERROR HY000: Cannot execute statement: binlogging impossible since more than one engine is involved and at least one engine is self-logging.
+DROP trigger trig_1;
+SELECT * FROM t_self_logging /* Should be empty */;
+a
+SELECT * FROM t /* Should be empty */;
+a
+* Modify both row-only and stmt-only table
+CREATE TRIGGER trig_2 AFTER INSERT ON t_stmt FOR EACH ROW BEGIN INSERT INTO t_row VALUES(1); END;
+INSERT INTO t_stmt VALUES (1);
+ERROR HY000: Cannot execute statement: binlogging impossible since both row-incapable engines and statement-incapable engines are involved.
+SELECT * FROM t_stmt /* should be empty */;
+a
+DROP TRIGGER trig_2;
+* Stmt-only table and binlog_format=row
+INSERT INTO t_stmt VALUES (1);
+ERROR HY000: Cannot execute statement: binlogging impossible since BINLOG_FORMAT = ROW and at least one table uses a storage engine limited to statement-logging.
+SELECT * FROM t_stmt /* should be empty */;
+a
+* Row injection and stmt-only table: in slave sql thread
+INSERT INTO t_slave_stmt VALUES (1);
+[on slave]
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Error 'Cannot execute row injection: binlogging impossible since at least one table uses a storage engine limited to statement-logging.' on opening tables
+set global sql_slave_skip_counter=1;
+include/start_slave.inc
+SELECT * FROM t_slave_stmt /* should be empty */;
+a
+[on master]
+* Row injection and stmt-only table: use BINLOG statement
+BINLOG '
+1gRVShMBAAAALwAAAEABAAAAABcAAAAAAAAABHRlc3QABnRfc3RtdAABDwJkAAE=
+1gRVShcBAAAAIAAAAGABAAAQABcAAAAAAAEAAf/+ATE=
+';
+ERROR HY000: Cannot execute row injection: binlogging impossible since at least one table uses a storage engine limited to statement-logging.
+SELECT * FROM t_stmt /* should be empty */;
+a
+---- binlog_format=mixed ----
+[on slave]
+include/stop_slave.inc
+SET @@global.binlog_format = MIXED;
+include/start_slave.inc
+[on master]
+SET @@global.binlog_format = MIXED;
+SET @@session.binlog_format = MIXED;
+* Unsafe statement and stmt-only engine
+INSERT INTO t_stmt VALUES (UUID());
+ERROR HY000: Cannot execute statement: binlogging of unsafe statement is impossible when storage engine is limited to statement-logging and BINLOG_FORMAT = MIXED. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+* Multi-unsafe statement and stmt-only engine
+INSERT DELAYED INTO t_double_autoinc SELECT CONCAT(UUID(), @@hostname, NULL) FROM mysql.general_log LIMIT 1;
+ERROR HY000: Cannot execute statement: binlogging of unsafe statement is impossible when storage engine is limited to statement-logging and BINLOG_FORMAT = MIXED. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
+---- binlog_format=statement ----
+[on slave]
+include/stop_slave.inc
+SET @@global.binlog_format = STATEMENT;
+include/start_slave.inc
+[on master]
+SET @@global.binlog_format = STATEMENT;
+SET @@session.binlog_format = STATEMENT;
+* Row-only engine and binlog_format=statement: innodb-specific message
+INSERT INTO t_row VALUES (1);
+ERROR HY000: Cannot execute statement: binlogging impossible since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
+SELECT * FROM t_row /* should be empty */;
+a
+* Row-only engine and binlog_format=statement: generic message
+SET @@session.debug= '+d,no_innodb_binlog_errors';
+INSERT INTO t_row VALUES (1);
+ERROR HY000: Cannot execute statement: binlogging impossible since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-logging.
+SELECT * FROM t_row /* should be empty */;
+a
+* Same statement, but db filtered out - no error
+USE other;
+INSERT INTO test.t_row VALUES (1);
+USE test;
+SET @@session.debug= '';
+SELECT * FROM t_row /* should contain the value 1 */;
+a
+1
+* Row injection and binlog_format=statement: BINLOG statement
+BINLOG '
+cNpVShMBAAAAKgAAADYBAAAAABcAAAAAAAAABHRlc3QAAXQAAQ8CZAAB
+cNpVShcBAAAAIAAAAFYBAAAQABcAAAAAAAEAAf/+ATE=
+';
+ERROR HY000: Cannot execute row injection: binlogging impossible since BINLOG_FORMAT = STATEMENT.
+SELECT * FROM t /* should be empty */;
+a
+* Same statement, but db filtered out - no error
+USE other;
+BINLOG '
+cNpVShMBAAAAKgAAADYBAAAAABcAAAAAAAAABHRlc3QAAXQAAQ8CZAAB
+cNpVShcBAAAAIAAAAFYBAAAQABcAAAAAAAEAAf/+ATE=
+';
+USE test;
+SELECT * FROM t /* should contain the value 1 */;
+a
+1
+DELETE FROM t;
+* Unsafe statement and binlog_format=statement
+INSERT INTO t VALUES (COALESCE(1, UUID()));
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
+SELECT * FROM t /* should contain the value 1 */;
+a
+1
+DELETE FROM t;
+* Same statement, but db filtered out - no message
+USE other;
+INSERT INTO test.t VALUES (COALESCE(1, UUID()));
+USE test;
+SELECT * FROM t /* should contain the value 1 */;
+a
+1
+DELETE FROM t;
+---- master: binlog_format=mixed, slave: binlog_format=statement ----
+SET @@global.binlog_format = MIXED;
+SET @@session.binlog_format = MIXED;
+* Row injection and binlog_format=statement: in slave sql thread
+INSERT INTO t VALUES (COALESCE(1, UUID()));
+[on slave]
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Error 'Cannot execute row injection: binlogging impossible since BINLOG_FORMAT = STATEMENT.' on opening tables
+set global sql_slave_skip_counter=1;
+include/start_slave.inc
+SELECT * FROM t /* should be empty */;
+a
+[on master]
+==== Clean up ====
+DROP TRIGGER trig_autoinc;
+DROP TRIGGER trig_double_autoinc;
+DROP TABLE t, t_self_logging, t_row, t_stmt, t_slave_stmt, t_autoinc, t_double_autoinc;
+DROP DATABASE other;
+SET @@global.binlog_format = @old_binlog_format;
+SET @@session.binlog_format = @old_binlog_format;
+UNINSTALL PLUGIN example;
+[on slave]
+SET @@global.binlog_format = @old_binlog_format;
+SET @@session.binlog_format = @old_binlog_format;
+UNINSTALL PLUGIN example;
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..aeb9e215d15 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular.result
@@ -56,6 +56,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
SELECT * FROM t1 ORDER BY a;
a b
1 2
@@ -99,5 +101,7 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 2
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..8eb7df3f890 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
@@ -53,6 +53,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 2
SELECT * FROM t1 ORDER BY a;
a b
1 2
@@ -102,4 +104,6 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
DROP TABLE t1;
diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_partitions.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_partitions.result
index c906f00bd40..467a9435104 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_partitions.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_partitions.result
@@ -524,7 +524,7 @@ id hex(b1) vc bc d f total y t
--- Check Update on slave ---
SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412;
id hex(b1) vc bc d f total y t
-412 0 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2006-02-22
+412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2005-11-14
--- Remove a record from t1 on master ---
DELETE FROM t1 WHERE id = 42;
--- Show current count on master for 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..ef9791210bc 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result
@@ -9,6 +9,8 @@ call mtr.add_suppression("Slave: Unknown table 't6' Error_code: 1051");
*** On Slave ***
STOP SLAVE;
RESET SLAVE;
+SET @saved_slave_type_conversions = @@slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
CREATE TABLE t1 (a INT, b INT PRIMARY KEY, c CHAR(20),
d FLOAT DEFAULT '2.00',
e CHAR(4) DEFAULT 'TEST')
@@ -32,6 +34,7 @@ a b c d e
1 2 TEXAS NULL NULL
2 1 AUSTIN NULL NULL
3 4 QA NULL NULL
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
*** Drop t1 ***
DROP TABLE t1;
*** Create t2 on slave ***
@@ -54,45 +57,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.
+Slave failed with Error 1677
STOP SLAVE;
RESET SLAVE;
SELECT * FROM t2 ORDER BY a;
@@ -119,47 +84,9 @@ 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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
*** Drop t3 ***
@@ -181,47 +108,9 @@ 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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
*** Drop t4 ***
@@ -243,47 +132,9 @@ 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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
*** Drop t5 ***
@@ -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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
*** Drop t6 ***
DROP TABLE t6;
@@ -416,47 +229,9 @@ 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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
*** Drop t10 ***
@@ -464,7 +239,7 @@ DROP TABLE t10;
*** Create t11 on slave ***
STOP SLAVE;
RESET SLAVE;
-CREATE TABLE t11 (a INT KEY, b BLOB, f TEXT,
+CREATE TABLE t11 (a INT KEY, b BLOB, f INT,
c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='NDB';
*** Create t11 on Master ***
CREATE TABLE t11 (a INT PRIMARY KEY, b BLOB, c VARCHAR(254)
@@ -477,47 +252,9 @@ 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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
*** Drop t11 ***
@@ -729,45 +466,7 @@ 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'
+Slave failed with Error 1060
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;
*** Try to insert in master ****
@@ -867,47 +566,9 @@ 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 1677 ***
********************************************
-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
+Slave failed with Error 1677
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
** 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..2df70ace0c1 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_idempotent.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_idempotent.result
@@ -33,15 +33,15 @@ 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
+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 Replicate_Ignore_Server_Ids Master_Server_Id
+<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 1
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
+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 Replicate_Ignore_Server_Ids Master_Server_Id
+<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 1
START SLAVE;
SELECT * FROM t1 ORDER BY c3;
c1 c2 c3
@@ -68,6 +68,6 @@ 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
+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 Replicate_Ignore_Server_Ids Master_Server_Id
+<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 1
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..67aa0955b71 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result
@@ -34,16 +34,19 @@ 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;
+show binlog events from 107 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;
+show binlog events from 107 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;
+show binlog events from 107 limit 1,4;
Log_name Pos Event_type Server_id End_log_pos Info
+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: #
flush logs;
create table t3 (a int)ENGINE=NDB;
select * from t1 order by 1 asc;
@@ -267,7 +270,7 @@ Master_User root
Master_Port MASTER_PORT
Connect_Retry 1
Master_Log_File master-bin.000002
-Read_Master_Log_Pos 623
+Read_Master_Log_Pos #
Relay_Log_File #
Relay_Log_Pos #
Relay_Master_Log_File master-bin.000002
@@ -282,7 +285,7 @@ Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
-Exec_Master_Log_Pos 623
+Exec_Master_Log_Pos #
Relay_Log_Space #
Until_Condition None
Until_Log_File
@@ -299,6 +302,8 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
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_implicit_commit_binlog.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_implicit_commit_binlog.result
new file mode 100644
index 00000000000..f29953a1dd5
--- /dev/null
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_implicit_commit_binlog.result
@@ -0,0 +1,660 @@
+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;
+#########################################################################
+# CONFIGURATION
+#########################################################################
+CREATE TABLE tt_1 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = NDB;
+CREATE TABLE tt_2 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = NDB;
+CREATE TABLE nt_1 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = MyIsam;
+INSERT INTO tt_1(ddl_case) VALUES(0);
+INSERT INTO tt_2(ddl_case) VALUES(0);
+#########################################################################
+# CHECK IMPLICT COMMIT
+#########################################################################
+SET AUTOCOMMIT= 0;
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (41);
+LOAD INDEX INTO CACHE nt_1 IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.nt_1 preload_keys status OK
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Table_map # # table_id: # (test.tt_2)
+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: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (40);
+LOAD INDEX INTO CACHE tt_1, tt_2 IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.tt_1 preload_keys note The storage engine for the table doesn't support preload_keys
+test.tt_2 preload_keys note The storage engine for the table doesn't support preload_keys
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (39);
+ANALYZE TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 analyze status Table is already up to date
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; ANALYZE TABLE nt_1
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (38);
+CHECK TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 check status OK
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (37);
+OPTIMIZE TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 optimize status Table is already up to date
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; OPTIMIZE TABLE nt_1
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (36);
+REPAIR TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 repair status OK
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; REPAIR TABLE nt_1
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (35);
+LOCK TABLES tt_1 WRITE;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (34);
+UNLOCK TABLES;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (33);
+CREATE USER 'user'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE USER 'user'@'localhost'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (32);
+GRANT ALL ON *.* TO 'user'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; GRANT ALL ON *.* TO 'user'@'localhost'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (31);
+SET PASSWORD FOR 'user'@'localhost' = PASSWORD('newpass');
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; SET PASSWORD FOR 'user'@'localhost'='*D8DECEC305209EEFEC43008E1D420E1AA06B19E0'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (30);
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'localhost'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (29);
+RENAME USER 'user'@'localhost' TO 'user_new'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; RENAME USER 'user'@'localhost' TO 'user_new'@'localhost'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (28);
+DROP USER 'user_new'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP USER 'user_new'@'localhost'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (27);
+CREATE EVENT evt ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO SELECT * FROM tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` EVENT evt ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO SELECT * FROM tt_1
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (26);
+ALTER EVENT evt COMMENT 'evt';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; ALTER EVENT evt COMMENT 'evt'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (25);
+DROP EVENT evt;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP EVENT evt
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (24);
+CREATE TRIGGER tr AFTER INSERT ON tt_1 FOR EACH ROW UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` TRIGGER tr AFTER INSERT ON tt_1 FOR EACH ROW UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (23);
+DROP TRIGGER tr;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TRIGGER tr
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (22);
+CREATE FUNCTION fc () RETURNS VARCHAR(64) RETURN "fc";
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `fc`() RETURNS varchar(64) CHARSET latin1
+RETURN "fc"
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (21);
+ALTER FUNCTION fc COMMENT 'fc';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; ALTER FUNCTION fc COMMENT 'fc'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (20);
+DROP FUNCTION fc;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP FUNCTION fc
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (19);
+CREATE PROCEDURE pc () UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `pc`()
+UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (18);
+ALTER PROCEDURE pc COMMENT 'pc';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; ALTER PROCEDURE pc COMMENT 'pc'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (17);
+DROP PROCEDURE pc;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP PROCEDURE pc
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (16);
+CREATE VIEW v AS SELECT * FROM tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS SELECT * FROM tt_1
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (15);
+ALTER VIEW v AS SELECT * FROM tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; ALTER ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS SELECT * FROM tt_1
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (14);
+DROP VIEW v;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP VIEW v
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (13);
+CREATE INDEX ix ON tt_1(ddl_case);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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`; CREATE INDEX ix ON tt_1(ddl_case)
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (12);
+DROP INDEX ix ON tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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 INDEX ix ON tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (11);
+CREATE TEMPORARY TABLE tt_xx (a int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx (a int)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (10);
+ALTER TABLE tt_xx ADD COLUMN (b int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (9);
+ALTER TABLE tt_xx RENAME new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (8);
+DROP TEMPORARY TABLE IF EXISTS new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS `new_tt_xx` /* generated by server */
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (7);
+CREATE TABLE tt_xx (a int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE tt_xx (a int)
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (6);
+ALTER TABLE tt_xx ADD COLUMN (b int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; ALTER TABLE tt_xx ADD COLUMN (b int)
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (5);
+RENAME TABLE tt_xx TO new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; RENAME TABLE tt_xx TO new_tt_xx
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (4);
+TRUNCATE TABLE new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE new_tt_xx
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (3);
+DROP TABLE IF EXISTS tt_xx, new_tt_xx;
+Warnings:
+Note 1051 Unknown table 'tt_xx'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx, new_tt_xx
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (2);
+CREATE DATABASE db;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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 # # CREATE DATABASE db
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (1);
+DROP DATABASE IF EXISTS db;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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 # # DROP DATABASE IF EXISTS db
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# CHECK CONSISTENCY
+###################################################################################
+Comparing tables master:test.tt_1 and slave:test.tt_1
+###################################################################################
+# CLEAN
+###################################################################################
+DROP TABLE tt_1;
+DROP TABLE tt_2;
+DROP TABLE nt_1;
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..43efc10c2e1
--- /dev/null
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_tables.result
@@ -0,0 +1,246 @@
+==== 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 innodb_myisam VALUES (15);
+INSERT INTO innodb_myisam VALUES (16);
+ROLLBACK;
+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 innodb_myisam VALUES (39);
+INSERT INTO innodb_myisam VALUES (40);
+ROLLBACK;
+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;
+==== Show results ====
+SELECT * FROM myisam_innodb ORDER BY a;
+a
+1
+2
+25
+26
+49
+50
+SELECT * FROM innodb_myisam ORDER BY a;
+a
+3
+4
+27
+28
+51
+52
+SELECT * FROM myisam_ndb ORDER BY a;
+a
+5
+6
+29
+30
+53
+54
+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..66eeaa6357c 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result
@@ -26,11 +26,11 @@ stop slave;
SELECT @the_pos:=Position,@the_file:=SUBSTRING_INDEX(FILE, '/', -1)
FROM mysql.ndb_binlog_index WHERE epoch = <the_epoch> ;
@the_pos:=Position @the_file:=SUBSTRING_INDEX(FILE, '/', -1)
-106 master-bin.000001
+107 master-bin.000001
CHANGE MASTER TO
master_port=<MASTER_PORT1>,
master_log_file = 'master-bin.000001',
-master_log_pos = 106 ;
+master_log_pos = 107 ;
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_row_implicit_commit_binlog.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_row_implicit_commit_binlog.result
new file mode 100644
index 00000000000..dd8bb3a0c41
--- /dev/null
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_row_implicit_commit_binlog.result
@@ -0,0 +1,658 @@
+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;
+#########################################################################
+# CONFIGURATION
+#########################################################################
+CREATE TABLE tt_1 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = NDB;
+CREATE TABLE tt_2 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = NDB;
+CREATE TABLE nt_1 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = MyIsam;
+INSERT INTO tt_1(ddl_case) VALUES(0);
+INSERT INTO tt_2(ddl_case) VALUES(0);
+#########################################################################
+# CHECK IMPLICT COMMIT
+#########################################################################
+SET AUTOCOMMIT= 0;
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (41);
+LOAD INDEX INTO CACHE nt_1 IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.nt_1 preload_keys status OK
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+master-bin.000001 # Table_map # # table_id: # (test.tt_2)
+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: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (40);
+LOAD INDEX INTO CACHE tt_1, tt_2 IGNORE LEAVES;
+Table Op Msg_type Msg_text
+test.tt_1 preload_keys note The storage engine for the table doesn't support preload_keys
+test.tt_2 preload_keys note The storage engine for the table doesn't support preload_keys
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (39);
+ANALYZE TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 analyze status Table is already up to date
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; ANALYZE TABLE nt_1
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (38);
+CHECK TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 check status OK
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (37);
+OPTIMIZE TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 optimize status Table is already up to date
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; OPTIMIZE TABLE nt_1
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (36);
+REPAIR TABLE nt_1;
+Table Op Msg_type Msg_text
+test.nt_1 repair status OK
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; REPAIR TABLE nt_1
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (35);
+LOCK TABLES tt_1 WRITE;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (34);
+UNLOCK TABLES;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (33);
+CREATE USER 'user'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE USER 'user'@'localhost'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (32);
+GRANT ALL ON *.* TO 'user'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; GRANT ALL ON *.* TO 'user'@'localhost'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (31);
+SET PASSWORD FOR 'user'@'localhost' = PASSWORD('newpass');
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; SET PASSWORD FOR 'user'@'localhost'='*D8DECEC305209EEFEC43008E1D420E1AA06B19E0'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (mysql.user)
+master-bin.000001 # Update_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.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (30);
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'localhost'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (29);
+RENAME USER 'user'@'localhost' TO 'user_new'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; RENAME USER 'user'@'localhost' TO 'user_new'@'localhost'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (28);
+DROP USER 'user_new'@'localhost';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP USER 'user_new'@'localhost'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (27);
+CREATE EVENT evt ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO SELECT * FROM tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` EVENT evt ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO SELECT * FROM tt_1
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (26);
+ALTER EVENT evt COMMENT 'evt';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; ALTER EVENT evt COMMENT 'evt'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (25);
+DROP EVENT evt;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP EVENT evt
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (24);
+CREATE TRIGGER tr AFTER INSERT ON tt_1 FOR EACH ROW UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` TRIGGER tr AFTER INSERT ON tt_1 FOR EACH ROW UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (23);
+DROP TRIGGER tr;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TRIGGER tr
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (22);
+CREATE FUNCTION fc () RETURNS VARCHAR(64) RETURN "fc";
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `fc`() RETURNS varchar(64) CHARSET latin1
+RETURN "fc"
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (21);
+ALTER FUNCTION fc COMMENT 'fc';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; ALTER FUNCTION fc COMMENT 'fc'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (20);
+DROP FUNCTION fc;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP FUNCTION fc
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (19);
+CREATE PROCEDURE pc () UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `pc`()
+UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (18);
+ALTER PROCEDURE pc COMMENT 'pc';
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; ALTER PROCEDURE pc COMMENT 'pc'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (17);
+DROP PROCEDURE pc;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP PROCEDURE pc
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (16);
+CREATE VIEW v AS SELECT * FROM tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS SELECT * FROM tt_1
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (15);
+ALTER VIEW v AS SELECT * FROM tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; ALTER ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS SELECT * FROM tt_1
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (14);
+DROP VIEW v;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP VIEW v
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (13);
+CREATE INDEX ix ON tt_1(ddl_case);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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`; CREATE INDEX ix ON tt_1(ddl_case)
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (12);
+DROP INDEX ix ON tt_1;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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 INDEX ix ON tt_1
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (11);
+CREATE TEMPORARY TABLE tt_xx (a int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (10);
+ALTER TABLE tt_xx ADD COLUMN (b int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (9);
+ALTER TABLE tt_xx RENAME new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (8);
+DROP TEMPORARY TABLE IF EXISTS new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (7);
+CREATE TABLE tt_xx (a int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE tt_xx (a int)
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (6);
+ALTER TABLE tt_xx ADD COLUMN (b int);
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; ALTER TABLE tt_xx ADD COLUMN (b int)
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (5);
+RENAME TABLE tt_xx TO new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; RENAME TABLE tt_xx TO new_tt_xx
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (4);
+TRUNCATE TABLE new_tt_xx;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE new_tt_xx
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (3);
+DROP TABLE IF EXISTS tt_xx, new_tt_xx;
+Warnings:
+Note 1051 Unknown table 'tt_xx'
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS tt_xx, new_tt_xx
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (2);
+CREATE DATABASE db;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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 # # CREATE DATABASE db
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+INSERT INTO tt_1(ddl_case) VALUES (1);
+DROP DATABASE IF EXISTS db;
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.tt_1)
+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 # # DROP DATABASE IF EXISTS db
+-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
+
+###################################################################################
+# CHECK CONSISTENCY
+###################################################################################
+Comparing tables master:test.tt_1 and slave:test.tt_1
+###################################################################################
+# CLEAN
+###################################################################################
+DROP TABLE tt_1;
+DROP TABLE tt_2;
+DROP TABLE nt_1;
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..b61f5550719 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_sync.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_sync.result
@@ -107,6 +107,8 @@ Last_IO_Errno <Last_IO_Errno>
Last_IO_Error <Last_IO_Error>
Last_SQL_Errno 0
Last_SQL_Error
+Replicate_Ignore_Server_Ids
+Master_Server_Id 1
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..603bb61e2d5 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
@@ -476,6 +476,8 @@ ALTER TABLE t6 MODIFY c CHAR(128) CHARACTER SET utf8 NOT NULL;
CREATE TABLE t7 (i INT NOT NULL,
c CHAR(255) CHARACTER SET utf8 NOT NULL,
j INT NOT NULL) ENGINE = 'NDB' ;
+SET @saved_slave_type_conversions = @@slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
[expecting slave to replicate correctly]
INSERT INTO t1 VALUES (1, "", 1);
INSERT INTO t1 VALUES (2, repeat(_utf8'a', 16), 2);
@@ -484,11 +486,7 @@ Comparing tables master:test.t1 and slave:test.t1
INSERT INTO t2 VALUES (1, "", 1);
INSERT INTO t2 VALUES (2, repeat(_utf8'a', 16), 2);
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.
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
RESET MASTER;
STOP SLAVE;
RESET SLAVE;
@@ -501,7 +499,7 @@ Comparing tables master:test.t4 and slave:test.t4
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.
+Column 1 of table 'test.t5' cannot be converted from type 'char(255)' to type 'char(16)'
RESET MASTER;
STOP SLAVE;
RESET SLAVE;
@@ -510,7 +508,7 @@ START SLAVE;
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.
+Column 1 of table 'test.t6' cannot be converted from type 'char(255)' to type 'char(128)'
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..6c9e20fd56a 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result
@@ -29,16 +29,16 @@ a b
DROP TABLE t1;
SHOW BINLOG EVENTS;
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 4 Format_desc 1 107 Server ver: SERVER_VERSION, Binlog ver: 4
+master-bin.000001 107 Query 1 224 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB
+master-bin.000001 224 Query 1 288 BEGIN
+master-bin.000001 288 Table_map 1 331 table_id: # (test.t1)
+master-bin.000001 331 Table_map 1 393 table_id: # (mysql.ndb_apply_status)
+master-bin.000001 393 Write_rows 1 452 table_id: #
+master-bin.000001 452 Write_rows 1 499 table_id: # flags: STMT_END_F
+master-bin.000001 499 Query 1 564 COMMIT
+master-bin.000001 564 Query 1 644 use `test`; TRUNCATE TABLE t1
+master-bin.000001 644 Query 1 720 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);
@@ -65,27 +65,27 @@ a b
DROP TABLE t1;
SHOW BINLOG EVENTS;
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 4 Format_desc 1 107 Server ver: SERVER_VERSION, Binlog ver: 4
+master-bin.000001 107 Query 1 224 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB
+master-bin.000001 224 Query 1 288 BEGIN
+master-bin.000001 288 Table_map 1 331 table_id: # (test.t1)
+master-bin.000001 331 Table_map 1 393 table_id: # (mysql.ndb_apply_status)
+master-bin.000001 393 Write_rows 1 452 table_id: #
+master-bin.000001 452 Write_rows 1 499 table_id: # flags: STMT_END_F
+master-bin.000001 499 Query 1 564 COMMIT
+master-bin.000001 564 Query 1 644 use `test`; TRUNCATE TABLE t1
+master-bin.000001 644 Query 1 720 use `test`; DROP TABLE t1
+master-bin.000001 720 Query 1 837 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB
+master-bin.000001 837 Query 1 901 BEGIN
+master-bin.000001 901 Table_map 1 944 table_id: # (test.t1)
+master-bin.000001 944 Table_map 1 1006 table_id: # (mysql.ndb_apply_status)
+master-bin.000001 1006 Write_rows 1 1065 table_id: #
+master-bin.000001 1065 Write_rows 1 1112 table_id: # flags: STMT_END_F
+master-bin.000001 1112 Query 1 1177 COMMIT
+master-bin.000001 1177 Query 1 1241 BEGIN
+master-bin.000001 1241 Table_map 1 1284 table_id: # (test.t1)
+master-bin.000001 1284 Table_map 1 1346 table_id: # (mysql.ndb_apply_status)
+master-bin.000001 1346 Write_rows 1 1405 table_id: #
+master-bin.000001 1405 Delete_rows 1 1444 table_id: # flags: STMT_END_F
+master-bin.000001 1444 Query 1 1509 COMMIT
+master-bin.000001 1509 Query 1 1585 use `test`; DROP TABLE t1
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_2innodb.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_2innodb.test
index 3b075808481..ce16170fde3 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_2innodb.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_2innodb.test
@@ -8,6 +8,9 @@
# test and to have control over the tests.
##############################################################
-- source include/have_ndb.inc
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+-- source include/have_binlog_format_mixed_or_row.inc
-- source include/master-slave.inc
-- connection slave
@@ -31,5 +34,6 @@ CREATE TABLE mysql.ndb_apply_status
--source extra/rpl_tests/rpl_ndb_2multi_eng.test
+set @@global.slave_exec_mode= DEFAULT;
--connection slave
drop table mysql.ndb_apply_status;
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_2myisam.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_2myisam.test
index 560efec255b..8bd9be0c346 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_2myisam.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_2myisam.test
@@ -8,6 +8,9 @@
# test and to have control over the tests.
##############################################################
-- source include/have_ndb.inc
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+-- source include/have_binlog_format_mixed_or_row.inc
-- source include/master-slave.inc
-- connection slave
@@ -30,5 +33,6 @@ CREATE TABLE mysql.ndb_apply_status
--source extra/rpl_tests/rpl_ndb_2multi_eng.test
+set @@global.slave_exec_mode= DEFAULT;
--connection slave
drop table mysql.ndb_apply_status;
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..04ef7f31b7c 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test
@@ -1,4 +1,7 @@
--source include/have_ndb.inc
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+--source include/have_binlog_format_mixed_or_row.inc
--source include/ndb_master-slave.inc
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_binlog_format_errors-master.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_binlog_format_errors-master.opt
new file mode 100644
index 00000000000..efea2bf1db5
--- /dev/null
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_binlog_format_errors-master.opt
@@ -0,0 +1 @@
+--innodb $EXAMPLE_PLUGIN_OPT --binlog-ignore-db=other
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_binlog_format_errors-slave.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_binlog_format_errors-slave.opt
new file mode 100644
index 00000000000..ffa981152ea
--- /dev/null
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_binlog_format_errors-slave.opt
@@ -0,0 +1 @@
+--innodb $EXAMPLE_PLUGIN_OPT
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_binlog_format_errors.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_binlog_format_errors.test
new file mode 100644
index 00000000000..5bf3d39750b
--- /dev/null
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_binlog_format_errors.test
@@ -0,0 +1,262 @@
+# ==== Purpose ====
+#
+# Verify that errors or warnings are issued for all error conditions
+# related to deciding the binlog format of a statement. The possible
+# errors are listed in a comment above decide_logging_format() in
+# sql_base.cc.
+#
+# ==== Method ====
+#
+# Each error condition is executed; we verify that there is an error.
+#
+# ==== Related bugs ====
+#
+# BUG#39934: Slave stops for engine that only support row-based logging
+# BUG#42829: binlogging enabled for all schemas regardless of binlog-db-db / binlog-ignore-db
+#
+# ==== Related test cases ====
+#
+# binlog.binlog_unsafe verifies more thoroughly that a warning is
+# given for the case when an unsafe statement is executed and
+# binlog_format = STATEMENT.
+
+# Need debug so that 'SET @@session.debug' works.
+--source include/have_debug.inc
+# Need example plugin because it is the only statement-only engine.
+--source include/have_example_plugin.inc
+# The test changes binlog_format, so there is no reason to run it
+# under more than one binlog format.
+--source include/have_binlog_format_row.inc
+--source include/have_ndb.inc
+--source include/have_innodb.inc
+--source include/ndb_master-slave.inc
+
+disable_query_log;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+call mtr.add_suppression("Slave: Cannot execute row injection:");
+enable_query_log;
+
+--echo ==== Initialize ====
+
+--echo [on slave]
+--connection slave
+
+SET @old_binlog_format= @@global.binlog_format;
+INSTALL PLUGIN example SONAME 'ha_example.so';
+
+--echo [on master]
+--connection master
+
+SET @old_binlog_format= @@global.binlog_format;
+INSTALL PLUGIN example SONAME 'ha_example.so';
+
+CREATE TABLE t (a VARCHAR(100)) ENGINE = MYISAM;
+CREATE TABLE t_self_logging (a VARCHAR(100)) ENGINE = NDB;
+CREATE TABLE t_row (a VARCHAR(100)) ENGINE = INNODB;
+CREATE TABLE t_stmt (a VARCHAR(100)) ENGINE = EXAMPLE;
+CREATE TABLE t_slave_stmt (a VARCHAR(100)) ENGINE = MYISAM;
+CREATE TABLE t_autoinc (a INT KEY AUTO_INCREMENT) ENGINE = MYISAM;
+CREATE TABLE t_double_autoinc (a INT KEY AUTO_INCREMENT) ENGINE = MYISAM;
+
+--eval CREATE TRIGGER trig_autoinc BEFORE INSERT ON t_autoinc FOR EACH ROW BEGIN INSERT INTO t_stmt VALUES ('x'); END
+--eval CREATE TRIGGER trig_double_autoinc BEFORE INSERT ON t_double_autoinc FOR EACH ROW BEGIN INSERT INTO t_autoinc VALUES (NULL); END
+
+CREATE DATABASE other;
+
+# This makes the innodb table row-only
+SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
+
+--echo [on slave]
+--sync_slave_with_master
+
+DROP TABLE t_slave_stmt;
+CREATE TABLE t_slave_stmt (a INT) ENGINE = EXAMPLE;
+
+--echo [on master]
+--connection master
+
+# This is a format description event. It is needed because any BINLOG
+# statement containing a row event must be preceded by a BINLOG
+# statement containing a format description event.
+BINLOG '
+1gRVSg8BAAAAZgAAAGoAAAABAAQANS4xLjM2LWRlYnVnLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAADWBFVKEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC
+';
+
+
+--echo ==== Test ====
+
+--echo ---- binlog_format=row ----
+
+--echo * Modify tables of more than one engine, one of which is self-logging
+--eval CREATE TRIGGER trig_1 AFTER INSERT ON t_self_logging FOR EACH ROW BEGIN INSERT INTO t VALUES (1); END
+--error ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE
+INSERT INTO t_self_logging VALUES (1);
+DROP trigger trig_1;
+SELECT * FROM t_self_logging /* Should be empty */;
+SELECT * FROM t /* Should be empty */;
+
+--echo * Modify both row-only and stmt-only table
+--eval CREATE TRIGGER trig_2 AFTER INSERT ON t_stmt FOR EACH ROW BEGIN INSERT INTO t_row VALUES(1); END
+--error ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE
+INSERT INTO t_stmt VALUES (1);
+SELECT * FROM t_stmt /* should be empty */;
+DROP TRIGGER trig_2;
+
+--echo * Stmt-only table and binlog_format=row
+--error ER_BINLOG_ROW_MODE_AND_STMT_ENGINE
+INSERT INTO t_stmt VALUES (1);
+SELECT * FROM t_stmt /* should be empty */;
+
+--echo * Row injection and stmt-only table: in slave sql thread
+INSERT INTO t_slave_stmt VALUES (1);
+--echo [on slave]
+--connection slave
+# 1664 = ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE
+--let $slave_sql_errno= 1664
+--let $show_sql_error= 1
+--source include/wait_for_slave_sql_error_and_skip.inc
+--connection slave
+SELECT * FROM t_slave_stmt /* should be empty */;
+
+--echo [on master]
+--connection master
+--echo * Row injection and stmt-only table: use BINLOG statement
+# This is a Table_map_event and a Write_rows_event. Together, they are
+# equivalent to 'INSERT INTO t_stmt VALUES (1)'
+--error ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE
+BINLOG '
+1gRVShMBAAAALwAAAEABAAAAABcAAAAAAAAABHRlc3QABnRfc3RtdAABDwJkAAE=
+1gRVShcBAAAAIAAAAGABAAAQABcAAAAAAAEAAf/+ATE=
+';
+SELECT * FROM t_stmt /* should be empty */;
+
+
+--echo ---- binlog_format=mixed ----
+
+--echo [on slave]
+--sync_slave_with_master
+--source include/stop_slave.inc
+SET @@global.binlog_format = MIXED;
+--source include/start_slave.inc
+--echo [on master]
+--connection master
+SET @@global.binlog_format = MIXED;
+SET @@session.binlog_format = MIXED;
+
+--echo * Unsafe statement and stmt-only engine
+--error ER_BINLOG_UNSAFE_AND_STMT_ENGINE
+INSERT INTO t_stmt VALUES (UUID());
+
+# Concatenate two unsafe values, and then concatenate NULL to
+# that so that the result is NULL and we instead use autoinc.
+--echo * Multi-unsafe statement and stmt-only engine
+--error ER_BINLOG_UNSAFE_AND_STMT_ENGINE
+INSERT DELAYED INTO t_double_autoinc SELECT CONCAT(UUID(), @@hostname, NULL) FROM mysql.general_log LIMIT 1;
+
+
+--echo ---- binlog_format=statement ----
+
+--echo [on slave]
+--sync_slave_with_master
+--source include/stop_slave.inc
+SET @@global.binlog_format = STATEMENT;
+--source include/start_slave.inc
+--echo [on master]
+--connection master
+SET @@global.binlog_format = STATEMENT;
+SET @@session.binlog_format = STATEMENT;
+
+--echo * Row-only engine and binlog_format=statement: innodb-specific message
+--error ER_BINLOG_STMT_MODE_AND_ROW_ENGINE
+INSERT INTO t_row VALUES (1);
+SELECT * FROM t_row /* should be empty */;
+
+# Commented out since innodb gives an error (this is a bug)
+#--echo * Same statement, but db filtered out - no error
+#USE other;
+#INSERT INTO test.t_row VALUES (1);
+#USE test;
+
+--echo * Row-only engine and binlog_format=statement: generic message
+SET @@session.debug= '+d,no_innodb_binlog_errors';
+--error ER_BINLOG_STMT_MODE_AND_ROW_ENGINE
+INSERT INTO t_row VALUES (1);
+SELECT * FROM t_row /* should be empty */;
+
+--echo * Same statement, but db filtered out - no error
+USE other;
+INSERT INTO test.t_row VALUES (1);
+USE test;
+SET @@session.debug= '';
+SELECT * FROM t_row /* should contain the value 1 */;
+
+--echo * Row injection and binlog_format=statement: BINLOG statement
+# This is a Table_map_event and a Write_rows_event. Together, they are
+# equivalent to 'INSERT INTO t VALUES (1)'.
+--error ER_BINLOG_ROW_INJECTION_AND_STMT_MODE
+BINLOG '
+cNpVShMBAAAAKgAAADYBAAAAABcAAAAAAAAABHRlc3QAAXQAAQ8CZAAB
+cNpVShcBAAAAIAAAAFYBAAAQABcAAAAAAAEAAf/+ATE=
+';
+SELECT * FROM t /* should be empty */;
+
+--echo * Same statement, but db filtered out - no error
+# This is a Table_map_event and a Write_rows_event. Together, they are
+# equivalent to 'INSERT INTO t VALUES (1)'.
+USE other;
+BINLOG '
+cNpVShMBAAAAKgAAADYBAAAAABcAAAAAAAAABHRlc3QAAXQAAQ8CZAAB
+cNpVShcBAAAAIAAAAFYBAAAQABcAAAAAAAEAAf/+ATE=
+';
+USE test;
+SELECT * FROM t /* should contain the value 1 */;
+DELETE FROM t;
+
+--echo * Unsafe statement and binlog_format=statement
+# This will give a warning.
+INSERT INTO t VALUES (COALESCE(1, UUID()));
+SELECT * FROM t /* should contain the value 1 */;
+DELETE FROM t;
+
+--echo * Same statement, but db filtered out - no message
+USE other;
+INSERT INTO test.t VALUES (COALESCE(1, UUID()));
+USE test;
+SELECT * FROM t /* should contain the value 1 */;
+DELETE FROM t;
+
+
+--echo ---- master: binlog_format=mixed, slave: binlog_format=statement ----
+
+SET @@global.binlog_format = MIXED;
+SET @@session.binlog_format = MIXED;
+
+--echo * Row injection and binlog_format=statement: in slave sql thread
+INSERT INTO t VALUES (COALESCE(1, UUID()));
+--echo [on slave]
+--connection slave
+# 1666 = ER_BINLOG_ROW_INJECTION_AND_STMT_MODE
+--let $slave_sql_errno= 1666
+--let $show_sql_error= 1
+--source include/wait_for_slave_sql_error_and_skip.inc
+--connection slave
+SELECT * FROM t /* should be empty */;
+--echo [on master]
+--connection master
+
+
+--echo ==== Clean up ====
+
+DROP TRIGGER trig_autoinc;
+DROP TRIGGER trig_double_autoinc;
+DROP TABLE t, t_self_logging, t_row, t_stmt, t_slave_stmt, t_autoinc, t_double_autoinc;
+DROP DATABASE other;
+SET @@global.binlog_format = @old_binlog_format;
+SET @@session.binlog_format = @old_binlog_format;
+UNINSTALL PLUGIN example;
+--echo [on slave]
+--sync_slave_with_master
+SET @@global.binlog_format = @old_binlog_format;
+SET @@session.binlog_format = @old_binlog_format;
+UNINSTALL PLUGIN example;
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_blob.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_blob.test
index 822f1f224cd..a79c62e2a10 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_blob.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_blob.test
@@ -1,4 +1,7 @@
--source include/have_ndb.inc
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+--source include/have_binlog_format_mixed_or_row.inc
--source include/ndb_master-slave.inc
#
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_blob2.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_blob2.test
index e29f24998fe..26946450e07 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_blob2.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_blob2.test
@@ -3,6 +3,11 @@
# Using wrapper to share test #
# code between engine tests #
#################################
+#
+# Since the master generates row-based events, the slave may not be in
+# STATEMENT mode to accept the events.
+#
+-- source include/have_binlog_format_mixed_or_row.inc
-- source include/have_ndb.inc
-- source include/ndb_master-slave.inc
let $engine_type=NDBCLUSTER;
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..bfa50537430 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test
@@ -1,4 +1,7 @@
--source include/have_ndb.inc
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+--source include/have_binlog_format_mixed_or_row.inc
--source include/ndb_master-slave.inc
# set up circular replication
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..58f8555afd1 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
@@ -15,11 +15,6 @@ skip-slave-start
[mysqld.2.slave]
server-id= 2
-master-host= 127.0.0.1
-master-port= @mysqld.2.1.port
-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
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..92f7aaebcd4 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
@@ -1,4 +1,7 @@
--source include/have_ndb.inc
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+--source include/have_binlog_format_mixed_or_row.inc
--source include/ndb_master-slave.inc
connection master;
@@ -79,6 +82,7 @@ SELECT * FROM t1 ORDER BY a;
--replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
query_vertical SHOW SLAVE STATUS;
--- connection master
+connection master;
DROP TABLE t1;
--- sync_slave_with_master
+
+sync_slave_with_master;
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_commit_afterflush.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_commit_afterflush.test
index 8c45ac5dbdd..cf3eb9589d2 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_commit_afterflush.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_commit_afterflush.test
@@ -4,6 +4,10 @@
# Different engines #
# By JBM 2004-02-15 #
#####################################
+
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+-- source include/have_binlog_format_mixed_or_row.inc
-- source include/have_ndb.inc
-- source include/ndb_master-slave.inc
let $engine_type=NDB;
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_ctype_ucs2_def.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_ctype_ucs2_def.test
index 8d5ad334766..cb99d049266 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_ctype_ucs2_def.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_ctype_ucs2_def.test
@@ -1,5 +1,8 @@
--source include/have_ucs2.inc
--source include/have_ndb.inc
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+--source include/have_binlog_format_mixed_or_row.inc
--source include/ndb_master-slave.inc
#
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_partitions-master.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_partitions-master.opt
index dc4f5360927..075c6392dde 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_partitions-master.opt
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_partitions-master.opt
@@ -1 +1 @@
---new=true
+--new
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_partitions-slave.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_partitions-slave.opt
index dc4f5360927..075c6392dde 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_partitions-slave.opt
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_partitions-slave.opt
@@ -1 +1 @@
---new=true
+--new
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_delete_nowhere.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_delete_nowhere.test
index 6b1d932f9a6..c06d1a62fef 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_delete_nowhere.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_delete_nowhere.test
@@ -3,6 +3,9 @@
# Share test code between engine tests #
#########################################
--source include/have_ndb.inc
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+--source include/have_binlog_format_mixed_or_row.inc
-- source include/ndb_master-slave.inc
let $engine_type=NDB;
-- source extra/rpl_tests/rpl_delete_no_where.test
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_do_db.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_do_db.test
index ffe8551d00f..750ae377350 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_do_db.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_do_db.test
@@ -6,6 +6,9 @@
##########################################################
--source include/have_ndb.inc
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+--source include/have_binlog_format_mixed_or_row.inc
--source include/ndb_master-slave.inc
--disable_warnings
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_do_table.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_do_table.test
index ee6abd580f5..4598795cead 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_do_table.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_do_table.test
@@ -6,6 +6,9 @@
##########################################################
--source include/have_ndb.inc
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+--source include/have_binlog_format_mixed_or_row.inc
--source include/ndb_master-slave.inc
--disable_warnings
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_func003.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_func003.test
index c02d82e2dc9..5f0fd3dfe49 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_func003.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_func003.test
@@ -7,6 +7,9 @@
# reduce test case code #
###################################
-- source include/have_ndb.inc
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+-- source include/have_binlog_format_mixed_or_row.inc
-- source include/ndb_master-slave.inc
let $engine_type=NDB;
-- source extra/rpl_tests/rpl_row_func003.test
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb_trans.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb_trans.test
index fcc2928c5e2..66531172894 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb_trans.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb_trans.test
@@ -2,6 +2,9 @@
-- source include/have_ndb.inc
-- source include/have_innodb.inc
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+-- source include/have_binlog_format_mixed_or_row.inc
-- source include/ndb_master-slave.inc
create table t1 (a int, unique(a)) engine=ndbcluster;
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_insert_ignore.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_insert_ignore.test
index e6c66011fb7..be6f71eb5b5 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_insert_ignore.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_insert_ignore.test
@@ -2,6 +2,9 @@
# Wrapper for rpl_insert_ignore.test#
#####################################
-- source include/have_ndb.inc
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+-- source include/have_binlog_format_mixed_or_row.inc
-- source include/ndb_master-slave.inc
let $engine_type=NDB;
let $engine_type2=myisam;
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..13c2fbce2b4 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
@@ -23,6 +23,9 @@
source include/have_ndb.inc;
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+source include/have_binlog_format_mixed_or_row.inc;
source include/ndb_master-slave.inc;
source include/have_innodb.inc;
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_implicit_commit_binlog.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_implicit_commit_binlog.test
new file mode 100644
index 00000000000..d70d9b48834
--- /dev/null
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_implicit_commit_binlog.test
@@ -0,0 +1,9 @@
+################################################################################
+# Check file extra/rpl_tests/rpl_implicit_commit_binlog.test
+################################################################################
+--source include/have_binlog_format_mixed.inc
+--source include/have_ndb.inc
+--source include/ndb_master-slave.inc
+
+--let $engine=NDB
+--source extra/rpl_tests/rpl_implicit_commit_binlog.test
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..b74354b22e1
--- /dev/null
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables-master.opt
@@ -0,0 +1 @@
+--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..bbb86b2991b
--- /dev/null
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables-slave.opt
@@ -0,0 +1 @@
+--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..17f2d00cbf6
--- /dev/null
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables.test
@@ -0,0 +1,374 @@
+# ==== 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
+--source include/have_binlog_format_mixed_or_row.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 ----
+
+# This test does not work in ROW mode after the changes introduced in
+# BUG#40116. After WL#2687 is pushed, Tests should be added again.
+--disable_parsing
+BEGIN;
+INSERT INTO myisam_innodb VALUES (13);
+INSERT INTO myisam_innodb VALUES (14);
+ROLLBACK;
+sync_slave_with_master;
+--enable_parsing
+connection master;
+BEGIN;
+INSERT INTO innodb_myisam VALUES (15);
+INSERT INTO innodb_myisam VALUES (16);
+ROLLBACK;
+sync_slave_with_master;
+connection master;
+
+# This test does not work in ROW mode after the changes introduced in
+# BUG#40116. After WL#2687 is pushed, these tests should be enabled
+# again.
+--disable_parsing
+BEGIN;
+INSERT INTO myisam_ndb VALUES (17);
+INSERT INTO myisam_ndb VALUES (18);
+ROLLBACK;
+sync_slave_with_master;
+connection master;
+--enable_parsing
+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 ----
+
+# This test does not work in ROW mode after the changes introduced in
+# BUG#40116. After WL#2687 is pushed, these tests should be enabled
+# again.
+--disable_parsing
+BEGIN;
+INSERT INTO myisam_innodb VALUES (37);
+INSERT INTO myisam_innodb VALUES (38);
+ROLLBACK;
+sync_slave_with_master;
+connection master;
+--enable_parsing
+BEGIN;
+INSERT INTO innodb_myisam VALUES (39);
+INSERT INTO innodb_myisam VALUES (40);
+ROLLBACK;
+sync_slave_with_master;
+connection master;
+
+# This test does not work in ROW mode after the changes introduced in
+# BUG#40116. After WL#2687 is pushed, these tests should be enabled
+# again.
+--disable_parsing
+BEGIN;
+INSERT INTO myisam_ndb VALUES (41);
+INSERT INTO myisam_ndb VALUES (42);
+ROLLBACK;
+sync_slave_with_master;
+connection master;
+--enable_parsing
+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;
+
+# These tests do not work in ROW mode after the changes introduced in
+# BUG#40116. After WL#2687 is pushed, these tests should be enabled
+# again.
+--disable_parsing
+# 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;
+--enable_parsing
+
+
+--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_update3.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_multi_update3.test
index f144965e9b0..0375fd7fe6d 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_multi_update3.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_multi_update3.test
@@ -3,6 +3,9 @@
# to reuse test code between engine runs #
############################################################
-- source include/have_ndb.inc
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+-- source include/have_binlog_format_mixed_or_row.inc
-- source include/ndb_master-slave.inc
let $engine_type=NDB;
-- source extra/rpl_tests/rpl_multi_update3.test
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_rep_ignore.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_rep_ignore.test
index 1f305d20c92..2d0c87927a5 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_rep_ignore.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_rep_ignore.test
@@ -7,6 +7,9 @@
##########################################################
--source include/have_ndb.inc
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+--source include/have_binlog_format_mixed_or_row.inc
--source include/ndb_master-slave.inc
--disable_warnings
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_row_001.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_row_001.test
index f5b05080131..c711e6ddfa3 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_row_001.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_row_001.test
@@ -2,6 +2,9 @@
# By JBM 2005-02-15 Wrapped to allow reuse of test code#
########################################################
--source include/have_ndb.inc
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+--source include/have_binlog_format_mixed_or_row.inc
-- source include/ndb_master-slave.inc
let $engine_type=NDB;
-- source extra/rpl_tests/rpl_row_001.test
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_row_implicit_commit_binlog.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_row_implicit_commit_binlog.test
new file mode 100644
index 00000000000..3ddf659f1e9
--- /dev/null
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_row_implicit_commit_binlog.test
@@ -0,0 +1,9 @@
+################################################################################
+# Check file extra/rpl_tests/rpl_implicit_commit_binlog.test
+################################################################################
+--source include/have_binlog_format_row.inc
+--source include/have_ndb.inc
+--source include/ndb_master-slave.inc
+
+--let $engine=NDB
+--source extra/rpl_tests/rpl_implicit_commit_binlog.test
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_sp003.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_sp003.test
index 6453f45aa75..a8dab098df5 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_sp003.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_sp003.test
@@ -5,6 +5,9 @@
# For different engines #
#################################
-- source include/have_ndb.inc
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+-- source include/have_binlog_format_mixed_or_row.inc
-- source include/ndb_master-slave.inc
let $engine_type=NDBCLUSTER;
-- source extra/rpl_tests/rpl_row_sp003.test
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_sp006.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_sp006.test
index c2c7be6112c..f005d9cd67a 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_sp006.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_sp006.test
@@ -5,6 +5,9 @@
# For different engines #
#################################
-- source include/have_ndb.inc
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+-- source include/have_binlog_format_mixed_or_row.inc
-- source include/ndb_master-slave.inc
let $engine_type=NDBCLUSTER;
-- source extra/rpl_tests/rpl_row_sp006.test
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..fe97e4ee63a 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
@@ -32,4 +32,7 @@
--enable_query_log
let $off_set = 6;
let $rpl_format = 'SBR';
+disable_query_log;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+enable_query_log;
--source extra/rpl_tests/rpl_ndb_apply_status.test
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_trig004.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_trig004.test
index 7f7e08685bf..1fef32b7a65 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_trig004.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_trig004.test
@@ -8,6 +8,9 @@
# Includes
-- source include/have_ndb.inc
+# Since the master generates row-based events, the slave must be in
+# ROW or MIXED mode to accept the events.
+-- source include/have_binlog_format_mixed_or_row.inc
-- source include/ndb_master-slave.inc
let $engine_type=NDB;
-- source extra/rpl_tests/rpl_trig004.test
diff --git a/mysql-test/suite/sys_vars/README b/mysql-test/suite/sys_vars/README
deleted file mode 100644
index a84f00f1f62..00000000000
--- a/mysql-test/suite/sys_vars/README
+++ /dev/null
@@ -1,3 +0,0 @@
-Some of these tests allocate more than 4GB RAM.
-So, assure that the machine on which the suite will be executed has more than 4GB RAM.
-
diff --git a/mysql-test/suite/sys_vars/inc/bulk_insert_buffer_size_basic.inc b/mysql-test/suite/sys_vars/inc/bulk_insert_buffer_size_basic.inc
index 56ffbace173..a9580028c7e 100644
--- a/mysql-test/suite/sys_vars/inc/bulk_insert_buffer_size_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/bulk_insert_buffer_size_basic.inc
@@ -115,7 +115,6 @@ SET @@session.bulk_insert_buffer_size = 42949672950;
SELECT @@session.bulk_insert_buffer_size;
SET @@session.bulk_insert_buffer_size = -2;
SELECT @@session.bulk_insert_buffer_size;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.bulk_insert_buffer_size = test;
diff --git a/mysql-test/suite/sys_vars/inc/delayed_insert_limit_basic.inc b/mysql-test/suite/sys_vars/inc/delayed_insert_limit_basic.inc
index ab158bc593e..0c9a7d1ddb8 100644
--- a/mysql-test/suite/sys_vars/inc/delayed_insert_limit_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/delayed_insert_limit_basic.inc
@@ -79,7 +79,6 @@ SET @@global.delayed_insert_limit = -1024;
SELECT @@global.delayed_insert_limit;
SET @@global.delayed_insert_limit = 42949672950;
SELECT @@global.delayed_insert_limit;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.delayed_insert_limit = 429496729.5;
diff --git a/mysql-test/suite/sys_vars/inc/delayed_queue_size_basic.inc b/mysql-test/suite/sys_vars/inc/delayed_queue_size_basic.inc
index 2d16f75d4e1..e8b5ab31224 100644
--- a/mysql-test/suite/sys_vars/inc/delayed_queue_size_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/delayed_queue_size_basic.inc
@@ -77,7 +77,6 @@ SET @@global.delayed_queue_size = -1024;
SELECT @@global.delayed_queue_size;
SET @@global.delayed_queue_size = 42949672950;
SELECT @@global.delayed_queue_size;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.delayed_queue_size = 429496729.5;
diff --git a/mysql-test/suite/sys_vars/inc/join_buffer_size_basic.inc b/mysql-test/suite/sys_vars/inc/join_buffer_size_basic.inc
index 880dac4cac4..618b70f3ac3 100644
--- a/mysql-test/suite/sys_vars/inc/join_buffer_size_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/join_buffer_size_basic.inc
@@ -45,40 +45,24 @@ SELECT @start_session_value;
# Display the DEFAULT value of join_buffer_size #
################################################################
-SET @@global.join_buffer_size = 8200;
SET @@global.join_buffer_size = DEFAULT;
SELECT @@global.join_buffer_size;
-SET @@session.join_buffer_size = 8200;
SET @@session.join_buffer_size = DEFAULT;
SELECT @@session.join_buffer_size;
---echo '#--------------------FN_DYNVARS_053_02-------------------------#'
-###################################################################
-# Check the DEFAULT value of join_buffer_size #
-###################################################################
-
-SET @@global.join_buffer_size = DEFAULT;
-SELECT @@global.join_buffer_size = 131072;
-
-SET @@session.join_buffer_size = DEFAULT;
-SELECT @@session.join_buffer_size = 131072;
-
-
--echo '#--------------------FN_DYNVARS_053_03-------------------------#'
##########################################################################
# Change the value of join_buffer_size to a valid value for GLOBAL Scope #
##########################################################################
SET @@global.join_buffer_size = 8200;
-SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228;
+SELECT @@global.join_buffer_size;
SET @@global.join_buffer_size = 65536;
SELECT @@global.join_buffer_size;
SET @@global.join_buffer_size = 4294967295;
SELECT @@global.join_buffer_size;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
--echo '#--------------------FN_DYNVARS_053_04-------------------------#'
###########################################################################
@@ -86,13 +70,11 @@ echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable
###########################################################################
SET @@session.join_buffer_size = 8200;
-SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228;
+SELECT @@session.join_buffer_size;
SET @@session.join_buffer_size = 65536;
SELECT @@session.join_buffer_size;
SET @@session.join_buffer_size = 4294967295;
SELECT @@session.join_buffer_size;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
--echo '#------------------FN_DYNVARS_053_05-----------------------#'
############################################################
@@ -100,40 +82,38 @@ echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable
############################################################
SET @@global.join_buffer_size = 0;
-SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228;
+SELECT @@global.join_buffer_size;
SET @@global.join_buffer_size = -1024;
-SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228;
-SET @@global.join_buffer_size = 8199;
-SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228;
+SELECT @@global.join_buffer_size;
+SET @@global.join_buffer_size = 127;
+SELECT @@global.join_buffer_size;
SET @@global.join_buffer_size = 42949672951;
SELECT @@global.join_buffer_size;
---Error ER_PARSE_ERROR
-SET @@global.join_buffer_size = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.join_buffer_size = 65530.34;
SELECT @@global.join_buffer_size;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.join_buffer_size = test;
SELECT @@global.join_buffer_size;
SET @@session.join_buffer_size = 0;
-SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228;
-SET @@session.join_buffer_size = -2;
-SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228;
-SET @@session.join_buffer_size = 8199;
-SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228;
+SELECT @@session.join_buffer_size;
+SET @@session.join_buffer_size = -1024;
+SELECT @@session.join_buffer_size;
+SET @@session.join_buffer_size = 127;
+SELECT @@session.join_buffer_size;
SET @@session.join_buffer_size = 42949672951;
SELECT @@session.join_buffer_size;
---Error ER_PARSE_ERROR
-SET @@session.join_buffer_size = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.join_buffer_size = 65530.34;
SELECT @@session.join_buffer_size;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.join_buffer_size = test;
SELECT @@session.join_buffer_size;
-
--echo '#------------------FN_DYNVARS_053_06-----------------------#'
####################################################################
# Check if the value in GLOBAL Table matches value in variable #
@@ -160,11 +140,7 @@ WHERE VARIABLE_NAME='join_buffer_size';
####################################################################
SET @@global.join_buffer_size = TRUE;
-SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228;
SET @@global.join_buffer_size = FALSE;
-SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228;
---echo 'Bug: Errors are not coming on assigning TRUE/FALSE to variable';
-
--echo '#---------------------FN_DYNVARS_001_09----------------------#'
#################################################################################
@@ -174,7 +150,6 @@ SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228;
SET @@global.join_buffer_size = 10;
SELECT @@join_buffer_size = @@global.join_buffer_size;
-
--echo '#---------------------FN_DYNVARS_001_10----------------------#'
########################################################################################################
# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable #
@@ -184,14 +159,13 @@ SET @@join_buffer_size = 100;
SELECT @@join_buffer_size = @@local.join_buffer_size;
SELECT @@local.join_buffer_size = @@session.join_buffer_size;
-
--echo '#---------------------FN_DYNVARS_001_11----------------------#'
##############################################################################
# Check if join_buffer_size can be accessed with and without @@ sign #
##############################################################################
SET join_buffer_size = 1;
-SELECT @@join_buffer_size=8200 OR @@join_buffer_size= 8228;
+SELECT @@join_buffer_size;
--Error ER_UNKNOWN_TABLE
SELECT local.join_buffer_size;
--Error ER_UNKNOWN_TABLE
@@ -199,7 +173,6 @@ SELECT session.join_buffer_size;
--Error ER_BAD_FIELD_ERROR
SELECT join_buffer_size = @@session.join_buffer_size;
-
####################################
# Restore initial value #
####################################
diff --git a/mysql-test/suite/sys_vars/inc/key_cache_age_threshold_basic.inc b/mysql-test/suite/sys_vars/inc/key_cache_age_threshold_basic.inc
index 7841ad2cedc..e0970016577 100644
--- a/mysql-test/suite/sys_vars/inc/key_cache_age_threshold_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/key_cache_age_threshold_basic.inc
@@ -43,10 +43,7 @@ SELECT @start_value;
# Display the DEFAULT value of key_cache_age_threshold #
################################################################################
-SET @@global.key_cache_age_threshold = 99;
---Error ER_NO_DEFAULT
SET @@global.key_cache_age_threshold = DEFAULT;
---echo 'Bug# 34878: This variable has default value according to documentation';
SELECT @@global.key_cache_age_threshold;
@@ -72,8 +69,6 @@ SET @@global.key_cache_age_threshold = 1800;
SELECT @@global.key_cache_age_threshold;
SET @@global.key_cache_age_threshold = 65535;
SELECT @@global.key_cache_age_threshold;
---echo 'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming';
-
--echo '#--------------------FN_DYNVARS_056_04-------------------------#'
###########################################################################
@@ -92,8 +87,6 @@ SELECT @@global.key_cache_age_threshold;
SET @@global.key_cache_age_threshold = 99;
SELECT @@global.key_cache_age_threshold;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.key_cache_age_threshold = ON;
SELECT @@global.key_cache_age_threshold;
diff --git a/mysql-test/suite/sys_vars/inc/log_warnings_basic.inc b/mysql-test/suite/sys_vars/inc/log_warnings_basic.inc
index cd7e1023649..54b4fc4c937 100644
--- a/mysql-test/suite/sys_vars/inc/log_warnings_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/log_warnings_basic.inc
@@ -109,8 +109,8 @@ SET @@global.log_warnings = 100000000000;
SELECT @@global.log_warnings;
SET @@global.log_warnings = -1024;
SELECT @@global.log_warnings;
---Error ER_PARSE_ERROR
-SET @@global.log_warnings = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.log_warnings = 65530.34;
SELECT @@global.log_warnings;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.log_warnings = test;
@@ -120,9 +120,8 @@ SET @@session.log_warnings = 100000000000;
SELECT @@session.log_warnings;
SET @@session.log_warnings = -2;
SELECT @@session.log_warnings;
---Error ER_PARSE_ERROR
-SET @@session.log_warnings = 65530.34.;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.log_warnings = 65530.34;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.log_warnings = test;
diff --git a/mysql-test/suite/sys_vars/inc/max_connect_errors_basic.inc b/mysql-test/suite/sys_vars/inc/max_connect_errors_basic.inc
index 530022652a1..ffad23f6ba7 100644
--- a/mysql-test/suite/sys_vars/inc/max_connect_errors_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/max_connect_errors_basic.inc
@@ -46,7 +46,6 @@ SELECT @start_value;
SET @@global.max_connect_errors = 5000;
SET @@global.max_connect_errors = DEFAULT;
SELECT @@global.max_connect_errors;
---echo 'Bug# 34876: This variable has invalid default value as compared to documentation';
--echo '#---------------------FN_DYNVARS_073_02-------------------------#'
###############################################
@@ -71,7 +70,6 @@ SET @@global.max_connect_errors = 1;
SELECT @@global.max_connect_errors;
SET @@global.max_connect_errors = 2;
SELECT @@global.max_connect_errors;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
--echo '#--------------------FN_DYNVARS_073_04-------------------------#'
@@ -93,8 +91,6 @@ SELECT @@global.max_connect_errors;
SET @@global.max_connect_errors = 4294967296;
SELECT @@global.max_connect_errors;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_connect_errors = ON;
SELECT @@global.max_connect_errors;
diff --git a/mysql-test/suite/sys_vars/inc/max_seeks_for_key_basic.inc b/mysql-test/suite/sys_vars/inc/max_seeks_for_key_basic.inc
index 23c3c5b2a95..08aff37054d 100644
--- a/mysql-test/suite/sys_vars/inc/max_seeks_for_key_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/max_seeks_for_key_basic.inc
@@ -110,8 +110,8 @@ SET @@global.max_seeks_for_key = -1024;
SELECT @@global.max_seeks_for_key;
SET @@global.max_seeks_for_key = 4294967296;
SELECT @@global.max_seeks_for_key;
---Error ER_PARSE_ERROR
-SET @@global.max_seeks_for_key = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.max_seeks_for_key = 65530.34;
SELECT @@global.max_seeks_for_key;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_seeks_for_key = test;
@@ -121,11 +121,10 @@ SET @@session.max_seeks_for_key = 0;
SELECT @@session.max_seeks_for_key;
SET @@session.max_seeks_for_key = -2;
SELECT @@session.max_seeks_for_key;
---Error ER_PARSE_ERROR
-SET @@session.max_seeks_for_key = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.max_seeks_for_key = 65530.34;
SET @@session.max_seeks_for_key = 4294967296;
SELECT @@session.max_seeks_for_key;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.max_seeks_for_key = test;
diff --git a/mysql-test/suite/sys_vars/inc/max_tmp_tables_basic.inc b/mysql-test/suite/sys_vars/inc/max_tmp_tables_basic.inc
index e24d97f47dd..236c59837d8 100644
--- a/mysql-test/suite/sys_vars/inc/max_tmp_tables_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/max_tmp_tables_basic.inc
@@ -121,8 +121,8 @@ SET @@global.max_tmp_tables = -1;
SELECT @@global.max_tmp_tables;
SET @@global.max_tmp_tables = 429496729500;
SELECT @@global.max_tmp_tables;
---Error ER_PARSE_ERROR
-SET @@global.max_tmp_tables = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.max_tmp_tables = 65530.34;
SELECT @@global.max_tmp_tables;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_tmp_tables = test;
@@ -136,8 +136,8 @@ SET @@session.max_tmp_tables = 429496729500;
SELECT @@session.max_tmp_tables;
SET @@session.max_tmp_tables = -001;
SELECT @@session.max_tmp_tables;
---Error ER_PARSE_ERROR
-SET @@session.max_tmp_tables = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.max_tmp_tables = 65530.34;
SET @@session.max_tmp_tables = 10737418241;
SELECT @@session.max_tmp_tables;
--Error ER_WRONG_TYPE_FOR_VAR
diff --git a/mysql-test/suite/sys_vars/inc/max_write_lock_count_basic.inc b/mysql-test/suite/sys_vars/inc/max_write_lock_count_basic.inc
index 80d5b7cc747..4e92a3057b0 100644
--- a/mysql-test/suite/sys_vars/inc/max_write_lock_count_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/max_write_lock_count_basic.inc
@@ -88,8 +88,8 @@ SET @@global.max_write_lock_count = -1;
SELECT @@global.max_write_lock_count;
SET @@global.max_write_lock_count = 429496729500;
SELECT @@global.max_write_lock_count;
---Error ER_PARSE_ERROR
-SET @@global.max_write_lock_count = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.max_write_lock_count = 65530.34;
SELECT @@global.max_write_lock_count;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_write_lock_count = test;
diff --git a/mysql-test/suite/sys_vars/inc/min_examined_row_limit_basic.inc b/mysql-test/suite/sys_vars/inc/min_examined_row_limit_basic.inc
index c032d4a9d6d..cd80d1d0998 100644
--- a/mysql-test/suite/sys_vars/inc/min_examined_row_limit_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/min_examined_row_limit_basic.inc
@@ -116,8 +116,8 @@ SET @@global.min_examined_row_limit = -1024;
SELECT @@global.min_examined_row_limit;
SET @@global.min_examined_row_limit = 429496729500;
SELECT @@global.min_examined_row_limit;
---Error ER_PARSE_ERROR
-SET @@global.min_examined_row_limit = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.min_examined_row_limit = 65530.34;
SELECT @@global.min_examined_row_limit;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.min_examined_row_limit = test;
@@ -127,11 +127,10 @@ SET @@session.min_examined_row_limit = 4294967296;
SELECT @@session.min_examined_row_limit;
SET @@session.min_examined_row_limit = -1;
SELECT @@session.min_examined_row_limit;
---Error ER_PARSE_ERROR
-SET @@session.min_examined_row_limit = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.min_examined_row_limit = 65530.34;
SET @@session.min_examined_row_limit = 4294967295021;
SELECT @@session.min_examined_row_limit;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.min_examined_row_limit = test;
diff --git a/mysql-test/suite/sys_vars/inc/myisam_max_sort_file_size_basic.inc b/mysql-test/suite/sys_vars/inc/myisam_max_sort_file_size_basic.inc
index 23f0607b439..9a975b977eb 100644
--- a/mysql-test/suite/sys_vars/inc/myisam_max_sort_file_size_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/myisam_max_sort_file_size_basic.inc
@@ -47,8 +47,6 @@ SET @@global.myisam_max_sort_file_size = 500000;
SET @@global.myisam_max_sort_file_size = DEFAULT;
SELECT @@global.myisam_max_sort_file_size;
---echo 'Bug# 34876: This variable has invalid default value as compared to documentation';
-
--echo '#--------------------FN_DYNVARS_094_02-------------------------#'
###################################################################
# Check the DEFAULT value of myisam_max_sort_file_size #
@@ -102,8 +100,8 @@ SET @@global.myisam_max_sort_file_size = -2147483648;
SELECT @@global.myisam_max_sort_file_size;
SET @@global.myisam_max_sort_file_size = -2147483649;
SELECT @@global.myisam_max_sort_file_size;
---Error ER_PARSE_ERROR
-SET @@global.myisam_max_sort_file_size = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.myisam_max_sort_file_size = 65530.34;
SELECT @@global.myisam_max_sort_file_size;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.myisam_max_sort_file_size = 2147483649.56;
@@ -111,9 +109,6 @@ SELECT @@global.myisam_max_sort_file_size;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.myisam_max_sort_file_size = 1G;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
-
--echo '#------------------FN_DYNVARS_094_06-----------------------#'
####################################################################
# Check if the value in GLOBAL Table matches value in variable #
diff --git a/mysql-test/suite/sys_vars/inc/myisam_repair_threads_basic.inc b/mysql-test/suite/sys_vars/inc/myisam_repair_threads_basic.inc
index 8485e79ff03..e3aca46536d 100644
--- a/mysql-test/suite/sys_vars/inc/myisam_repair_threads_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/myisam_repair_threads_basic.inc
@@ -114,8 +114,8 @@ SET @@global.myisam_repair_threads = 429496729533;
SELECT @@global.myisam_repair_threads ;
---Error ER_PARSE_ERROR
-SET @@global.myisam_repair_threads = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.myisam_repair_threads = 65530.34;
SELECT @@global.myisam_repair_threads ;
--Error ER_WRONG_TYPE_FOR_VAR
@@ -141,9 +141,8 @@ SELECT @@session.myisam_repair_threads ;
SET @@session.myisam_repair_threads = -2;
SELECT @@session.myisam_repair_threads ;
---Error ER_PARSE_ERROR
-
-SET @@session.myisam_repair_threads = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.myisam_repair_threads = 65530.34;
SELECT @@session.myisam_repair_threads ;
diff --git a/mysql-test/suite/sys_vars/inc/myisam_sort_buffer_size_basic.inc b/mysql-test/suite/sys_vars/inc/myisam_sort_buffer_size_basic.inc
index 8e36d8a2c70..c92c2f85adb 100644
--- a/mysql-test/suite/sys_vars/inc/myisam_sort_buffer_size_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/myisam_sort_buffer_size_basic.inc
@@ -113,8 +113,8 @@ SET @@global.myisam_sort_buffer_size = 429496729533;
SELECT @@global.myisam_sort_buffer_size ;
---Error ER_PARSE_ERROR
-SET @@global.myisam_sort_buffer_size = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.myisam_sort_buffer_size = 65530.34;
SELECT @@global.myisam_sort_buffer_size ;
--Error ER_WRONG_TYPE_FOR_VAR
@@ -140,9 +140,8 @@ SELECT @@session.myisam_sort_buffer_size ;
SET @@session.myisam_sort_buffer_size = -2;
SELECT @@session.myisam_sort_buffer_size ;
---Error ER_PARSE_ERROR
-
-SET @@session.myisam_sort_buffer_size = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.myisam_sort_buffer_size = 65530.34;
SELECT @@session.myisam_sort_buffer_size ;
diff --git a/mysql-test/suite/sys_vars/inc/net_retry_count_basic.inc b/mysql-test/suite/sys_vars/inc/net_retry_count_basic.inc
index 537d8eea6c6..46b8d0350fe 100644
--- a/mysql-test/suite/sys_vars/inc/net_retry_count_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/net_retry_count_basic.inc
@@ -111,8 +111,8 @@ SET @@global.net_retry_count = 4294967296;
SELECT @@global.net_retry_count;
SET @@global.net_retry_count = 429496729500;
SELECT @@global.net_retry_count;
---Error ER_PARSE_ERROR
-SET @@global.net_retry_count = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.net_retry_count = 65530.34;
SELECT @@global.net_retry_count;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.net_retry_count = test;
@@ -122,15 +122,13 @@ SET @@session.net_retry_count = 0;
SELECT @@session.net_retry_count;
SET @@session.net_retry_count = -2;
SELECT @@session.net_retry_count;
---Error ER_PARSE_ERROR
-SET @@session.net_retry_count = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.net_retry_count = 65530.34;
SET @@session.net_retry_count = 6555015425;
SELECT @@session.net_retry_count;
SET @@session.net_retry_count = 4294967296;
SELECT @@session.net_retry_count;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.net_retry_count = test;
SELECT @@session.net_retry_count;
diff --git a/mysql-test/suite/sys_vars/inc/query_alloc_block_size_basic.inc b/mysql-test/suite/sys_vars/inc/query_alloc_block_size_basic.inc
index 208fe6b3da4..35d80f36f6d 100644
--- a/mysql-test/suite/sys_vars/inc/query_alloc_block_size_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/query_alloc_block_size_basic.inc
@@ -82,9 +82,6 @@ SELECT @@global.query_alloc_block_size;
SET @@global.query_alloc_block_size = 65536;
SELECT @@global.query_alloc_block_size;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
-
-
--echo '#--------------------FN_DYNVARS_130_04-------------------------#'
#################################################################################
# Change the value of query_alloc_block_size to a valid value for SESSION Scope #
@@ -114,8 +111,8 @@ SET @@global.query_alloc_block_size = 1023;
SELECT @@global.query_alloc_block_size;
SET @@global.query_alloc_block_size = 4294967296;
SELECT @@global.query_alloc_block_size;
---Error ER_PARSE_ERROR
-SET @@global.query_alloc_block_size = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.query_alloc_block_size = 65530.34;
SELECT @@global.query_alloc_block_size;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.query_alloc_block_size = test;
@@ -125,13 +122,12 @@ SET @@session.query_alloc_block_size = 64;
SELECT @@session.query_alloc_block_size;
SET @@session.query_alloc_block_size = -2;
SELECT @@session.query_alloc_block_size;
---Error ER_PARSE_ERROR
-SET @@session.query_alloc_block_size = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.query_alloc_block_size = 65530.34;
SET @@session.query_alloc_block_size = 1023;
SELECT @@session.query_alloc_block_size;
-SET @@session.query_alloc_block_size = 4294967296;
-SELECT @@session.query_alloc_block_size;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
+#SET @@session.query_alloc_block_size = 4294967296;
+#SELECT @@session.query_alloc_block_size;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.query_alloc_block_size = test;
@@ -144,7 +140,6 @@ SELECT @@session.query_alloc_block_size;
#SET @@global.query_alloc_block_size = 1;
#SET @@session.query_alloc_block_size = 12;
---echo 'Bug# 34877: OutOFMemeory errors are coming if we dont assign these values to variable before comparision statement';
SET @@global.query_alloc_block_size = 1;
SET @@session.query_alloc_block_size = 12;
diff --git a/mysql-test/suite/sys_vars/inc/query_cache_limit_basic.inc b/mysql-test/suite/sys_vars/inc/query_cache_limit_basic.inc
index 2eb4a597eef..c94ba3a52dd 100644
--- a/mysql-test/suite/sys_vars/inc/query_cache_limit_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/query_cache_limit_basic.inc
@@ -91,7 +91,6 @@ SET @@global.query_cache_limit = -1024;
SELECT @@global.query_cache_limit;
SET @@global.query_cache_limit = 42949672950;
SELECT @@global.query_cache_limit;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.query_cache_limit = ON;
diff --git a/mysql-test/suite/sys_vars/inc/query_cache_min_res_unit_basic.inc b/mysql-test/suite/sys_vars/inc/query_cache_min_res_unit_basic.inc
index 1b65e035b18..9276a987dfb 100644
--- a/mysql-test/suite/sys_vars/inc/query_cache_min_res_unit_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/query_cache_min_res_unit_basic.inc
@@ -70,12 +70,10 @@ SET @@global.query_cache_min_res_unit = 0;
SELECT @@global.query_cache_min_res_unit;
SET @@global.query_cache_min_res_unit = 1;
SELECT @@global.query_cache_min_res_unit;
---echo 'Bug#34842: FN_DYNVARS_132_03 - Minimum value according to documentation is 0, and here it is 512';
SET @@global.query_cache_min_res_unit = 512;
SELECT @@global.query_cache_min_res_unit;
SET @@global.query_cache_min_res_unit = 513;
SELECT @@global.query_cache_min_res_unit;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
SET @@global.query_cache_min_res_unit = 1048576;
SELECT @@global.query_cache_min_res_unit;
SET @@global.query_cache_min_res_unit = 1048575;
@@ -100,7 +98,6 @@ SET @@global.query_cache_min_res_unit = -1024;
SELECT @@global.query_cache_min_res_unit;
SET @@global.query_cache_min_res_unit = 42949672950;
SELECT @@global.query_cache_min_res_unit;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.query_cache_min_res_unit = ON;
diff --git a/mysql-test/suite/sys_vars/inc/query_cache_size_basic.inc b/mysql-test/suite/sys_vars/inc/query_cache_size_basic.inc
index 1f8c63c55bb..83edefaaf25 100644
--- a/mysql-test/suite/sys_vars/inc/query_cache_size_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/query_cache_size_basic.inc
@@ -68,8 +68,6 @@ SET @@global.query_cache_size = 512;
SELECT @@global.query_cache_size;
SET @@global.query_cache_size = 1024;
SELECT @@global.query_cache_size;
---echo : 'Bug#34880: Warnings are coming on assinging valid values to variable
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
SET @@global.query_cache_size = 1048576;
SELECT @@global.query_cache_size;
SET @@global.query_cache_size = 1048575;
@@ -93,8 +91,6 @@ SET @@global.query_cache_size = -1024;
SELECT @@global.query_cache_size;
SET @@global.query_cache_size = 42949672950;
SELECT @@global.query_cache_size;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.query_cache_size = ON;
SELECT @@global.query_cache_size;
diff --git a/mysql-test/suite/sys_vars/inc/range_alloc_block_size_basic.inc b/mysql-test/suite/sys_vars/inc/range_alloc_block_size_basic.inc
index 37692cc8c35..cfa74665dd9 100644
--- a/mysql-test/suite/sys_vars/inc/range_alloc_block_size_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/range_alloc_block_size_basic.inc
@@ -73,12 +73,10 @@ SELECT @@session.range_alloc_block_size = 2048;
SET @@global.range_alloc_block_size = 2048;
SELECT @@global.range_alloc_block_size;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
SET @@global.range_alloc_block_size = 4294967295;
SELECT @@global.range_alloc_block_size;
SET @@global.range_alloc_block_size = 4294967294;
SELECT @@global.range_alloc_block_size;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
--echo '#--------------------FN_DYNVARS_137_04-------------------------#'
@@ -105,8 +103,8 @@ SET @@global.range_alloc_block_size = -1024;
SELECT @@global.range_alloc_block_size;
SET @@global.range_alloc_block_size = 42949672951;
SELECT @@global.range_alloc_block_size;
---Error ER_PARSE_ERROR
-SET @@global.range_alloc_block_size = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.range_alloc_block_size = 65530.34;
SELECT @@global.range_alloc_block_size;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.range_alloc_block_size = test;
@@ -116,11 +114,10 @@ SET @@session.range_alloc_block_size = 0;
SELECT @@session.range_alloc_block_size;
SET @@session.range_alloc_block_size = -2;
SELECT @@session.range_alloc_block_size;
---Error ER_PARSE_ERROR
-SET @@session.range_alloc_block_size = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.range_alloc_block_size = 65530.34;
SET @@session.range_alloc_block_size = 4294967296;
SELECT @@session.range_alloc_block_size;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.range_alloc_block_size = test;
diff --git a/mysql-test/suite/sys_vars/inc/rpl_recovery_rank_basic.inc b/mysql-test/suite/sys_vars/inc/rpl_recovery_rank_basic.inc
index f9ae3968b31..b185eeb21a7 100644
--- a/mysql-test/suite/sys_vars/inc/rpl_recovery_rank_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/rpl_recovery_rank_basic.inc
@@ -93,8 +93,8 @@ SET @@global.rpl_recovery_rank = -2147483648;
SELECT @@global.rpl_recovery_rank;
SET @@global.rpl_recovery_rank = -2147483649;
SELECT @@global.rpl_recovery_rank;
---Error ER_PARSE_ERROR
-SET @@global.rpl_recovery_rank = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.rpl_recovery_rank = 65530.34;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.rpl_recovery_rank = 2147483649.56;
--Error ER_WRONG_TYPE_FOR_VAR
diff --git a/mysql-test/suite/sys_vars/inc/slave_transaction_retries_basic.inc b/mysql-test/suite/sys_vars/inc/slave_transaction_retries_basic.inc
index 28ba8791b0a..17146f07bc0 100644
--- a/mysql-test/suite/sys_vars/inc/slave_transaction_retries_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/slave_transaction_retries_basic.inc
@@ -105,10 +105,8 @@ SELECT @@global.slave_transaction_retries;
SET @@global.slave_transaction_retries = 2147483649*2147483649;
SELECT @@global.slave_transaction_retries;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
-
---Error ER_PARSE_ERROR
-SET @@global.slave_transaction_retries = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.slave_transaction_retries = 65530.34;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.slave_transaction_retries = '100';
--Error ER_WRONG_TYPE_FOR_VAR
diff --git a/mysql-test/suite/sys_vars/inc/sort_buffer_size_basic.inc b/mysql-test/suite/sys_vars/inc/sort_buffer_size_basic.inc
index 19d8b442c2c..a88ad65a076 100644
--- a/mysql-test/suite/sys_vars/inc/sort_buffer_size_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/sort_buffer_size_basic.inc
@@ -40,12 +40,6 @@
# Save initial value #
#############################################################
-# due to differences when running on Windows (Bug#36695)
---source include/not_windows.inc
-
-let $kbrange32 = BETWEEN 32776 AND 32999;
-let $mbrange2 = BETWEEN 2097116 AND 2100000;
-
--disable_warnings
SET @start_global_value = @@global.sort_buffer_size;
@@ -59,12 +53,12 @@ SET @start_session_value = @@session.sort_buffer_size;
SET @@global.sort_buffer_size = 1000;
SET @@global.sort_buffer_size = DEFAULT;
eval
-SELECT @@global.sort_buffer_size $mbrange2;
+SELECT @@global.sort_buffer_size;
SET @@session.sort_buffer_size = 2000;
SET @@session.sort_buffer_size = DEFAULT;
eval
-SELECT @@session.sort_buffer_size $mbrange2;
+SELECT @@session.sort_buffer_size;
--echo '#--------------------FN_DYNVARS_151_02-------------------------#'
@@ -74,11 +68,11 @@ SELECT @@session.sort_buffer_size $mbrange2;
SET @@global.sort_buffer_size = DEFAULT;
eval
-SELECT @@global.sort_buffer_size $mbrange2;
+SELECT @@global.sort_buffer_size;
SET @@session.sort_buffer_size = DEFAULT;
eval
-SELECT @@session.sort_buffer_size $mbrange2;
+SELECT @@session.sort_buffer_size;
--echo '#--------------------FN_DYNVARS_151_03-------------------------#'
@@ -88,10 +82,10 @@ SELECT @@session.sort_buffer_size $mbrange2;
SET @@global.sort_buffer_size = 32776;
eval
-SELECT @@global.sort_buffer_size $kbrange32;
+SELECT @@global.sort_buffer_size;
SET @@global.sort_buffer_size = 32777;
eval
-SELECT @@global.sort_buffer_size $kbrange32;
+SELECT @@global.sort_buffer_size;
SET @@global.sort_buffer_size = 4294967295;
SELECT @@global.sort_buffer_size;
SET @@global.sort_buffer_size = 4294967294;
@@ -104,10 +98,10 @@ SELECT @@global.sort_buffer_size;
SET @@session.sort_buffer_size = 32776;
eval
-SELECT @@session.sort_buffer_size $kbrange32;
+SELECT @@session.sort_buffer_size;
SET @@session.sort_buffer_size = 32777;
eval
-SELECT @@session.sort_buffer_size $kbrange32;
+SELECT @@session.sort_buffer_size;
SET @@session.sort_buffer_size = 4294967295;
SELECT @@session.sort_buffer_size;
SET @@session.sort_buffer_size = 4294967294;
@@ -121,14 +115,14 @@ SELECT @@session.sort_buffer_size;
SET @@global.sort_buffer_size = 32775;
eval
-SELECT @@global.sort_buffer_size $kbrange32;
+SELECT @@global.sort_buffer_size;
SET @@global.sort_buffer_size = -1024;
eval
-SELECT @@global.sort_buffer_size $kbrange32;
+SELECT @@global.sort_buffer_size;
SET @@global.sort_buffer_size = 4294967296;
SELECT @@global.sort_buffer_size;
---Error ER_PARSE_ERROR
-SET @@global.sort_buffer_size = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.sort_buffer_size = 65530.34;
SELECT @@global.sort_buffer_size;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.sort_buffer_size = test;
@@ -136,12 +130,12 @@ SELECT @@global.sort_buffer_size;
SET @@session.sort_buffer_size = 32775;
eval
-SELECT @@session.sort_buffer_size $kbrange32;
+SELECT @@session.sort_buffer_size;
SET @@session.sort_buffer_size = -2;
eval
-SELECT @@session.sort_buffer_size $kbrange32;
---Error ER_PARSE_ERROR
-SET @@session.sort_buffer_size = 65530.34.;
+SELECT @@session.sort_buffer_size;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.sort_buffer_size = 65530.34;
SET @@session.sort_buffer_size = 4294967296;
SELECT @@session.sort_buffer_size;
@@ -173,10 +167,10 @@ INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='sort_buffer_size';
SET @@global.sort_buffer_size = TRUE;
eval
-SELECT @@global.sort_buffer_size $kbrange32;
+SELECT @@global.sort_buffer_size;
SET @@global.sort_buffer_size = FALSE;
eval
-SELECT @@global.sort_buffer_size $kbrange32;
+SELECT @@global.sort_buffer_size;
--echo '#---------------------FN_DYNVARS_151_09----------------------#'
####################################################################################
@@ -203,7 +197,7 @@ SELECT @@local.sort_buffer_size = @@session.sort_buffer_size;
SET sort_buffer_size = 9100;
eval
-SELECT @@sort_buffer_size $kbrange32;
+SELECT @@sort_buffer_size;
--Error ER_UNKNOWN_TABLE
SELECT local.sort_buffer_size;
--Error ER_UNKNOWN_TABLE
diff --git a/mysql-test/suite/sys_vars/inc/transaction_alloc_block_size_basic.inc b/mysql-test/suite/sys_vars/inc/transaction_alloc_block_size_basic.inc
index c14383b86c6..4a69bbcdb01 100644
--- a/mysql-test/suite/sys_vars/inc/transaction_alloc_block_size_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/transaction_alloc_block_size_basic.inc
@@ -82,7 +82,6 @@ SELECT @@global.transaction_alloc_block_size;
SET @@global.transaction_alloc_block_size = 4294967295;
SELECT @@global.transaction_alloc_block_size;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
--echo '#--------------------FN_DYNVARS_005_04-------------------------#'
###################################################################
@@ -97,7 +96,6 @@ SELECT @@session.transaction_alloc_block_size;
SET @@session.transaction_alloc_block_size = 65535;
SELECT @@session.transaction_alloc_block_size;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
--echo '#------------------FN_DYNVARS_005_05-----------------------#'
@@ -115,8 +113,6 @@ SELECT @@global.transaction_alloc_block_size;
SET @@global.transaction_alloc_block_size = 123456789201;
SELECT @@global.transaction_alloc_block_size;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
-- Error ER_WRONG_TYPE_FOR_VAR
SET @@global.transaction_alloc_block_size = ON;
@@ -143,8 +139,6 @@ SELECT @@global.transaction_alloc_block_size;
SET @@session.transaction_alloc_block_size = 12345678901;
SELECT @@session.transaction_alloc_block_size;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
-- Error ER_WRONG_TYPE_FOR_VAR
SET @@session.transaction_alloc_block_size = ON;
diff --git a/mysql-test/suite/sys_vars/inc/transaction_prealloc_size_basic.inc b/mysql-test/suite/sys_vars/inc/transaction_prealloc_size_basic.inc
index 1ca302a19e0..56c93163621 100644
--- a/mysql-test/suite/sys_vars/inc/transaction_prealloc_size_basic.inc
+++ b/mysql-test/suite/sys_vars/inc/transaction_prealloc_size_basic.inc
@@ -39,8 +39,6 @@ SELECT @start_global_value;
SET @start_session_value = @@session.transaction_prealloc_size;
SELECT @start_session_value;
---echo 'Bug# 34876: This variable has invalid default value as compared to documentation';
-
--echo '#--------------------FN_DYNVARS_005_01-------------------------#'
########################################################################
# Display the DEFAULT value of transaction_prealloc_size #
@@ -106,8 +104,6 @@ SELECT @@global.transaction_prealloc_size;
SET @@global.transaction_prealloc_size = -1024;
SELECT @@global.transaction_prealloc_size;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
-- Error ER_WRONG_TYPE_FOR_VAR
SET @@global.transaction_prealloc_size = ON;
diff --git a/mysql-test/suite/sys_vars/r/all_vars.result b/mysql-test/suite/sys_vars/r/all_vars.result
new file mode 100644
index 00000000000..0f741ff930a
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/all_vars.result
@@ -0,0 +1,14 @@
+create table t1 (test_name text);
+create table t2 (variable_name text);
+load data infile "MYSQLTEST_VARDIR/tmp/sys_vars.all_vars.txt" into table t1;
+insert into t2 select variable_name from information_schema.global_variables;
+insert into t2 select variable_name from information_schema.session_variables;
+update t2 set variable_name= replace(variable_name, "PERFORMANCE_SCHEMA_", "PFS_");
+select variable_name as `There should be *no* long test name listed below:` from t2
+where length(variable_name) > 50;
+There should be *no* long test name listed below:
+select variable_name as `There should be *no* variables listed below:` from t2
+left join t1 on variable_name=test_name where test_name is null;
+There should be *no* variables listed below:
+drop table t1;
+drop table t2;
diff --git a/mysql-test/suite/sys_vars/r/auto_increment_increment_basic.result b/mysql-test/suite/sys_vars/r/auto_increment_increment_basic.result
index 3cfdc54457b..3e66041856f 100644
--- a/mysql-test/suite/sys_vars/r/auto_increment_increment_basic.result
+++ b/mysql-test/suite/sys_vars/r/auto_increment_increment_basic.result
@@ -71,8 +71,8 @@ Warning 1292 Truncated incorrect auto_increment_increment value: '65536'
SELECT @@global.auto_increment_increment;
@@global.auto_increment_increment
65535
-SET @@global.auto_increment_increment = 65530.34.;
-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 '.' at line 1
+SET @@global.auto_increment_increment = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'auto_increment_increment'
SELECT @@global.auto_increment_increment;
@@global.auto_increment_increment
65535
@@ -93,15 +93,14 @@ Warning 1292 Truncated incorrect auto_increment_increment value: '-2'
SELECT @@session.auto_increment_increment;
@@session.auto_increment_increment
1
-SET @@session.auto_increment_increment = 65530.34.;
-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 '.' at line 1
+SET @@session.auto_increment_increment = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'auto_increment_increment'
SET @@session.auto_increment_increment = 65550;
Warnings:
Warning 1292 Truncated incorrect auto_increment_increment value: '65550'
SELECT @@session.auto_increment_increment;
@@session.auto_increment_increment
65535
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.auto_increment_increment = test;
ERROR 42000: Incorrect argument type to variable 'auto_increment_increment'
SELECT @@session.auto_increment_increment;
diff --git a/mysql-test/suite/sys_vars/r/auto_increment_increment_func.result b/mysql-test/suite/sys_vars/r/auto_increment_increment_func.result
index eeaa3949886..df3ca1ab093 100644
--- a/mysql-test/suite/sys_vars/r/auto_increment_increment_func.result
+++ b/mysql-test/suite/sys_vars/r/auto_increment_increment_func.result
@@ -95,8 +95,6 @@ id name
113 Record_8
115 Record_9
116 Record_10
-'Bug#35362: Here Record_10 id should be 120 instead of 115 because we'
-'have set the value of variable to 5'
SET @@session.auto_increment_increment = 1;
SELECT @@auto_increment_increment;
@@auto_increment_increment
@@ -189,7 +187,6 @@ id name
127 Record_16
128 Record_17
129 Record_18
-'Bug#35364: Variable is incrementing some random values on assigning -ve value'
## Disconnecting test_con2 ##
## Dropping table t1 ##
DROP table if exists t1;
diff --git a/mysql-test/suite/sys_vars/r/auto_increment_offset_basic.result b/mysql-test/suite/sys_vars/r/auto_increment_offset_basic.result
index 7752851cb4c..cc7b6b693c0 100644
--- a/mysql-test/suite/sys_vars/r/auto_increment_offset_basic.result
+++ b/mysql-test/suite/sys_vars/r/auto_increment_offset_basic.result
@@ -104,7 +104,6 @@ Warning 1292 Truncated incorrect auto_increment_offset value: '65550'
SELECT @@session.auto_increment_offset;
@@session.auto_increment_offset
65535
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
SET @@session.auto_increment_offset = ON;
ERROR 42000: Incorrect argument type to variable 'auto_increment_offset'
SELECT @@session.auto_increment_offset;
diff --git a/mysql-test/suite/sys_vars/r/auto_increment_offset_func.result b/mysql-test/suite/sys_vars/r/auto_increment_offset_func.result
index e166cb149f6..d2b5b828c04 100644
--- a/mysql-test/suite/sys_vars/r/auto_increment_offset_func.result
+++ b/mysql-test/suite/sys_vars/r/auto_increment_offset_func.result
@@ -84,8 +84,6 @@ id name
## Setting value of variable less than last insert id ##
SET @@session.auto_increment_offset = 5;
INSERT into t1(name) values('Record_9');
-'Bug#35367: Random value of id is increasing on assigning value to';
-'variable that is less than current offset';
INSERT into t1(name) values('Record_10');
INSERT into t1(name) values('Record_11');
INSERT into t1(name) values('Record_12');
@@ -125,8 +123,6 @@ id name
125 Record_12
134 Record_13
140 Record_14
-'Bug#35369: Some invalid value of id is increasing on assigning value to';
-'variable that is greater than auto_increment_increment';
'#--------------------FN_DYNVARS_002_06-------------------------#'
## Changing datatype of column id with primary key to SmallInt ##
ALTER table t1 modify id SMALLINT NOT NULL auto_increment;
@@ -206,8 +202,6 @@ id name
180 Record_18
181 Record_17
191 Record_18
-'Bug#35370: Some invalid value of id is increasing on assigning negative';
-' value in variable';
## Assigning value that is out of range of variable ##
SET @@auto_increment_offset = 65536;
Warnings:
diff --git a/mysql-test/suite/sys_vars/r/auto_commit_basic.result b/mysql-test/suite/sys_vars/r/autocommit_basic.result
index c3643aaa1db..68531f8b5a6 100644
--- a/mysql-test/suite/sys_vars/r/auto_commit_basic.result
+++ b/mysql-test/suite/sys_vars/r/autocommit_basic.result
@@ -1,4 +1,4 @@
-SET @start_value = @@autocommit;
+SET @start_value = @@global.autocommit;
SELECT @start_value;
@start_value
1
@@ -7,8 +7,7 @@ SET @@autocommit = 0;
SET @@autocommit = DEFAULT;
SELECT @@autocommit;
@@autocommit
-0
-'Bug: variable DEFAULT value not working and is not throwing error'
+1
'#---------------------FN_DYNVARS_003_02-------------------------#'
SET @@autocommit = @start_value;
SELECT @@autocommit = 1;
@@ -50,23 +49,23 @@ SET @@autocommit = '';
ERROR 42000: Variable 'autocommit' can't be set to the value of ''
'#-------------------FN_DYNVARS_003_05----------------------------#'
SET @@global.autocommit = 0;
-ERROR HY000: Variable 'autocommit' is a SESSION variable and can't be used with SET GLOBAL
SELECT @@global.autocommit;
-ERROR HY000: Variable 'autocommit' is a SESSION variable
+@@global.autocommit
+0
+SET @@global.autocommit = 1;
'#----------------------FN_DYNVARS_003_06------------------------#'
-SELECT @@session.autocommit = VARIABLE_VALUE
+SELECT IF(@@session.autocommit, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='autocommit';
-@@session.autocommit = VARIABLE_VALUE
-0
-Bug # 34839: Values in variable and information_schema do not match for autocommit
+IF(@@session.autocommit, "ON", "OFF") = VARIABLE_VALUE
+1
'#----------------------FN_DYNVARS_003_07------------------------#'
SET @@autocommit = 1;
-SELECT @@autocommit = VARIABLE_VALUE
+SELECT IF(@@autocommit, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='autocommit';
-@@autocommit = VARIABLE_VALUE
-0
+IF(@@autocommit, "ON", "OFF") = VARIABLE_VALUE
+1
'#---------------------FN_DYNVARS_003_08-------------------------#'
SET @@autocommit = OFF;
SELECT @@autocommit;
@@ -111,7 +110,7 @@ SELECT session.autocommit;
ERROR 42S02: Unknown table 'session' in field list
SELECT autocommit = @@session.autocommit;
ERROR 42S22: Unknown column 'autocommit' in 'field list'
-SET @@autocommit = @start_value;
-SELECT @@autocommit;
-@@autocommit
+SET @@global.autocommit = @start_value;
+SELECT @@global.autocommit;
+@@global.autocommit
1
diff --git a/mysql-test/suite/sys_vars/r/autocommit_func.result b/mysql-test/suite/sys_vars/r/autocommit_func.result
index 47c2c921022..8fe7c0bc90e 100644
--- a/mysql-test/suite/sys_vars/r/autocommit_func.result
+++ b/mysql-test/suite/sys_vars/r/autocommit_func.result
@@ -89,7 +89,6 @@ id name
1 Record_1
2 Record_2
3 Record_3
-'Bug#35373: Records donot get committed in transaction on switching connections'
INSERT into t1(name) values('Record_6');
SELECT * from t1;
id name
diff --git a/mysql-test/suite/sys_vars/r/automatic_sp_privileges_basic.result b/mysql-test/suite/sys_vars/r/automatic_sp_privileges_basic.result
index b9cf9b5ee80..e0a939758d5 100644
--- a/mysql-test/suite/sys_vars/r/automatic_sp_privileges_basic.result
+++ b/mysql-test/suite/sys_vars/r/automatic_sp_privileges_basic.result
@@ -53,12 +53,11 @@ ERROR HY000: Variable 'automatic_sp_privileges' is a GLOBAL variable and should
SELECT @@session.automatic_sp_privileges;
ERROR HY000: Variable 'automatic_sp_privileges' is a GLOBAL variable
'#----------------------FN_DYNVARS_004_06------------------------#'
-SELECT @@global.automatic_sp_privileges = VARIABLE_VALUE
+SELECT IF(@@global.automatic_sp_privileges, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='automatic_sp_privileges';
-@@global.automatic_sp_privileges = VARIABLE_VALUE
-0
-'Bug# 34839: Values in variable and information_schema donot match'
+IF(@@global.automatic_sp_privileges, "ON", "OFF") = VARIABLE_VALUE
+1
'#---------------------FN_DYNVARS_004_07----------------------#'
SET @@global.automatic_sp_privileges = OFF;
SELECT @@global.automatic_sp_privileges;
diff --git a/mysql-test/suite/sys_vars/r/back_log_basic.result b/mysql-test/suite/sys_vars/r/back_log_basic.result
new file mode 100644
index 00000000000..5cfb0da65d6
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/back_log_basic.result
@@ -0,0 +1,21 @@
+select @@global.back_log;
+@@global.back_log
+50
+select @@session.back_log;
+ERROR HY000: Variable 'back_log' is a GLOBAL variable
+show global variables like 'back_log';
+Variable_name Value
+back_log 50
+show session variables like 'back_log';
+Variable_name Value
+back_log 50
+select * from information_schema.global_variables where variable_name='back_log';
+VARIABLE_NAME VARIABLE_VALUE
+BACK_LOG 50
+select * from information_schema.session_variables where variable_name='back_log';
+VARIABLE_NAME VARIABLE_VALUE
+BACK_LOG 50
+set global back_log=1;
+ERROR HY000: Variable 'back_log' is a read only variable
+set session back_log=1;
+ERROR HY000: Variable 'back_log' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/big_tables_basic.result b/mysql-test/suite/sys_vars/r/big_tables_basic.result
index 937576a76d3..fac9be20d8d 100644
--- a/mysql-test/suite/sys_vars/r/big_tables_basic.result
+++ b/mysql-test/suite/sys_vars/r/big_tables_basic.result
@@ -7,8 +7,7 @@ SET @@big_tables = 1;
SET @@big_tables = DEFAULT;
SELECT @@big_tables;
@@big_tables
-1
-'Bug# 34829: No default value for variable and setting default does not raise error';
+0
'#--------------------FN_DYNVARS_005_02------------------------#'
SET @@big_tables = 0;
SELECT @@big_tables;
@@ -44,17 +43,17 @@ ERROR 42000: Variable 'big_tables' can't be set to the value of ' '
SET @@big_tables = '';
ERROR 42000: Variable 'big_tables' can't be set to the value of ''
'#-------------------FN_DYNVARS_005_04----------------------------#'
-SET @@global.big_tables = 0;
-ERROR HY000: Variable 'big_tables' is a SESSION variable and can't be used with SET GLOBAL
+SET @@global.big_tables = 1-@@global.big_tables;
SELECT @@global.big_tables;
-ERROR HY000: Variable 'big_tables' is a SESSION variable
+@@global.big_tables
+1
+SET @@global.big_tables = 1-@@global.big_tables;
'#----------------------FN_DYNVARS_005_05------------------------#'
-SELECT @@big_tables = VARIABLE_VALUE
+SELECT IF(@@big_tables, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='big_tables';
-@@big_tables = VARIABLE_VALUE
-0
-Bug # 34839: Values in variable and information_schema do not match for autocommit
+IF(@@big_tables, "ON", "OFF") = VARIABLE_VALUE
+1
'#---------------------FN_DYNVARS_005_06----------------------#'
SET @@big_tables = OFF;
SELECT @@big_tables;
diff --git a/mysql-test/suite/sys_vars/r/binlog_cache_size_basic_32.result b/mysql-test/suite/sys_vars/r/binlog_cache_size_basic_32.result
index 2f439c8f834..d378765d96f 100644
--- a/mysql-test/suite/sys_vars/r/binlog_cache_size_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/binlog_cache_size_basic_32.result
@@ -21,14 +21,20 @@ SELECT @@global.binlog_cache_size;
@@global.binlog_cache_size
4096
SET @@global.binlog_cache_size = 4294967295;
+Warnings:
+Warning 1292 Truncated incorrect binlog_cache_size value: '4294967295'
SELECT @@global.binlog_cache_size;
@@global.binlog_cache_size
4294963200
SET @@global.binlog_cache_size = 10000;
+Warnings:
+Warning 1292 Truncated incorrect binlog_cache_size value: '10000'
SELECT @@global.binlog_cache_size;
@@global.binlog_cache_size
8192
SET @@global.binlog_cache_size = 21221204;
+Warnings:
+Warning 1292 Truncated incorrect binlog_cache_size value: '21221204'
SELECT @@global.binlog_cache_size;
@@global.binlog_cache_size
21217280
diff --git a/mysql-test/suite/sys_vars/r/binlog_cache_size_basic_64.result b/mysql-test/suite/sys_vars/r/binlog_cache_size_basic_64.result
index 3858df0f4d6..95693c6a1ba 100644
--- a/mysql-test/suite/sys_vars/r/binlog_cache_size_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/binlog_cache_size_basic_64.result
@@ -21,14 +21,20 @@ SELECT @@global.binlog_cache_size;
@@global.binlog_cache_size
4096
SET @@global.binlog_cache_size = 4294967295;
+Warnings:
+Warning 1292 Truncated incorrect binlog_cache_size value: '4294967295'
SELECT @@global.binlog_cache_size;
@@global.binlog_cache_size
4294963200
SET @@global.binlog_cache_size = 10000;
+Warnings:
+Warning 1292 Truncated incorrect binlog_cache_size value: '10000'
SELECT @@global.binlog_cache_size;
@@global.binlog_cache_size
8192
SET @@global.binlog_cache_size = 21221204;
+Warnings:
+Warning 1292 Truncated incorrect binlog_cache_size value: '21221204'
SELECT @@global.binlog_cache_size;
@@global.binlog_cache_size
21217280
@@ -49,6 +55,8 @@ SELECT @@global.binlog_cache_size;
@@global.binlog_cache_size
4096
SET @@global.binlog_cache_size = 42949672950;
+Warnings:
+Warning 1292 Truncated incorrect binlog_cache_size value: '42949672950'
SELECT @@global.binlog_cache_size;
@@global.binlog_cache_size
42949668864
diff --git a/mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_32.result b/mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_32.result
index 3e071f76f98..497fe531fec 100644
--- a/mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_32.result
@@ -91,7 +91,6 @@ Warning 1292 Truncated incorrect bulk_insert_buffer_size value: '-2'
SELECT @@session.bulk_insert_buffer_size;
@@session.bulk_insert_buffer_size
0
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
SET @@session.bulk_insert_buffer_size = test;
ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size'
SET @@session.bulk_insert_buffer_size = 429496.10;
diff --git a/mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_64.result b/mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_64.result
index 320290fbca1..e687a86c68d 100644
--- a/mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_64.result
@@ -87,7 +87,6 @@ Warning 1292 Truncated incorrect bulk_insert_buffer_size value: '-2'
SELECT @@session.bulk_insert_buffer_size;
@@session.bulk_insert_buffer_size
0
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
SET @@session.bulk_insert_buffer_size = test;
ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size'
SET @@session.bulk_insert_buffer_size = 429496.10;
diff --git a/mysql-test/suite/sys_vars/r/character_set_client_basic.result b/mysql-test/suite/sys_vars/r/character_set_client_basic.result
index c946d5109a8..78993015a24 100644
--- a/mysql-test/suite/sys_vars/r/character_set_client_basic.result
+++ b/mysql-test/suite/sys_vars/r/character_set_client_basic.result
@@ -162,11 +162,8 @@ SET @@character_set_client = utf8;
SELECT @@character_set_client;
@@character_set_client
utf8
-'Bug: Assignment of ucs2 to session character-set does not raise error';
-'but selecting variable after setting it does.';
-'Even catching this does not allow any further character-set to be set.';
-'Offending querry seems to be:';
-'SET @@character_set_client = ucs2;'
+SET @@character_set_client = ucs2;
+ERROR 42000: Variable 'character_set_client' can't be set to the value of 'ucs2'
SET @@character_set_client = cp866;
SELECT @@character_set_client;
@@character_set_client
@@ -426,9 +423,6 @@ SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS);
SELECT @total_charset;
@total_charset
36
-'Bug # 34843: character sets are mapped in such a way that 100 and following';
-'numbers gives error, and before 100 the 36 mapped wraps arround';
-'several times.';
'#--------------------FN_DYNVARS_010_10-------------------------#'
SET @@character_set_client = abc;
ERROR 42000: Unknown character set: 'abc'
diff --git a/mysql-test/suite/sys_vars/r/character_set_client_func.result b/mysql-test/suite/sys_vars/r/character_set_client_func.result
index 087db21639b..82c1548d438 100644
--- a/mysql-test/suite/sys_vars/r/character_set_client_func.result
+++ b/mysql-test/suite/sys_vars/r/character_set_client_func.result
@@ -10,7 +10,6 @@ utf8
SELECT @@session.character_set_client;
@@session.character_set_client
latin1
-'Bug# 35372: session character_set_client is not effected by global character_set_client'
'#--------------------FN_DYNVARS_010_02-------------------------#'
'connection default'
SHOW VARIABLES like 'character_set_client';
@@ -22,16 +21,16 @@ CREATE TABLE t1(a CHAR(3) character set utf8);
'For latin1 characterset';
SET @@session.character_set_client = latin1;
INSERT INTO t1 values('è');
-SELECT a,CHAR_LENGTH(a) FROM t1;
-a CHAR_LENGTH(a)
-è 2
+SELECT hex(a),CHAR_LENGTH(a) FROM t1;
+hex(a) CHAR_LENGTH(a)
+03C3A8 2
DELETE FROM t1;
'For utf8 characterset';
SET @@session.character_set_client = utf8;
INSERT INTO t1 values('è');
-SELECT a,CHAR_LENGTH(a) FROM t1;
-a CHAR_LENGTH(a)
- 1
+SELECT hex(a),CHAR_LENGTH(a) FROM t1;
+hex(a) CHAR_LENGTH(a)
+03 1
DELETE FROM t1;
DROP TABLE IF EXISTS t1;
SET @@global.character_set_client = @global_character_set_client;
diff --git a/mysql-test/suite/sys_vars/r/character_set_connection_basic.result b/mysql-test/suite/sys_vars/r/character_set_connection_basic.result
index 18697a20fb9..dd1052d27ef 100644
--- a/mysql-test/suite/sys_vars/r/character_set_connection_basic.result
+++ b/mysql-test/suite/sys_vars/r/character_set_connection_basic.result
@@ -425,9 +425,6 @@ SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS);
SELECT @total_charset;
@total_charset
36
-'Bug # 34843: character sets are mapped in such a way that 100 and following ';
-'numbers gives error, and before 100 the 36 mapped wraps arround';
-'several times.';
'#--------------------FN_DYNVARS_011_10-------------------------#'
SET @@character_set_connection = abc;
ERROR 42000: Unknown character set: 'abc'
diff --git a/mysql-test/suite/sys_vars/r/character_set_database_basic.result b/mysql-test/suite/sys_vars/r/character_set_database_basic.result
index 4380fea4c81..9aa449816f5 100644
--- a/mysql-test/suite/sys_vars/r/character_set_database_basic.result
+++ b/mysql-test/suite/sys_vars/r/character_set_database_basic.result
@@ -425,8 +425,6 @@ SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS);
SELECT @total_charset;
@total_charset
36
-'Bug # 34843: character sets are mapped in such a way that 100 and following';
-'numbers gives error, and before 100 the 36 mapped wraps arround several times.';
'#--------------------FN_DYNVARS_012_10-------------------------#'
SET @@character_set_database = "grek";
ERROR 42000: Unknown character set: 'grek'
diff --git a/mysql-test/suite/sys_vars/r/character_set_database_func.result b/mysql-test/suite/sys_vars/r/character_set_database_func.result
index 746824c58ff..3cadadd0f3f 100644
--- a/mysql-test/suite/sys_vars/r/character_set_database_func.result
+++ b/mysql-test/suite/sys_vars/r/character_set_database_func.result
@@ -12,7 +12,6 @@ utf8
SELECT @@session.character_set_database;
@@session.character_set_database
latin1
-'Bug#35356: session character_set_database differ from global character_set_database'
'#--------------------FN_DYNVARS_008_02-------------------------#'
'connection default'
DROP TABLE IF EXISTS t1;
@@ -39,7 +38,6 @@ t1 CREATE TABLE `t1` (
) ENGINE=MyISAM DEFAULT CHARSET=utf8
DROP TABLE t1;
DROP DATABASE db1;
-'Bug#35357: character_set_database does not effects CREATE DATABASE without characater set'
'--ascii character set specified--'
CREATE DATABASE db1 CHARACTER SET ascii;
USE db1;
@@ -72,7 +70,6 @@ SELECT count(*) FROM t1 WHERE CHAR_LENGTH(a)>1;
count(*)
1
DROP TABLE IF EXISTS t1;
-'Bug#27208: If no current database, character_set_database !=character_set_server'
SET GLOBAL character_set_server=latin5;
CREATE DATABASE csdb CHARACTER SET = utf8;
USE csdb;
diff --git a/mysql-test/suite/sys_vars/r/character_set_filesystem_basic.result b/mysql-test/suite/sys_vars/r/character_set_filesystem_basic.result
index 11f85528593..e33df353c74 100644
--- a/mysql-test/suite/sys_vars/r/character_set_filesystem_basic.result
+++ b/mysql-test/suite/sys_vars/r/character_set_filesystem_basic.result
@@ -403,8 +403,6 @@ SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS);
SELECT @total_charset;
@total_charset
36
-'Bug # 34843: character sets are mapped in such a way that 100 and following '
-'numbers give error, and before 100 the 36 mapped wraps arround several times.'
'#--------------------FN_DYNVARS_008_10-------------------------#'
SET @@character_set_filesystem = abc;
ERROR 42000: Unknown character set: 'abc'
diff --git a/mysql-test/suite/sys_vars/r/character_set_results_basic.result b/mysql-test/suite/sys_vars/r/character_set_results_basic.result
index 71c01a3dc0d..0b59f60cd45 100644
--- a/mysql-test/suite/sys_vars/r/character_set_results_basic.result
+++ b/mysql-test/suite/sys_vars/r/character_set_results_basic.result
Binary files differ
diff --git a/mysql-test/suite/sys_vars/r/character_set_server_basic.result b/mysql-test/suite/sys_vars/r/character_set_server_basic.result
index 83545128a76..966489c6cbb 100644
--- a/mysql-test/suite/sys_vars/r/character_set_server_basic.result
+++ b/mysql-test/suite/sys_vars/r/character_set_server_basic.result
@@ -29,6 +29,8 @@ ERROR 42S22: Unknown column 'session' in 'field list'
SET global character_set_server=utf8;
SELECT global character_set_server;
ERROR 42S22: Unknown column 'global' in 'field list'
+SET @@character_set_server = null;
+ERROR 42000: Variable 'character_set_server' can't be set to the value of 'NULL'
'#--------------------FN_DYNVARS_009_02-------------------------#'
SET @@character_set_server = latin5;
SET @@character_set_server = DEFAULT;
@@ -417,13 +419,6 @@ SELECT @@global.character_set_server;
cp1250
SET @@global.character_set_server = 100;
ERROR 42000: Unknown character set: '100'
-SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS);
-SELECT @total_charset;
-@total_charset
-36
-'Bug # 34843: character sets are mapped in such a way that 100 and following ';
-'numbers gives error, and before 100 the 36 mapped wraps arround ';
-'several times.';
'#--------------------FN_DYNVARS_009_10-------------------------#'
SET @@character_set_server = abc;
ERROR 42000: Unknown character set: 'abc'
diff --git a/mysql-test/suite/sys_vars/r/character_sets_dir_basic.result b/mysql-test/suite/sys_vars/r/character_sets_dir_basic.result
new file mode 100644
index 00000000000..0ee774c1e9d
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/character_sets_dir_basic.result
@@ -0,0 +1,21 @@
+select @@global.character_sets_dir;
+@@global.character_sets_dir
+MYSQL_SHAREDIR/charsets/
+select @@session.character_sets_dir;
+ERROR HY000: Variable 'character_sets_dir' is a GLOBAL variable
+show global variables like 'character_sets_dir';
+Variable_name Value
+character_sets_dir MYSQL_SHAREDIR/charsets/
+show session variables like 'character_sets_dir';
+Variable_name Value
+character_sets_dir MYSQL_SHAREDIR/charsets/
+select * from information_schema.global_variables where variable_name='character_sets_dir';
+VARIABLE_NAME VARIABLE_VALUE
+CHARACTER_SETS_DIR MYSQL_SHAREDIR/charsets/
+select * from information_schema.session_variables where variable_name='character_sets_dir';
+VARIABLE_NAME VARIABLE_VALUE
+CHARACTER_SETS_DIR MYSQL_SHAREDIR/charsets/
+set global character_sets_dir="foo";
+ERROR HY000: Variable 'character_sets_dir' is a read only variable
+set session character_sets_dir="foo";
+ERROR HY000: Variable 'character_sets_dir' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/collation_database_basic.result b/mysql-test/suite/sys_vars/r/collation_database_basic.result
index d4375b7c8e4..50787b4bc7d 100644
--- a/mysql-test/suite/sys_vars/r/collation_database_basic.result
+++ b/mysql-test/suite/sys_vars/r/collation_database_basic.result
@@ -32,9 +32,12 @@ ERROR 42S22: Unknown column 'global' in 'field list'
'#--------------------FN_DYNVARS_016_02-------------------------#'
SET @@collation_database = latin1_bin;
SET @@collation_database = DEFAULT;
+SELECT DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME=DATABASE();
+DEFAULT_COLLATION_NAME
+latin1_swedish_ci
SELECT @@collation_database AS DEFAULT_VALUE;
DEFAULT_VALUE
-utf8_unicode_ci
+latin1_swedish_ci
SET @@global.collation_database = latin1_bin;
SET @@global.collation_database = DEFAULT;
SELECT @@global.collation_database;
diff --git a/mysql-test/suite/sys_vars/r/collation_database_func.result b/mysql-test/suite/sys_vars/r/collation_database_func.result
index dae8677eecf..38b1c7e22ba 100644
--- a/mysql-test/suite/sys_vars/r/collation_database_func.result
+++ b/mysql-test/suite/sys_vars/r/collation_database_func.result
@@ -11,7 +11,6 @@ latin1_danish_ci
SELECT @@session.collation_database;
@@session.collation_database
latin1_swedish_ci
-'Bug#35378: New session collation_database is not change by global collation_database'
'#--------------------FN_DYNVARS_011_02-------------------------#'
'connection default'
DROP TABLE IF EXISTS t1,t2;
@@ -31,7 +30,6 @@ USE db1;
SHOW CREATE DATABASE db1;
Database Create Database
db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_roman_ci */
-'Bug#35380: collation_database does not effects CREATE DATABASE without characater set'
CREATE TABLE t1(a CHAR(20));
SHOW CREATE TABLE t1;
Table Create Table
diff --git a/mysql-test/suite/sys_vars/r/completion_type_basic.result b/mysql-test/suite/sys_vars/r/completion_type_basic.result
index 93bfe581182..c0f307cf238 100644
--- a/mysql-test/suite/sys_vars/r/completion_type_basic.result
+++ b/mysql-test/suite/sys_vars/r/completion_type_basic.result
@@ -1,58 +1,74 @@
SET @start_global_value = @@global.completion_type;
SELECT @start_global_value;
@start_global_value
-0
+NO_CHAIN
SET @start_session_value = @@session.completion_type;
SELECT @start_session_value;
@start_session_value
-0
+NO_CHAIN
'#--------------------FN_DYNVARS_017_01-------------------------#'
SET @@global.completion_type = 2;
SET @@global.completion_type = DEFAULT;
SELECT @@global.completion_type;
@@global.completion_type
-0
+NO_CHAIN
SET @@session.completion_type = 1;
SET @@session.completion_type = DEFAULT;
SELECT @@session.completion_type;
@@session.completion_type
-0
-'#--------------------FN_DYNVARS_017_02-------------------------#'
-SET @@global.completion_type = @start_global_value;
-SELECT @@global.completion_type = 0;
-@@global.completion_type = 0
-1
-SET @@session.completion_type = @start_session_value;
-SELECT @@session.completion_type = 0;
-@@session.completion_type = 0
-1
+NO_CHAIN
'#--------------------FN_DYNVARS_017_03-------------------------#'
SET @@global.completion_type = 0;
SELECT @@global.completion_type;
@@global.completion_type
-0
+NO_CHAIN
SET @@global.completion_type = 1;
SELECT @@global.completion_type;
@@global.completion_type
-1
+CHAIN
SET @@global.completion_type = 2;
SELECT @@global.completion_type;
@@global.completion_type
-2
+RELEASE
+SET @@global.completion_type = NO_CHAIN;
+SELECT @@global.completion_type;
+@@global.completion_type
+NO_CHAIN
+SET @@global.completion_type = CHAIN;
+SELECT @@global.completion_type;
+@@global.completion_type
+CHAIN
+SET @@global.completion_type = 'RELEASE';
+SELECT @@global.completion_type;
+@@global.completion_type
+RELEASE
'#--------------------FN_DYNVARS_017_04-------------------------#'
SET @@session.completion_type = 0;
SELECT @@session.completion_type;
@@session.completion_type
-0
+NO_CHAIN
SET @@session.completion_type = 1;
SELECT @@session.completion_type;
@@session.completion_type
-1
+CHAIN
SET @@session.completion_type = 2;
SELECT @@session.completion_type;
@@session.completion_type
-2
+RELEASE
+SET @@session.completion_type = 'NO_CHAIN';
+SELECT @@session.completion_type;
+@@session.completion_type
+NO_CHAIN
+SET @@session.completion_type = 'CHAIN';
+SELECT @@session.completion_type;
+@@session.completion_type
+CHAIN
+SET @@session.completion_type = 'RELEASE';
+SELECT @@session.completion_type;
+@@session.completion_type
+RELEASE
'#------------------FN_DYNVARS_017_05-----------------------#'
+set sql_mode=TRADITIONAL;
SET @@global.completion_type = 10;
ERROR 42000: Variable 'completion_type' can't be set to the value of '10'
SET @@global.completion_type = -1024;
@@ -60,7 +76,7 @@ ERROR 42000: Variable 'completion_type' can't be set to the value of '-1024'
SET @@global.completion_type = 2.4;
ERROR 42000: Incorrect argument type to variable 'completion_type'
SET @@global.completion_type = OFF;
-ERROR 42000: Incorrect argument type to variable 'completion_type'
+ERROR 42000: Variable 'completion_type' can't be set to the value of 'OFF'
SET @@session.completion_type = 10;
ERROR 42000: Variable 'completion_type' can't be set to the value of '10'
SET @@session.completion_type = -2;
@@ -68,7 +84,7 @@ ERROR 42000: Variable 'completion_type' can't be set to the value of '-2'
SET @@session.completion_type = 1.2;
ERROR 42000: Incorrect argument type to variable 'completion_type'
SET @@session.completion_type = ON;
-ERROR 42000: Incorrect argument type to variable 'completion_type'
+ERROR 42000: Variable 'completion_type' can't be set to the value of 'ON'
'#------------------FN_DYNVARS_017_06-----------------------#'
SELECT @@global.completion_type = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
@@ -84,11 +100,11 @@ WHERE VARIABLE_NAME='completion_type';
SET @@global.completion_type = TRUE;
SELECT @@global.completion_type;
@@global.completion_type
-1
+CHAIN
SET @@global.completion_type = FALSE;
SELECT @@global.completion_type;
@@global.completion_type
-0
+NO_CHAIN
'#---------------------FN_DYNVARS_001_08----------------------#'
SET @@completion_type = 1;
SELECT @@completion_type = @@local.completion_type;
@@ -101,7 +117,7 @@ SELECT @@local.completion_type = @@session.completion_type;
SET completion_type = 1;
SELECT @@completion_type;
@@completion_type
-1
+CHAIN
SET local.completion_type = 1;
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 'completion_type = 1' at line 1
SELECT local.completion_type;
@@ -115,8 +131,9 @@ ERROR 42S22: Unknown column 'completion_type' in 'field list'
SET @@global.completion_type = @start_global_value;
SELECT @@global.completion_type;
@@global.completion_type
-0
+NO_CHAIN
SET @@session.completion_type = @start_session_value;
SELECT @@session.completion_type;
@@session.completion_type
-0
+NO_CHAIN
+set sql_mode='';
diff --git a/mysql-test/suite/sys_vars/r/concurrent_insert_basic.result b/mysql-test/suite/sys_vars/r/concurrent_insert_basic.result
index 1ea9c37c2a1..996a5e93717 100644
--- a/mysql-test/suite/sys_vars/r/concurrent_insert_basic.result
+++ b/mysql-test/suite/sys_vars/r/concurrent_insert_basic.result
@@ -1,65 +1,70 @@
SET @start_value = @@global.concurrent_insert;
SELECT @start_value;
@start_value
-1
+AUTO
'#--------------------FN_DYNVARS_018_01------------------------#'
SET @@global.concurrent_insert = 0;
SET @@global.concurrent_insert = DEFAULT;
SELECT @@global.concurrent_insert;
@@global.concurrent_insert
-1
+AUTO
'#---------------------FN_DYNVARS_018_02-------------------------#'
SET @@global.concurrent_insert = DEFAULT;
SELECT @@global.concurrent_insert = 1;
@@global.concurrent_insert = 1
-1
+0
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'AUTO'
'#--------------------FN_DYNVARS_018_03------------------------#'
SET @@global.concurrent_insert = 0;
SELECT @@global.concurrent_insert;
@@global.concurrent_insert
-0
+NEVER
SET @@global.concurrent_insert = 1;
SELECT @@global.concurrent_insert;
@@global.concurrent_insert
-1
+AUTO
SET @@global.concurrent_insert = 2;
SELECT @@global.concurrent_insert;
@@global.concurrent_insert
-2
+ALWAYS
+SET @@global.concurrent_insert = NEVER;
+SELECT @@global.concurrent_insert;
+@@global.concurrent_insert
+NEVER
+SET @@global.concurrent_insert = AUTO;
+SELECT @@global.concurrent_insert;
+@@global.concurrent_insert
+AUTO
+SET @@global.concurrent_insert = ALWAYS;
+SELECT @@global.concurrent_insert;
+@@global.concurrent_insert
+ALWAYS
'#--------------------FN_DYNVARS_018_04-------------------------#'
SET @@global.concurrent_insert = -1;
-Warnings:
-Warning 1292 Truncated incorrect concurrent_insert value: '-1'
-Select @@global.concurrent_insert;
-@@global.concurrent_insert
-0
+ERROR 42000: Variable 'concurrent_insert' can't be set to the value of '-1'
SET @@global.concurrent_insert = 100;
-Warnings:
-Warning 1292 Truncated incorrect concurrent_insert value: '100'
-Select @@global.concurrent_insert;
-@@global.concurrent_insert
-2
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
+ERROR 42000: Variable 'concurrent_insert' can't be set to the value of '100'
SET @@global.concurrent_insert = TRUEF;
-ERROR 42000: Incorrect argument type to variable 'concurrent_insert'
+ERROR 42000: Variable 'concurrent_insert' can't be set to the value of 'TRUEF'
SET @@global.concurrent_insert = TRUE_F;
-ERROR 42000: Incorrect argument type to variable 'concurrent_insert'
+ERROR 42000: Variable 'concurrent_insert' can't be set to the value of 'TRUE_F'
SET @@global.concurrent_insert = FALSE0;
-ERROR 42000: Incorrect argument type to variable 'concurrent_insert'
+ERROR 42000: Variable 'concurrent_insert' can't be set to the value of 'FALSE0'
SET @@global.concurrent_insert = OON;
-ERROR 42000: Incorrect argument type to variable 'concurrent_insert'
+ERROR 42000: Variable 'concurrent_insert' can't be set to the value of 'OON'
SET @@global.concurrent_insert = ONN;
-ERROR 42000: Incorrect argument type to variable 'concurrent_insert'
+ERROR 42000: Variable 'concurrent_insert' can't be set to the value of 'ONN'
SET @@global.concurrent_insert = OOFF;
-ERROR 42000: Incorrect argument type to variable 'concurrent_insert'
+ERROR 42000: Variable 'concurrent_insert' can't be set to the value of 'OOFF'
SET @@global.concurrent_insert = 0FF;
-ERROR 42000: Incorrect argument type to variable 'concurrent_insert'
+ERROR 42000: Variable 'concurrent_insert' can't be set to the value of '0FF'
SET @@global.concurrent_insert = ' ';
-ERROR 42000: Incorrect argument type to variable 'concurrent_insert'
+ERROR 42000: Variable 'concurrent_insert' can't be set to the value of ' '
SET @@global.concurrent_insert = " ";
-ERROR 42000: Incorrect argument type to variable 'concurrent_insert'
+ERROR 42000: Variable 'concurrent_insert' can't be set to the value of ' '
SET @@global.concurrent_insert = '';
-ERROR 42000: Incorrect argument type to variable 'concurrent_insert'
+ERROR 42000: Variable 'concurrent_insert' can't be set to the value of ''
'#-------------------FN_DYNVARS_018_05----------------------------#'
SET @@session.concurrent_insert = 1;
ERROR HY000: Variable 'concurrent_insert' is a GLOBAL variable and should be set with SET GLOBAL
@@ -73,18 +78,18 @@ WHERE VARIABLE_NAME='concurrent_insert';
1
'#---------------------FN_DYNVARS_018_07----------------------#'
SET @@global.concurrent_insert = OFF;
-ERROR 42000: Incorrect argument type to variable 'concurrent_insert'
+ERROR 42000: Variable 'concurrent_insert' can't be set to the value of 'OFF'
SET @@global.concurrent_insert = ON;
-ERROR 42000: Incorrect argument type to variable 'concurrent_insert'
+ERROR 42000: Variable 'concurrent_insert' can't be set to the value of 'ON'
'#---------------------FN_DYNVARS_018_08----------------------#'
SET @@global.concurrent_insert = TRUE;
SELECT @@global.concurrent_insert;
@@global.concurrent_insert
-1
+AUTO
SET @@global.concurrent_insert = FALSE;
SELECT @@global.concurrent_insert;
@@global.concurrent_insert
-0
+NEVER
'#---------------------FN_DYNVARS_018_09----------------------#'
SET @@global.concurrent_insert = 1;
SELECT @@concurrent_insert = @@global.concurrent_insert;
@@ -95,7 +100,7 @@ SET concurrent_insert = 1;
ERROR HY000: Variable 'concurrent_insert' is a GLOBAL variable and should be set with SET GLOBAL
SELECT @@concurrent_insert;
@@concurrent_insert
-1
+AUTO
SET global.concurrent_insert = 1;
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 'concurrent_insert = 1' at line 1
SELECT global.concurrent_insert;
@@ -105,4 +110,4 @@ ERROR 42S22: Unknown column 'concurrent_insert' in 'field list'
SET @@global.concurrent_insert = @start_value;
SELECT @@global.concurrent_insert;
@@global.concurrent_insert
-1
+AUTO
diff --git a/mysql-test/suite/sys_vars/r/concurrent_insert_func.result b/mysql-test/suite/sys_vars/r/concurrent_insert_func.result
index 774775a8287..de4ddbb5a04 100644
--- a/mysql-test/suite/sys_vars/r/concurrent_insert_func.result
+++ b/mysql-test/suite/sys_vars/r/concurrent_insert_func.result
@@ -82,7 +82,7 @@ Record_6
Record_5
SELECT @@concurrent_insert;
@@concurrent_insert
-2
+ALWAYS
connection default;
## Unlocking table ##
UNLOCK TABLES;
diff --git a/mysql-test/suite/sys_vars/r/connect_timeout_basic.result b/mysql-test/suite/sys_vars/r/connect_timeout_basic.result
index cc84405cf86..7947332a68c 100644
--- a/mysql-test/suite/sys_vars/r/connect_timeout_basic.result
+++ b/mysql-test/suite/sys_vars/r/connect_timeout_basic.result
@@ -45,7 +45,6 @@ Warning 1292 Truncated incorrect connect_timeout value: '42949672950'
SELECT @@global.connect_timeout;
@@global.connect_timeout
31536000
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
SET @@global.connect_timeout = 21221204.10;
ERROR 42000: Incorrect argument type to variable 'connect_timeout'
SET @@global.connect_timeout = ON;
diff --git a/mysql-test/suite/sys_vars/r/date_format_basic.result b/mysql-test/suite/sys_vars/r/date_format_basic.result
new file mode 100644
index 00000000000..a92d275dbba
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/date_format_basic.result
@@ -0,0 +1,21 @@
+select @@global.date_format;
+@@global.date_format
+%Y-%m-%d
+select @@session.date_format;
+ERROR HY000: Variable 'date_format' is a GLOBAL variable
+show global variables like 'date_format';
+Variable_name Value
+date_format %Y-%m-%d
+show session variables like 'date_format';
+Variable_name Value
+date_format %Y-%m-%d
+select * from information_schema.global_variables where variable_name='date_format';
+VARIABLE_NAME VARIABLE_VALUE
+DATE_FORMAT %Y-%m-%d
+select * from information_schema.session_variables where variable_name='date_format';
+VARIABLE_NAME VARIABLE_VALUE
+DATE_FORMAT %Y-%m-%d
+set global date_format="foo";
+ERROR HY000: Variable 'date_format' is a read only variable
+set session date_format="foo";
+ERROR HY000: Variable 'date_format' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/datetime_format_basic.result b/mysql-test/suite/sys_vars/r/datetime_format_basic.result
new file mode 100644
index 00000000000..ac80ee37590
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/datetime_format_basic.result
@@ -0,0 +1,21 @@
+select @@global.datetime_format;
+@@global.datetime_format
+%Y-%m-%d %H:%i:%s
+select @@session.datetime_format;
+ERROR HY000: Variable 'datetime_format' is a GLOBAL variable
+show global variables like 'datetime_format';
+Variable_name Value
+datetime_format %Y-%m-%d %H:%i:%s
+show session variables like 'datetime_format';
+Variable_name Value
+datetime_format %Y-%m-%d %H:%i:%s
+select * from information_schema.global_variables where variable_name='datetime_format';
+VARIABLE_NAME VARIABLE_VALUE
+DATETIME_FORMAT %Y-%m-%d %H:%i:%s
+select * from information_schema.session_variables where variable_name='datetime_format';
+VARIABLE_NAME VARIABLE_VALUE
+DATETIME_FORMAT %Y-%m-%d %H:%i:%s
+set global datetime_format="foo";
+ERROR HY000: Variable 'datetime_format' is a read only variable
+set session datetime_format="foo";
+ERROR HY000: Variable 'datetime_format' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/debug_basic.result b/mysql-test/suite/sys_vars/r/debug_basic.result
new file mode 100644
index 00000000000..5a77446d036
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/debug_basic.result
@@ -0,0 +1,25 @@
+set session debug="L";
+select @@global.debug="1";
+@@global.debug="1"
+0
+select @@session.debug;
+@@session.debug
+L
+show global variables like 'debug';
+Variable_name Value
+debug #
+show session variables like 'debug';
+Variable_name Value
+debug L
+select * from information_schema.global_variables where variable_name="debug";
+VARIABLE_NAME VARIABLE_VALUE
+DEBUG #
+select * from information_schema.session_variables where variable_name="debug";
+VARIABLE_NAME VARIABLE_VALUE
+DEBUG L
+set @@global.debug=1;
+ERROR 42000: Incorrect argument type to variable 'debug'
+set @@global.debug=1.1;
+ERROR 42000: Incorrect argument type to variable 'debug'
+set @@global.debug=1e1;
+ERROR 42000: Incorrect argument type to variable 'debug'
diff --git a/mysql-test/suite/sys_vars/r/debug_sync_basic.result b/mysql-test/suite/sys_vars/r/debug_sync_basic.result
new file mode 100644
index 00000000000..6ebb46dd662
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/debug_sync_basic.result
@@ -0,0 +1,21 @@
+select @@global.debug_sync;
+ERROR HY000: Variable 'debug_sync' is a SESSION variable
+select @@session.debug_sync;
+@@session.debug_sync
+ON - current signal: ''
+show global variables like "debug_sync";
+Variable_name Value
+show session variables like "debug_sync";
+Variable_name Value
+debug_sync ON - current signal: ''
+select * from information_schema.global_variables where variable_name="debug_sync";
+VARIABLE_NAME VARIABLE_VALUE
+select * from information_schema.session_variables where variable_name="debug_sync";
+VARIABLE_NAME VARIABLE_VALUE
+DEBUG_SYNC ON - current signal: ''
+set @@session.debug_sync=1;
+ERROR 42000: Incorrect argument type to variable 'debug_sync'
+set @@session.debug_sync=1.1;
+ERROR 42000: Incorrect argument type to variable 'debug_sync'
+set @@session.debug_sync=1e1;
+ERROR 42000: Incorrect argument type to variable 'debug_sync'
diff --git a/mysql-test/suite/sys_vars/r/default_storage_engine_basic.result b/mysql-test/suite/sys_vars/r/default_storage_engine_basic.result
new file mode 100644
index 00000000000..541c0b6b328
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/default_storage_engine_basic.result
@@ -0,0 +1,117 @@
+SET @start_global_value = @@global.default_storage_engine;
+SELECT @start_global_value;
+@start_global_value
+MyISAM
+SET @start_session_value = @@session.default_storage_engine;
+SELECT @start_session_value;
+@start_session_value
+MyISAM
+'#--------------------FN_DYNVARS_005_01-------------------------#'
+SET @@global.default_storage_engine = INNODB;
+SET @@global.default_storage_engine = DEFAULT;
+SELECT @@global.default_storage_engine;
+@@global.default_storage_engine
+MyISAM
+SET @@session.default_storage_engine = INNODB;
+SET @@session.default_storage_engine = DEFAULT;
+SELECT @@session.default_storage_engine;
+@@session.default_storage_engine
+MyISAM
+'#--------------------FN_DYNVARS_005_02-------------------------#'
+SET @@global.default_storage_engine = MYISAM;
+SELECT @@global.default_storage_engine;
+@@global.default_storage_engine
+MyISAM
+SET @@global.default_storage_engine = MERGE;
+SELECT @@global.default_storage_engine;
+@@global.default_storage_engine
+MRG_MYISAM
+SET @@global.default_storage_engine = MEMORY;
+SELECT @@global.default_storage_engine;
+@@global.default_storage_engine
+MEMORY
+SET @@global.default_storage_engine = INNODB;
+SELECT @@global.default_storage_engine;
+@@global.default_storage_engine
+InnoDB
+'#--------------------FN_DYNVARS_005_03-------------------------#'
+SET @@session.default_storage_engine = MYISAM;
+SELECT @@session.default_storage_engine;
+@@session.default_storage_engine
+MyISAM
+SET @@session.default_storage_engine = MERGE;
+SELECT @@session.default_storage_engine;
+@@session.default_storage_engine
+MRG_MYISAM
+SET @@session.default_storage_engine = MEMORY;
+SELECT @@session.default_storage_engine;
+@@session.default_storage_engine
+MEMORY
+SET @@session.default_storage_engine = INNODB;
+SELECT @@session.default_storage_engine;
+@@session.default_storage_engine
+InnoDB
+'#------------------FN_DYNVARS_005_04-----------------------#'
+SET @@global.default_storage_engine = 8199;
+ERROR 42000: Incorrect argument type to variable 'default_storage_engine'
+SET @@global.default_storage_engine = NULL;
+ERROR 42000: Variable 'default_storage_engine' can't be set to the value of 'NULL'
+SET @@global.default_storage_engine = -1024;
+ERROR 42000: Incorrect argument type to variable 'default_storage_engine'
+SET @@global.default_storage_engine = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'default_storage_engine'
+SET @@global.default_storage_engine = FILE;
+ERROR 42000: Unknown storage engine 'FILE'
+SET @@session.default_storage_engine = 8199;
+ERROR 42000: Incorrect argument type to variable 'default_storage_engine'
+SET @@session.default_storage_engine = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'default_storage_engine'
+SET @@session.default_storage_engine = RECORD;
+ERROR 42000: Unknown storage engine 'RECORD'
+'#------------------FN_DYNVARS_005_05-----------------------#'
+SELECT @@global.default_storage_engine =
+VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='default_storage_engine';
+@@global.default_storage_engine =
+VARIABLE_VALUE
+1
+'#------------------FN_DYNVARS_005_06-----------------------#'
+SELECT @@session.default_storage_engine =
+VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES
+WHERE VARIABLE_NAME='default_storage_engine';
+@@session.default_storage_engine =
+VARIABLE_VALUE
+1
+'#------------------FN_DYNVARS_005_07-----------------------#'
+SET @@global.default_storage_engine = TRUE;
+ERROR 42000: Incorrect argument type to variable 'default_storage_engine'
+SET @@global.default_storage_engine = FALSE;
+ERROR 42000: Incorrect argument type to variable 'default_storage_engine'
+'#---------------------FN_DYNVARS_001_8----------------------#'
+SET @@default_storage_engine = MYISAM;
+SELECT @@default_storage_engine = @@local.default_storage_engine;
+@@default_storage_engine = @@local.default_storage_engine
+1
+SELECT @@local.default_storage_engine = @@session.default_storage_engine;
+@@local.default_storage_engine = @@session.default_storage_engine
+1
+'#---------------------FN_DYNVARS_001_9----------------------#'
+SET default_storage_engine = MEMORY;
+SELECT @@default_storage_engine;
+@@default_storage_engine
+MEMORY
+SELECT local.default_storage_engine;
+ERROR 42S02: Unknown table 'local' in field list
+SELECT session.default_storage_engine;
+ERROR 42S02: Unknown table 'session' in field list
+SELECT default_storage_engine = @@session.default_storage_engine;
+ERROR 42S22: Unknown column 'default_storage_engine' in 'field list'
+SET @@default_storage_engine = @start_global_value;
+SET @@global.default_storage_engine = @start_global_value;
+SELECT @@global.default_storage_engine;
+@@global.default_storage_engine
+MyISAM
+SET @@session.default_storage_engine = @start_session_value;
+SELECT @@session.default_storage_engine;
+@@session.default_storage_engine
+MyISAM
diff --git a/mysql-test/suite/sys_vars/r/default_week_format_basic.result b/mysql-test/suite/sys_vars/r/default_week_format_basic.result
index aa5e0b264d3..8e3bc407ba3 100644
--- a/mysql-test/suite/sys_vars/r/default_week_format_basic.result
+++ b/mysql-test/suite/sys_vars/r/default_week_format_basic.result
@@ -113,7 +113,6 @@ Warning 1292 Truncated incorrect default_week_format value: '65550'
SELECT @@session.default_week_format;
@@session.default_week_format
7
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
'#------------------FN_DYNVARS_022_06-----------------------#'
SELECT @@global.default_week_format = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
diff --git a/mysql-test/suite/sys_vars/r/delay_key_write_basic.result b/mysql-test/suite/sys_vars/r/delay_key_write_basic.result
index 100c62ac47e..2258d7af078 100644
--- a/mysql-test/suite/sys_vars/r/delay_key_write_basic.result
+++ b/mysql-test/suite/sys_vars/r/delay_key_write_basic.result
@@ -5,12 +5,9 @@ ON
'#--------------------FN_DYNVARS_023_01------------------------#'
SET @@global.delay_key_write = OFF;
SET @@global.delay_key_write = DEFAULT;
-ERROR 42000: Variable 'delay_key_write' doesn't have a default value
-'Bug # 34878: Documentation specifies a DEFAULT value of ON for variable but';
-'its not supported';
SELECT @@global.delay_key_write;
@@global.delay_key_write
-OFF
+ON
'#---------------------FN_DYNVARS_023_02-------------------------#'
SET @@global.delay_key_write = NULL;
ERROR 42000: Variable 'delay_key_write' can't be set to the value of 'NULL'
@@ -41,10 +38,7 @@ ERROR 42000: Variable 'delay_key_write' can't be set to the value of 'FALSE0'
SET @@global.delay_key_write = ONN;
ERROR 42000: Variable 'delay_key_write' can't be set to the value of 'ONN'
SET @@global.delay_key_write = OF;
-SELECT @@global.delay_key_write;
-@@global.delay_key_write
-OFF
-'Bug# 34828: Variable is incorrectly accepting OF as a value'
+ERROR 42000: Variable 'delay_key_write' can't be set to the value of 'OF'
SET @@global.delay_key_write = ' ';
ERROR 42000: Variable 'delay_key_write' can't be set to the value of ' '
SET @@global.delay_key_write = "";
diff --git a/mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_32.result b/mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_32.result
index f55c966dc38..3da10bc8416 100644
--- a/mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_32.result
@@ -45,7 +45,6 @@ Warning 1292 Truncated incorrect delayed_insert_limit value: '42949672950'
SELECT @@global.delayed_insert_limit;
@@global.delayed_insert_limit
4294967295
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
SET @@global.delayed_insert_limit = 429496729.5;
ERROR 42000: Incorrect argument type to variable 'delayed_insert_limit'
SELECT @@global.delayed_insert_limit;
diff --git a/mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_64.result b/mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_64.result
index 1f7d0a52e72..af73196d14f 100644
--- a/mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_64.result
@@ -43,7 +43,6 @@ SET @@global.delayed_insert_limit = 42949672950;
SELECT @@global.delayed_insert_limit;
@@global.delayed_insert_limit
42949672950
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
SET @@global.delayed_insert_limit = 429496729.5;
ERROR 42000: Incorrect argument type to variable 'delayed_insert_limit'
SELECT @@global.delayed_insert_limit;
diff --git a/mysql-test/suite/sys_vars/r/delayed_insert_timeout_basic.result b/mysql-test/suite/sys_vars/r/delayed_insert_timeout_basic.result
index e8eab4da3cc..ceb89ad6698 100644
--- a/mysql-test/suite/sys_vars/r/delayed_insert_timeout_basic.result
+++ b/mysql-test/suite/sys_vars/r/delayed_insert_timeout_basic.result
@@ -45,7 +45,6 @@ Warning 1292 Truncated incorrect delayed_insert_timeout value: '42949672950'
SELECT @@global.delayed_insert_timeout;
@@global.delayed_insert_timeout
31536000
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
SET @@global.delayed_insert_timeout = 429496729.5;
ERROR 42000: Incorrect argument type to variable 'delayed_insert_timeout'
SELECT @@global.delayed_insert_timeout;
diff --git a/mysql-test/suite/sys_vars/r/delayed_queue_size_basic_32.result b/mysql-test/suite/sys_vars/r/delayed_queue_size_basic_32.result
index 3b356c6d866..f4448b08b1f 100644
--- a/mysql-test/suite/sys_vars/r/delayed_queue_size_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/delayed_queue_size_basic_32.result
@@ -45,7 +45,6 @@ Warning 1292 Truncated incorrect delayed_queue_size value: '42949672950'
SELECT @@global.delayed_queue_size;
@@global.delayed_queue_size
4294967295
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
SET @@global.delayed_queue_size = 429496729.5;
ERROR 42000: Incorrect argument type to variable 'delayed_queue_size'
SELECT @@global.delayed_queue_size;
diff --git a/mysql-test/suite/sys_vars/r/delayed_queue_size_basic_64.result b/mysql-test/suite/sys_vars/r/delayed_queue_size_basic_64.result
index ed866b7e0b4..8b1936e68c5 100644
--- a/mysql-test/suite/sys_vars/r/delayed_queue_size_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/delayed_queue_size_basic_64.result
@@ -43,7 +43,6 @@ SET @@global.delayed_queue_size = 42949672950;
SELECT @@global.delayed_queue_size;
@@global.delayed_queue_size
42949672950
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
SET @@global.delayed_queue_size = 429496729.5;
ERROR 42000: Incorrect argument type to variable 'delayed_queue_size'
SELECT @@global.delayed_queue_size;
diff --git a/mysql-test/suite/sys_vars/r/div_precision_increment_basic.result b/mysql-test/suite/sys_vars/r/div_precision_increment_basic.result
index f78855fcaae..982cca47f5f 100644
--- a/mysql-test/suite/sys_vars/r/div_precision_increment_basic.result
+++ b/mysql-test/suite/sys_vars/r/div_precision_increment_basic.result
@@ -113,7 +113,6 @@ Warning 1292 Truncated incorrect div_precision_increment value: '65550'
SELECT @@session.div_precision_increment;
@@session.div_precision_increment
30
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
SET @@global.div_precision_increment = 65530.30;
ERROR 42000: Incorrect argument type to variable 'div_precision_increment'
SELECT @@global.div_precision_increment;
diff --git a/mysql-test/suite/sys_vars/r/div_precision_increment_func.result b/mysql-test/suite/sys_vars/r/div_precision_increment_func.result
index eb1fc7ae3a7..ee8b7c5691d 100644
--- a/mysql-test/suite/sys_vars/r/div_precision_increment_func.result
+++ b/mysql-test/suite/sys_vars/r/div_precision_increment_func.result
@@ -5,7 +5,7 @@ CREATE TABLE t1
id INT NOT NULL auto_increment,
PRIMARY KEY (id),
name VARCHAR(30),
-salary LONG
+salary INT
);
'#--------------------FN_DYNVARS_027_01-------------------------#'
## Setting initial session value of variable to 3 ##
@@ -18,8 +18,7 @@ SELECT name, salary, ((salary * 2.5)/1000) AS INCOME from t1;
name salary INCOME
Record_1 100011 250.0275
Record_2 501 1.2525
-Record_3 210 0.525
-'Bug#35374: div_precision is not working with table column'
+Record_3 210 0.5250
## Verifying variable's behavior with direct division ##
SELECT 1/7;
1/7
@@ -32,7 +31,7 @@ CREATE TABLE t1
id INT NOT NULL auto_increment,
PRIMARY KEY (id),
name VARCHAR(30),
-salary LONG,
+salary INT,
income_tax FLOAT
);
## Creating new connection test_con1 ##
diff --git a/mysql-test/suite/sys_vars/r/engine_condition_pushdown_basic.result b/mysql-test/suite/sys_vars/r/engine_condition_pushdown_basic.result
index 7073066c2f1..2b0b57d5b33 100644
--- a/mysql-test/suite/sys_vars/r/engine_condition_pushdown_basic.result
+++ b/mysql-test/suite/sys_vars/r/engine_condition_pushdown_basic.result
@@ -6,19 +6,33 @@ SET @global_start_value = @@global.engine_condition_pushdown;
SELECT @global_start_value;
@global_start_value
1
+select @old_session_opt_switch:=@@session.optimizer_switch,
+@old_global_opt_switch:=@@global.optimizer_switch;
+@old_session_opt_switch:=@@session.optimizer_switch @old_global_opt_switch:=@@global.optimizer_switch
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
'#--------------------FN_DYNVARS_028_01------------------------#'
SET @@session.engine_condition_pushdown = 0;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SET @@session.engine_condition_pushdown = DEFAULT;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown;
@@session.engine_condition_pushdown
1
SET @@global.engine_condition_pushdown = 0;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SET @@global.engine_condition_pushdown = DEFAULT;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown;
@@global.engine_condition_pushdown
1
'#---------------------FN_DYNVARS_028_02-------------------------#'
SET engine_condition_pushdown = 1;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@engine_condition_pushdown;
@@engine_condition_pushdown
1
@@ -29,27 +43,39 @@ ERROR 42S02: Unknown table 'local' in field list
SELECT global.engine_condition_pushdown;
ERROR 42S02: Unknown table 'global' in field list
SET session engine_condition_pushdown = 0;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown;
@@session.engine_condition_pushdown
0
SET global engine_condition_pushdown = 0;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown;
@@global.engine_condition_pushdown
0
'#--------------------FN_DYNVARS_028_03------------------------#'
SET @@session.engine_condition_pushdown = 0;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown;
@@session.engine_condition_pushdown
0
SET @@session.engine_condition_pushdown = 1;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown;
@@session.engine_condition_pushdown
1
SET @@global.engine_condition_pushdown = 0;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown;
@@global.engine_condition_pushdown
0
SET @@global.engine_condition_pushdown = 1;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown;
@@global.engine_condition_pushdown
1
@@ -57,22 +83,19 @@ SELECT @@global.engine_condition_pushdown;
SET @@session.engine_condition_pushdown = -1;
ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of '-1'
SET @@session.engine_condition_pushdown = 1.6;
-ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of '2'
+ERROR 42000: Incorrect argument type to variable 'engine_condition_pushdown'
SET @@session.engine_condition_pushdown = "T";
ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'T'
SET @@session.engine_condition_pushdown = "Y";
ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'Y'
SET @@session.engine_condition_pushdown = TRÜE;
-ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'TRÜE'
SET @@session.engine_condition_pushdown = ÕN;
-ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'ÕN'
+ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'ÕN'
SET @@session.engine_condition_pushdown = OF;
-SELECT @@session.engine_condition_pushdown;
-@@session.engine_condition_pushdown
-0
-'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
+ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'OF'
SET @@session.engine_condition_pushdown = ÓFF;
-ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'ÓFF'
+ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'ÓFF'
SET @@global.engine_condition_pushdown = -1;
ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of '-1'
SET @@global.engine_condition_pushdown = 2;
@@ -82,31 +105,34 @@ ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of '
SET @@global.engine_condition_pushdown = "Y";
ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'Y'
SET @@global.engine_condition_pushdown = TRÜE;
-ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'TRÜE'
SET @@global.engine_condition_pushdown = ÕN;
-ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'ÕN'
+ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'ÕN'
SET @@global.engine_condition_pushdown = OF;
-SELECT @@global.engine_condition_pushdown;
-@@global.engine_condition_pushdown
-0
-'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
+ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'OF'
SET @@global.engine_condition_pushdown = ÓFF;
-ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'ÓFF'
+ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'ÓFF'
'#-------------------FN_DYNVARS_028_05----------------------------#'
SET @@global.engine_condition_pushdown = 0;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SET @@session.engine_condition_pushdown = 1;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown AS res_is_0;
res_is_0
0
SET @@global.engine_condition_pushdown = 0;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown AS res_is_1;
res_is_1
1
'#----------------------FN_DYNVARS_028_06------------------------#'
-SELECT @@global.engine_condition_pushdown = VARIABLE_VALUE
+SELECT IF(@@global.engine_condition_pushdown, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='engine_condition_pushdown';
-@@global.engine_condition_pushdown = VARIABLE_VALUE
+IF(@@global.engine_condition_pushdown, "ON", "OFF") = VARIABLE_VALUE
1
SELECT @@global.engine_condition_pushdown;
@@global.engine_condition_pushdown
@@ -117,11 +143,11 @@ WHERE VARIABLE_NAME='engine_condition_pushdown';
VARIABLE_VALUE
OFF
'#----------------------FN_DYNVARS_028_07------------------------#'
-SELECT @@session.engine_condition_pushdown = VARIABLE_VALUE
+SELECT IF(@@session.engine_condition_pushdown, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='engine_condition_pushdown';
-@@session.engine_condition_pushdown = VARIABLE_VALUE
-0
+IF(@@session.engine_condition_pushdown, "ON", "OFF") = VARIABLE_VALUE
+1
SELECT @@session.engine_condition_pushdown;
@@session.engine_condition_pushdown
1
@@ -132,43 +158,133 @@ VARIABLE_VALUE
ON
'#---------------------FN_DYNVARS_028_08-------------------------#'
SET @@session.engine_condition_pushdown = OFF;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown;
@@session.engine_condition_pushdown
0
SET @@session.engine_condition_pushdown = ON;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown;
@@session.engine_condition_pushdown
1
SET @@global.engine_condition_pushdown = OFF;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown;
@@global.engine_condition_pushdown
0
SET @@global.engine_condition_pushdown = ON;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown;
@@global.engine_condition_pushdown
1
'#---------------------FN_DYNVARS_028_09----------------------#'
SET @@session.engine_condition_pushdown = TRUE;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown;
@@session.engine_condition_pushdown
1
SET @@session.engine_condition_pushdown = FALSE;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown;
@@session.engine_condition_pushdown
0
SET @@global.engine_condition_pushdown = TRUE;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown;
@@global.engine_condition_pushdown
1
SET @@global.engine_condition_pushdown = FALSE;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown;
@@global.engine_condition_pushdown
0
+Check that @@engine_condition_pushdown influences
+@@optimizer_switch and vice-versa
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+0 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
+set @@session.engine_condition_pushdown = TRUE;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+1 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
+set @@session.engine_condition_pushdown = FALSE;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+0 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
+set @@global.engine_condition_pushdown = TRUE;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+0 1 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
+set @@global.engine_condition_pushdown = FALSE;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+0 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
+set @@session.optimizer_switch = "engine_condition_pushdown=on";
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+1 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
+set @@session.optimizer_switch = "engine_condition_pushdown=off";
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+0 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
+set @@global.optimizer_switch = "engine_condition_pushdown=on";
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+0 1 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
+set @@global.optimizer_switch = "engine_condition_pushdown=off";
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+0 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
SET @@session.engine_condition_pushdown = @session_start_value;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown;
@@session.engine_condition_pushdown
1
SET @@global.engine_condition_pushdown = @global_start_value;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown;
@@global.engine_condition_pushdown
1
+set @session.optimizer_switch=@old_session_opt_switch,
+@@global.optimizer_switch=@old_global_opt_switch;
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+1 1 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
diff --git a/mysql-test/suite/sys_vars/r/event_scheduler_basic.result b/mysql-test/suite/sys_vars/r/event_scheduler_basic.result
index 8042187d39d..835321530eb 100644
--- a/mysql-test/suite/sys_vars/r/event_scheduler_basic.result
+++ b/mysql-test/suite/sys_vars/r/event_scheduler_basic.result
@@ -4,8 +4,9 @@ SELECT @start_value;
OFF
'#---------------------FN_DYNVARS_004_01-------------------------#'
SET @@global.event_scheduler = DEFAULT;
-ERROR 42000: Variable 'event_scheduler' doesn't have a default value
-'Bug# 34878: According to documentation the default value of variable is OFF';
+SELECT @@global.event_scheduler;
+@@global.event_scheduler
+OFF
'#--------------------FN_DYNVARS_004_02------------------------#'
SET @@global.event_scheduler = ON;
SELECT @@global.event_scheduler;
diff --git a/mysql-test/suite/sys_vars/r/expire_logs_days_basic.result b/mysql-test/suite/sys_vars/r/expire_logs_days_basic.result
index 1abab8e68b0..59b2662d1ea 100644
--- a/mysql-test/suite/sys_vars/r/expire_logs_days_basic.result
+++ b/mysql-test/suite/sys_vars/r/expire_logs_days_basic.result
@@ -66,7 +66,6 @@ Warning 1292 Truncated incorrect expire_logs_days value: '42949672950'
SELECT @@global.expire_logs_days;
@@global.expire_logs_days
99
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
SET @@global.expire_logs_days = ON;
ERROR 42000: Incorrect argument type to variable 'expire_logs_days'
SELECT @@global.expire_logs_days;
diff --git a/mysql-test/suite/sys_vars/r/flush_basic.result b/mysql-test/suite/sys_vars/r/flush_basic.result
index 259f8f929a1..9a080ee0313 100644
--- a/mysql-test/suite/sys_vars/r/flush_basic.result
+++ b/mysql-test/suite/sys_vars/r/flush_basic.result
@@ -5,11 +5,9 @@ SELECT @start_value;
'#--------------------FN_DYNVARS_030_01------------------------#'
SET @@global.flush = ON;
SET @@global.flush = DEFAULT;
-ERROR 42000: Variable 'flush' doesn't have a default value
-'Bug# 34878: FN_DYNVARS_002_01 - Default value is off according to Documentation of MySQL';
SELECT @@global.flush;
@@global.flush
-1
+0
'#---------------------FN_DYNVARS_030_02-------------------------#'
SET @@global.flush = @start_value;
SELECT @@global.flush;
@@ -63,11 +61,11 @@ ERROR HY000: Variable 'flush' is a GLOBAL variable and should be set with SET GL
SELECT @@session.flush;
ERROR HY000: Variable 'flush' is a GLOBAL variable
'#----------------------FN_DYNVARS_030_06------------------------#'
-SELECT @@global.flush = VARIABLE_VALUE
+SELECT IF(@@global.flush, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='flush';
-@@global.flush = VARIABLE_VALUE
-0
+IF(@@global.flush, "ON", "OFF") = VARIABLE_VALUE
+1
'#---------------------FN_DYNVARS_030_07----------------------#'
SET @@global.flush = TRUE;
SELECT @@global.flush;
diff --git a/mysql-test/suite/sys_vars/r/flush_time_basic.result b/mysql-test/suite/sys_vars/r/flush_time_basic.result
new file mode 100644
index 00000000000..8dac3bbdb1e
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/flush_time_basic.result
@@ -0,0 +1,41 @@
+SET @start_global_value = @@global.flush_time;
+select @@global.flush_time;
+@@global.flush_time
+0
+select @@session.flush_time;
+ERROR HY000: Variable 'flush_time' is a GLOBAL variable
+show global variables like 'flush_time';
+Variable_name Value
+flush_time 0
+show session variables like 'flush_time';
+Variable_name Value
+flush_time 0
+select * from information_schema.global_variables where variable_name='flush_time';
+VARIABLE_NAME VARIABLE_VALUE
+FLUSH_TIME 0
+select * from information_schema.session_variables where variable_name='flush_time';
+VARIABLE_NAME VARIABLE_VALUE
+FLUSH_TIME 0
+set global flush_time=1;
+select @@global.flush_time;
+@@global.flush_time
+1
+set session flush_time=1;
+ERROR HY000: Variable 'flush_time' is a GLOBAL variable and should be set with SET GLOBAL
+set global flush_time=1.1;
+ERROR 42000: Incorrect argument type to variable 'flush_time'
+set global flush_time=1e1;
+ERROR 42000: Incorrect argument type to variable 'flush_time'
+set global flush_time="foo";
+ERROR 42000: Incorrect argument type to variable 'flush_time'
+set global flush_time=0;
+select @@global.flush_time;
+@@global.flush_time
+0
+set global flush_time=cast(-1 as unsigned int);
+Warnings:
+Warning 1292 Truncated incorrect flush_time value: '18446744073709551615'
+select @@global.flush_time;
+@@global.flush_time
+31536000
+SET @@global.flush_time = @start_global_value;
diff --git a/mysql-test/suite/sys_vars/r/foreign_key_checks_basic.result b/mysql-test/suite/sys_vars/r/foreign_key_checks_basic.result
index e09e680fe99..834d693edb8 100644
--- a/mysql-test/suite/sys_vars/r/foreign_key_checks_basic.result
+++ b/mysql-test/suite/sys_vars/r/foreign_key_checks_basic.result
@@ -7,8 +7,7 @@ SET @@session.foreign_key_checks = 1;
SET @@session.foreign_key_checks = DEFAULT;
SELECT @@session.foreign_key_checks;
@@session.foreign_key_checks
-1
-'Bug# 34878: No DEFAULT value for variable. Also setting DEFAULT does not give error'
+0
'#---------------------FN_DYNVARS_032_02-------------------------#'
SET foreign_key_checks = 1;
SELECT @@foreign_key_checks;
@@ -41,43 +40,41 @@ ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of 'T'
SET @@session.foreign_key_checks = "Y";
ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of 'Y'
SET @@session.foreign_key_checks = TRÜE;
-ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of 'TRÜE'
SET @@session.foreign_key_checks = ÕN;
-ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of 'ÕN'
+ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of 'ÕN'
SET @@session.foreign_key_checks = OF;
-SELECT @@session.foreign_key_checks;
-@@session.foreign_key_checks
-0
-'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
+ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of 'OF'
SET @@session.foreign_key_checks = ÓFF;
-ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of 'ÓFF'
+ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of 'ÓFF'
SET @@session.foreign_key_checks = '¹';
ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of '¹'
SET @@session.foreign_key_checks = NO;
ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of 'NO'
'#-------------------FN_DYNVARS_032_05----------------------------#'
SET @@global.foreign_key_checks = 0;
-ERROR HY000: Variable 'foreign_key_checks' is a SESSION variable and can't be used with SET GLOBAL
SELECT @@global.foreign_key_checks;
-ERROR HY000: Variable 'foreign_key_checks' is a SESSION variable
+@@global.foreign_key_checks
+0
+SET @@global.foreign_key_checks = 1;
'#----------------------FN_DYNVARS_032_06------------------------#'
SELECT count(VARIABLE_VALUE) FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='foreign_key_checks';
count(VARIABLE_VALUE)
1
'#----------------------FN_DYNVARS_032_07------------------------#'
-SELECT @@session.foreign_key_checks = VARIABLE_VALUE
+SELECT IF(@@session.foreign_key_checks, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='foreign_key_checks';
-@@session.foreign_key_checks = VARIABLE_VALUE
+IF(@@session.foreign_key_checks, "ON", "OFF") = VARIABLE_VALUE
1
SELECT @@session.foreign_key_checks;
@@session.foreign_key_checks
-0
+1
SELECT VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='foreign_key_checks';
VARIABLE_VALUE
-OFF
+ON
'#---------------------FN_DYNVARS_032_08-------------------------#'
SET @@session.foreign_key_checks = OFF;
SELECT @@session.foreign_key_checks;
diff --git a/mysql-test/suite/sys_vars/r/foreign_key_checks_func.result b/mysql-test/suite/sys_vars/r/foreign_key_checks_func.result
index c2898293f83..9b1736541c1 100644
--- a/mysql-test/suite/sys_vars/r/foreign_key_checks_func.result
+++ b/mysql-test/suite/sys_vars/r/foreign_key_checks_func.result
@@ -36,9 +36,6 @@ INSERT INTO t2 values (20,4);
'try enabling foreign_key_checks again';
SET @@session.foreign_key_checks = 1;
UPDATE t2 SET b=4 where a=20;
-'Bug#35358: Updating an incorrect foreign key(inserted by disabling '
-'foreign_key_checks)to the same value does not raise error after '
-'enabling foreign_key_checks'
'Check when foreign_key_checks is enabled and FK constraint is re-created'
SET @@session.foreign_key_checks = 0;
TRUNCATE t2;
diff --git a/mysql-test/suite/sys_vars/r/ft_boolean_syntax_basic.result b/mysql-test/suite/sys_vars/r/ft_boolean_syntax_basic.result
index 94a052172bb..d889eb7bba7 100644
--- a/mysql-test/suite/sys_vars/r/ft_boolean_syntax_basic.result
+++ b/mysql-test/suite/sys_vars/r/ft_boolean_syntax_basic.result
@@ -93,9 +93,6 @@ SELECT @global_start_value;
@global_start_value
+ -><()~*:""&|
SET @@global.ft_boolean_syntax = @global_start_value;
-ERROR 42000: Variable 'ft_boolean_syntax' can't be set to the value of ''
-'Bug# 34883: ft_boolean_syntax cant be assigned values from session temporary';
-'variables';
SET @@global.ft_boolean_syntax = DEFAULT;
SELECT @@global.ft_boolean_syntax;
@@global.ft_boolean_syntax
diff --git a/mysql-test/suite/sys_vars/r/ft_boolean_syntax_func.result b/mysql-test/suite/sys_vars/r/ft_boolean_syntax_func.result
index 0096c553155..fa4899f4c39 100644
--- a/mysql-test/suite/sys_vars/r/ft_boolean_syntax_func.result
+++ b/mysql-test/suite/sys_vars/r/ft_boolean_syntax_func.result
@@ -70,20 +70,20 @@ FROM articles WHERE MATCH (title,body)
AGAINST ('+security configuring' IN BOOLEAN MODE);
id title body relevance
8 MySQL Security When configured properly, MySQL ... 1
-9 Database Security Configuring MySQL for ... 1.33333337306976
+9 Database Security Configuring MySQL for ... 1.3333333730697632
SELECT * FROM articles WHERE MATCH (title,body)
AGAINST ('"faster than"' IN BOOLEAN MODE);
id title body
6 100 Tips for Myisam 1. Myisam is faster than innodb 2. Tricks and Tips for Myisam...
SELECT * FROM articles WHERE MATCH (title,body)
-AGAINST ('+run ~line' IN BOOLEAN MODE);
+AGAINST ('+tutorial ~line' IN BOOLEAN MODE);
id title body
-'Bug#35359: ~ is not working correctly. Its behaving like -'
+1 MySQL Tutorial DBMS stands for DataBase ...
+4 Optimizing MySQL In this tutorial we will show .... Run command line ...
SELECT * FROM articles WHERE MATCH (title,body)
AGAINST ('10*' IN BOOLEAN MODE);
id title body
5 1001 MySQL Tricks 1. Never run mysqld as root. 2. ...
-'Bug#35360: * is not working correctly. Not all rows are returned'
SELECT id,title,body, (MATCH (title,body)
AGAINST ('+MySQL +(>show <dbms)' IN BOOLEAN MODE)) AS relevance
FROM articles WHERE MATCH (title,body)
@@ -91,7 +91,7 @@ AGAINST ('+MySQL +(>show <dbms)' IN BOOLEAN MODE)
ORDER BY relevance DESC;
id title body relevance
4 Optimizing MySQL In this tutorial we will show .... Run command line ... 1.25
-1 MySQL Tutorial DBMS stands for DataBase ... 0.833333373069763
+1 MySQL Tutorial DBMS stands for DataBase ... 0.8333333730697632
'---try setting different operators. Default '+ -><()~*:""&|'--'
SET @@global.ft_boolean_syntax='~ /!@#$%^&*()-';
SELECT * FROM articles WHERE MATCH (title,body)
@@ -103,6 +103,5 @@ id title body
5 1001 MySQL Tricks 1. Never run mysqld as root. 2. ...
8 MySQL Security When configured properly, MySQL ...
9 Database Security Configuring MySQL for ...
-'Bug#35361: Different syntax does not produce result as default operators'
SET @@global.ft_boolean_syntax=DEFAULT;
DROP TABLE articles;
diff --git a/mysql-test/suite/sys_vars/r/ft_max_word_len_basic.result b/mysql-test/suite/sys_vars/r/ft_max_word_len_basic.result
new file mode 100644
index 00000000000..d35669aba44
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/ft_max_word_len_basic.result
@@ -0,0 +1,21 @@
+select @@global.ft_max_word_len;
+@@global.ft_max_word_len
+84
+select @@session.ft_max_word_len;
+ERROR HY000: Variable 'ft_max_word_len' is a GLOBAL variable
+show global variables like 'ft_max_word_len';
+Variable_name Value
+ft_max_word_len 84
+show session variables like 'ft_max_word_len';
+Variable_name Value
+ft_max_word_len 84
+select * from information_schema.global_variables where variable_name='ft_max_word_len';
+VARIABLE_NAME VARIABLE_VALUE
+FT_MAX_WORD_LEN 84
+select * from information_schema.session_variables where variable_name='ft_max_word_len';
+VARIABLE_NAME VARIABLE_VALUE
+FT_MAX_WORD_LEN 84
+set global ft_max_word_len=1;
+ERROR HY000: Variable 'ft_max_word_len' is a read only variable
+set session ft_max_word_len=1;
+ERROR HY000: Variable 'ft_max_word_len' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/ft_min_word_len_basic.result b/mysql-test/suite/sys_vars/r/ft_min_word_len_basic.result
new file mode 100644
index 00000000000..008955eaf01
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/ft_min_word_len_basic.result
@@ -0,0 +1,21 @@
+select @@global.ft_min_word_len;
+@@global.ft_min_word_len
+4
+select @@session.ft_min_word_len;
+ERROR HY000: Variable 'ft_min_word_len' is a GLOBAL variable
+show global variables like 'ft_min_word_len';
+Variable_name Value
+ft_min_word_len 4
+show session variables like 'ft_min_word_len';
+Variable_name Value
+ft_min_word_len 4
+select * from information_schema.global_variables where variable_name='ft_min_word_len';
+VARIABLE_NAME VARIABLE_VALUE
+FT_MIN_WORD_LEN 4
+select * from information_schema.session_variables where variable_name='ft_min_word_len';
+VARIABLE_NAME VARIABLE_VALUE
+FT_MIN_WORD_LEN 4
+set global ft_min_word_len=1;
+ERROR HY000: Variable 'ft_min_word_len' is a read only variable
+set session ft_min_word_len=1;
+ERROR HY000: Variable 'ft_min_word_len' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/ft_query_expansion_limit_basic.result b/mysql-test/suite/sys_vars/r/ft_query_expansion_limit_basic.result
new file mode 100644
index 00000000000..e4577fb5368
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/ft_query_expansion_limit_basic.result
@@ -0,0 +1,21 @@
+select @@global.ft_query_expansion_limit;
+@@global.ft_query_expansion_limit
+20
+select @@session.ft_query_expansion_limit;
+ERROR HY000: Variable 'ft_query_expansion_limit' is a GLOBAL variable
+show global variables like 'ft_query_expansion_limit';
+Variable_name Value
+ft_query_expansion_limit 20
+show session variables like 'ft_query_expansion_limit';
+Variable_name Value
+ft_query_expansion_limit 20
+select * from information_schema.global_variables where variable_name='ft_query_expansion_limit';
+VARIABLE_NAME VARIABLE_VALUE
+FT_QUERY_EXPANSION_LIMIT 20
+select * from information_schema.session_variables where variable_name='ft_query_expansion_limit';
+VARIABLE_NAME VARIABLE_VALUE
+FT_QUERY_EXPANSION_LIMIT 20
+set global ft_query_expansion_limit=1;
+ERROR HY000: Variable 'ft_query_expansion_limit' is a read only variable
+set session ft_query_expansion_limit=1;
+ERROR HY000: Variable 'ft_query_expansion_limit' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/ft_stopword_file_basic.result b/mysql-test/suite/sys_vars/r/ft_stopword_file_basic.result
new file mode 100644
index 00000000000..89792eaa03a
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/ft_stopword_file_basic.result
@@ -0,0 +1,21 @@
+select @@global.ft_stopword_file;
+@@global.ft_stopword_file
+(built-in)
+select @@session.ft_stopword_file;
+ERROR HY000: Variable 'ft_stopword_file' is a GLOBAL variable
+show global variables like 'ft_stopword_file';
+Variable_name Value
+ft_stopword_file (built-in)
+show session variables like 'ft_stopword_file';
+Variable_name Value
+ft_stopword_file (built-in)
+select * from information_schema.global_variables where variable_name='ft_stopword_file';
+VARIABLE_NAME VARIABLE_VALUE
+FT_STOPWORD_FILE (built-in)
+select * from information_schema.session_variables where variable_name='ft_stopword_file';
+VARIABLE_NAME VARIABLE_VALUE
+FT_STOPWORD_FILE (built-in)
+set global ft_stopword_file=1;
+ERROR HY000: Variable 'ft_stopword_file' is a read only variable
+set session ft_stopword_file=1;
+ERROR HY000: Variable 'ft_stopword_file' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/general_log_basic.result b/mysql-test/suite/sys_vars/r/general_log_basic.result
index 18a5fde45c0..df6ec9fb384 100644
--- a/mysql-test/suite/sys_vars/r/general_log_basic.result
+++ b/mysql-test/suite/sys_vars/r/general_log_basic.result
@@ -47,10 +47,10 @@ ERROR HY000: Variable 'general_log' is a GLOBAL variable and should be set with
SELECT @@session.general_log;
ERROR HY000: Variable 'general_log' is a GLOBAL variable
'#----------------------FN_DYNVARS_004_05------------------------#'
-SELECT @@global.general_log = VARIABLE_VALUE
+SELECT IF(@@global.general_log, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='general_log';
-@@global.general_log = VARIABLE_VALUE
+IF(@@global.general_log, "ON", "OFF") = VARIABLE_VALUE
1
'#---------------------FN_DYNVARS_004_06----------------------#'
SET @@global.general_log = 0;
diff --git a/mysql-test/suite/sys_vars/r/general_log_file_basic.result b/mysql-test/suite/sys_vars/r/general_log_file_basic.result
index 48a8d90b55e..611e0f80d86 100644
--- a/mysql-test/suite/sys_vars/r/general_log_file_basic.result
+++ b/mysql-test/suite/sys_vars/r/general_log_file_basic.result
@@ -4,9 +4,10 @@ SELECT @start_value;
test.log
'#---------------------FN_DYNVARS_004_01-------------------------#'
SET @@global.general_log_file = DEFAULT;
-SELECT RIGHT(@@global.general_log_file,10) AS log_file;
-log_file
-mysqld.log
+SET @a=concat(left(@@hostname, instr(concat(@@hostname, '.'), '.')-1), '.log');
+SELECT RIGHT(@@global.general_log_file, length(@a)) = @a;
+RIGHT(@@global.general_log_file, length(@a)) = @a
+1
'#--------------------FN_DYNVARS_004_02------------------------#'
SET @@global.general_log_file = mytest.log;
SET @@global.general_log_file = 12;
diff --git a/mysql-test/suite/sys_vars/r/general_log_func.result b/mysql-test/suite/sys_vars/r/general_log_func.result
index 39ba90265d5..5a5b4bdc5ec 100644
--- a/mysql-test/suite/sys_vars/r/general_log_func.result
+++ b/mysql-test/suite/sys_vars/r/general_log_func.result
@@ -12,6 +12,10 @@ SET @@global.general_log = OFF;
SELECT @@general_log;
@@general_log
0
+flush logs;
+SET @@global.general_log = ON;
+flush logs;
+SET @@global.general_log = OFF;
## Inserting some Records & Verifying output in log ##
INSERT into t1(name) values('Record_1');
INSERT into t1(name) values('Record_2');
@@ -25,12 +29,11 @@ SELECT @@general_log;
## Inserting some Records & Verifying output in log ##
INSERT into t1(name) values('Record_3');
INSERT into t1(name) values('Record_4');
-## There should be a difference ##
-SET @@global.max_allowed_packet= 1024*1024*1024;
+## old log is a proper prefix of the new log ##
SET @orig_file= load_file('MYSQLD_LOGFILE.orig');
SET @copy_file= load_file('MYSQLD_LOGFILE.copy');
-SELECT STRCMP(@orig_file, @copy_file);
-STRCMP(@orig_file, @copy_file)
-1
+SELECT @orig_file > @copy_file, left(@orig_file, length(@copy_file)) = @copy_file;
+@orig_file > @copy_file left(@orig_file, length(@copy_file)) = @copy_file
+1 1
## Dropping tables ##
DROP TABLE t1;
diff --git a/mysql-test/suite/sys_vars/r/group_concat_max_len_basic.result b/mysql-test/suite/sys_vars/r/group_concat_max_len_basic.result
index 4821ca91308..48126d33ee8 100644
--- a/mysql-test/suite/sys_vars/r/group_concat_max_len_basic.result
+++ b/mysql-test/suite/sys_vars/r/group_concat_max_len_basic.result
@@ -73,8 +73,8 @@ SET @@global.group_concat_max_len = 65536;
SELECT @@global.group_concat_max_len;
@@global.group_concat_max_len
65536
-SET @@global.group_concat_max_len = 65530.34.;
-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 '.' at line 1
+SET @@global.group_concat_max_len = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'group_concat_max_len'
SELECT @@global.group_concat_max_len;
@@global.group_concat_max_len
65536
@@ -95,13 +95,12 @@ Warning 1292 Truncated incorrect group_concat_max_len value: '-2'
SELECT @@session.group_concat_max_len;
@@session.group_concat_max_len
4
-SET @@session.group_concat_max_len = 65530.34.;
-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 '.' at line 1
+SET @@session.group_concat_max_len = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'group_concat_max_len'
SET @@session.group_concat_max_len = 65550;
SELECT @@session.group_concat_max_len;
@@session.group_concat_max_len
65550
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
SET @@session.group_concat_max_len = test;
ERROR 42000: Incorrect argument type to variable 'group_concat_max_len'
SELECT @@session.group_concat_max_len;
diff --git a/mysql-test/suite/sys_vars/r/group_concat_max_len_func.result b/mysql-test/suite/sys_vars/r/group_concat_max_len_func.result
index 52d67b8d274..f04dfee583d 100644
--- a/mysql-test/suite/sys_vars/r/group_concat_max_len_func.result
+++ b/mysql-test/suite/sys_vars/r/group_concat_max_len_func.result
@@ -41,7 +41,10 @@ id rollno GROUP_CONCAT(name)
4 3 Reco
7 4 Reco
Warnings:
-Warning 1260 4 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 1 was cut by GROUP_CONCAT()
+Warning 1260 Row 2 was cut by GROUP_CONCAT()
+Warning 1260 Row 3 was cut by GROUP_CONCAT()
+Warning 1260 Row 4 was cut by GROUP_CONCAT()
## Changing session value of variable and verifying its behavior, ##
## warning should come here ##
SET @@session.group_concat_max_len = 10;
@@ -52,7 +55,9 @@ id rollno GROUP_CONCAT(name)
4 3 Record_4,R
7 4 Record_7,R
Warnings:
-Warning 1260 3 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 2 was cut by GROUP_CONCAT()
+Warning 1260 Row 5 was cut by GROUP_CONCAT()
+Warning 1260 Row 7 was cut by GROUP_CONCAT()
'#--------------------FN_DYNVARS_034_03-------------------------#'
## Connecting with new connection test_con2 ##
## Verifying initial value of variable. It should be 4 ##
@@ -71,7 +76,7 @@ id rollno GROUP_CONCAT(name)
4 3 Record_4,Record_6
7 4 Record_7,Record_8
Warnings:
-Warning 1260 1 line(s) were cut by GROUP_CONCAT()
+Warning 1260 Row 3 was cut by GROUP_CONCAT()
'#--------------------FN_DYNVARS_034_04-------------------------#'
## Setting session value of variable to 26. No warning should appear here ##
## because the value after concatination is less than 30 ##
diff --git a/mysql-test/suite/sys_vars/r/have_profiling_basic.result b/mysql-test/suite/sys_vars/r/have_profiling_basic.result
new file mode 100644
index 00000000000..72923134e83
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/have_profiling_basic.result
@@ -0,0 +1,21 @@
+select @@global.have_profiling="1";
+@@global.have_profiling="1"
+0
+select @@session.have_profiling;
+ERROR HY000: Variable 'have_profiling' is a GLOBAL variable
+show global variables like 'have_profiling';
+Variable_name Value
+have_profiling #
+show session variables like 'have_profiling';
+Variable_name Value
+have_profiling #
+select * from information_schema.global_variables where variable_name='have_profiling';
+VARIABLE_NAME VARIABLE_VALUE
+HAVE_PROFILING #
+select * from information_schema.session_variables where variable_name='have_profiling';
+VARIABLE_NAME VARIABLE_VALUE
+HAVE_PROFILING #
+set global have_profiling=1;
+ERROR HY000: Variable 'have_profiling' is a read only variable
+set session have_profiling=1;
+ERROR HY000: Variable 'have_profiling' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/identity_basic.result b/mysql-test/suite/sys_vars/r/identity_basic.result
index 60f3edcc030..063decf2eb1 100644
--- a/mysql-test/suite/sys_vars/r/identity_basic.result
+++ b/mysql-test/suite/sys_vars/r/identity_basic.result
@@ -32,9 +32,11 @@ SELECT @@session.identity;
65535
'#--------------------FN_DYNVARS_035_04-------------------------#'
SET @@session.identity = -1;
+Warnings:
+Warning 1292 Truncated incorrect identity value: '-1'
SELECT @@session.identity;
@@session.identity
--1
+0
SET @@session.identity = 100000000000;
SELECT @@session.identity;
@@session.identity
@@ -45,14 +47,15 @@ SELECT @@session.identity;
@@session.identity
100000000000
SET @@session.identity = -1024;
+Warnings:
+Warning 1292 Truncated incorrect identity value: '-1024'
SELECT @@session.identity;
@@session.identity
--1024
+0
SET @@session.identity = 42949672950;
SELECT @@session.identity;
@@session.identity
42949672950
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
SET @@session.identity = ON;
ERROR 42000: Incorrect argument type to variable 'identity'
SELECT @@session.identity;
diff --git a/mysql-test/suite/sys_vars/r/ignore_builtin_innodb_basic.result b/mysql-test/suite/sys_vars/r/ignore_builtin_innodb_basic.result
new file mode 100644
index 00000000000..85084c13115
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/ignore_builtin_innodb_basic.result
@@ -0,0 +1,21 @@
+select @@global.ignore_builtin_innodb;
+@@global.ignore_builtin_innodb
+0
+select @@session.ignore_builtin_innodb;
+ERROR HY000: Variable 'ignore_builtin_innodb' is a GLOBAL variable
+show global variables like 'ignore_builtin_innodb';
+Variable_name Value
+ignore_builtin_innodb OFF
+show session variables like 'ignore_builtin_innodb';
+Variable_name Value
+ignore_builtin_innodb OFF
+select * from information_schema.global_variables where variable_name='ignore_builtin_innodb';
+VARIABLE_NAME VARIABLE_VALUE
+IGNORE_BUILTIN_INNODB OFF
+select * from information_schema.session_variables where variable_name='ignore_builtin_innodb';
+VARIABLE_NAME VARIABLE_VALUE
+IGNORE_BUILTIN_INNODB OFF
+set global ignore_builtin_innodb=1;
+ERROR HY000: Variable 'ignore_builtin_innodb' is a read only variable
+set session ignore_builtin_innodb=1;
+ERROR HY000: Variable 'ignore_builtin_innodb' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/init_connect_basic.result b/mysql-test/suite/sys_vars/r/init_connect_basic.result
index 58f7a9d2ccd..333a230a4a1 100644
--- a/mysql-test/suite/sys_vars/r/init_connect_basic.result
+++ b/mysql-test/suite/sys_vars/r/init_connect_basic.result
Binary files differ
diff --git a/mysql-test/suite/sys_vars/r/init_file_basic.result b/mysql-test/suite/sys_vars/r/init_file_basic.result
new file mode 100644
index 00000000000..1e13b53d913
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/init_file_basic.result
@@ -0,0 +1,21 @@
+select @@global.init_file;
+@@global.init_file
+NULL
+select @@session.init_file;
+ERROR HY000: Variable 'init_file' is a GLOBAL variable
+show global variables like 'init_file';
+Variable_name Value
+init_file
+show session variables like 'init_file';
+Variable_name Value
+init_file
+select * from information_schema.global_variables where variable_name='init_file';
+VARIABLE_NAME VARIABLE_VALUE
+INIT_FILE
+select * from information_schema.session_variables where variable_name='init_file';
+VARIABLE_NAME VARIABLE_VALUE
+INIT_FILE
+set global init_file=1;
+ERROR HY000: Variable 'init_file' is a read only variable
+set session init_file=1;
+ERROR HY000: Variable 'init_file' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/innodb_autoextend_increment_basic.result b/mysql-test/suite/sys_vars/r/innodb_autoextend_increment_basic.result
index 69a8b6cc430..1f458a8e1fd 100644
--- a/mysql-test/suite/sys_vars/r/innodb_autoextend_increment_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_autoextend_increment_basic.result
@@ -2,7 +2,7 @@ SET @global_start_value = @@global.innodb_autoextend_increment ;
'#--------------------FN_DYNVARS_046_01------------------------#'
SET @@global.innodb_autoextend_increment = 0;
Warnings:
-Warning 1292 Truncated incorrect autoextend_increment value: '0'
+Warning 1292 Truncated incorrect innodb_autoextend_increment value: '0'
SET @@global.innodb_autoextend_increment = DEFAULT;
SELECT @@global.innodb_autoextend_increment ;
@@global.innodb_autoextend_increment
@@ -17,7 +17,7 @@ SELECT local.innodb_autoextend_increment ;
ERROR 42S02: Unknown table 'local' in field list
SET global innodb_autoextend_increment = 0;
Warnings:
-Warning 1292 Truncated incorrect autoextend_increment value: '0'
+Warning 1292 Truncated incorrect innodb_autoextend_increment value: '0'
SELECT @@global.innodb_autoextend_increment ;
@@global.innodb_autoextend_increment
1
@@ -33,23 +33,23 @@ SELECT @@global.innodb_autoextend_increment ;
'#--------------------FN_DYNVARS_046_04-------------------------#'
SET @@global.innodb_autoextend_increment = -1;
Warnings:
-Warning 1292 Truncated incorrect autoextend_increment value: '18446744073709551615'
+Warning 1292 Truncated incorrect innodb_autoextend_increment value: '-1'
SELECT @@global.innodb_autoextend_increment;
@@global.innodb_autoextend_increment
-1000
+1
SET @@global.innodb_autoextend_increment = "T";
ERROR 42000: Incorrect argument type to variable 'innodb_autoextend_increment'
SELECT @@global.innodb_autoextend_increment;
@@global.innodb_autoextend_increment
-1000
+1
SET @@global.innodb_autoextend_increment = "Y";
ERROR 42000: Incorrect argument type to variable 'innodb_autoextend_increment'
SELECT @@global.innodb_autoextend_increment;
@@global.innodb_autoextend_increment
-1000
+1
SET @@global.innodb_autoextend_increment = 1001;
Warnings:
-Warning 1292 Truncated incorrect autoextend_increment value: '1001'
+Warning 1292 Truncated incorrect innodb_autoextend_increment value: '1001'
SELECT @@global.innodb_autoextend_increment;
@@global.innodb_autoextend_increment
1000
@@ -85,7 +85,7 @@ SELECT @@global.innodb_autoextend_increment ;
1
SET @@global.innodb_autoextend_increment = FALSE;
Warnings:
-Warning 1292 Truncated incorrect autoextend_increment value: '0'
+Warning 1292 Truncated incorrect innodb_autoextend_increment value: '0'
SELECT @@global.innodb_autoextend_increment ;
@@global.innodb_autoextend_increment
1
diff --git a/mysql-test/suite/sys_vars/r/innodb_checksums_basic.result b/mysql-test/suite/sys_vars/r/innodb_checksums_basic.result
index ac4bed60eb5..bb3cbac1863 100644
--- a/mysql-test/suite/sys_vars/r/innodb_checksums_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_checksums_basic.result
@@ -12,11 +12,11 @@ COUNT(@@GLOBAL.innodb_checksums)
1
1 Expected
'#---------------------BS_STVARS_023_03----------------------#'
-SELECT @@GLOBAL.innodb_checksums = VARIABLE_VALUE
+SELECT IF(@@GLOBAL.innodb_checksums, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='innodb_checksums';
-@@GLOBAL.innodb_checksums = VARIABLE_VALUE
-0
+IF(@@GLOBAL.innodb_checksums, "ON", "OFF") = VARIABLE_VALUE
+1
1 Expected
SELECT COUNT(@@GLOBAL.innodb_checksums);
COUNT(@@GLOBAL.innodb_checksums)
diff --git a/mysql-test/suite/sys_vars/r/innodb_commit_concurrency_basic.result b/mysql-test/suite/sys_vars/r/innodb_commit_concurrency_basic.result
index 301016d4362..85a4b008ff0 100644
--- a/mysql-test/suite/sys_vars/r/innodb_commit_concurrency_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_commit_concurrency_basic.result
@@ -25,37 +25,17 @@ SET @@global.innodb_commit_concurrency = 0;
SELECT @@global.innodb_commit_concurrency;
@@global.innodb_commit_concurrency
0
-SET @@global.innodb_commit_concurrency = 1;
-SELECT @@global.innodb_commit_concurrency;
-@@global.innodb_commit_concurrency
-1
-SET @@global.innodb_commit_concurrency = 1000;
-SELECT @@global.innodb_commit_concurrency;
-@@global.innodb_commit_concurrency
-1000
'#--------------------FN_DYNVARS_046_04-------------------------#'
+SET @@global.innodb_commit_concurrency = 1;
+ERROR 42000: Variable 'innodb_commit_concurrency' can't be set to the value of '1'
SET @@global.innodb_commit_concurrency = -1;
-Warnings:
-Warning 1292 Truncated incorrect commit_concurrency value: '18446744073709551615'
-SELECT @@global.innodb_commit_concurrency;
-@@global.innodb_commit_concurrency
-1000
+ERROR 42000: Variable 'innodb_commit_concurrency' can't be set to the value of '-1'
SET @@global.innodb_commit_concurrency = "T";
ERROR 42000: Incorrect argument type to variable 'innodb_commit_concurrency'
-SELECT @@global.innodb_commit_concurrency;
-@@global.innodb_commit_concurrency
-1000
SET @@global.innodb_commit_concurrency = "Y";
ERROR 42000: Incorrect argument type to variable 'innodb_commit_concurrency'
-SELECT @@global.innodb_commit_concurrency;
-@@global.innodb_commit_concurrency
-1000
SET @@global.innodb_commit_concurrency = 1001;
-Warnings:
-Warning 1292 Truncated incorrect commit_concurrency value: '1001'
-SELECT @@global.innodb_commit_concurrency;
-@@global.innodb_commit_concurrency
-1000
+ERROR 42000: Variable 'innodb_commit_concurrency' can't be set to the value of '1001'
'#----------------------FN_DYNVARS_046_05------------------------#'
SELECT @@global.innodb_commit_concurrency =
VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
@@ -65,30 +45,21 @@ VARIABLE_VALUE
1
SELECT @@global.innodb_commit_concurrency;
@@global.innodb_commit_concurrency
-1000
+0
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='innodb_commit_concurrency';
VARIABLE_VALUE
-1000
+0
'#---------------------FN_DYNVARS_046_06-------------------------#'
SET @@global.innodb_commit_concurrency = OFF;
ERROR 42000: Incorrect argument type to variable 'innodb_commit_concurrency'
SELECT @@global.innodb_commit_concurrency;
@@global.innodb_commit_concurrency
-1000
+0
SET @@global.innodb_commit_concurrency = ON;
ERROR 42000: Incorrect argument type to variable 'innodb_commit_concurrency'
SELECT @@global.innodb_commit_concurrency;
@@global.innodb_commit_concurrency
-1000
-'#---------------------FN_DYNVARS_046_07----------------------#'
-SET @@global.innodb_commit_concurrency = TRUE;
-SELECT @@global.innodb_commit_concurrency;
-@@global.innodb_commit_concurrency
-1
-SET @@global.innodb_commit_concurrency = FALSE;
-SELECT @@global.innodb_commit_concurrency;
-@@global.innodb_commit_concurrency
0
SET @@global.innodb_commit_concurrency = @global_start_value;
SELECT @@global.innodb_commit_concurrency;
diff --git a/mysql-test/suite/sys_vars/r/innodb_concurrency_tickets_basic_64.result b/mysql-test/suite/sys_vars/r/innodb_concurrency_tickets_basic.result
index 40d307d8733..cd27de0cb0b 100644
--- a/mysql-test/suite/sys_vars/r/innodb_concurrency_tickets_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/innodb_concurrency_tickets_basic.result
@@ -5,7 +5,7 @@ SELECT @global_start_value;
'#--------------------FN_DYNVARS_046_01------------------------#'
SET @@global.innodb_concurrency_tickets = 0;
Warnings:
-Warning 1292 Truncated incorrect concurrency_tickets value: '0'
+Warning 1292 Truncated incorrect innodb_concurrency_tickets value: '0'
SET @@global.innodb_concurrency_tickets = DEFAULT;
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
@@ -20,7 +20,7 @@ SELECT local.innodb_concurrency_tickets;
ERROR 42S02: Unknown table 'local' in field list
SET global innodb_concurrency_tickets = 0;
Warnings:
-Warning 1292 Truncated incorrect concurrency_tickets value: '0'
+Warning 1292 Truncated incorrect innodb_concurrency_tickets value: '0'
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
1
@@ -39,19 +39,21 @@ SELECT @@global.innodb_concurrency_tickets;
4294967295
'#--------------------FN_DYNVARS_046_04-------------------------#'
SET @@global.innodb_concurrency_tickets = -1;
+Warnings:
+Warning 1292 Truncated incorrect innodb_concurrency_tickets value: '-1'
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
-18446744073709551615
+1
SET @@global.innodb_concurrency_tickets = "T";
ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets'
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
-18446744073709551615
+1
SET @@global.innodb_concurrency_tickets = "Y";
ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets'
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
-18446744073709551615
+1
SET @@global.innodb_concurrency_tickets = 1001;
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
@@ -88,7 +90,7 @@ SELECT @@global.innodb_concurrency_tickets;
1
SET @@global.innodb_concurrency_tickets = FALSE;
Warnings:
-Warning 1292 Truncated incorrect concurrency_tickets value: '0'
+Warning 1292 Truncated incorrect innodb_concurrency_tickets value: '0'
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
1
diff --git a/mysql-test/suite/sys_vars/r/innodb_concurrency_tickets_basic_32.result b/mysql-test/suite/sys_vars/r/innodb_concurrency_tickets_basic_32.result
deleted file mode 100644
index 1d1317d0d5e..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_concurrency_tickets_basic_32.result
+++ /dev/null
@@ -1,100 +0,0 @@
-SET @global_start_value = @@global.innodb_concurrency_tickets;
-SELECT @global_start_value;
-@global_start_value
-500
-'#--------------------FN_DYNVARS_046_01------------------------#'
-SET @@global.innodb_concurrency_tickets = 0;
-Warnings:
-Warning 1292 Truncated incorrect concurrency_tickets value: '0'
-SET @@global.innodb_concurrency_tickets = DEFAULT;
-SELECT @@global.innodb_concurrency_tickets;
-@@global.innodb_concurrency_tickets
-500
-'#---------------------FN_DYNVARS_046_02-------------------------#'
-SET innodb_concurrency_tickets = 1;
-ERROR HY000: Variable 'innodb_concurrency_tickets' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT @@innodb_concurrency_tickets;
-@@innodb_concurrency_tickets
-500
-SELECT local.innodb_concurrency_tickets;
-ERROR 42S02: Unknown table 'local' in field list
-SET global innodb_concurrency_tickets = 0;
-Warnings:
-Warning 1292 Truncated incorrect concurrency_tickets value: '0'
-SELECT @@global.innodb_concurrency_tickets;
-@@global.innodb_concurrency_tickets
-1
-'#--------------------FN_DYNVARS_046_03------------------------#'
-SET @@global.innodb_concurrency_tickets = 1;
-SELECT @@global.innodb_concurrency_tickets;
-@@global.innodb_concurrency_tickets
-1
-SET @@global.innodb_concurrency_tickets = 1000;
-SELECT @@global.innodb_concurrency_tickets;
-@@global.innodb_concurrency_tickets
-1000
-SET @@global.innodb_concurrency_tickets = 4294967295;
-SELECT @@global.innodb_concurrency_tickets;
-@@global.innodb_concurrency_tickets
-4294967295
-'#--------------------FN_DYNVARS_046_04-------------------------#'
-SET @@global.innodb_concurrency_tickets = -1;
-Warnings:
-Warning 1292 Truncated incorrect concurrency_tickets value: '18446744073709551615'
-SELECT @@global.innodb_concurrency_tickets;
-@@global.innodb_concurrency_tickets
-4294967295
-SET @@global.innodb_concurrency_tickets = "T";
-ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets'
-SELECT @@global.innodb_concurrency_tickets;
-@@global.innodb_concurrency_tickets
-4294967295
-SET @@global.innodb_concurrency_tickets = "Y";
-ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets'
-SELECT @@global.innodb_concurrency_tickets;
-@@global.innodb_concurrency_tickets
-4294967295
-SET @@global.innodb_concurrency_tickets = 1001;
-SELECT @@global.innodb_concurrency_tickets;
-@@global.innodb_concurrency_tickets
-1001
-'#----------------------FN_DYNVARS_046_05------------------------#'
-SELECT @@global.innodb_concurrency_tickets =
-VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_concurrency_tickets';
-@@global.innodb_concurrency_tickets =
-VARIABLE_VALUE
-1
-SELECT @@global.innodb_concurrency_tickets;
-@@global.innodb_concurrency_tickets
-1001
-SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_concurrency_tickets';
-VARIABLE_VALUE
-1001
-'#---------------------FN_DYNVARS_046_06-------------------------#'
-SET @@global.innodb_concurrency_tickets = OFF;
-ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets'
-SELECT @@global.innodb_concurrency_tickets;
-@@global.innodb_concurrency_tickets
-1001
-SET @@global.innodb_concurrency_tickets = ON;
-ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets'
-SELECT @@global.innodb_concurrency_tickets;
-@@global.innodb_concurrency_tickets
-1001
-'#---------------------FN_DYNVARS_046_07----------------------#'
-SET @@global.innodb_concurrency_tickets = TRUE;
-SELECT @@global.innodb_concurrency_tickets;
-@@global.innodb_concurrency_tickets
-1
-SET @@global.innodb_concurrency_tickets = FALSE;
-Warnings:
-Warning 1292 Truncated incorrect concurrency_tickets value: '0'
-SELECT @@global.innodb_concurrency_tickets;
-@@global.innodb_concurrency_tickets
-1
-SET @@global.innodb_concurrency_tickets = @global_start_value;
-SELECT @@global.innodb_concurrency_tickets;
-@@global.innodb_concurrency_tickets
-500
diff --git a/mysql-test/suite/sys_vars/r/innodb_doublewrite_basic.result b/mysql-test/suite/sys_vars/r/innodb_doublewrite_basic.result
index 6062399e8b8..4a5baf0aeda 100644
--- a/mysql-test/suite/sys_vars/r/innodb_doublewrite_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_doublewrite_basic.result
@@ -12,11 +12,11 @@ COUNT(@@GLOBAL.innodb_doublewrite)
1
1 Expected
'#---------------------BS_STVARS_026_03----------------------#'
-SELECT @@GLOBAL.innodb_doublewrite = VARIABLE_VALUE
+SELECT IF(@@GLOBAL.innodb_doublewrite, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='innodb_doublewrite';
-@@GLOBAL.innodb_doublewrite = VARIABLE_VALUE
-0
+IF(@@GLOBAL.innodb_doublewrite, "ON", "OFF") = VARIABLE_VALUE
+1
1 Expected
SELECT COUNT(@@GLOBAL.innodb_doublewrite);
COUNT(@@GLOBAL.innodb_doublewrite)
diff --git a/mysql-test/suite/sys_vars/r/innodb_fast_shutdown_basic.result b/mysql-test/suite/sys_vars/r/innodb_fast_shutdown_basic.result
index 4b923f4bdd2..fe09a652700 100644
--- a/mysql-test/suite/sys_vars/r/innodb_fast_shutdown_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_fast_shutdown_basic.result
@@ -36,55 +36,55 @@ SELECT @@global.innodb_fast_shutdown;
'#--------------------FN_DYNVARS_042_04-------------------------#'
SET @@global.innodb_fast_shutdown = -1;
Warnings:
-Warning 1292 Truncated incorrect fast_shutdown value: '18446744073709551615'
+Warning 1292 Truncated incorrect innodb_fast_shutdown value: '-1'
SELECT @@global.innodb_fast_shutdown;
@@global.innodb_fast_shutdown
-2
+0
SET @@global.innodb_fast_shutdown = TRU;
ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown'
SELECT @@global.innodb_fast_shutdown;
@@global.innodb_fast_shutdown
-2
+0
SET @@global.innodb_fast_shutdown = TRUE_F;
ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown'
SELECT @@global.innodb_fast_shutdown;
@@global.innodb_fast_shutdown
-2
+0
SET @@global.innodb_fast_shutdown = FALS;
ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown'
SELECT @@global.innodb_fast_shutdown;
@@global.innodb_fast_shutdown
-2
+0
SET @@global.innodb_fast_shutdown = OON;
ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown'
SELECT @@global.innodb_fast_shutdown;
@@global.innodb_fast_shutdown
-2
+0
SET @@global.innodb_fast_shutdown = ONN;
ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown'
SELECT @@global.innodb_fast_shutdown;
@@global.innodb_fast_shutdown
-2
+0
SET @@global.innodb_fast_shutdown = OOFF;
ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown'
SELECT @@global.innodb_fast_shutdown;
@@global.innodb_fast_shutdown
-2
+0
SET @@global.innodb_fast_shutdown = 0FF;
ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown'
SELECT @@global.innodb_fast_shutdown;
@@global.innodb_fast_shutdown
-2
+0
SET @@global.innodb_fast_shutdown = '1';
ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown'
SELECT @@global.innodb_fast_shutdown;
@@global.innodb_fast_shutdown
-2
+0
SET @@global.innodb_fast_shutdown = "0";
ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown'
SELECT @@global.innodb_fast_shutdown;
@@global.innodb_fast_shutdown
-2
+0
'#-------------------FN_DYNVARS_042_05----------------------------#'
SET @@session.innodb_fast_shutdown = 0;
ERROR HY000: Variable 'innodb_fast_shutdown' is a GLOBAL variable and should be set with SET GLOBAL
@@ -110,12 +110,12 @@ SET @@global.innodb_fast_shutdown = OFF;
ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown'
SELECT @@global.innodb_fast_shutdown;
@@global.innodb_fast_shutdown
-2
+0
SET @@global.innodb_fast_shutdown = ON;
ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown'
SELECT @@global.innodb_fast_shutdown;
@@global.innodb_fast_shutdown
-2
+0
'#---------------------FN_DYNVARS_042_09----------------------#'
SET @@global.innodb_fast_shutdown = TRUE;
SELECT @@global.innodb_fast_shutdown;
diff --git a/mysql-test/suite/sys_vars/r/innodb_file_io_threads_basic.result b/mysql-test/suite/sys_vars/r/innodb_file_io_threads_basic.result
index 4c1c3ae8d54..5ef7e1099e0 100644
--- a/mysql-test/suite/sys_vars/r/innodb_file_io_threads_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_file_io_threads_basic.result
@@ -1,53 +1,101 @@
'#---------------------BS_STVARS_027_01----------------------#'
-SELECT COUNT(@@GLOBAL.innodb_file_io_threads);
-COUNT(@@GLOBAL.innodb_file_io_threads)
+SELECT COUNT(@@GLOBAL.innodb_read_io_threads);
+COUNT(@@GLOBAL.innodb_read_io_threads)
+1
+1 Expected
+SELECT COUNT(@@GLOBAL.innodb_write_io_threads);
+COUNT(@@GLOBAL.innodb_write_io_threads)
1
1 Expected
'#---------------------BS_STVARS_027_02----------------------#'
-SET @@GLOBAL.innodb_file_io_threads=1;
-ERROR HY000: Variable 'innodb_file_io_threads' is a read only variable
+SET @@GLOBAL.innodb_read_io_threads=1;
+ERROR HY000: Variable 'innodb_read_io_threads' is a read only variable
+Expected error 'Read only variable'
+SELECT COUNT(@@GLOBAL.innodb_read_io_threads);
+COUNT(@@GLOBAL.innodb_read_io_threads)
+1
+1 Expected
+SET @@GLOBAL.innodb_write_io_threads=1;
+ERROR HY000: Variable 'innodb_write_io_threads' is a read only variable
Expected error 'Read only variable'
-SELECT COUNT(@@GLOBAL.innodb_file_io_threads);
-COUNT(@@GLOBAL.innodb_file_io_threads)
+SELECT COUNT(@@GLOBAL.innodb_write_io_threads);
+COUNT(@@GLOBAL.innodb_write_io_threads)
1
1 Expected
'#---------------------BS_STVARS_027_03----------------------#'
-SELECT @@GLOBAL.innodb_file_io_threads = VARIABLE_VALUE
+SELECT @@GLOBAL.innodb_read_io_threads = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='innodb_read_io_threads';
+@@GLOBAL.innodb_read_io_threads = VARIABLE_VALUE
+1
+1 Expected
+SELECT COUNT(@@GLOBAL.innodb_read_io_threads);
+COUNT(@@GLOBAL.innodb_read_io_threads)
+1
+1 Expected
+SELECT COUNT(VARIABLE_VALUE)
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='innodb_read_io_threads';
+COUNT(VARIABLE_VALUE)
+1
+1 Expected
+SELECT @@GLOBAL.innodb_write_io_threads = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_file_io_threads';
-@@GLOBAL.innodb_file_io_threads = VARIABLE_VALUE
+WHERE VARIABLE_NAME='innodb_write_io_threads';
+@@GLOBAL.innodb_write_io_threads = VARIABLE_VALUE
1
1 Expected
-SELECT COUNT(@@GLOBAL.innodb_file_io_threads);
-COUNT(@@GLOBAL.innodb_file_io_threads)
+SELECT COUNT(@@GLOBAL.innodb_write_io_threads);
+COUNT(@@GLOBAL.innodb_write_io_threads)
1
1 Expected
SELECT COUNT(VARIABLE_VALUE)
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_file_io_threads';
+WHERE VARIABLE_NAME='innodb_write_io_threads';
COUNT(VARIABLE_VALUE)
1
1 Expected
'#---------------------BS_STVARS_027_04----------------------#'
-SELECT @@innodb_file_io_threads = @@GLOBAL.innodb_file_io_threads;
-@@innodb_file_io_threads = @@GLOBAL.innodb_file_io_threads
+SELECT @@innodb_read_io_threads = @@GLOBAL.innodb_read_io_threads;
+@@innodb_read_io_threads = @@GLOBAL.innodb_read_io_threads
+1
+1 Expected
+SELECT @@innodb_write_io_threads = @@GLOBAL.innodb_write_io_threads;
+@@innodb_write_io_threads = @@GLOBAL.innodb_write_io_threads
1
1 Expected
'#---------------------BS_STVARS_027_05----------------------#'
-SELECT COUNT(@@innodb_file_io_threads);
-COUNT(@@innodb_file_io_threads)
+SELECT COUNT(@@innodb_read_io_threads);
+COUNT(@@innodb_read_io_threads)
+1
+1 Expected
+SELECT COUNT(@@local.innodb_read_io_threads);
+ERROR HY000: Variable 'innodb_read_io_threads' is a GLOBAL variable
+Expected error 'Variable is a GLOBAL variable'
+SELECT COUNT(@@SESSION.innodb_read_io_threads);
+ERROR HY000: Variable 'innodb_read_io_threads' is a GLOBAL variable
+Expected error 'Variable is a GLOBAL variable'
+SELECT COUNT(@@GLOBAL.innodb_read_io_threads);
+COUNT(@@GLOBAL.innodb_read_io_threads)
+1
+1 Expected
+SELECT innodb_read_io_threads = @@SESSION.innodb_read_io_threads;
+ERROR 42S22: Unknown column 'innodb_read_io_threads' in 'field list'
+Expected error 'Readonly variable'
+SELECT COUNT(@@innodb_write_io_threads);
+COUNT(@@innodb_write_io_threads)
1
1 Expected
-SELECT COUNT(@@local.innodb_file_io_threads);
-ERROR HY000: Variable 'innodb_file_io_threads' is a GLOBAL variable
+SELECT COUNT(@@local.innodb_write_io_threads);
+ERROR HY000: Variable 'innodb_write_io_threads' is a GLOBAL variable
Expected error 'Variable is a GLOBAL variable'
-SELECT COUNT(@@SESSION.innodb_file_io_threads);
-ERROR HY000: Variable 'innodb_file_io_threads' is a GLOBAL variable
+SELECT COUNT(@@SESSION.innodb_write_io_threads);
+ERROR HY000: Variable 'innodb_write_io_threads' is a GLOBAL variable
Expected error 'Variable is a GLOBAL variable'
-SELECT COUNT(@@GLOBAL.innodb_file_io_threads);
-COUNT(@@GLOBAL.innodb_file_io_threads)
+SELECT COUNT(@@GLOBAL.innodb_write_io_threads);
+COUNT(@@GLOBAL.innodb_write_io_threads)
1
1 Expected
-SELECT innodb_file_io_threads = @@SESSION.innodb_file_io_threads;
-ERROR 42S22: Unknown column 'innodb_file_io_threads' in 'field list'
+SELECT innodb_write_io_threads = @@SESSION.innodb_write_io_threads;
+ERROR 42S22: Unknown column 'innodb_write_io_threads' in 'field list'
Expected error 'Readonly variable'
diff --git a/mysql-test/suite/sys_vars/r/innodb_file_per_table_basic.result b/mysql-test/suite/sys_vars/r/innodb_file_per_table_basic.result
index 77595639400..163eb31f686 100644
--- a/mysql-test/suite/sys_vars/r/innodb_file_per_table_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_file_per_table_basic.result
@@ -4,18 +4,15 @@ COUNT(@@GLOBAL.innodb_file_per_table)
1
1 Expected
'#---------------------BS_STVARS_028_02----------------------#'
-SET @@GLOBAL.innodb_file_per_table=1;
-ERROR HY000: Variable 'innodb_file_per_table' is a read only variable
-Expected error 'Read only variable'
SELECT COUNT(@@GLOBAL.innodb_file_per_table);
COUNT(@@GLOBAL.innodb_file_per_table)
1
1 Expected
'#---------------------BS_STVARS_028_03----------------------#'
-SELECT @@GLOBAL.innodb_file_per_table = VARIABLE_VALUE
+SELECT IF(@@GLOBAL.innodb_file_per_table,'ON','OFF') = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='innodb_file_per_table';
-@@GLOBAL.innodb_file_per_table = VARIABLE_VALUE
+IF(@@GLOBAL.innodb_file_per_table,'ON','OFF') = VARIABLE_VALUE
1
1 Expected
SELECT COUNT(@@GLOBAL.innodb_file_per_table);
diff --git a/mysql-test/suite/sys_vars/r/innodb_flush_log_at_trx_commit_basic.result b/mysql-test/suite/sys_vars/r/innodb_flush_log_at_trx_commit_basic.result
index da9f5ad3994..eabafb26ccb 100644
--- a/mysql-test/suite/sys_vars/r/innodb_flush_log_at_trx_commit_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_flush_log_at_trx_commit_basic.result
@@ -36,23 +36,23 @@ SELECT @@global.innodb_flush_log_at_trx_commit;
'#--------------------FN_DYNVARS_046_04-------------------------#'
SET @@global.innodb_flush_log_at_trx_commit = -1;
Warnings:
-Warning 1292 Truncated incorrect flush_log_at_trx_commit value: '18446744073709551615'
+Warning 1292 Truncated incorrect innodb_flush_log_at_trx_commit value: '-1'
SELECT @@global.innodb_flush_log_at_trx_commit;
@@global.innodb_flush_log_at_trx_commit
-2
+0
SET @@global.innodb_flush_log_at_trx_commit = "T";
ERROR 42000: Incorrect argument type to variable 'innodb_flush_log_at_trx_commit'
SELECT @@global.innodb_flush_log_at_trx_commit;
@@global.innodb_flush_log_at_trx_commit
-2
+0
SET @@global.innodb_flush_log_at_trx_commit = "Y";
ERROR 42000: Incorrect argument type to variable 'innodb_flush_log_at_trx_commit'
SELECT @@global.innodb_flush_log_at_trx_commit;
@@global.innodb_flush_log_at_trx_commit
-2
+0
SET @@global.innodb_flush_log_at_trx_commit = 1001;
Warnings:
-Warning 1292 Truncated incorrect flush_log_at_trx_commit value: '1001'
+Warning 1292 Truncated incorrect innodb_flush_log_at_trx_commit value: '1001'
SELECT @@global.innodb_flush_log_at_trx_commit;
@@global.innodb_flush_log_at_trx_commit
2
diff --git a/mysql-test/suite/sys_vars/r/innodb_lock_wait_timeout_basic.result b/mysql-test/suite/sys_vars/r/innodb_lock_wait_timeout_basic.result
index ce46861b760..89960e5860f 100644
--- a/mysql-test/suite/sys_vars/r/innodb_lock_wait_timeout_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_lock_wait_timeout_basic.result
@@ -4,9 +4,6 @@ COUNT(@@GLOBAL.innodb_lock_wait_timeout)
1
1 Expected
'#---------------------BS_STVARS_032_02----------------------#'
-SET @@GLOBAL.innodb_lock_wait_timeout=1;
-ERROR HY000: Variable 'innodb_lock_wait_timeout' is a read only variable
-Expected error 'Read only variable'
SELECT COUNT(@@GLOBAL.innodb_lock_wait_timeout);
COUNT(@@GLOBAL.innodb_lock_wait_timeout)
1
@@ -39,11 +36,11 @@ COUNT(@@innodb_lock_wait_timeout)
1
1 Expected
SELECT COUNT(@@local.innodb_lock_wait_timeout);
-ERROR HY000: Variable 'innodb_lock_wait_timeout' is a GLOBAL variable
-Expected error 'Variable is a GLOBAL variable'
+COUNT(@@local.innodb_lock_wait_timeout)
+1
SELECT COUNT(@@SESSION.innodb_lock_wait_timeout);
-ERROR HY000: Variable 'innodb_lock_wait_timeout' is a GLOBAL variable
-Expected error 'Variable is a GLOBAL variable'
+COUNT(@@SESSION.innodb_lock_wait_timeout)
+1
SELECT COUNT(@@GLOBAL.innodb_lock_wait_timeout);
COUNT(@@GLOBAL.innodb_lock_wait_timeout)
1
diff --git a/mysql-test/suite/sys_vars/r/innodb_locks_unsafe_for_binlog_basic.result b/mysql-test/suite/sys_vars/r/innodb_locks_unsafe_for_binlog_basic.result
index a5967d28913..c2229d54d02 100644
--- a/mysql-test/suite/sys_vars/r/innodb_locks_unsafe_for_binlog_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_locks_unsafe_for_binlog_basic.result
@@ -12,10 +12,10 @@ COUNT(@@GLOBAL.innodb_locks_unsafe_for_binlog)
1
1 Expected
'#---------------------BS_STVARS_031_03----------------------#'
-SELECT @@GLOBAL.innodb_locks_unsafe_for_binlog = VARIABLE_VALUE
+SELECT IF(@@GLOBAL.innodb_locks_unsafe_for_binlog, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='innodb_locks_unsafe_for_binlog';
-@@GLOBAL.innodb_locks_unsafe_for_binlog = VARIABLE_VALUE
+IF(@@GLOBAL.innodb_locks_unsafe_for_binlog, "ON", "OFF") = VARIABLE_VALUE
1
1 Expected
SELECT COUNT(@@GLOBAL.innodb_locks_unsafe_for_binlog);
diff --git a/mysql-test/suite/sys_vars/r/innodb_max_dirty_pages_pct_basic.result b/mysql-test/suite/sys_vars/r/innodb_max_dirty_pages_pct_basic.result
index 6c52f79f9ad..eff72613102 100644
--- a/mysql-test/suite/sys_vars/r/innodb_max_dirty_pages_pct_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_max_dirty_pages_pct_basic.result
@@ -1,19 +1,19 @@
SET @global_start_value = @@global.innodb_max_dirty_pages_pct;
SELECT @global_start_value;
@global_start_value
-90
+75
'#--------------------FN_DYNVARS_046_01------------------------#'
SET @@global.innodb_max_dirty_pages_pct = 0;
SET @@global.innodb_max_dirty_pages_pct = DEFAULT;
SELECT @@global.innodb_max_dirty_pages_pct;
@@global.innodb_max_dirty_pages_pct
-90
+75
'#---------------------FN_DYNVARS_046_02-------------------------#'
SET innodb_max_dirty_pages_pct = 1;
ERROR HY000: Variable 'innodb_max_dirty_pages_pct' is a GLOBAL variable and should be set with SET GLOBAL
SELECT @@innodb_max_dirty_pages_pct;
@@innodb_max_dirty_pages_pct
-90
+75
SELECT local.innodb_max_dirty_pages_pct;
ERROR 42S02: Unknown table 'local' in field list
SET global innodb_max_dirty_pages_pct = 0;
@@ -29,33 +29,33 @@ SET @@global.innodb_max_dirty_pages_pct = 1;
SELECT @@global.innodb_max_dirty_pages_pct;
@@global.innodb_max_dirty_pages_pct
1
-SET @@global.innodb_max_dirty_pages_pct = 100;
+SET @@global.innodb_max_dirty_pages_pct = 99;
SELECT @@global.innodb_max_dirty_pages_pct;
@@global.innodb_max_dirty_pages_pct
-100
+99
'#--------------------FN_DYNVARS_046_04-------------------------#'
SET @@global.innodb_max_dirty_pages_pct = -1;
Warnings:
-Warning 1292 Truncated incorrect max_dirty_pages_pct value: '18446744073709551615'
+Warning 1292 Truncated incorrect innodb_max_dirty_pages_pct value: '-1'
SELECT @@global.innodb_max_dirty_pages_pct;
@@global.innodb_max_dirty_pages_pct
-100
+0
SET @@global.innodb_max_dirty_pages_pct = "T";
ERROR 42000: Incorrect argument type to variable 'innodb_max_dirty_pages_pct'
SELECT @@global.innodb_max_dirty_pages_pct;
@@global.innodb_max_dirty_pages_pct
-100
+0
SET @@global.innodb_max_dirty_pages_pct = "Y";
ERROR 42000: Incorrect argument type to variable 'innodb_max_dirty_pages_pct'
SELECT @@global.innodb_max_dirty_pages_pct;
@@global.innodb_max_dirty_pages_pct
-100
+0
SET @@global.innodb_max_dirty_pages_pct = 1001;
Warnings:
-Warning 1292 Truncated incorrect max_dirty_pages_pct value: '1001'
+Warning 1292 Truncated incorrect innodb_max_dirty_pages_pct value: '1001'
SELECT @@global.innodb_max_dirty_pages_pct;
@@global.innodb_max_dirty_pages_pct
-100
+99
'#----------------------FN_DYNVARS_046_05------------------------#'
SELECT @@global.innodb_max_dirty_pages_pct =
VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
@@ -65,22 +65,22 @@ VARIABLE_VALUE
1
SELECT @@global.innodb_max_dirty_pages_pct;
@@global.innodb_max_dirty_pages_pct
-100
+99
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='innodb_max_dirty_pages_pct';
VARIABLE_VALUE
-100
+99
'#---------------------FN_DYNVARS_046_06-------------------------#'
SET @@global.innodb_max_dirty_pages_pct = OFF;
ERROR 42000: Incorrect argument type to variable 'innodb_max_dirty_pages_pct'
SELECT @@global.innodb_max_dirty_pages_pct;
@@global.innodb_max_dirty_pages_pct
-100
+99
SET @@global.innodb_max_dirty_pages_pct = ON;
ERROR 42000: Incorrect argument type to variable 'innodb_max_dirty_pages_pct'
SELECT @@global.innodb_max_dirty_pages_pct;
@@global.innodb_max_dirty_pages_pct
-100
+99
'#---------------------FN_DYNVARS_046_07----------------------#'
SET @@global.innodb_max_dirty_pages_pct = TRUE;
SELECT @@global.innodb_max_dirty_pages_pct;
@@ -93,4 +93,4 @@ SELECT @@global.innodb_max_dirty_pages_pct;
SET @@global.innodb_max_dirty_pages_pct = @global_start_value;
SELECT @@global.innodb_max_dirty_pages_pct;
@@global.innodb_max_dirty_pages_pct
-90
+75
diff --git a/mysql-test/suite/sys_vars/r/innodb_max_purge_lag_basic_64.result b/mysql-test/suite/sys_vars/r/innodb_max_purge_lag_basic.result
index a6b669dde83..a01d2f2dd0c 100644
--- a/mysql-test/suite/sys_vars/r/innodb_max_purge_lag_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/innodb_max_purge_lag_basic.result
@@ -35,19 +35,21 @@ SELECT @@global.innodb_max_purge_lag;
4294967295
'#--------------------FN_DYNVARS_046_04-------------------------#'
SET @@global.innodb_max_purge_lag = -1;
+Warnings:
+Warning 1292 Truncated incorrect innodb_max_purge_lag value: '-1'
SELECT @@global.innodb_max_purge_lag;
@@global.innodb_max_purge_lag
-18446744073709551615
+0
SET @@global.innodb_max_purge_lag = "T";
ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag'
SELECT @@global.innodb_max_purge_lag;
@@global.innodb_max_purge_lag
-18446744073709551615
+0
SET @@global.innodb_max_purge_lag = "Y";
ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag'
SELECT @@global.innodb_max_purge_lag;
@@global.innodb_max_purge_lag
-18446744073709551615
+0
SET @@global.innodb_max_purge_lag = 1001;
SELECT @@global.innodb_max_purge_lag;
@@global.innodb_max_purge_lag
diff --git a/mysql-test/suite/sys_vars/r/innodb_max_purge_lag_basic_32.result b/mysql-test/suite/sys_vars/r/innodb_max_purge_lag_basic_32.result
deleted file mode 100644
index ed960f12ff1..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_max_purge_lag_basic_32.result
+++ /dev/null
@@ -1,94 +0,0 @@
-SET @global_start_value = @@global.innodb_max_purge_lag;
-SELECT @global_start_value;
-@global_start_value
-0
-'#--------------------FN_DYNVARS_046_01------------------------#'
-SET @@global.innodb_max_purge_lag = 0;
-SET @@global.innodb_max_purge_lag = DEFAULT;
-SELECT @@global.innodb_max_purge_lag;
-@@global.innodb_max_purge_lag
-0
-'#---------------------FN_DYNVARS_046_02-------------------------#'
-SET innodb_max_purge_lag = 1;
-ERROR HY000: Variable 'innodb_max_purge_lag' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT @@innodb_max_purge_lag;
-@@innodb_max_purge_lag
-0
-SELECT local.innodb_max_purge_lag;
-ERROR 42S02: Unknown table 'local' in field list
-SET global innodb_max_purge_lag = 0;
-SELECT @@global.innodb_max_purge_lag;
-@@global.innodb_max_purge_lag
-0
-'#--------------------FN_DYNVARS_046_03------------------------#'
-SET @@global.innodb_max_purge_lag = 0;
-SELECT @@global.innodb_max_purge_lag;
-@@global.innodb_max_purge_lag
-0
-SET @@global.innodb_max_purge_lag = 1;
-SELECT @@global.innodb_max_purge_lag;
-@@global.innodb_max_purge_lag
-1
-SET @@global.innodb_max_purge_lag = 4294967295;
-SELECT @@global.innodb_max_purge_lag;
-@@global.innodb_max_purge_lag
-4294967295
-'#--------------------FN_DYNVARS_046_04-------------------------#'
-SET @@global.innodb_max_purge_lag = -1;
-Warnings:
-Warning 1292 Truncated incorrect max_purge_lag value: '18446744073709551615'
-SELECT @@global.innodb_max_purge_lag;
-@@global.innodb_max_purge_lag
-4294967295
-SET @@global.innodb_max_purge_lag = "T";
-ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag'
-SELECT @@global.innodb_max_purge_lag;
-@@global.innodb_max_purge_lag
-4294967295
-SET @@global.innodb_max_purge_lag = "Y";
-ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag'
-SELECT @@global.innodb_max_purge_lag;
-@@global.innodb_max_purge_lag
-4294967295
-SET @@global.innodb_max_purge_lag = 1001;
-SELECT @@global.innodb_max_purge_lag;
-@@global.innodb_max_purge_lag
-1001
-'#----------------------FN_DYNVARS_046_05------------------------#'
-SELECT @@global.innodb_max_purge_lag =
-VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_max_purge_lag';
-@@global.innodb_max_purge_lag =
-VARIABLE_VALUE
-1
-SELECT @@global.innodb_max_purge_lag;
-@@global.innodb_max_purge_lag
-1001
-SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_max_purge_lag';
-VARIABLE_VALUE
-1001
-'#---------------------FN_DYNVARS_046_06-------------------------#'
-SET @@global.innodb_max_purge_lag = OFF;
-ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag'
-SELECT @@global.innodb_max_purge_lag;
-@@global.innodb_max_purge_lag
-1001
-SET @@global.innodb_max_purge_lag = ON;
-ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag'
-SELECT @@global.innodb_max_purge_lag;
-@@global.innodb_max_purge_lag
-1001
-'#---------------------FN_DYNVARS_046_07----------------------#'
-SET @@global.innodb_max_purge_lag = TRUE;
-SELECT @@global.innodb_max_purge_lag;
-@@global.innodb_max_purge_lag
-1
-SET @@global.innodb_max_purge_lag = FALSE;
-SELECT @@global.innodb_max_purge_lag;
-@@global.innodb_max_purge_lag
-0
-SET @@global.innodb_max_purge_lag = @global_start_value;
-SELECT @@global.innodb_max_purge_lag;
-@@global.innodb_max_purge_lag
-0
diff --git a/mysql-test/suite/sys_vars/r/innodb_rollback_on_timeout_basic.result b/mysql-test/suite/sys_vars/r/innodb_rollback_on_timeout_basic.result
index 6887166fae6..0b7c71ce488 100644
--- a/mysql-test/suite/sys_vars/r/innodb_rollback_on_timeout_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_rollback_on_timeout_basic.result
@@ -12,10 +12,10 @@ COUNT(@@GLOBAL.innodb_rollback_on_timeout)
1
1 Expected
'#---------------------BS_STVARS_039_03----------------------#'
-SELECT @@GLOBAL.innodb_rollback_on_timeout = VARIABLE_VALUE
+SELECT IF(@@GLOBAL.innodb_rollback_on_timeout, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='innodb_rollback_on_timeout';
-@@GLOBAL.innodb_rollback_on_timeout = VARIABLE_VALUE
+IF(@@GLOBAL.innodb_rollback_on_timeout, "ON", "OFF") = VARIABLE_VALUE
1
1 Expected
SELECT COUNT(@@GLOBAL.innodb_rollback_on_timeout);
diff --git a/mysql-test/suite/sys_vars/r/innodb_support_xa_basic.result b/mysql-test/suite/sys_vars/r/innodb_support_xa_basic.result
index dcd6f498d56..537fd3e5db1 100644
--- a/mysql-test/suite/sys_vars/r/innodb_support_xa_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_support_xa_basic.result
@@ -55,45 +55,43 @@ SELECT @@global.innodb_support_xa;
1
'#--------------------FN_DYNVARS_046_04-------------------------#'
SET @@session.innodb_support_xa = -0.6;
-ERROR 42000: Variable 'support_xa' can't be set to the value of '-0.6'
+ERROR 42000: Incorrect argument type to variable 'innodb_support_xa'
SET @@session.innodb_support_xa = 1.6;
-ERROR 42000: Variable 'support_xa' can't be set to the value of '1.6'
+ERROR 42000: Incorrect argument type to variable 'innodb_support_xa'
SET @@session.innodb_support_xa = "T";
-ERROR 42000: Variable 'support_xa' can't be set to the value of 'T'
+ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'T'
SET @@session.innodb_support_xa = "Y";
-ERROR 42000: Variable 'support_xa' can't be set to the value of 'Y'
+ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'Y'
SET @@session.innodb_support_xa = TRÜE;
-ERROR 42000: Variable 'support_xa' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'TRÜE'
SET @@session.innodb_support_xa = ÕN;
-ERROR 42000: Variable 'support_xa' can't be set to the value of 'ÕN'
+ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'ÕN'
SET @@session.innodb_support_xa = OF;
SELECT @@session.innodb_support_xa;
@@session.innodb_support_xa
0
-'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
SET @@session.innodb_support_xa = ÓFF;
-ERROR 42000: Variable 'support_xa' can't be set to the value of 'ÓFF'
+ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'ÓFF'
SET @@global.innodb_support_xa = -1;
SELECT @@global.innodb_support_xa;
@@global.innodb_support_xa
1
SET @@global.innodb_support_xa = 2;
-ERROR 42000: Variable 'support_xa' can't be set to the value of '2'
+ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of '2'
SET @@global.innodb_support_xa = "T";
-ERROR 42000: Variable 'support_xa' can't be set to the value of 'T'
+ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'T'
SET @@global.innodb_support_xa = "Y";
-ERROR 42000: Variable 'support_xa' can't be set to the value of 'Y'
+ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'Y'
SET @@global.innodb_support_xa = TRÜE;
-ERROR 42000: Variable 'support_xa' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'TRÜE'
SET @@global.innodb_support_xa = ÕN;
-ERROR 42000: Variable 'support_xa' can't be set to the value of 'ÕN'
+ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'ÕN'
SET @@global.innodb_support_xa = OF;
SELECT @@global.innodb_support_xa;
@@global.innodb_support_xa
0
-'Bug# 34828 : OF is taken as OFF and a value of 0 is set.'
SET @@global.innodb_support_xa = ÓFF;
-ERROR 42000: Variable 'support_xa' can't be set to the value of 'ÓFF'
+ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'ÓFF'
'#-------------------FN_DYNVARS_046_05----------------------------#'
SET @@global.innodb_support_xa = 0;
SET @@session.innodb_support_xa = 1;
@@ -105,10 +103,10 @@ SELECT @@session.innodb_support_xa AS res_is_1;
res_is_1
1
'#----------------------FN_DYNVARS_046_06------------------------#'
-SELECT @@global.innodb_support_xa =
+SELECT IF(@@global.innodb_support_xa, "ON", "OFF") =
VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='innodb_support_xa';
-@@global.innodb_support_xa =
+IF(@@global.innodb_support_xa, "ON", "OFF") =
VARIABLE_VALUE
1
SELECT @@global.innodb_support_xa;
@@ -119,12 +117,12 @@ WHERE VARIABLE_NAME='innodb_support_xa';
VARIABLE_VALUE
OFF
'#----------------------FN_DYNVARS_046_07------------------------#'
-SELECT @@session.innodb_support_xa =
+SELECT IF(@@session.innodb_support_xa, "ON", "OFF") =
VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='innodb_support_xa';
-@@session.innodb_support_xa =
+IF(@@session.innodb_support_xa, "ON", "OFF") =
VARIABLE_VALUE
-0
+1
SELECT @@session.innodb_support_xa;
@@session.innodb_support_xa
1
diff --git a/mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_64.result b/mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic.result
index 1b99ad8e3db..ba45d4f2ed0 100644
--- a/mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic.result
@@ -1,19 +1,19 @@
SET @global_start_value = @@global.innodb_sync_spin_loops;
SELECT @global_start_value;
@global_start_value
-20
+30
'#--------------------FN_DYNVARS_046_01------------------------#'
SET @@global.innodb_sync_spin_loops = 0;
SET @@global.innodb_sync_spin_loops = DEFAULT;
SELECT @@global.innodb_sync_spin_loops;
@@global.innodb_sync_spin_loops
-20
+30
'#---------------------FN_DYNVARS_046_02-------------------------#'
SET innodb_sync_spin_loops = 1;
ERROR HY000: Variable 'innodb_sync_spin_loops' is a GLOBAL variable and should be set with SET GLOBAL
SELECT @@innodb_sync_spin_loops;
@@innodb_sync_spin_loops
-20
+30
SELECT local.innodb_sync_spin_loops;
ERROR 42S02: Unknown table 'local' in field list
SET global innodb_sync_spin_loops = 0;
@@ -35,19 +35,21 @@ SELECT @@global.innodb_sync_spin_loops;
1000
'#--------------------FN_DYNVARS_046_04-------------------------#'
SET @@global.innodb_sync_spin_loops = -1;
+Warnings:
+Warning 1292 Truncated incorrect innodb_sync_spin_loops value: '-1'
SELECT @@global.innodb_sync_spin_loops;
@@global.innodb_sync_spin_loops
-18446744073709551615
+0
SET @@global.innodb_sync_spin_loops = "T";
ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops'
SELECT @@global.innodb_sync_spin_loops;
@@global.innodb_sync_spin_loops
-18446744073709551615
+0
SET @@global.innodb_sync_spin_loops = "Y";
ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops'
SELECT @@global.innodb_sync_spin_loops;
@@global.innodb_sync_spin_loops
-18446744073709551615
+0
SET @@global.innodb_sync_spin_loops = 1001;
SELECT @@global.innodb_sync_spin_loops;
@@global.innodb_sync_spin_loops
@@ -89,4 +91,4 @@ SELECT @@global.innodb_sync_spin_loops;
SET @@global.innodb_sync_spin_loops = @global_start_value;
SELECT @@global.innodb_sync_spin_loops;
@@global.innodb_sync_spin_loops
-20
+30
diff --git a/mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_32.result b/mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_32.result
deleted file mode 100644
index 2b976e65b14..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_32.result
+++ /dev/null
@@ -1,94 +0,0 @@
-SET @global_start_value = @@global.innodb_sync_spin_loops;
-SELECT @global_start_value;
-@global_start_value
-20
-'#--------------------FN_DYNVARS_046_01------------------------#'
-SET @@global.innodb_sync_spin_loops = 0;
-SET @@global.innodb_sync_spin_loops = DEFAULT;
-SELECT @@global.innodb_sync_spin_loops;
-@@global.innodb_sync_spin_loops
-20
-'#---------------------FN_DYNVARS_046_02-------------------------#'
-SET innodb_sync_spin_loops = 1;
-ERROR HY000: Variable 'innodb_sync_spin_loops' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT @@innodb_sync_spin_loops;
-@@innodb_sync_spin_loops
-20
-SELECT local.innodb_sync_spin_loops;
-ERROR 42S02: Unknown table 'local' in field list
-SET global innodb_sync_spin_loops = 0;
-SELECT @@global.innodb_sync_spin_loops;
-@@global.innodb_sync_spin_loops
-0
-'#--------------------FN_DYNVARS_046_03------------------------#'
-SET @@global.innodb_sync_spin_loops = 0;
-SELECT @@global.innodb_sync_spin_loops;
-@@global.innodb_sync_spin_loops
-0
-SET @@global.innodb_sync_spin_loops = 1;
-SELECT @@global.innodb_sync_spin_loops;
-@@global.innodb_sync_spin_loops
-1
-SET @@global.innodb_sync_spin_loops = 1000;
-SELECT @@global.innodb_sync_spin_loops;
-@@global.innodb_sync_spin_loops
-1000
-'#--------------------FN_DYNVARS_046_04-------------------------#'
-SET @@global.innodb_sync_spin_loops = -1;
-Warnings:
-Warning 1292 Truncated incorrect sync_spin_loops value: '18446744073709551615'
-SELECT @@global.innodb_sync_spin_loops;
-@@global.innodb_sync_spin_loops
-4294967295
-SET @@global.innodb_sync_spin_loops = "T";
-ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops'
-SELECT @@global.innodb_sync_spin_loops;
-@@global.innodb_sync_spin_loops
-4294967295
-SET @@global.innodb_sync_spin_loops = "Y";
-ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops'
-SELECT @@global.innodb_sync_spin_loops;
-@@global.innodb_sync_spin_loops
-4294967295
-SET @@global.innodb_sync_spin_loops = 1001;
-SELECT @@global.innodb_sync_spin_loops;
-@@global.innodb_sync_spin_loops
-1001
-'#----------------------FN_DYNVARS_046_05------------------------#'
-SELECT @@global.innodb_sync_spin_loops =
-VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_sync_spin_loops';
-@@global.innodb_sync_spin_loops =
-VARIABLE_VALUE
-1
-SELECT @@global.innodb_sync_spin_loops;
-@@global.innodb_sync_spin_loops
-1001
-SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_sync_spin_loops';
-VARIABLE_VALUE
-1001
-'#---------------------FN_DYNVARS_046_06-------------------------#'
-SET @@global.innodb_sync_spin_loops = OFF;
-ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops'
-SELECT @@global.innodb_sync_spin_loops;
-@@global.innodb_sync_spin_loops
-1001
-SET @@global.innodb_sync_spin_loops = ON;
-ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops'
-SELECT @@global.innodb_sync_spin_loops;
-@@global.innodb_sync_spin_loops
-1001
-'#---------------------FN_DYNVARS_046_07----------------------#'
-SET @@global.innodb_sync_spin_loops = TRUE;
-SELECT @@global.innodb_sync_spin_loops;
-@@global.innodb_sync_spin_loops
-1
-SET @@global.innodb_sync_spin_loops = FALSE;
-SELECT @@global.innodb_sync_spin_loops;
-@@global.innodb_sync_spin_loops
-0
-SET @@global.innodb_sync_spin_loops = @global_start_value;
-SELECT @@global.innodb_sync_spin_loops;
-@@global.innodb_sync_spin_loops
-20
diff --git a/mysql-test/suite/sys_vars/r/innodb_table_locks_basic.result b/mysql-test/suite/sys_vars/r/innodb_table_locks_basic.result
index 14aa995273b..e77424df871 100644
--- a/mysql-test/suite/sys_vars/r/innodb_table_locks_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_table_locks_basic.result
@@ -56,38 +56,36 @@ SELECT @@global.innodb_table_locks;
'#--------------------FN_DYNVARS_046_04-------------------------#'
SET @@session.innodb_table_locks = -6;
SET @@session.innodb_table_locks = 1.6;
-ERROR 42000: Variable 'table_locks' can't be set to the value of '1.6'
+ERROR 42000: Incorrect argument type to variable 'innodb_table_locks'
SET @@session.innodb_table_locks = "T";
-ERROR 42000: Variable 'table_locks' can't be set to the value of 'T'
+ERROR 42000: Variable 'innodb_table_locks' can't be set to the value of 'T'
SET @@session.innodb_table_locks = "Y";
-ERROR 42000: Variable 'table_locks' can't be set to the value of 'Y'
+ERROR 42000: Variable 'innodb_table_locks' can't be set to the value of 'Y'
SET @@session.innodb_table_locks = TRÜE;
-ERROR 42000: Variable 'table_locks' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'innodb_table_locks' can't be set to the value of 'TRÜE'
SET @@session.innodb_table_locks = ÕN;
-ERROR 42000: Variable 'table_locks' can't be set to the value of 'ÕN'
+ERROR 42000: Variable 'innodb_table_locks' can't be set to the value of 'ÕN'
SET @@session.innodb_table_locks = OF;
SELECT @@session.innodb_table_locks;
@@session.innodb_table_locks
0
-'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
SET @@session.innodb_table_locks = ÓFF;
-ERROR 42000: Variable 'table_locks' can't be set to the value of 'ÓFF'
+ERROR 42000: Variable 'innodb_table_locks' can't be set to the value of 'ÓFF'
SET @@global.innodb_table_locks = -1;
SET @@global.innodb_table_locks = 2;
-ERROR 42000: Variable 'table_locks' can't be set to the value of '2'
+ERROR 42000: Variable 'innodb_table_locks' can't be set to the value of '2'
SET @@global.innodb_table_locks = "T";
-ERROR 42000: Variable 'table_locks' can't be set to the value of 'T'
+ERROR 42000: Variable 'innodb_table_locks' can't be set to the value of 'T'
SET @@global.innodb_table_locks = "Y";
-ERROR 42000: Variable 'table_locks' can't be set to the value of 'Y'
+ERROR 42000: Variable 'innodb_table_locks' can't be set to the value of 'Y'
SET @@global.innodb_table_locks = TRÜE;
-ERROR 42000: Variable 'table_locks' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'innodb_table_locks' can't be set to the value of 'TRÜE'
SET @@global.innodb_table_locks = QN;
-ERROR 42000: Variable 'table_locks' can't be set to the value of 'QN'
+ERROR 42000: Variable 'innodb_table_locks' can't be set to the value of 'QN'
SET @@global.innodb_table_locks = OF;
SELECT @@global.innodb_table_locks;
@@global.innodb_table_locks
0
-'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
'#-------------------FN_DYNVARS_046_05----------------------------#'
SET @@global.innodb_table_locks = 0;
SET @@session.innodb_table_locks = 1;
@@ -99,10 +97,10 @@ SELECT @@session.innodb_table_locks AS res_is_1;
res_is_1
1
'#----------------------FN_DYNVARS_046_06------------------------#'
-SELECT @@global.innodb_table_locks =
+SELECT IF(@@global.innodb_table_locks, "ON", "OFF") =
VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='innodb_table_locks';
-@@global.innodb_table_locks =
+IF(@@global.innodb_table_locks, "ON", "OFF") =
VARIABLE_VALUE
1
SELECT @@global.innodb_table_locks;
@@ -113,12 +111,12 @@ WHERE VARIABLE_NAME='innodb_table_locks';
VARIABLE_VALUE
OFF
'#----------------------FN_DYNVARS_046_07------------------------#'
-SELECT @@session.innodb_table_locks =
+SELECT IF(@@session.innodb_table_locks, "ON", "OFF") =
VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='innodb_table_locks';
-@@session.innodb_table_locks =
+IF(@@session.innodb_table_locks, "ON", "OFF") =
VARIABLE_VALUE
-0
+1
SELECT @@session.innodb_table_locks;
@@session.innodb_table_locks
1
diff --git a/mysql-test/suite/sys_vars/r/innodb_thread_concurrency_basic.result b/mysql-test/suite/sys_vars/r/innodb_thread_concurrency_basic.result
index 65a79fecd97..c7af96bb22a 100644
--- a/mysql-test/suite/sys_vars/r/innodb_thread_concurrency_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_thread_concurrency_basic.result
@@ -1,19 +1,19 @@
SET @global_start_value = @@global.innodb_thread_concurrency;
SELECT @global_start_value;
@global_start_value
-8
+0
'#--------------------FN_DYNVARS_046_01------------------------#'
SET @@global.innodb_thread_concurrency = 0;
SET @@global.innodb_thread_concurrency = DEFAULT;
SELECT @@global.innodb_thread_concurrency;
@@global.innodb_thread_concurrency
-8
+0
'#---------------------FN_DYNVARS_046_02-------------------------#'
SET innodb_thread_concurrency = 1;
ERROR HY000: Variable 'innodb_thread_concurrency' is a GLOBAL variable and should be set with SET GLOBAL
SELECT @@innodb_thread_concurrency;
@@innodb_thread_concurrency
-8
+0
SELECT local.innodb_thread_concurrency;
ERROR 42S02: Unknown table 'local' in field list
SET global innodb_thread_concurrency = 0;
@@ -36,23 +36,23 @@ SELECT @@global.innodb_thread_concurrency;
'#--------------------FN_DYNVARS_046_04-------------------------#'
SET @@global.innodb_thread_concurrency = -1;
Warnings:
-Warning 1292 Truncated incorrect thread_concurrency value: '18446744073709551615'
+Warning 1292 Truncated incorrect innodb_thread_concurrency value: '-1'
SELECT @@global.innodb_thread_concurrency;
@@global.innodb_thread_concurrency
-1000
+0
SET @@global.innodb_thread_concurrency = "T";
ERROR 42000: Incorrect argument type to variable 'innodb_thread_concurrency'
SELECT @@global.innodb_thread_concurrency;
@@global.innodb_thread_concurrency
-1000
+0
SET @@global.innodb_thread_concurrency = "Y";
ERROR 42000: Incorrect argument type to variable 'innodb_thread_concurrency'
SELECT @@global.innodb_thread_concurrency;
@@global.innodb_thread_concurrency
-1000
+0
SET @@global.innodb_thread_concurrency = 1001;
Warnings:
-Warning 1292 Truncated incorrect thread_concurrency value: '1001'
+Warning 1292 Truncated incorrect innodb_thread_concurrency value: '1001'
SELECT @@global.innodb_thread_concurrency;
@@global.innodb_thread_concurrency
1000
@@ -93,4 +93,4 @@ SELECT @@global.innodb_thread_concurrency;
SET @@global.innodb_thread_concurrency = @global_start_value;
SELECT @@global.innodb_thread_concurrency;
@@global.innodb_thread_concurrency
-8
+0
diff --git a/mysql-test/suite/sys_vars/r/insert_id_basic.result b/mysql-test/suite/sys_vars/r/insert_id_basic.result
index 47dd759ff44..191bdcc96df 100644
--- a/mysql-test/suite/sys_vars/r/insert_id_basic.result
+++ b/mysql-test/suite/sys_vars/r/insert_id_basic.result
@@ -32,9 +32,11 @@ SELECT @@session.insert_id;
65535
'#--------------------FN_DYNVARS_051_04-------------------------#'
SET @@session.insert_id = -1;
+Warnings:
+Warning 1292 Truncated incorrect insert_id value: '-1'
SELECT @@session.insert_id;
@@session.insert_id
--1
+0
SET @@session.insert_id = 100000000000;
SELECT @@session.insert_id;
@@session.insert_id
@@ -45,14 +47,15 @@ SELECT @@session.insert_id;
@@session.insert_id
100000000000
SET @@session.insert_id = -1024;
+Warnings:
+Warning 1292 Truncated incorrect insert_id value: '-1024'
SELECT @@session.insert_id;
@@session.insert_id
--1024
+0
SET @@session.insert_id = 42949672950;
SELECT @@session.insert_id;
@@session.insert_id
42949672950
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
SET @@session.insert_id = ON;
ERROR 42000: Incorrect argument type to variable 'insert_id'
SELECT @@session.insert_id;
diff --git a/mysql-test/suite/sys_vars/r/interactive_timeout_basic.result b/mysql-test/suite/sys_vars/r/interactive_timeout_basic.result
index 519fef8a6e5..79e90fc24fa 100644
--- a/mysql-test/suite/sys_vars/r/interactive_timeout_basic.result
+++ b/mysql-test/suite/sys_vars/r/interactive_timeout_basic.result
@@ -71,8 +71,8 @@ Warning 1292 Truncated incorrect interactive_timeout value: '1000000000'
SELECT @@global.interactive_timeout;
@@global.interactive_timeout
31536000
-SET @@global.interactive_timeout = 65530.34.;
-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 '.' at line 1
+SET @@global.interactive_timeout = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'interactive_timeout'
SELECT @@global.interactive_timeout;
@@global.interactive_timeout
31536000
@@ -93,15 +93,14 @@ Warning 1292 Truncated incorrect interactive_timeout value: '-2'
SELECT @@session.interactive_timeout;
@@session.interactive_timeout
1
-SET @@session.interactive_timeout = 65530.34.;
-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 '.' at line 1
+SET @@session.interactive_timeout = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'interactive_timeout'
SET @@session.interactive_timeout = 100000000;
Warnings:
Warning 1292 Truncated incorrect interactive_timeout value: '100000000'
SELECT @@session.interactive_timeout;
@@session.interactive_timeout
31536000
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
SET @@session.interactive_timeout = test;
ERROR 42000: Incorrect argument type to variable 'interactive_timeout'
SELECT @@session.interactive_timeout;
diff --git a/mysql-test/suite/sys_vars/r/join_buffer_size_basic_32.result b/mysql-test/suite/sys_vars/r/join_buffer_size_basic_32.result
index 2318c6d7055..af3dd553862 100644
--- a/mysql-test/suite/sys_vars/r/join_buffer_size_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/join_buffer_size_basic_32.result
@@ -7,36 +7,21 @@ SELECT @start_session_value;
@start_session_value
131072
'#--------------------FN_DYNVARS_053_01-------------------------#'
-SET @@global.join_buffer_size = 8200;
-Warnings:
-Warning 1292 Truncated incorrect join_buffer_size value: '8200'
SET @@global.join_buffer_size = DEFAULT;
SELECT @@global.join_buffer_size;
@@global.join_buffer_size
131072
-SET @@session.join_buffer_size = 8200;
-Warnings:
-Warning 1292 Truncated incorrect join_buffer_size value: '8200'
SET @@session.join_buffer_size = DEFAULT;
SELECT @@session.join_buffer_size;
@@session.join_buffer_size
131072
-'#--------------------FN_DYNVARS_053_02-------------------------#'
-SET @@global.join_buffer_size = DEFAULT;
-SELECT @@global.join_buffer_size = 131072;
-@@global.join_buffer_size = 131072
-1
-SET @@session.join_buffer_size = DEFAULT;
-SELECT @@session.join_buffer_size = 131072;
-@@session.join_buffer_size = 131072
-1
'#--------------------FN_DYNVARS_053_03-------------------------#'
SET @@global.join_buffer_size = 8200;
Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '8200'
-SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228;
-@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228
-1
+SELECT @@global.join_buffer_size;
+@@global.join_buffer_size
+8192
SET @@global.join_buffer_size = 65536;
SELECT @@global.join_buffer_size;
@@global.join_buffer_size
@@ -46,15 +31,14 @@ Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '4294967295'
SELECT @@global.join_buffer_size;
@@global.join_buffer_size
-4294963200
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
+4294967168
'#--------------------FN_DYNVARS_053_04-------------------------#'
SET @@session.join_buffer_size = 8200;
Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '8200'
-SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228;
-@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228
-1
+SELECT @@session.join_buffer_size;
+@@session.join_buffer_size
+8192
SET @@session.join_buffer_size = 65536;
SELECT @@session.join_buffer_size;
@@session.join_buffer_size
@@ -64,78 +48,76 @@ Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '4294967295'
SELECT @@session.join_buffer_size;
@@session.join_buffer_size
-4294963200
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
+4294967168
'#------------------FN_DYNVARS_053_05-----------------------#'
SET @@global.join_buffer_size = 0;
Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '0'
-SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228;
-@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228
-1
+SELECT @@global.join_buffer_size;
+@@global.join_buffer_size
+128
SET @@global.join_buffer_size = -1024;
Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '-1024'
-SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228;
-@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228
-1
-SET @@global.join_buffer_size = 8199;
+SELECT @@global.join_buffer_size;
+@@global.join_buffer_size
+128
+SET @@global.join_buffer_size = 127;
Warnings:
-Warning 1292 Truncated incorrect join_buffer_size value: '8199'
-SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228;
-@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228
-1
+Warning 1292 Truncated incorrect join_buffer_size value: '127'
+SELECT @@global.join_buffer_size;
+@@global.join_buffer_size
+128
SET @@global.join_buffer_size = 42949672951;
Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '42949672951'
SELECT @@global.join_buffer_size;
@@global.join_buffer_size
-4294963200
-SET @@global.join_buffer_size = 65530.34.;
-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 '.' at line 1
+4294967168
+SET @@global.join_buffer_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'join_buffer_size'
SELECT @@global.join_buffer_size;
@@global.join_buffer_size
-4294963200
+4294967168
SET @@global.join_buffer_size = test;
ERROR 42000: Incorrect argument type to variable 'join_buffer_size'
SELECT @@global.join_buffer_size;
@@global.join_buffer_size
-4294963200
+4294967168
SET @@session.join_buffer_size = 0;
Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '0'
-SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228;
-@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228
-1
-SET @@session.join_buffer_size = -2;
+SELECT @@session.join_buffer_size;
+@@session.join_buffer_size
+128
+SET @@session.join_buffer_size = -1024;
Warnings:
-Warning 1292 Truncated incorrect join_buffer_size value: '-2'
-SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228;
-@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228
-1
-SET @@session.join_buffer_size = 8199;
+Warning 1292 Truncated incorrect join_buffer_size value: '-1024'
+SELECT @@session.join_buffer_size;
+@@session.join_buffer_size
+128
+SET @@session.join_buffer_size = 127;
Warnings:
-Warning 1292 Truncated incorrect join_buffer_size value: '8199'
-SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228;
-@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228
-1
+Warning 1292 Truncated incorrect join_buffer_size value: '127'
+SELECT @@session.join_buffer_size;
+@@session.join_buffer_size
+128
SET @@session.join_buffer_size = 42949672951;
Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '42949672951'
SELECT @@session.join_buffer_size;
@@session.join_buffer_size
-4294963200
-SET @@session.join_buffer_size = 65530.34.;
-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 '.' at line 1
+4294967168
+SET @@session.join_buffer_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'join_buffer_size'
SELECT @@session.join_buffer_size;
@@session.join_buffer_size
-4294963200
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
+4294967168
SET @@session.join_buffer_size = test;
ERROR 42000: Incorrect argument type to variable 'join_buffer_size'
SELECT @@session.join_buffer_size;
@@session.join_buffer_size
-4294963200
+4294967168
'#------------------FN_DYNVARS_053_06-----------------------#'
SELECT @@global.join_buffer_size = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
@@ -152,16 +134,9 @@ WHERE VARIABLE_NAME='join_buffer_size';
SET @@global.join_buffer_size = TRUE;
Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '1'
-SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228;
-@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228
-1
SET @@global.join_buffer_size = FALSE;
Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '0'
-SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228;
-@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228
-1
-'Bug: Errors are not coming on assigning TRUE/FALSE to variable';
'#---------------------FN_DYNVARS_001_09----------------------#'
SET @@global.join_buffer_size = 10;
Warnings:
@@ -183,9 +158,9 @@ SELECT @@local.join_buffer_size = @@session.join_buffer_size;
SET join_buffer_size = 1;
Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '1'
-SELECT @@join_buffer_size=8200 OR @@join_buffer_size= 8228;
-@@join_buffer_size=8200 OR @@join_buffer_size= 8228
-1
+SELECT @@join_buffer_size;
+@@join_buffer_size
+128
SELECT local.join_buffer_size;
ERROR 42S02: Unknown table 'local' in field list
SELECT session.join_buffer_size;
diff --git a/mysql-test/suite/sys_vars/r/join_buffer_size_basic_64.result b/mysql-test/suite/sys_vars/r/join_buffer_size_basic_64.result
index 4811d4732df..fda265910f9 100644
--- a/mysql-test/suite/sys_vars/r/join_buffer_size_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/join_buffer_size_basic_64.result
@@ -7,127 +7,117 @@ SELECT @start_session_value;
@start_session_value
131072
'#--------------------FN_DYNVARS_053_01-------------------------#'
-SET @@global.join_buffer_size = 8200;
-Warnings:
-Warning 1292 Truncated incorrect join_buffer_size value: '8200'
SET @@global.join_buffer_size = DEFAULT;
SELECT @@global.join_buffer_size;
@@global.join_buffer_size
131072
-SET @@session.join_buffer_size = 8200;
-Warnings:
-Warning 1292 Truncated incorrect join_buffer_size value: '8200'
SET @@session.join_buffer_size = DEFAULT;
SELECT @@session.join_buffer_size;
@@session.join_buffer_size
131072
-'#--------------------FN_DYNVARS_053_02-------------------------#'
-SET @@global.join_buffer_size = DEFAULT;
-SELECT @@global.join_buffer_size = 131072;
-@@global.join_buffer_size = 131072
-1
-SET @@session.join_buffer_size = DEFAULT;
-SELECT @@session.join_buffer_size = 131072;
-@@session.join_buffer_size = 131072
-1
'#--------------------FN_DYNVARS_053_03-------------------------#'
SET @@global.join_buffer_size = 8200;
Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '8200'
-SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228;
-@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228
-1
+SELECT @@global.join_buffer_size;
+@@global.join_buffer_size
+8192
SET @@global.join_buffer_size = 65536;
SELECT @@global.join_buffer_size;
@@global.join_buffer_size
65536
SET @@global.join_buffer_size = 4294967295;
+Warnings:
+Warning 1292 Truncated incorrect join_buffer_size value: '4294967295'
SELECT @@global.join_buffer_size;
@@global.join_buffer_size
-4294963200
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
+4294967168
'#--------------------FN_DYNVARS_053_04-------------------------#'
SET @@session.join_buffer_size = 8200;
Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '8200'
-SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228;
-@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228
-1
+SELECT @@session.join_buffer_size;
+@@session.join_buffer_size
+8192
SET @@session.join_buffer_size = 65536;
SELECT @@session.join_buffer_size;
@@session.join_buffer_size
65536
SET @@session.join_buffer_size = 4294967295;
+Warnings:
+Warning 1292 Truncated incorrect join_buffer_size value: '4294967295'
SELECT @@session.join_buffer_size;
@@session.join_buffer_size
-4294963200
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
+4294967168
'#------------------FN_DYNVARS_053_05-----------------------#'
SET @@global.join_buffer_size = 0;
Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '0'
-SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228;
-@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228
-1
+SELECT @@global.join_buffer_size;
+@@global.join_buffer_size
+128
SET @@global.join_buffer_size = -1024;
Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '-1024'
-SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228;
-@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228
-1
-SET @@global.join_buffer_size = 8199;
+SELECT @@global.join_buffer_size;
+@@global.join_buffer_size
+128
+SET @@global.join_buffer_size = 127;
Warnings:
-Warning 1292 Truncated incorrect join_buffer_size value: '8199'
-SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228;
-@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228
-1
+Warning 1292 Truncated incorrect join_buffer_size value: '127'
+SELECT @@global.join_buffer_size;
+@@global.join_buffer_size
+128
SET @@global.join_buffer_size = 42949672951;
+Warnings:
+Warning 1292 Truncated incorrect join_buffer_size value: '42949672951'
SELECT @@global.join_buffer_size;
@@global.join_buffer_size
-42949668864
-SET @@global.join_buffer_size = 65530.34.;
-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 '.' at line 1
+42949672832
+SET @@global.join_buffer_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'join_buffer_size'
SELECT @@global.join_buffer_size;
@@global.join_buffer_size
-42949668864
+42949672832
SET @@global.join_buffer_size = test;
ERROR 42000: Incorrect argument type to variable 'join_buffer_size'
SELECT @@global.join_buffer_size;
@@global.join_buffer_size
-42949668864
+42949672832
SET @@session.join_buffer_size = 0;
Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '0'
-SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228;
-@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228
-1
-SET @@session.join_buffer_size = -2;
+SELECT @@session.join_buffer_size;
+@@session.join_buffer_size
+128
+SET @@session.join_buffer_size = -1024;
Warnings:
-Warning 1292 Truncated incorrect join_buffer_size value: '-2'
-SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228;
-@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228
-1
-SET @@session.join_buffer_size = 8199;
+Warning 1292 Truncated incorrect join_buffer_size value: '-1024'
+SELECT @@session.join_buffer_size;
+@@session.join_buffer_size
+128
+SET @@session.join_buffer_size = 127;
Warnings:
-Warning 1292 Truncated incorrect join_buffer_size value: '8199'
-SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228;
-@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228
-1
+Warning 1292 Truncated incorrect join_buffer_size value: '127'
+SELECT @@session.join_buffer_size;
+@@session.join_buffer_size
+128
SET @@session.join_buffer_size = 42949672951;
+Warnings:
+Warning 1292 Truncated incorrect join_buffer_size value: '42949672951'
SELECT @@session.join_buffer_size;
@@session.join_buffer_size
-42949668864
-SET @@session.join_buffer_size = 65530.34.;
-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 '.' at line 1
+42949672832
+SET @@session.join_buffer_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'join_buffer_size'
SELECT @@session.join_buffer_size;
@@session.join_buffer_size
-42949668864
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
+42949672832
SET @@session.join_buffer_size = test;
ERROR 42000: Incorrect argument type to variable 'join_buffer_size'
SELECT @@session.join_buffer_size;
@@session.join_buffer_size
-42949668864
+42949672832
'#------------------FN_DYNVARS_053_06-----------------------#'
SELECT @@global.join_buffer_size = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
@@ -144,16 +134,9 @@ WHERE VARIABLE_NAME='join_buffer_size';
SET @@global.join_buffer_size = TRUE;
Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '1'
-SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228;
-@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228
-1
SET @@global.join_buffer_size = FALSE;
Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '0'
-SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228;
-@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228
-1
-'Bug: Errors are not coming on assigning TRUE/FALSE to variable';
'#---------------------FN_DYNVARS_001_09----------------------#'
SET @@global.join_buffer_size = 10;
Warnings:
@@ -175,9 +158,9 @@ SELECT @@local.join_buffer_size = @@session.join_buffer_size;
SET join_buffer_size = 1;
Warnings:
Warning 1292 Truncated incorrect join_buffer_size value: '1'
-SELECT @@join_buffer_size=8200 OR @@join_buffer_size= 8228;
-@@join_buffer_size=8200 OR @@join_buffer_size= 8228
-1
+SELECT @@join_buffer_size;
+@@join_buffer_size
+128
SELECT local.join_buffer_size;
ERROR 42S02: Unknown table 'local' in field list
SELECT session.join_buffer_size;
diff --git a/mysql-test/suite/sys_vars/r/keep_files_on_create_basic.result b/mysql-test/suite/sys_vars/r/keep_files_on_create_basic.result
index f782ee3b078..b7deea88a9c 100644
--- a/mysql-test/suite/sys_vars/r/keep_files_on_create_basic.result
+++ b/mysql-test/suite/sys_vars/r/keep_files_on_create_basic.result
@@ -94,7 +94,7 @@ ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of '-1024
SET @@global.keep_files_on_create = 65536;
ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of '65536'
SET @@global.keep_files_on_create = 65530.34;
-ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of '65530'
+ERROR 42000: Incorrect argument type to variable 'keep_files_on_create'
SET @@global.keep_files_on_create = test;
ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of 'test'
SET @@session.keep_files_on_create = ONN;
@@ -102,16 +102,13 @@ ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of 'ONN'
SET @@session.keep_files_on_create = ONF;
ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of 'ONF'
SET @@session.keep_files_on_create = OF;
-SELECT @@session.keep_files_on_create;
-@@session.keep_files_on_create
-0
-'Bug# 34828: FN_DYNVARS_054_05 - OF is also working as OFF and no error is coming';
+ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of 'OF'
SET @@session.keep_files_on_create = 'OFN';
ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of 'OFN'
SET @@session.keep_files_on_create = -2;
ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of '-2'
-SET @@session.keep_files_on_create = 65530.34.;
-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 '.' at line 1
+SET @@session.keep_files_on_create = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'keep_files_on_create'
SET @@session.keep_files_on_create = 65550;
ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of '65550'
SET @@session.keep_files_on_create = test;
@@ -120,16 +117,16 @@ SELECT @@session.keep_files_on_create;
@@session.keep_files_on_create
0
'#------------------FN_DYNVARS_054_06-----------------------#'
-SELECT @@global.keep_files_on_create = VARIABLE_VALUE
+SELECT IF(@@global.keep_files_on_create, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='keep_files_on_create';
-@@global.keep_files_on_create = VARIABLE_VALUE
+IF(@@global.keep_files_on_create, "ON", "OFF") = VARIABLE_VALUE
1
'#------------------FN_DYNVARS_054_07-----------------------#'
-SELECT @@session.keep_files_on_create = VARIABLE_VALUE
+SELECT IF(@@session.keep_files_on_create, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='keep_files_on_create';
-@@session.keep_files_on_create = VARIABLE_VALUE
+IF(@@session.keep_files_on_create, "ON", "OFF") = VARIABLE_VALUE
1
'#---------------------FN_DYNVARS_001_08----------------------#'
SET @@keep_files_on_create = OFF;
diff --git a/mysql-test/suite/sys_vars/r/key_buffer_size_basic_32.result b/mysql-test/suite/sys_vars/r/key_buffer_size_basic.result
index eea782701bb..4612b5c7324 100644
--- a/mysql-test/suite/sys_vars/r/key_buffer_size_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/key_buffer_size_basic.result
@@ -1,57 +1,44 @@
SET @start_value = @@global.key_buffer_size;
'#--------------------FN_DYNVARS_055_01------------------------#'
-SET @@global.key_buffer_size = 99;
SET @@global.key_buffer_size = DEFAULT;
-ERROR 42000: Variable 'key_buffer_size' doesn't have a default value
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
+SELECT @@global.key_buffer_size;
+@@global.key_buffer_size
+8388608
'#---------------------FN_DYNVARS_055_02-------------------------#'
SET @@global.key_buffer_size = @start_value;
SELECT @@global.key_buffer_size = @start_value;
@@global.key_buffer_size = @start_value
1
'#--------------------FN_DYNVARS_055_03------------------------#'
-SET @@global.key_buffer_size = 8 ;
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
-SET @@global.key_buffer_size = 1800;
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
SET @@global.key_buffer_size = 65535;
+Warnings:
+Warning 1292 Truncated incorrect key_buffer_size value: '65535'
SELECT @@global.key_buffer_size;
@@global.key_buffer_size
61440
'#--------------------FN_DYNVARS_055_04-------------------------#'
+SET @@global.key_buffer_size = -1;
+ERROR HY000: Cannot drop default keycache
+SET @@global.key_buffer_size = 4;
+ERROR HY000: Cannot drop default keycache
SET @@global.key_buffer_size = 10000.01;
ERROR 42000: Incorrect argument type to variable 'key_buffer_size'
SELECT @@global.key_buffer_size;
@@global.key_buffer_size
61440
-SET @@global.key_buffer_size = 4;
-Warnings:
-Warning 1292 Truncated incorrect key_buffer_size value: '4'
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
SET @@global.key_buffer_size = ON;
ERROR 42000: Incorrect argument type to variable 'key_buffer_size'
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
+SELECT @@global.key_buffer_size;
+@@global.key_buffer_size
+61440
SET @@global.key_buffer_size = 'test';
ERROR 42000: Incorrect argument type to variable 'key_buffer_size'
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
+SELECT @@global.key_buffer_size;
+@@global.key_buffer_size
+61440
'#-------------------FN_DYNVARS_055_05----------------------------#'
SET @@session.key_buffer_size = 0;
ERROR HY000: Variable 'key_buffer_size' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
'#----------------------FN_DYNVARS_055_06------------------------#'
SELECT @@global.key_buffer_size = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
@@ -65,28 +52,16 @@ WHERE VARIABLE_NAME='key_buffer_size';
1
'#---------------------FN_DYNVARS_055_07----------------------#'
SET @@global.key_buffer_size = TRUE;
-Warnings:
-Warning 1292 Truncated incorrect key_buffer_size value: '1'
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
+ERROR HY000: Cannot drop default keycache
SET @@global.key_buffer_size = FALSE;
-Warnings:
-Warning 1438 Cannot drop default keycache
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
+ERROR HY000: Cannot drop default keycache
'#---------------------FN_DYNVARS_055_08----------------------#'
-SET @@global.key_buffer_size = 8 ;
SELECT @@key_buffer_size = @@global.key_buffer_size;
@@key_buffer_size = @@global.key_buffer_size
1
'#---------------------FN_DYNVARS_055_09----------------------#'
SET key_buffer_size = 8 ;
ERROR HY000: Variable 'key_buffer_size' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
SET local.key_buffer_size = 10;
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 'key_buffer_size = 10' at line 1
SELECT local.key_buffer_size;
diff --git a/mysql-test/suite/sys_vars/r/key_buffer_size_basic_64.result b/mysql-test/suite/sys_vars/r/key_buffer_size_basic_64.result
deleted file mode 100644
index eea782701bb..00000000000
--- a/mysql-test/suite/sys_vars/r/key_buffer_size_basic_64.result
+++ /dev/null
@@ -1,100 +0,0 @@
-SET @start_value = @@global.key_buffer_size;
-'#--------------------FN_DYNVARS_055_01------------------------#'
-SET @@global.key_buffer_size = 99;
-SET @@global.key_buffer_size = DEFAULT;
-ERROR 42000: Variable 'key_buffer_size' doesn't have a default value
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
-'#---------------------FN_DYNVARS_055_02-------------------------#'
-SET @@global.key_buffer_size = @start_value;
-SELECT @@global.key_buffer_size = @start_value;
-@@global.key_buffer_size = @start_value
-1
-'#--------------------FN_DYNVARS_055_03------------------------#'
-SET @@global.key_buffer_size = 8 ;
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
-SET @@global.key_buffer_size = 1800;
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
-SET @@global.key_buffer_size = 65535;
-SELECT @@global.key_buffer_size;
-@@global.key_buffer_size
-61440
-'#--------------------FN_DYNVARS_055_04-------------------------#'
-SET @@global.key_buffer_size = 10000.01;
-ERROR 42000: Incorrect argument type to variable 'key_buffer_size'
-SELECT @@global.key_buffer_size;
-@@global.key_buffer_size
-61440
-SET @@global.key_buffer_size = 4;
-Warnings:
-Warning 1292 Truncated incorrect key_buffer_size value: '4'
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
-SET @@global.key_buffer_size = ON;
-ERROR 42000: Incorrect argument type to variable 'key_buffer_size'
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
-SET @@global.key_buffer_size = 'test';
-ERROR 42000: Incorrect argument type to variable 'key_buffer_size'
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
-'#-------------------FN_DYNVARS_055_05----------------------------#'
-SET @@session.key_buffer_size = 0;
-ERROR HY000: Variable 'key_buffer_size' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
-'#----------------------FN_DYNVARS_055_06------------------------#'
-SELECT @@global.key_buffer_size = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='key_buffer_size';
-@@global.key_buffer_size = VARIABLE_VALUE
-1
-SELECT @@key_buffer_size = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.SESSION_VARIABLES
-WHERE VARIABLE_NAME='key_buffer_size';
-@@key_buffer_size = VARIABLE_VALUE
-1
-'#---------------------FN_DYNVARS_055_07----------------------#'
-SET @@global.key_buffer_size = TRUE;
-Warnings:
-Warning 1292 Truncated incorrect key_buffer_size value: '1'
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
-SET @@global.key_buffer_size = FALSE;
-Warnings:
-Warning 1438 Cannot drop default keycache
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
-'#---------------------FN_DYNVARS_055_08----------------------#'
-SET @@global.key_buffer_size = 8 ;
-SELECT @@key_buffer_size = @@global.key_buffer_size;
-@@key_buffer_size = @@global.key_buffer_size
-1
-'#---------------------FN_DYNVARS_055_09----------------------#'
-SET key_buffer_size = 8 ;
-ERROR HY000: Variable 'key_buffer_size' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT @@global.key_buffer_size BETWEEN 8 AND 36;
-@@global.key_buffer_size BETWEEN 8 AND 36
-1
-SET local.key_buffer_size = 10;
-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 'key_buffer_size = 10' at line 1
-SELECT local.key_buffer_size;
-ERROR 42S02: Unknown table 'local' in field list
-SET global.key_buffer_size = 10;
-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 'key_buffer_size = 10' at line 1
-SELECT global.key_buffer_size;
-ERROR 42S02: Unknown table 'global' in field list
-SELECT key_buffer_size = @@session.key_buffer_size;
-ERROR 42S22: Unknown column 'key_buffer_size' in 'field list'
-SET @@global.key_buffer_size = @start_value;
diff --git a/mysql-test/suite/sys_vars/r/key_buffer_size_func.result b/mysql-test/suite/sys_vars/r/key_buffer_size_func.result
index d5b79c260a0..a10be0ab832 100644
--- a/mysql-test/suite/sys_vars/r/key_buffer_size_func.result
+++ b/mysql-test/suite/sys_vars/r/key_buffer_size_func.result
@@ -38,7 +38,6 @@ Key_reads 0
show status like 'Key_reads';
Variable_name Value
Key_reads 0
-SET @@global.key_buffer_size = 36;
## Connecting with connection test_con1 ##
## Inserting some rows in table ##
INSERT INTO t1(rollno, name) VALUES(5, 'Record_11');
@@ -54,7 +53,7 @@ INSERT INTO t1(rollno, name) VALUES(8, 'Record_20');
## Key_reads must be zero (no disk access) ##
show status like 'Key_reads';
Variable_name Value
-Key_reads 10
+Key_reads 0
## Dropping table ##
DROP TABLE IF EXISTS t1;
## Disconnecting both the connections ##
diff --git a/mysql-test/suite/sys_vars/r/key_cache_age_threshold_basic_32.result b/mysql-test/suite/sys_vars/r/key_cache_age_threshold_basic_32.result
index c79e7beb198..9df9f56bd1f 100644
--- a/mysql-test/suite/sys_vars/r/key_cache_age_threshold_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/key_cache_age_threshold_basic_32.result
@@ -3,15 +3,10 @@ SELECT @start_value;
@start_value
300
'#--------------------FN_DYNVARS_056_01------------------------#'
-SET @@global.key_cache_age_threshold = 99;
-Warnings:
-Warning 1292 Truncated incorrect key_cache_age_threshold value: '99'
SET @@global.key_cache_age_threshold = DEFAULT;
-ERROR 42000: Variable 'key_cache_age_threshold' doesn't have a default value
-'Bug# 34878: This variable has default value according to documentation';
SELECT @@global.key_cache_age_threshold;
@@global.key_cache_age_threshold
-100
+300
'#---------------------FN_DYNVARS_056_02-------------------------#'
SET @@global.key_cache_age_threshold = @start_value;
SELECT @@global.key_cache_age_threshold = 300;
@@ -23,6 +18,8 @@ SELECT @@global.key_cache_age_threshold;
@@global.key_cache_age_threshold
100
SET @@global.key_cache_age_threshold = 4294967295;
+Warnings:
+Warning 1292 Truncated incorrect key_cache_age_threshold value: '4294967295'
SELECT @@global.key_cache_age_threshold;
@@global.key_cache_age_threshold
4294967200
@@ -31,17 +28,18 @@ SELECT @@global.key_cache_age_threshold;
@@global.key_cache_age_threshold
1800
SET @@global.key_cache_age_threshold = 65535;
+Warnings:
+Warning 1292 Truncated incorrect key_cache_age_threshold value: '65535'
SELECT @@global.key_cache_age_threshold;
@@global.key_cache_age_threshold
65500
-'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming';
'#--------------------FN_DYNVARS_056_04-------------------------#'
SET @@global.key_cache_age_threshold = -1;
Warnings:
-Warning 1292 Truncated incorrect key_cache_age_threshold value: '18446744073709551615'
+Warning 1292 Truncated incorrect key_cache_age_threshold value: '-1'
SELECT @@global.key_cache_age_threshold;
@@global.key_cache_age_threshold
-4294967200
+100
SET @@global.key_cache_age_threshold = 42949672951;
Warnings:
Warning 1292 Truncated incorrect key_cache_age_threshold value: '42949672951'
@@ -55,17 +53,16 @@ SELECT @@global.key_cache_age_threshold;
4294967200
SET @@global.key_cache_age_threshold = -1024;
Warnings:
-Warning 1292 Truncated incorrect key_cache_age_threshold value: '18446744073709550592'
+Warning 1292 Truncated incorrect key_cache_age_threshold value: '-1024'
SELECT @@global.key_cache_age_threshold;
@@global.key_cache_age_threshold
-4294967200
+100
SET @@global.key_cache_age_threshold = 99;
Warnings:
Warning 1292 Truncated incorrect key_cache_age_threshold value: '99'
SELECT @@global.key_cache_age_threshold;
@@global.key_cache_age_threshold
100
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
SET @@global.key_cache_age_threshold = ON;
ERROR 42000: Incorrect argument type to variable 'key_cache_age_threshold'
SELECT @@global.key_cache_age_threshold;
@@ -107,6 +104,8 @@ SELECT @@global.key_cache_age_threshold;
100
'#---------------------FN_DYNVARS_056_08----------------------#'
SET @@global.key_cache_age_threshold = 101;
+Warnings:
+Warning 1292 Truncated incorrect key_cache_age_threshold value: '101'
SELECT @@key_cache_age_threshold = @@global.key_cache_age_threshold;
@@key_cache_age_threshold = @@global.key_cache_age_threshold
1
diff --git a/mysql-test/suite/sys_vars/r/key_cache_age_threshold_basic_64.result b/mysql-test/suite/sys_vars/r/key_cache_age_threshold_basic_64.result
index 5e05dd7bacf..5e0222e8968 100644
--- a/mysql-test/suite/sys_vars/r/key_cache_age_threshold_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/key_cache_age_threshold_basic_64.result
@@ -3,15 +3,10 @@ SELECT @start_value;
@start_value
300
'#--------------------FN_DYNVARS_056_01------------------------#'
-SET @@global.key_cache_age_threshold = 99;
-Warnings:
-Warning 1292 Truncated incorrect key_cache_age_threshold value: '99'
SET @@global.key_cache_age_threshold = DEFAULT;
-ERROR 42000: Variable 'key_cache_age_threshold' doesn't have a default value
-'Bug# 34878: This variable has default value according to documentation';
SELECT @@global.key_cache_age_threshold;
@@global.key_cache_age_threshold
-100
+300
'#---------------------FN_DYNVARS_056_02-------------------------#'
SET @@global.key_cache_age_threshold = @start_value;
SELECT @@global.key_cache_age_threshold = 300;
@@ -23,6 +18,8 @@ SELECT @@global.key_cache_age_threshold;
@@global.key_cache_age_threshold
100
SET @@global.key_cache_age_threshold = 4294967295;
+Warnings:
+Warning 1292 Truncated incorrect key_cache_age_threshold value: '4294967295'
SELECT @@global.key_cache_age_threshold;
@@global.key_cache_age_threshold
4294967200
@@ -31,16 +28,21 @@ SELECT @@global.key_cache_age_threshold;
@@global.key_cache_age_threshold
1800
SET @@global.key_cache_age_threshold = 65535;
+Warnings:
+Warning 1292 Truncated incorrect key_cache_age_threshold value: '65535'
SELECT @@global.key_cache_age_threshold;
@@global.key_cache_age_threshold
65500
-'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming';
'#--------------------FN_DYNVARS_056_04-------------------------#'
SET @@global.key_cache_age_threshold = -1;
+Warnings:
+Warning 1292 Truncated incorrect key_cache_age_threshold value: '-1'
SELECT @@global.key_cache_age_threshold;
@@global.key_cache_age_threshold
-18446744073709551600
+100
SET @@global.key_cache_age_threshold = 42949672951;
+Warnings:
+Warning 1292 Truncated incorrect key_cache_age_threshold value: '42949672951'
SELECT @@global.key_cache_age_threshold;
@@global.key_cache_age_threshold
42949672900
@@ -50,16 +52,17 @@ SELECT @@global.key_cache_age_threshold;
@@global.key_cache_age_threshold
42949672900
SET @@global.key_cache_age_threshold = -1024;
+Warnings:
+Warning 1292 Truncated incorrect key_cache_age_threshold value: '-1024'
SELECT @@global.key_cache_age_threshold;
@@global.key_cache_age_threshold
-18446744073709550500
+100
SET @@global.key_cache_age_threshold = 99;
Warnings:
Warning 1292 Truncated incorrect key_cache_age_threshold value: '99'
SELECT @@global.key_cache_age_threshold;
@@global.key_cache_age_threshold
100
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
SET @@global.key_cache_age_threshold = ON;
ERROR 42000: Incorrect argument type to variable 'key_cache_age_threshold'
SELECT @@global.key_cache_age_threshold;
@@ -101,6 +104,8 @@ SELECT @@global.key_cache_age_threshold;
100
'#---------------------FN_DYNVARS_056_08----------------------#'
SET @@global.key_cache_age_threshold = 101;
+Warnings:
+Warning 1292 Truncated incorrect key_cache_age_threshold value: '101'
SELECT @@key_cache_age_threshold = @@global.key_cache_age_threshold;
@@key_cache_age_threshold = @@global.key_cache_age_threshold
1
diff --git a/mysql-test/suite/sys_vars/r/key_cache_block_size_basic_64.result b/mysql-test/suite/sys_vars/r/key_cache_block_size_basic.result
index 46ce1f26b29..00ba39558af 100644
--- a/mysql-test/suite/sys_vars/r/key_cache_block_size_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/key_cache_block_size_basic.result
@@ -3,13 +3,10 @@ SELECT @start_value;
@start_value
1024
'#--------------------FN_DYNVARS_057_01------------------------#'
-SET @@global.key_cache_block_size = 600;
SET @@global.key_cache_block_size = DEFAULT;
-ERROR 42000: Variable 'key_cache_block_size' doesn't have a default value
-'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming';
SELECT @@global.key_cache_block_size;
@@global.key_cache_block_size
-512
+1024
'#---------------------FN_DYNVARS_057_02-------------------------#'
SET @@global.key_cache_block_size = @start_value;
SELECT @@global.key_cache_block_size = 1024;
@@ -25,21 +22,24 @@ SELECT @@global.key_cache_block_size;
@@global.key_cache_block_size
16384
SET @@global.key_cache_block_size = 1800;
+Warnings:
+Warning 1292 Truncated incorrect key_cache_block_size value: '1800'
SELECT @@global.key_cache_block_size;
@@global.key_cache_block_size
1536
SET @@global.key_cache_block_size = 16383;
+Warnings:
+Warning 1292 Truncated incorrect key_cache_block_size value: '16383'
SELECT @@global.key_cache_block_size;
@@global.key_cache_block_size
15872
-'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming';
'#--------------------FN_DYNVARS_057_04-------------------------#'
SET @@global.key_cache_block_size = -1;
Warnings:
-Warning 1292 Truncated incorrect key_cache_block_size value: '18446744073709551615'
+Warning 1292 Truncated incorrect key_cache_block_size value: '-1'
SELECT @@global.key_cache_block_size;
@@global.key_cache_block_size
-16384
+512
SET @@global.key_cache_block_size = 42949672951;
Warnings:
Warning 1292 Truncated incorrect key_cache_block_size value: '42949672951'
@@ -53,10 +53,10 @@ SELECT @@global.key_cache_block_size;
16384
SET @@global.key_cache_block_size = -1024;
Warnings:
-Warning 1292 Truncated incorrect key_cache_block_size value: '18446744073709550592'
+Warning 1292 Truncated incorrect key_cache_block_size value: '-1024'
SELECT @@global.key_cache_block_size;
@@global.key_cache_block_size
-16384
+512
SET @@global.key_cache_block_size = 256;
Warnings:
Warning 1292 Truncated incorrect key_cache_block_size value: '256'
@@ -75,7 +75,6 @@ Warning 1292 Truncated incorrect key_cache_block_size value: '16385'
SELECT @@global.key_cache_block_size;
@@global.key_cache_block_size
16384
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
SET @@global.key_cache_block_size = ON;
ERROR 42000: Incorrect argument type to variable 'key_cache_block_size'
SELECT @@global.key_cache_block_size;
diff --git a/mysql-test/suite/sys_vars/r/key_cache_block_size_basic_32.result b/mysql-test/suite/sys_vars/r/key_cache_block_size_basic_32.result
deleted file mode 100644
index 46ce1f26b29..00000000000
--- a/mysql-test/suite/sys_vars/r/key_cache_block_size_basic_32.result
+++ /dev/null
@@ -1,142 +0,0 @@
-SET @start_value = @@global.key_cache_block_size;
-SELECT @start_value;
-@start_value
-1024
-'#--------------------FN_DYNVARS_057_01------------------------#'
-SET @@global.key_cache_block_size = 600;
-SET @@global.key_cache_block_size = DEFAULT;
-ERROR 42000: Variable 'key_cache_block_size' doesn't have a default value
-'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming';
-SELECT @@global.key_cache_block_size;
-@@global.key_cache_block_size
-512
-'#---------------------FN_DYNVARS_057_02-------------------------#'
-SET @@global.key_cache_block_size = @start_value;
-SELECT @@global.key_cache_block_size = 1024;
-@@global.key_cache_block_size = 1024
-1
-'#--------------------FN_DYNVARS_057_03------------------------#'
-SET @@global.key_cache_block_size = 1024;
-SELECT @@global.key_cache_block_size;
-@@global.key_cache_block_size
-1024
-SET @@global.key_cache_block_size = 16384;
-SELECT @@global.key_cache_block_size;
-@@global.key_cache_block_size
-16384
-SET @@global.key_cache_block_size = 1800;
-SELECT @@global.key_cache_block_size;
-@@global.key_cache_block_size
-1536
-SET @@global.key_cache_block_size = 16383;
-SELECT @@global.key_cache_block_size;
-@@global.key_cache_block_size
-15872
-'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming';
-'#--------------------FN_DYNVARS_057_04-------------------------#'
-SET @@global.key_cache_block_size = -1;
-Warnings:
-Warning 1292 Truncated incorrect key_cache_block_size value: '18446744073709551615'
-SELECT @@global.key_cache_block_size;
-@@global.key_cache_block_size
-16384
-SET @@global.key_cache_block_size = 42949672951;
-Warnings:
-Warning 1292 Truncated incorrect key_cache_block_size value: '42949672951'
-SELECT @@global.key_cache_block_size;
-@@global.key_cache_block_size
-16384
-SET @@global.key_cache_block_size = 10000.01;
-ERROR 42000: Incorrect argument type to variable 'key_cache_block_size'
-SELECT @@global.key_cache_block_size;
-@@global.key_cache_block_size
-16384
-SET @@global.key_cache_block_size = -1024;
-Warnings:
-Warning 1292 Truncated incorrect key_cache_block_size value: '18446744073709550592'
-SELECT @@global.key_cache_block_size;
-@@global.key_cache_block_size
-16384
-SET @@global.key_cache_block_size = 256;
-Warnings:
-Warning 1292 Truncated incorrect key_cache_block_size value: '256'
-SELECT @@global.key_cache_block_size;
-@@global.key_cache_block_size
-512
-SET @@global.key_cache_block_size = 511;
-Warnings:
-Warning 1292 Truncated incorrect key_cache_block_size value: '511'
-SELECT @@global.key_cache_block_size;
-@@global.key_cache_block_size
-512
-SET @@global.key_cache_block_size = 16385;
-Warnings:
-Warning 1292 Truncated incorrect key_cache_block_size value: '16385'
-SELECT @@global.key_cache_block_size;
-@@global.key_cache_block_size
-16384
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
-SET @@global.key_cache_block_size = ON;
-ERROR 42000: Incorrect argument type to variable 'key_cache_block_size'
-SELECT @@global.key_cache_block_size;
-@@global.key_cache_block_size
-16384
-SET @@global.key_cache_block_size = 'test';
-ERROR 42000: Incorrect argument type to variable 'key_cache_block_size'
-SELECT @@global.key_cache_block_size;
-@@global.key_cache_block_size
-16384
-'#-------------------FN_DYNVARS_057_05----------------------------#'
-SET @@session.key_cache_block_size = 0;
-ERROR HY000: Variable 'key_cache_block_size' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT @@session.key_cache_block_size;
-ERROR HY000: Variable 'key_cache_block_size' is a GLOBAL variable
-'#----------------------FN_DYNVARS_057_06------------------------#'
-SELECT @@global.key_cache_block_size = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='key_cache_block_size';
-@@global.key_cache_block_size = VARIABLE_VALUE
-1
-SELECT @@key_cache_block_size = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.SESSION_VARIABLES
-WHERE VARIABLE_NAME='key_cache_block_size';
-@@key_cache_block_size = VARIABLE_VALUE
-1
-'#---------------------FN_DYNVARS_057_07----------------------#'
-SET @@global.key_cache_block_size = TRUE;
-Warnings:
-Warning 1292 Truncated incorrect key_cache_block_size value: '1'
-SELECT @@global.key_cache_block_size;
-@@global.key_cache_block_size
-512
-SET @@global.key_cache_block_size = FALSE;
-Warnings:
-Warning 1292 Truncated incorrect key_cache_block_size value: '0'
-SELECT @@global.key_cache_block_size;
-@@global.key_cache_block_size
-512
-'#---------------------FN_DYNVARS_057_08----------------------#'
-SET @@global.key_cache_block_size = 1024;
-SELECT @@key_cache_block_size = @@global.key_cache_block_size;
-@@key_cache_block_size = @@global.key_cache_block_size
-1
-'#---------------------FN_DYNVARS_057_09----------------------#'
-SET key_cache_block_size = 8000;
-ERROR HY000: Variable 'key_cache_block_size' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT @@key_cache_block_size;
-@@key_cache_block_size
-1024
-SET local.key_cache_block_size = 10;
-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 'key_cache_block_size = 10' at line 1
-SELECT local.key_cache_block_size;
-ERROR 42S02: Unknown table 'local' in field list
-SET global.key_cache_block_size = 10;
-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 'key_cache_block_size = 10' at line 1
-SELECT global.key_cache_block_size;
-ERROR 42S02: Unknown table 'global' in field list
-SELECT key_cache_block_size = @@session.key_cache_block_size;
-ERROR 42S22: Unknown column 'key_cache_block_size' in 'field list'
-SET @@global.key_cache_block_size = @start_value;
-SELECT @@global.key_cache_block_size;
-@@global.key_cache_block_size
-1024
diff --git a/mysql-test/suite/sys_vars/r/key_cache_division_limit_basic_64.result b/mysql-test/suite/sys_vars/r/key_cache_division_limit_basic.result
index cd0cdcbca05..641779ac819 100644
--- a/mysql-test/suite/sys_vars/r/key_cache_division_limit_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/key_cache_division_limit_basic.result
@@ -3,13 +3,10 @@ SELECT @start_value;
@start_value
100
'#--------------------FN_DYNVARS_058_01------------------------#'
-SET @@global.key_cache_division_limit = 50;
SET @@global.key_cache_division_limit = DEFAULT;
-ERROR 42000: Variable 'key_cache_division_limit' doesn't have a default value
-'Bug# 34878: This variable has default value according to documentation';
SELECT @@global.key_cache_division_limit;
@@global.key_cache_division_limit
-50
+100
'#---------------------FN_DYNVARS_058_02-------------------------#'
SET @@global.key_cache_division_limit = @start_value;
SELECT @@global.key_cache_division_limit = 100;
@@ -35,10 +32,10 @@ SELECT @@global.key_cache_division_limit;
'#--------------------FN_DYNVARS_058_04-------------------------#'
SET @@global.key_cache_division_limit = -1;
Warnings:
-Warning 1292 Truncated incorrect key_cache_division_limit value: '18446744073709551615'
+Warning 1292 Truncated incorrect key_cache_division_limit value: '-1'
SELECT @@global.key_cache_division_limit;
@@global.key_cache_division_limit
-100
+1
SET @@global.key_cache_division_limit = 101;
Warnings:
Warning 1292 Truncated incorrect key_cache_division_limit value: '101'
@@ -52,10 +49,10 @@ SELECT @@global.key_cache_division_limit;
100
SET @@global.key_cache_division_limit = -1024;
Warnings:
-Warning 1292 Truncated incorrect key_cache_division_limit value: '18446744073709550592'
+Warning 1292 Truncated incorrect key_cache_division_limit value: '-1024'
SELECT @@global.key_cache_division_limit;
@@global.key_cache_division_limit
-100
+1
SET @@global.key_cache_division_limit = 0;
Warnings:
Warning 1292 Truncated incorrect key_cache_division_limit value: '0'
@@ -74,7 +71,6 @@ Warning 1292 Truncated incorrect key_cache_division_limit value: '65535'
SELECT @@global.key_cache_division_limit;
@@global.key_cache_division_limit
100
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
SET @@global.key_cache_division_limit = ON;
ERROR 42000: Incorrect argument type to variable 'key_cache_division_limit'
SELECT @@global.key_cache_division_limit;
diff --git a/mysql-test/suite/sys_vars/r/key_cache_division_limit_basic_32.result b/mysql-test/suite/sys_vars/r/key_cache_division_limit_basic_32.result
deleted file mode 100644
index cd0cdcbca05..00000000000
--- a/mysql-test/suite/sys_vars/r/key_cache_division_limit_basic_32.result
+++ /dev/null
@@ -1,139 +0,0 @@
-SET @start_value = @@global.key_cache_division_limit;
-SELECT @start_value;
-@start_value
-100
-'#--------------------FN_DYNVARS_058_01------------------------#'
-SET @@global.key_cache_division_limit = 50;
-SET @@global.key_cache_division_limit = DEFAULT;
-ERROR 42000: Variable 'key_cache_division_limit' doesn't have a default value
-'Bug# 34878: This variable has default value according to documentation';
-SELECT @@global.key_cache_division_limit;
-@@global.key_cache_division_limit
-50
-'#---------------------FN_DYNVARS_058_02-------------------------#'
-SET @@global.key_cache_division_limit = @start_value;
-SELECT @@global.key_cache_division_limit = 100;
-@@global.key_cache_division_limit = 100
-1
-'#--------------------FN_DYNVARS_058_03------------------------#'
-SET @@global.key_cache_division_limit = 1;
-SELECT @@global.key_cache_division_limit;
-@@global.key_cache_division_limit
-1
-SET @@global.key_cache_division_limit = 50;
-SELECT @@global.key_cache_division_limit;
-@@global.key_cache_division_limit
-50
-SET @@global.key_cache_division_limit = 99;
-SELECT @@global.key_cache_division_limit;
-@@global.key_cache_division_limit
-99
-SET @@global.key_cache_division_limit = 2;
-SELECT @@global.key_cache_division_limit;
-@@global.key_cache_division_limit
-2
-'#--------------------FN_DYNVARS_058_04-------------------------#'
-SET @@global.key_cache_division_limit = -1;
-Warnings:
-Warning 1292 Truncated incorrect key_cache_division_limit value: '18446744073709551615'
-SELECT @@global.key_cache_division_limit;
-@@global.key_cache_division_limit
-100
-SET @@global.key_cache_division_limit = 101;
-Warnings:
-Warning 1292 Truncated incorrect key_cache_division_limit value: '101'
-SELECT @@global.key_cache_division_limit;
-@@global.key_cache_division_limit
-100
-SET @@global.key_cache_division_limit = 10000.01;
-ERROR 42000: Incorrect argument type to variable 'key_cache_division_limit'
-SELECT @@global.key_cache_division_limit;
-@@global.key_cache_division_limit
-100
-SET @@global.key_cache_division_limit = -1024;
-Warnings:
-Warning 1292 Truncated incorrect key_cache_division_limit value: '18446744073709550592'
-SELECT @@global.key_cache_division_limit;
-@@global.key_cache_division_limit
-100
-SET @@global.key_cache_division_limit = 0;
-Warnings:
-Warning 1292 Truncated incorrect key_cache_division_limit value: '0'
-SELECT @@global.key_cache_division_limit;
-@@global.key_cache_division_limit
-1
-SET @@global.key_cache_division_limit = 200;
-Warnings:
-Warning 1292 Truncated incorrect key_cache_division_limit value: '200'
-SELECT @@global.key_cache_division_limit;
-@@global.key_cache_division_limit
-100
-SET @@global.key_cache_division_limit = 65535;
-Warnings:
-Warning 1292 Truncated incorrect key_cache_division_limit value: '65535'
-SELECT @@global.key_cache_division_limit;
-@@global.key_cache_division_limit
-100
-'Bug # 34837: Errors are not coming on assigning invalid values to variable'
-SET @@global.key_cache_division_limit = ON;
-ERROR 42000: Incorrect argument type to variable 'key_cache_division_limit'
-SELECT @@global.key_cache_division_limit;
-@@global.key_cache_division_limit
-100
-SET @@global.key_cache_division_limit = 'test';
-ERROR 42000: Incorrect argument type to variable 'key_cache_division_limit'
-SELECT @@global.key_cache_division_limit;
-@@global.key_cache_division_limit
-100
-'#-------------------FN_DYNVARS_058_05----------------------------#'
-SET @@session.key_cache_division_limit = 0;
-ERROR HY000: Variable 'key_cache_division_limit' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT @@session.key_cache_division_limit;
-ERROR HY000: Variable 'key_cache_division_limit' is a GLOBAL variable
-'#----------------------FN_DYNVARS_058_06------------------------#'
-SELECT @@global.key_cache_division_limit = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='key_cache_division_limit';
-@@global.key_cache_division_limit = VARIABLE_VALUE
-1
-SELECT @@key_cache_division_limit = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.SESSION_VARIABLES
-WHERE VARIABLE_NAME='key_cache_division_limit';
-@@key_cache_division_limit = VARIABLE_VALUE
-1
-'#---------------------FN_DYNVARS_058_07----------------------#'
-SET @@global.key_cache_division_limit = TRUE;
-SELECT @@global.key_cache_division_limit;
-@@global.key_cache_division_limit
-1
-SET @@global.key_cache_division_limit = FALSE;
-Warnings:
-Warning 1292 Truncated incorrect key_cache_division_limit value: '0'
-SELECT @@global.key_cache_division_limit;
-@@global.key_cache_division_limit
-1
-'#---------------------FN_DYNVARS_058_08----------------------#'
-SET @@global.key_cache_division_limit = 90;
-SELECT @@key_cache_division_limit = @@global.key_cache_division_limit;
-@@key_cache_division_limit = @@global.key_cache_division_limit
-1
-'#---------------------FN_DYNVARS_058_09----------------------#'
-SET key_cache_division_limit = 80;
-ERROR HY000: Variable 'key_cache_division_limit' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT @@key_cache_division_limit;
-@@key_cache_division_limit
-90
-SET local.key_cache_division_limit = 10;
-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 'key_cache_division_limit = 10' at line 1
-SELECT local.key_cache_division_limit;
-ERROR 42S02: Unknown table 'local' in field list
-SET global.key_cache_division_limit = 10;
-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 'key_cache_division_limit = 10' at line 1
-SELECT global.key_cache_division_limit;
-ERROR 42S02: Unknown table 'global' in field list
-SELECT key_cache_division_limit = @@session.key_cache_division_limit;
-ERROR 42S22: Unknown column 'key_cache_division_limit' in 'field list'
-SET @@global.key_cache_division_limit = @start_value;
-SELECT @@global.key_cache_division_limit;
-@@global.key_cache_division_limit
-100
diff --git a/mysql-test/suite/sys_vars/r/large_files_support_basic.result b/mysql-test/suite/sys_vars/r/large_files_support_basic.result
new file mode 100644
index 00000000000..a33e3894ddc
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/large_files_support_basic.result
@@ -0,0 +1,21 @@
+select @@global.large_files_support;
+@@global.large_files_support
+0
+select @@session.large_files_support;
+ERROR HY000: Variable 'large_files_support' is a GLOBAL variable
+show global variables like 'large_files_support';
+Variable_name Value
+large_files_support OFF
+show session variables like 'large_files_support';
+Variable_name Value
+large_files_support OFF
+select * from information_schema.global_variables where variable_name='large_files_support';
+VARIABLE_NAME VARIABLE_VALUE
+LARGE_FILES_SUPPORT OFF
+select * from information_schema.session_variables where variable_name='large_files_support';
+VARIABLE_NAME VARIABLE_VALUE
+LARGE_FILES_SUPPORT OFF
+set global large_files_support=1;
+ERROR HY000: Variable 'large_files_support' is a read only variable
+set session large_files_support=1;
+ERROR HY000: Variable 'large_files_support' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/large_page_size_basic.result b/mysql-test/suite/sys_vars/r/large_page_size_basic.result
new file mode 100644
index 00000000000..ac6b6acf6a0
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/large_page_size_basic.result
@@ -0,0 +1,21 @@
+select @@global.large_page_size = 1;
+@@global.large_page_size = 1
+0
+select @@session.large_page_size;
+ERROR HY000: Variable 'large_page_size' is a GLOBAL variable
+show global variables like 'large_page_size';
+Variable_name Value
+large_page_size #
+show session variables like 'large_page_size';
+Variable_name Value
+large_page_size #
+select * from information_schema.global_variables where variable_name='large_page_size';
+VARIABLE_NAME VARIABLE_VALUE
+LARGE_PAGE_SIZE #
+select * from information_schema.session_variables where variable_name='large_page_size';
+VARIABLE_NAME VARIABLE_VALUE
+LARGE_PAGE_SIZE #
+set global large_page_size=1;
+ERROR HY000: Variable 'large_page_size' is a read only variable
+set session large_page_size=1;
+ERROR HY000: Variable 'large_page_size' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/large_pages_basic.result b/mysql-test/suite/sys_vars/r/large_pages_basic.result
new file mode 100644
index 00000000000..257828a210b
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/large_pages_basic.result
@@ -0,0 +1,21 @@
+select @@global.large_pages;
+@@global.large_pages
+0
+select @@session.large_pages;
+ERROR HY000: Variable 'large_pages' is a GLOBAL variable
+show global variables like 'large_pages';
+Variable_name Value
+large_pages OFF
+show session variables like 'large_pages';
+Variable_name Value
+large_pages OFF
+select * from information_schema.global_variables where variable_name='large_pages';
+VARIABLE_NAME VARIABLE_VALUE
+LARGE_PAGES OFF
+select * from information_schema.session_variables where variable_name='large_pages';
+VARIABLE_NAME VARIABLE_VALUE
+LARGE_PAGES OFF
+set global large_pages=1;
+ERROR HY000: Variable 'large_pages' is a read only variable
+set session large_pages=1;
+ERROR HY000: Variable 'large_pages' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/last_insert_id_basic.result b/mysql-test/suite/sys_vars/r/last_insert_id_basic.result
new file mode 100644
index 00000000000..c29a313b9e7
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/last_insert_id_basic.result
@@ -0,0 +1,27 @@
+select @@global.last_insert_id;
+ERROR HY000: Variable 'last_insert_id' is a SESSION variable
+select @@session.last_insert_id;
+@@session.last_insert_id
+0
+show global variables like 'last_insert_id';
+Variable_name Value
+show session variables like 'last_insert_id';
+Variable_name Value
+last_insert_id 0
+select * from information_schema.global_variables where variable_name='last_insert_id';
+VARIABLE_NAME VARIABLE_VALUE
+select * from information_schema.session_variables where variable_name='last_insert_id';
+VARIABLE_NAME VARIABLE_VALUE
+LAST_INSERT_ID 0
+set session last_insert_id=1;
+select @@session.last_insert_id;
+@@session.last_insert_id
+1
+set global last_insert_id=1;
+ERROR HY000: Variable 'last_insert_id' is a SESSION variable and can't be used with SET GLOBAL
+set session last_insert_id=1.1;
+ERROR 42000: Incorrect argument type to variable 'last_insert_id'
+set session last_insert_id=1e1;
+ERROR 42000: Incorrect argument type to variable 'last_insert_id'
+set session last_insert_id="foo";
+ERROR 42000: Incorrect argument type to variable 'last_insert_id'
diff --git a/mysql-test/suite/sys_vars/r/lc_messages_basic.result b/mysql-test/suite/sys_vars/r/lc_messages_basic.result
new file mode 100644
index 00000000000..e765dd53516
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/lc_messages_basic.result
@@ -0,0 +1,46 @@
+SET @start_global_value = @@global.lc_messages;
+SELECT @start_global_value;
+@start_global_value
+en_US
+select @@global.lc_messages;
+@@global.lc_messages
+en_US
+select @@session.lc_messages;
+@@session.lc_messages
+en_US
+show global variables like 'lc_messages';
+Variable_name Value
+lc_messages en_US
+show session variables like 'lc_messages';
+Variable_name Value
+lc_messages en_US
+select * from information_schema.global_variables where variable_name='lc_messages';
+VARIABLE_NAME VARIABLE_VALUE
+LC_MESSAGES en_US
+select * from information_schema.session_variables where variable_name='lc_messages';
+VARIABLE_NAME VARIABLE_VALUE
+LC_MESSAGES en_US
+set global lc_messages=1;
+select @@global.lc_messages;
+@@global.lc_messages
+en_GB
+set session lc_messages=2;
+select @@session.lc_messages;
+@@session.lc_messages
+ja_JP
+set global lc_messages="en_US";
+select @@global.lc_messages;
+@@global.lc_messages
+en_US
+set session lc_messages="en_GB";
+select @@session.lc_messages;
+@@session.lc_messages
+en_GB
+set global lc_messages=1.1;
+ERROR 42000: Incorrect argument type to variable 'lc_messages'
+set global lc_messages=1e1;
+ERROR 42000: Incorrect argument type to variable 'lc_messages'
+SET @@global.lc_messages = @start_global_value;
+SELECT @@global.lc_messages;
+@@global.lc_messages
+en_US
diff --git a/mysql-test/suite/sys_vars/r/lc_messages_dir_basic.result b/mysql-test/suite/sys_vars/r/lc_messages_dir_basic.result
new file mode 100644
index 00000000000..c197d94d4fc
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/lc_messages_dir_basic.result
@@ -0,0 +1,21 @@
+select @@global.lc_messages_dir;
+@@global.lc_messages_dir
+MYSQL_SHAREDIR/
+select @@session.lc_messages_dir;
+ERROR HY000: Variable 'lc_messages_dir' is a GLOBAL variable
+show global variables like 'lc_messages_dir';
+Variable_name Value
+lc_messages_dir MYSQL_SHAREDIR/
+show session variables like 'lc_messages_dir';
+Variable_name Value
+lc_messages_dir MYSQL_SHAREDIR/
+select * from information_schema.global_variables where variable_name='lc_messages_dir';
+VARIABLE_NAME VARIABLE_VALUE
+LC_MESSAGES_DIR MYSQL_SHAREDIR/
+select * from information_schema.session_variables where variable_name='lc_messages_dir';
+VARIABLE_NAME VARIABLE_VALUE
+LC_MESSAGES_DIR MYSQL_SHAREDIR/
+set global lc_messages_dir=1;
+ERROR HY000: Variable 'lc_messages_dir' is a read only variable
+set session lc_messages_dir=1;
+ERROR HY000: Variable 'lc_messages_dir' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/lc_time_names_basic.result b/mysql-test/suite/sys_vars/r/lc_time_names_basic.result
index 36f3c45f0da..39e93a6f76c 100644
--- a/mysql-test/suite/sys_vars/r/lc_time_names_basic.result
+++ b/mysql-test/suite/sys_vars/r/lc_time_names_basic.result
@@ -459,13 +459,19 @@ SELECT @@session.lc_time_names;
@@session.lc_time_names
sq_AL
SET @@session.lc_time_names=sr_YU;
+Warnings:
+Warning 1287 'sr_YU' is deprecated; use 'sr_RS' instead
SELECT @@session.lc_time_names;
@@session.lc_time_names
-sr_YU
+sr_RS
SET @@session.lc_time_names=sv_FI;
SELECT @@session.lc_time_names;
@@session.lc_time_names
sv_FI
+SET @@session.lc_time_names=sr_RS;
+SELECT @@session.lc_time_names;
+@@session.lc_time_names
+sr_RS
SET @@session.lc_time_names=sv_SE;
SELECT @@session.lc_time_names;
@@session.lc_time_names
@@ -900,13 +906,19 @@ SELECT @@global.lc_time_names;
@@global.lc_time_names
sq_AL
SET @@global.lc_time_names=sr_YU;
+Warnings:
+Warning 1287 'sr_YU' is deprecated; use 'sr_RS' instead
SELECT @@global.lc_time_names;
@@global.lc_time_names
-sr_YU
+sr_RS
SET @@global.lc_time_names=sv_FI;
SELECT @@global.lc_time_names;
@@global.lc_time_names
sv_FI
+SET @@global.lc_time_names=sr_RS;
+SELECT @@global.lc_time_names;
+@@global.lc_time_names
+sr_RS
SET @@global.lc_time_names=sv_SE;
SELECT @@global.lc_time_names;
@@global.lc_time_names
@@ -1006,7 +1018,11 @@ SELECT @@lc_time_names;
@@lc_time_names
zh_HK
SET @@lc_time_names = 109;
-ERROR HY000: Unknown locale: '109'
+SELECT @@lc_time_names;
+@@lc_time_names
+el_GR
+SET @@lc_time_names = 110;
+ERROR HY000: Unknown locale: '110'
'#--------------------FN_DYNVARS_060_10-------------------------#'
SET @@lc_time_names = en_EN;
ERROR HY000: Unknown locale: 'en_EN'
diff --git a/mysql-test/suite/sys_vars/r/local_infile_basic.result b/mysql-test/suite/sys_vars/r/local_infile_basic.result
index 5f4c215719a..7afb367fde9 100644
--- a/mysql-test/suite/sys_vars/r/local_infile_basic.result
+++ b/mysql-test/suite/sys_vars/r/local_infile_basic.result
@@ -53,11 +53,11 @@ ERROR HY000: Variable 'local_infile' is a GLOBAL variable and should be set with
SELECT @@session.local_infile = 1;
ERROR HY000: Variable 'local_infile' is a GLOBAL variable
'#----------------------FN_DYNVARS_018_06------------------------#'
-SELECT @@global.local_infile = VARIABLE_VALUE
+SELECT IF(@@global.local_infile, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='local_infile';
-@@global.local_infile = VARIABLE_VALUE
-0
+IF(@@global.local_infile, "ON", "OFF") = VARIABLE_VALUE
+1
'#---------------------FN_DYNVARS_018_07----------------------#'
SET @@global.local_infile = OFF;
SELECT @@global.local_infile;
diff --git a/mysql-test/suite/sys_vars/r/locked_in_memory_basic.result b/mysql-test/suite/sys_vars/r/locked_in_memory_basic.result
new file mode 100644
index 00000000000..38253790693
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/locked_in_memory_basic.result
@@ -0,0 +1,21 @@
+select @@global.locked_in_memory;
+@@global.locked_in_memory
+0
+select @@session.locked_in_memory;
+ERROR HY000: Variable 'locked_in_memory' is a GLOBAL variable
+show global variables like 'locked_in_memory';
+Variable_name Value
+locked_in_memory OFF
+show session variables like 'locked_in_memory';
+Variable_name Value
+locked_in_memory OFF
+select * from information_schema.global_variables where variable_name='locked_in_memory';
+VARIABLE_NAME VARIABLE_VALUE
+LOCKED_IN_MEMORY OFF
+select * from information_schema.session_variables where variable_name='locked_in_memory';
+VARIABLE_NAME VARIABLE_VALUE
+LOCKED_IN_MEMORY OFF
+set global locked_in_memory=1;
+ERROR HY000: Variable 'locked_in_memory' is a read only variable
+set session locked_in_memory=1;
+ERROR HY000: Variable 'locked_in_memory' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/log_basic.result b/mysql-test/suite/sys_vars/r/log_basic.result
index 18a12b72437..5574d49514d 100644
--- a/mysql-test/suite/sys_vars/r/log_basic.result
+++ b/mysql-test/suite/sys_vars/r/log_basic.result
@@ -6,10 +6,12 @@ INIT_VALUE
SELECT @@log AS INIT_VALUE;
INIT_VALUE
1
-SET @@global.general_log = ON;
-SET global general_log = 0;
-'Bug# 34832: log is a system but it is not accessible using SET @@global.log;'
-'SET GLOBAL log; and SELECT @@global.log. SHOW VARIABLES shows the value of log.'
+SET @@global.log = ON;
+Warnings:
+Warning 1287 The syntax '@@log' is deprecated and will be removed in MySQL 7.0. Please use '@@general_log' instead
+SET global log = 0;
+Warnings:
+Warning 1287 The syntax '@@log' is deprecated and will be removed in MySQL 7.0. Please use '@@general_log' instead
'#--------------------FN_DYNVARS_062_02-------------------------#'
SELECT VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
diff --git a/mysql-test/suite/sys_vars/r/log_bin_basic.result b/mysql-test/suite/sys_vars/r/log_bin_basic.result
new file mode 100644
index 00000000000..e14888300b3
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/log_bin_basic.result
@@ -0,0 +1,21 @@
+select @@global.log_bin;
+@@global.log_bin
+0
+select @@session.log_bin;
+ERROR HY000: Variable 'log_bin' is a GLOBAL variable
+show global variables like 'log_bin';
+Variable_name Value
+log_bin OFF
+show session variables like 'log_bin';
+Variable_name Value
+log_bin OFF
+select * from information_schema.global_variables where variable_name='log_bin';
+VARIABLE_NAME VARIABLE_VALUE
+LOG_BIN OFF
+select * from information_schema.session_variables where variable_name='log_bin';
+VARIABLE_NAME VARIABLE_VALUE
+LOG_BIN OFF
+set global log_bin=1;
+ERROR HY000: Variable 'log_bin' is a read only variable
+set session log_bin=1;
+ERROR HY000: Variable 'log_bin' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/log_bin_trust_function_creators_basic.result b/mysql-test/suite/sys_vars/r/log_bin_trust_function_creators_basic.result
index 40dc0e217c4..7ed1b689f5a 100644
--- a/mysql-test/suite/sys_vars/r/log_bin_trust_function_creators_basic.result
+++ b/mysql-test/suite/sys_vars/r/log_bin_trust_function_creators_basic.result
@@ -2,10 +2,6 @@ SET @start_global_value = @@global.log_bin_trust_function_creators;
SELECT @start_global_value;
@start_global_value
1
-'Bug# 34876: TRUE value is coming as Default'
-SET @start_session_value = @@session.log_bin_trust_function_creators;
-ERROR HY000: Variable 'log_bin_trust_function_creators' is a GLOBAL variable
-'Bug# 34881: According to documentation the scope of this variable is GLOBAL as well as SESSION too';
'#--------------------FN_DYNVARS_063_01-------------------------#'
SET @@global.log_bin_trust_function_creators = TRUE;
SET @@global.log_bin_trust_function_creators = DEFAULT;
@@ -55,7 +51,7 @@ ERROR 42000: Variable 'log_bin_trust_function_creators' can't be set to the valu
SET @@global.log_bin_trust_function_creators = "OFFF";
ERROR 42000: Variable 'log_bin_trust_function_creators' can't be set to the value of 'OFFF'
SET @@global.log_bin_trust_function_creators = OF;
-'Bug# 34828: OF is also working as OFF and no error is coming';
+ERROR 42000: Variable 'log_bin_trust_function_creators' can't be set to the value of 'OF'
SET @@global.log_bin_trust_function_creators = TTRUE;
ERROR 42000: Variable 'log_bin_trust_function_creators' can't be set to the value of 'TTRUE'
SET @@global.log_bin_trust_function_creators = FELSE;
@@ -65,16 +61,16 @@ ERROR 42000: Variable 'log_bin_trust_function_creators' can't be set to the valu
SET @@global.log_bin_trust_function_creators = 65536;
ERROR 42000: Variable 'log_bin_trust_function_creators' can't be set to the value of '65536'
SET @@global.log_bin_trust_function_creators = 65530.34;
-ERROR 42000: Variable 'log_bin_trust_function_creators' can't be set to the value of '65530'
+ERROR 42000: Incorrect argument type to variable 'log_bin_trust_function_creators'
SET @@global.log_bin_trust_function_creators = test;
ERROR 42000: Variable 'log_bin_trust_function_creators' can't be set to the value of 'test'
'#------------------FN_DYNVARS_063_06-----------------------#'
-SELECT @@global.log_bin_trust_function_creators = VARIABLE_VALUE
+SELECT IF(@@global.log_bin_trust_function_creators, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='log_bin_trust_function_creators';
-@@global.log_bin_trust_function_creators = VARIABLE_VALUE
+IF(@@global.log_bin_trust_function_creators, "ON", "OFF") = VARIABLE_VALUE
1
-SELECT @@session.log_bin_trust_function_creators = VARIABLE_VALUE
+SELECT IF(@@session.log_bin_trust_function_creators, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='log_bin_trust_function_creators';
ERROR HY000: Variable 'log_bin_trust_function_creators' is a GLOBAL variable
diff --git a/mysql-test/suite/sys_vars/r/log_bin_trust_routine_creators_basic.result b/mysql-test/suite/sys_vars/r/log_bin_trust_routine_creators_basic.result
deleted file mode 100644
index 66e253645b1..00000000000
--- a/mysql-test/suite/sys_vars/r/log_bin_trust_routine_creators_basic.result
+++ /dev/null
@@ -1,121 +0,0 @@
-SET @start_global_value = @@global.log_bin_trust_routine_creators;
-SELECT @start_global_value;
-@start_global_value
-1
-'#--------------------FN_DYNVARS_064_01-------------------------#'
-SET @@global.log_bin_trust_routine_creators = TRUE;
-Warnings:
-Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 6.0. Please use '@@log_bin_trust_function_creators' instead
-SET @@global.log_bin_trust_routine_creators = DEFAULT;
-Warnings:
-Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 6.0. Please use '@@log_bin_trust_function_creators' instead
-SELECT @@global.log_bin_trust_routine_creators;
-@@global.log_bin_trust_routine_creators
-0
-'#--------------------FN_DYNVARS_064_02-------------------------#'
-SET @@global.log_bin_trust_routine_creators = DEFAULT;
-Warnings:
-Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 6.0. Please use '@@log_bin_trust_function_creators' instead
-SELECT @@global.log_bin_trust_routine_creators = 'FALSE';
-@@global.log_bin_trust_routine_creators = 'FALSE'
-1
-Warnings:
-Warning 1292 Truncated incorrect DOUBLE value: 'FALSE'
-'#--------------------FN_DYNVARS_064_03-------------------------#'
-SET @@global.log_bin_trust_routine_creators = ON;
-Warnings:
-Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 6.0. Please use '@@log_bin_trust_function_creators' instead
-SELECT @@global.log_bin_trust_routine_creators;
-@@global.log_bin_trust_routine_creators
-1
-SET @@global.log_bin_trust_routine_creators = OFF;
-Warnings:
-Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 6.0. Please use '@@log_bin_trust_function_creators' instead
-SELECT @@global.log_bin_trust_routine_creators;
-@@global.log_bin_trust_routine_creators
-0
-SET @@global.log_bin_trust_routine_creators = 0;
-Warnings:
-Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 6.0. Please use '@@log_bin_trust_function_creators' instead
-SELECT @@global.log_bin_trust_routine_creators;
-@@global.log_bin_trust_routine_creators
-0
-SET @@global.log_bin_trust_routine_creators = 1;
-Warnings:
-Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 6.0. Please use '@@log_bin_trust_function_creators' instead
-SELECT @@global.log_bin_trust_routine_creators;
-@@global.log_bin_trust_routine_creators
-1
-SET @@global.log_bin_trust_routine_creators = TRUE;
-Warnings:
-Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 6.0. Please use '@@log_bin_trust_function_creators' instead
-SELECT @@global.log_bin_trust_routine_creators;
-@@global.log_bin_trust_routine_creators
-1
-SET @@global.log_bin_trust_routine_creators = FALSE;
-Warnings:
-Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 6.0. Please use '@@log_bin_trust_function_creators' instead
-SELECT @@global.log_bin_trust_routine_creators;
-@@global.log_bin_trust_routine_creators
-0
-'#-------------------FN_DYNVARS_064_04----------------------------#'
-SET @@session.log_bin_trust_routine_creators = 0;
-ERROR HY000: Variable 'log_bin_trust_routine_creators' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT @@session.log_bin_trust_routine_creators;
-ERROR HY000: Variable 'log_bin_trust_routine_creators' is a GLOBAL variable
-'#------------------FN_DYNVARS_064_05-----------------------#'
-SET @@global.log_bin_trust_routine_creators = 'ONN';
-ERROR 42000: Variable 'log_bin_trust_routine_creators' can't be set to the value of 'ONN'
-SET @@global.log_bin_trust_routine_creators = "OFFF";
-ERROR 42000: Variable 'log_bin_trust_routine_creators' can't be set to the value of 'OFFF'
-SET @@global.log_bin_trust_routine_creators = OF;
-Warnings:
-Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 6.0. Please use '@@log_bin_trust_function_creators' instead
-SELECT @@global.log_bin_trust_routine_creators;
-@@global.log_bin_trust_routine_creators
-0
-'Bug# 34828: OF is also working as OFF and no error is coming';
-SET @@global.log_bin_trust_routine_creators = TTRUE;
-ERROR 42000: Variable 'log_bin_trust_routine_creators' can't be set to the value of 'TTRUE'
-SET @@global.log_bin_trust_routine_creators = FELSE;
-ERROR 42000: Variable 'log_bin_trust_routine_creators' can't be set to the value of 'FELSE'
-SET @@global.log_bin_trust_routine_creators = -1024;
-ERROR 42000: Variable 'log_bin_trust_routine_creators' can't be set to the value of '-1024'
-SET @@global.log_bin_trust_routine_creators = 65536;
-ERROR 42000: Variable 'log_bin_trust_routine_creators' can't be set to the value of '65536'
-SET @@global.log_bin_trust_routine_creators = 65530.34;
-ERROR 42000: Variable 'log_bin_trust_routine_creators' can't be set to the value of '65530'
-SET @@global.log_bin_trust_routine_creators = test;
-ERROR 42000: Variable 'log_bin_trust_routine_creators' can't be set to the value of 'test'
-'#------------------FN_DYNVARS_064_06-----------------------#'
-SELECT @@global.log_bin_trust_routine_creators = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='log_bin_trust_routine_creators';
-@@global.log_bin_trust_routine_creators = VARIABLE_VALUE
-1
-SELECT @@session.log_bin_trust_routine_creators = VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='log_bin_trust_routine_creators';
-ERROR HY000: Variable 'log_bin_trust_routine_creators' is a GLOBAL variable
-'#---------------------FN_DYNVARS_064_07----------------------#'
-SET @@global.log_bin_trust_routine_creators = TRUE;
-Warnings:
-Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 6.0. Please use '@@log_bin_trust_function_creators' instead
-SELECT @@log_bin_trust_routine_creators = @@global.log_bin_trust_routine_creators;
-@@log_bin_trust_routine_creators = @@global.log_bin_trust_routine_creators
-1
-'#---------------------FN_DYNVARS_064_08----------------------#'
-SET @@global.log_bin_trust_routine_creators = TRUE;
-Warnings:
-Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 6.0. Please use '@@log_bin_trust_function_creators' instead
-SELECT @@log_bin_trust_routine_creators;
-@@log_bin_trust_routine_creators
-1
-SELECT local.log_bin_trust_routine_creators;
-ERROR 42S02: Unknown table 'local' in field list
-SELECT session.log_bin_trust_routine_creators;
-ERROR 42S02: Unknown table 'session' in field list
-SELECT log_bin_trust_routine_creators = @@session.log_bin_trust_routine_creators;
-ERROR 42S22: Unknown column 'log_bin_trust_routine_creators' in 'field list'
-SET @@global.log_bin_trust_routine_creators = @start_global_value;
-Warnings:
-Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 6.0. Please use '@@log_bin_trust_function_creators' instead
-SELECT @@global.log_bin_trust_routine_creators;
-@@global.log_bin_trust_routine_creators
-1
diff --git a/mysql-test/suite/sys_vars/r/log_error_basic.result b/mysql-test/suite/sys_vars/r/log_error_basic.result
new file mode 100644
index 00000000000..c18d43762bf
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/log_error_basic.result
@@ -0,0 +1,21 @@
+select @@global.log_error;
+@@global.log_error
+
+select @@session.log_error;
+ERROR HY000: Variable 'log_error' is a GLOBAL variable
+show global variables like 'log_error';
+Variable_name Value
+log_error
+show session variables like 'log_error';
+Variable_name Value
+log_error
+select * from information_schema.global_variables where variable_name='log_error';
+VARIABLE_NAME VARIABLE_VALUE
+LOG_ERROR
+select * from information_schema.session_variables where variable_name='log_error';
+VARIABLE_NAME VARIABLE_VALUE
+LOG_ERROR
+set global log_error=1;
+ERROR HY000: Variable 'log_error' is a read only variable
+set session log_error=1;
+ERROR HY000: Variable 'log_error' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/log_output_basic.result b/mysql-test/suite/sys_vars/r/log_output_basic.result
index 481d5862074..ab9e5837e63 100644
--- a/mysql-test/suite/sys_vars/r/log_output_basic.result
+++ b/mysql-test/suite/sys_vars/r/log_output_basic.result
@@ -1,26 +1,18 @@
SET @start_value = @@global.log_output;
SELECT @start_value;
@start_value
-FILE,TABLE
+FILE
'#--------------------FN_DYNVARS_065_01------------------------#'
SET @@global.log_output = FILE;
SET @@global.log_output = DEFAULT;
SELECT @@global.log_output;
@@global.log_output
FILE
-'Bug# 34876: Documentation specifies a DEFAULT value of TABLE whereas';
-'DEFAULT value is FILE. Also note that initial value is different';
-'from DEFAULT';
'#---------------------FN_DYNVARS_065_02-------------------------#'
SET @@global.log_output = NULL;
ERROR 42000: Variable 'log_output' can't be set to the value of 'NULL'
SET @@global.log_output = "";
ERROR 42000: Variable 'log_output' can't be set to the value of ''
-SELECT @@global.log_output;
-@@global.log_output
-FILE
-'Bug# 34838: Empty value is allowed where as it is not specified in';
-'documentation';
'#--------------------FN_DYNVARS_065_03------------------------#'
SET @@global.log_output = 'TABLE';
SELECT @@global.log_output;
@@ -66,10 +58,6 @@ SET @@global.log_output = ',TABLE';
SELECT @@global.log_output;
@@global.log_output
TABLE
-SET @@global.log_output = ',';
-SELECT @@global.log_output;
-@@global.log_output
-
SET @@global.log_output = 'TABLE,,FILE,,,';
SELECT @@global.log_output;
@@global.log_output
@@ -89,22 +77,6 @@ SET @@global.log_output = 'TABLE, FILE';
ERROR 42000: Variable 'log_output' can't be set to the value of ' FILE'
SET @@global.log_output = ' TABLE,FILE';
ERROR 42000: Variable 'log_output' can't be set to the value of ' TABLE'
-SET @@global.log_output = ', ';
-SELECT @@global.log_output;
-@@global.log_output
-
-SET @@global.log_output = ' ';
-SELECT @@global.log_output;
-@@global.log_output
-
-SET @@global.log_output = ' ';
-SELECT @@global.log_output;
-@@global.log_output
-
-'Bug: The behavior of space in value is not consistent.';
-'Some times it is trimmed and some times not.';
-'The space before and after value is not accepted where as space';
-'between comma is accepted.';
'#-------------------FN_DYNVARS_065_05----------------------------#'
SET @@log_output = 0;
ERROR HY000: Variable 'log_output' is a GLOBAL variable and should be set with SET GLOBAL
@@ -121,7 +93,7 @@ SET @@global.log_output = 0;
ERROR 42000: Variable 'log_output' can't be set to the value of '0'
SELECT @@global.log_output;
@@global.log_output
-
+FILE,TABLE
SET @@global.log_output = 1;
SELECT @@global.log_output;
@@global.log_output
@@ -172,4 +144,4 @@ TABLE
SET @@global.log_output = @start_value;
SELECT @@global.log_output;
@@global.log_output
-FILE,TABLE
+FILE
diff --git a/mysql-test/suite/sys_vars/r/log_queries_not_using_indexes_basic.result b/mysql-test/suite/sys_vars/r/log_queries_not_using_indexes_basic.result
index b19b11a4209..f577122bacf 100644
--- a/mysql-test/suite/sys_vars/r/log_queries_not_using_indexes_basic.result
+++ b/mysql-test/suite/sys_vars/r/log_queries_not_using_indexes_basic.result
@@ -41,37 +41,11 @@ SELECT @@global.log_queries_not_using_indexes;
@@global.log_queries_not_using_indexes
0
SET GLOBAL log_queries_not_using_indexes= 0.00;
-SELECT @@global.log_queries_not_using_indexes;
-@@global.log_queries_not_using_indexes
-0
-SET GLOBAL log_queries_not_using_indexes= -0.0;
-SELECT @@global.log_queries_not_using_indexes;
-@@global.log_queries_not_using_indexes
-0
-SET GLOBAL log_queries_not_using_indexes= 001.00;
-SELECT @@global.log_queries_not_using_indexes;
-@@global.log_queries_not_using_indexes
-1
-SET GLOBAL log_queries_not_using_indexes= +1.0;
-SELECT @@global.log_queries_not_using_indexes;
-@@global.log_queries_not_using_indexes
-1
+ERROR 42000: Incorrect argument type to variable 'log_queries_not_using_indexes'
SET GLOBAL log_queries_not_using_indexes= +0;
SELECT @@global.log_queries_not_using_indexes;
@@global.log_queries_not_using_indexes
0
-SET GLOBAL log_queries_not_using_indexes= +0.000000;
-SELECT @@global.log_queries_not_using_indexes;
-@@global.log_queries_not_using_indexes
-0
-SET GLOBAL log_queries_not_using_indexes= 0000.00000;
-SELECT @@global.log_queries_not_using_indexes;
-@@global.log_queries_not_using_indexes
-0
-SET GLOBAL log_queries_not_using_indexes= .0;
-SELECT @@global.log_queries_not_using_indexes;
-@@global.log_queries_not_using_indexes
-0
SET @@global.log_queries_not_using_indexes= 'DEFAULT';
ERROR 42000: Variable 'log_queries_not_using_indexes' can't be set to the value of 'DEFAULT'
SET @@global.log_queries_not_using_indexes= 'true';
@@ -80,8 +54,6 @@ SET @@global.log_queries_not_using_indexes= BLABLA;
ERROR 42000: Variable 'log_queries_not_using_indexes' can't be set to the value of 'BLABLA'
SET @@global.log_queries_not_using_indexes= 25;
ERROR 42000: Variable 'log_queries_not_using_indexes' can't be set to the value of '25'
-SET @@global.log_queries_not_using_indexes= 12.34;
-ERROR 42000: Variable 'log_queries_not_using_indexes' can't be set to the value of '12'
SET GLOBAL log_queries_not_using_indexes= -1;
ERROR 42000: Variable 'log_queries_not_using_indexes' can't be set to the value of '-1'
SET @badvar= 'true';
diff --git a/mysql-test/suite/sys_vars/r/log_slave_updates_basic.result b/mysql-test/suite/sys_vars/r/log_slave_updates_basic.result
new file mode 100644
index 00000000000..85ee30ca999
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/log_slave_updates_basic.result
@@ -0,0 +1,21 @@
+select @@global.log_slave_updates;
+@@global.log_slave_updates
+0
+select @@session.log_slave_updates;
+ERROR HY000: Variable 'log_slave_updates' is a GLOBAL variable
+show global variables like 'log_slave_updates';
+Variable_name Value
+log_slave_updates OFF
+show session variables like 'log_slave_updates';
+Variable_name Value
+log_slave_updates OFF
+select * from information_schema.global_variables where variable_name='log_slave_updates';
+VARIABLE_NAME VARIABLE_VALUE
+LOG_SLAVE_UPDATES OFF
+select * from information_schema.session_variables where variable_name='log_slave_updates';
+VARIABLE_NAME VARIABLE_VALUE
+LOG_SLAVE_UPDATES OFF
+set global log_slave_updates=1;
+ERROR HY000: Variable 'log_slave_updates' is a read only variable
+set session log_slave_updates=1;
+ERROR HY000: Variable 'log_slave_updates' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/log_slow_queries_basic.result b/mysql-test/suite/sys_vars/r/log_slow_queries_basic.result
new file mode 100644
index 00000000000..ca530ebb41a
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/log_slow_queries_basic.result
@@ -0,0 +1,112 @@
+SET @start_value = @@global.log_slow_queries;
+SELECT @start_value;
+@start_value
+1
+'#---------------------FN_DYNVARS_004_01-------------------------#'
+SET @@global.log_slow_queries = DEFAULT;
+Warnings:
+Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
+SELECT @@global.log_slow_queries = 0;
+@@global.log_slow_queries = 0
+1
+'#--------------------FN_DYNVARS_004_02------------------------#'
+SET @@global.log_slow_queries = ON;
+Warnings:
+Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
+SELECT @@global.log_slow_queries;
+@@global.log_slow_queries
+1
+SET @@global.log_slow_queries = OFF;
+Warnings:
+Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
+SELECT @@global.log_slow_queries;
+@@global.log_slow_queries
+0
+'#--------------------FN_DYNVARS_004_03-------------------------#'
+SET @@global.log_slow_queries = 2;
+ERROR 42000: Variable 'log_slow_queries' can't be set to the value of '2'
+SET @@global.log_slow_queries = -1;
+ERROR 42000: Variable 'log_slow_queries' can't be set to the value of '-1'
+SET @@global.log_slow_queries = TRUEF;
+ERROR 42000: Variable 'log_slow_queries' can't be set to the value of 'TRUEF'
+SET @@global.log_slow_queries = TRUE_F;
+ERROR 42000: Variable 'log_slow_queries' can't be set to the value of 'TRUE_F'
+SET @@global.log_slow_queries = FALSE0;
+ERROR 42000: Variable 'log_slow_queries' can't be set to the value of 'FALSE0'
+SET @@global.log_slow_queries = OON;
+ERROR 42000: Variable 'log_slow_queries' can't be set to the value of 'OON'
+SET @@global.log_slow_queries = ONN;
+ERROR 42000: Variable 'log_slow_queries' can't be set to the value of 'ONN'
+SET @@global.log_slow_queries = OOFF;
+ERROR 42000: Variable 'log_slow_queries' can't be set to the value of 'OOFF'
+SET @@global.log_slow_queries = 0FF;
+ERROR 42000: Variable 'log_slow_queries' can't be set to the value of '0FF'
+SET @@global.log_slow_queries = ' ';
+ERROR 42000: Variable 'log_slow_queries' can't be set to the value of ' '
+SET @@global.log_slow_queries = " ";
+ERROR 42000: Variable 'log_slow_queries' can't be set to the value of ' '
+SET @@global.log_slow_queries = '';
+ERROR 42000: Variable 'log_slow_queries' can't be set to the value of ''
+'#-------------------FN_DYNVARS_004_04----------------------------#'
+SET @@session.log_slow_queries = OFF;
+ERROR HY000: Variable 'log_slow_queries' is a GLOBAL variable and should be set with SET GLOBAL
+SELECT @@session.log_slow_queries;
+ERROR HY000: Variable 'log_slow_queries' is a GLOBAL variable
+'#----------------------FN_DYNVARS_004_05------------------------#'
+SELECT IF(@@global.log_slow_queries, "ON", "OFF") = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='log_slow_queries';
+IF(@@global.log_slow_queries, "ON", "OFF") = VARIABLE_VALUE
+1
+'#---------------------FN_DYNVARS_004_06----------------------#'
+SET @@global.log_slow_queries = 0;
+Warnings:
+Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
+SELECT @@global.log_slow_queries;
+@@global.log_slow_queries
+0
+SET @@global.log_slow_queries = 1;
+Warnings:
+Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
+SELECT @@global.log_slow_queries;
+@@global.log_slow_queries
+1
+'#---------------------FN_DYNVARS_004_07----------------------#'
+SET @@global.log_slow_queries = TRUE;
+Warnings:
+Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
+SELECT @@global.log_slow_queries;
+@@global.log_slow_queries
+1
+SET @@global.log_slow_queries = FALSE;
+Warnings:
+Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
+SELECT @@global.log_slow_queries;
+@@global.log_slow_queries
+0
+'#---------------------FN_DYNVARS_004_08----------------------#'
+SET @@global.log_slow_queries = ON;
+Warnings:
+Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
+SELECT @@log_slow_queries = @@global.log_slow_queries;
+@@log_slow_queries = @@global.log_slow_queries
+1
+'#---------------------FN_DYNVARS_004_09----------------------#'
+SET log_slow_queries = ON;
+ERROR HY000: Variable 'log_slow_queries' is a GLOBAL variable and should be set with SET GLOBAL
+SET local.log_slow_queries = OFF;
+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 'log_slow_queries = OFF' at line 1
+SELECT local.log_slow_queries;
+ERROR 42S02: Unknown table 'local' in field list
+SET global.log_slow_queries = ON;
+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 'log_slow_queries = ON' at line 1
+SELECT global.log_slow_queries;
+ERROR 42S02: Unknown table 'global' in field list
+SELECT log_slow_queries = @@session.log_slow_queries;
+ERROR 42S22: Unknown column 'log_slow_queries' in 'field list'
+SET @@global.log_slow_queries = @start_value;
+Warnings:
+Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
+SELECT @@global.log_slow_queries;
+@@global.log_slow_queries
+1
diff --git a/mysql-test/suite/sys_vars/r/log_warnings_basic_32.result b/mysql-test/suite/sys_vars/r/log_warnings_basic_32.result
index 92b0f4e5e91..fee7f8966ca 100644
--- a/mysql-test/suite/sys_vars/r/log_warnings_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/log_warnings_basic_32.result
@@ -81,8 +81,8 @@ Warning 1292 Truncated incorrect log_warnings value: '-1024'
SELECT @@global.log_warnings;
@@global.log_warnings
0
-SET @@global.log_warnings = 65530.34.;
-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 '.' at line 1
+SET @@global.log_warnings = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'log_warnings'
SELECT @@global.log_warnings;
@@global.log_warnings
0
@@ -103,9 +103,8 @@ Warning 1292 Truncated incorrect log_warnings value: '-2'
SELECT @@session.log_warnings;
@@session.log_warnings
0
-SET @@session.log_warnings = 65530.34.;
-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 '.' at line 1
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
+SET @@session.log_warnings = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'log_warnings'
SET @@session.log_warnings = test;
ERROR 42000: Incorrect argument type to variable 'log_warnings'
SELECT @@session.log_warnings;
diff --git a/mysql-test/suite/sys_vars/r/log_warnings_basic_64.result b/mysql-test/suite/sys_vars/r/log_warnings_basic_64.result
index 6a94881dad0..838fdff269b 100644
--- a/mysql-test/suite/sys_vars/r/log_warnings_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/log_warnings_basic_64.result
@@ -79,8 +79,8 @@ Warning 1292 Truncated incorrect log_warnings value: '-1024'
SELECT @@global.log_warnings;
@@global.log_warnings
0
-SET @@global.log_warnings = 65530.34.;
-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 '.' at line 1
+SET @@global.log_warnings = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'log_warnings'
SELECT @@global.log_warnings;
@@global.log_warnings
0
@@ -99,9 +99,8 @@ Warning 1292 Truncated incorrect log_warnings value: '-2'
SELECT @@session.log_warnings;
@@session.log_warnings
0
-SET @@session.log_warnings = 65530.34.;
-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 '.' at line 1
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
+SET @@session.log_warnings = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'log_warnings'
SET @@session.log_warnings = test;
ERROR 42000: Incorrect argument type to variable 'log_warnings'
SELECT @@session.log_warnings;
diff --git a/mysql-test/suite/sys_vars/r/long_query_time_basic.result b/mysql-test/suite/sys_vars/r/long_query_time_basic.result
index b44500dc1e2..2fb9ff143ac 100644
--- a/mysql-test/suite/sys_vars/r/long_query_time_basic.result
+++ b/mysql-test/suite/sys_vars/r/long_query_time_basic.result
@@ -70,39 +70,47 @@ SELECT @@session.long_query_time;
65550.000000
'#------------------FN_DYNVARS_068_05-----------------------#'
SET @@global.long_query_time = 100000000000;
+Warnings:
+Warning 1292 Truncated incorrect long_query_time value: '100000000000'
SELECT @@global.long_query_time;
@@global.long_query_time
31536000.000000
SET @@global.long_query_time = -1;
+Warnings:
+Warning 1292 Truncated incorrect long_query_time value: '-1'
SELECT @@global.long_query_time;
@@global.long_query_time
0.000000
-SET @@global.long_query_time = 65530.34.;
-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 '.' at line 1
+SET @@global.long_query_time = 65530.34;
SELECT @@global.long_query_time;
@@global.long_query_time
-0.000000
+65530.340000
SET @@global.long_query_time = test;
ERROR 42000: Incorrect argument type to variable 'long_query_time'
SELECT @@global.long_query_time;
@@global.long_query_time
-0.000000
+65530.340000
SET @@session.long_query_time = 100000000000;
+Warnings:
+Warning 1292 Truncated incorrect long_query_time value: '100000000000'
SELECT @@session.long_query_time;
@@session.long_query_time
31536000.000000
SET @@session.long_query_time = -2;
+Warnings:
+Warning 1292 Truncated incorrect long_query_time value: '-2'
SELECT @@session.long_query_time;
@@session.long_query_time
0.000000
-SET @@session.long_query_time = 65530.34.;
-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 '.' at line 1
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
+SET @@session.long_query_time = 65530.34;
+SELECT @@session.long_query_time;
+@@session.long_query_time
+65530.340000
SET @@session.long_query_time = test;
ERROR 42000: Incorrect argument type to variable 'long_query_time'
SELECT @@session.long_query_time;
@@session.long_query_time
-0.000000
+65530.340000
'#------------------FN_DYNVARS_068_06-----------------------#'
SELECT @@global.long_query_time = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
diff --git a/mysql-test/suite/sys_vars/r/low_priority_updates_basic.result b/mysql-test/suite/sys_vars/r/low_priority_updates_basic.result
index 87b30814837..633dc274dec 100644
--- a/mysql-test/suite/sys_vars/r/low_priority_updates_basic.result
+++ b/mysql-test/suite/sys_vars/r/low_priority_updates_basic.result
@@ -94,7 +94,7 @@ ERROR 42000: Variable 'low_priority_updates' can't be set to the value of '-1024
SET @@global.low_priority_updates = 65536;
ERROR 42000: Variable 'low_priority_updates' can't be set to the value of '65536'
SET @@global.low_priority_updates = 65530.34;
-ERROR 42000: Variable 'low_priority_updates' can't be set to the value of '65530'
+ERROR 42000: Incorrect argument type to variable 'low_priority_updates'
SET @@global.low_priority_updates = test;
ERROR 42000: Variable 'low_priority_updates' can't be set to the value of 'test'
SET @@session.low_priority_updates = ONN;
@@ -102,32 +102,28 @@ ERROR 42000: Variable 'low_priority_updates' can't be set to the value of 'ONN'
SET @@session.low_priority_updates = ONF;
ERROR 42000: Variable 'low_priority_updates' can't be set to the value of 'ONF'
SET @@session.low_priority_updates = OF;
-SELECT @@session.low_priority_updates;
-@@session.low_priority_updates
-0
-'Bug# 34828: OF is also working as OFF and no error is coming';
+ERROR 42000: Variable 'low_priority_updates' can't be set to the value of 'OF'
SET @@session.low_priority_updates = 'OFN';
ERROR 42000: Variable 'low_priority_updates' can't be set to the value of 'OFN'
SET @@session.low_priority_updates = -2;
ERROR 42000: Variable 'low_priority_updates' can't be set to the value of '-2'
-SET @@session.low_priority_updates = 65530.34.;
-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 '.' at line 1
+SET @@session.low_priority_updates = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'low_priority_updates'
SET @@session.low_priority_updates = 65550;
ERROR 42000: Variable 'low_priority_updates' can't be set to the value of '65550'
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.low_priority_updates = test;
ERROR 42000: Variable 'low_priority_updates' can't be set to the value of 'test'
'#------------------FN_DYNVARS_069_06-----------------------#'
-SELECT @@global.low_priority_updates = VARIABLE_VALUE
+SELECT IF(@@global.low_priority_updates, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='low_priority_updates';
-@@global.low_priority_updates = VARIABLE_VALUE
+IF(@@global.low_priority_updates, "ON", "OFF") = VARIABLE_VALUE
1
'#------------------FN_DYNVARS_069_07-----------------------#'
-SELECT @@session.low_priority_updates = VARIABLE_VALUE
+SELECT IF(@@session.low_priority_updates, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='low_priority_updates';
-@@session.low_priority_updates = VARIABLE_VALUE
+IF(@@session.low_priority_updates, "ON", "OFF") = VARIABLE_VALUE
1
'#---------------------FN_DYNVARS_069_08----------------------#'
SET @@low_priority_updates = FALSE;
diff --git a/mysql-test/suite/sys_vars/r/lower_case_file_system_basic.result b/mysql-test/suite/sys_vars/r/lower_case_file_system_basic.result
new file mode 100644
index 00000000000..0488ed30dc0
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/lower_case_file_system_basic.result
@@ -0,0 +1,21 @@
+select @@global.lower_case_file_system=2;
+@@global.lower_case_file_system=2
+0
+select @@session.lower_case_file_system;
+ERROR HY000: Variable 'lower_case_file_system' is a GLOBAL variable
+show global variables like 'lower_case_file_system';
+Variable_name Value
+lower_case_file_system #
+show session variables like 'lower_case_file_system';
+Variable_name Value
+lower_case_file_system #
+select * from information_schema.global_variables where variable_name='lower_case_file_system';
+VARIABLE_NAME VARIABLE_VALUE
+LOWER_CASE_FILE_SYSTEM #
+select * from information_schema.session_variables where variable_name='lower_case_file_system';
+VARIABLE_NAME VARIABLE_VALUE
+LOWER_CASE_FILE_SYSTEM #
+set global lower_case_file_system=1;
+ERROR HY000: Variable 'lower_case_file_system' is a read only variable
+set session lower_case_file_system=1;
+ERROR HY000: Variable 'lower_case_file_system' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/lower_case_table_names_basic.result b/mysql-test/suite/sys_vars/r/lower_case_table_names_basic.result
new file mode 100644
index 00000000000..d7dc6d69e30
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/lower_case_table_names_basic.result
@@ -0,0 +1,21 @@
+select @@global.lower_case_table_names=20;
+@@global.lower_case_table_names=20
+0
+select @@session.lower_case_table_names;
+ERROR HY000: Variable 'lower_case_table_names' is a GLOBAL variable
+show global variables like 'lower_case_table_names';
+Variable_name Value
+lower_case_table_names #
+show session variables like 'lower_case_table_names';
+Variable_name Value
+lower_case_table_names #
+select * from information_schema.global_variables where variable_name='lower_case_table_names';
+VARIABLE_NAME VARIABLE_VALUE
+LOWER_CASE_TABLE_NAMES #
+select * from information_schema.session_variables where variable_name='lower_case_table_names';
+VARIABLE_NAME VARIABLE_VALUE
+LOWER_CASE_TABLE_NAMES #
+set global lower_case_table_names=1;
+ERROR HY000: Variable 'lower_case_table_names' is a read only variable
+set session lower_case_table_names=1;
+ERROR HY000: Variable 'lower_case_table_names' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/max_allowed_packet_basic.result b/mysql-test/suite/sys_vars/r/max_allowed_packet_basic.result
index ca5b87f19cb..32048a7cfb0 100644
--- a/mysql-test/suite/sys_vars/r/max_allowed_packet_basic.result
+++ b/mysql-test/suite/sys_vars/r/max_allowed_packet_basic.result
@@ -14,7 +14,7 @@ SELECT @@global.max_allowed_packet;
SET @@session.max_allowed_packet = 20000;
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
SET @@session.max_allowed_packet = DEFAULT;
-ERROR 42000: Variable 'max_allowed_packet' doesn't have a default value
+ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
SELECT @@session.max_allowed_packet;
@@session.max_allowed_packet
1048576
@@ -29,15 +29,18 @@ SELECT @@global.max_allowed_packet;
@@global.max_allowed_packet
1024
SET @@global.max_allowed_packet = 1025;
+Warnings:
+Warning 1292 Truncated incorrect max_allowed_packet value: '1025'
SELECT @@global.max_allowed_packet;
@@global.max_allowed_packet
1024
-: 'Bug# 34841: "Invalid values are coming in variable on assigning valid value';
SET @@global.max_allowed_packet = 1073741824;
SELECT @@global.max_allowed_packet;
@@global.max_allowed_packet
1073741824
SET @@global.max_allowed_packet = 1073741823;
+Warnings:
+Warning 1292 Truncated incorrect max_allowed_packet value: '1073741823'
SELECT @@global.max_allowed_packet;
@@global.max_allowed_packet
1073740800
@@ -92,8 +95,8 @@ Warning 1292 Truncated incorrect max_allowed_packet value: '10737418241'
SELECT @@global.max_allowed_packet;
@@global.max_allowed_packet
1073741824
-SET @@global.max_allowed_packet = 65530.34.;
-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 '.' at line 1
+SET @@global.max_allowed_packet = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_allowed_packet'
SELECT @@global.max_allowed_packet;
@@global.max_allowed_packet
1073741824
@@ -117,14 +120,13 @@ ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL
SELECT @@session.max_allowed_packet;
@@session.max_allowed_packet
1048576
-SET @@session.max_allowed_packet = 65530.34.;
-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 '.' at line 1
+SET @@session.max_allowed_packet = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_allowed_packet'
SET @@session.max_allowed_packet = 10737418241;
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
SELECT @@session.max_allowed_packet;
@@session.max_allowed_packet
1048576
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.max_allowed_packet = test;
ERROR 42000: Incorrect argument type to variable 'max_allowed_packet'
SELECT @@session.max_allowed_packet;
diff --git a/mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic_32.result b/mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic.result
index 1b3b65010b2..d760474affd 100644
--- a/mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic.result
@@ -1,41 +1,49 @@
SET @start_value = @@global.max_binlog_cache_size;
SELECT @start_value;
@start_value
-4294963200
+18446744073709547520
'#--------------------FN_DYNVARS_072_01------------------------#'
SET @@global.max_binlog_cache_size = 5000;
+Warnings:
+Warning 1292 Truncated incorrect max_binlog_cache_size value: '5000'
SET @@global.max_binlog_cache_size = DEFAULT;
SELECT @@global.max_binlog_cache_size;
@@global.max_binlog_cache_size
-4294963200
+18446744073709547520
'#---------------------FN_DYNVARS_072_02-------------------------#'
SET @@global.max_binlog_cache_size = @start_value;
SELECT @@global.max_binlog_cache_size = 4294967295;
@@global.max_binlog_cache_size = 4294967295
0
-'Bug# 34876: Incorrect Default Value is assigned to variable';
'#--------------------FN_DYNVARS_072_03------------------------#'
SET @@global.max_binlog_cache_size = 4096;
SELECT @@global.max_binlog_cache_size;
@@global.max_binlog_cache_size
4096
SET @@global.max_binlog_cache_size = 4294967295;
+Warnings:
+Warning 1292 Truncated incorrect max_binlog_cache_size value: '4294967295'
SELECT @@global.max_binlog_cache_size;
@@global.max_binlog_cache_size
4294963200
SET @@global.max_binlog_cache_size = 4294967294;
+Warnings:
+Warning 1292 Truncated incorrect max_binlog_cache_size value: '4294967294'
SELECT @@global.max_binlog_cache_size;
@@global.max_binlog_cache_size
4294963200
SET @@global.max_binlog_cache_size = 4097;
+Warnings:
+Warning 1292 Truncated incorrect max_binlog_cache_size value: '4097'
SELECT @@global.max_binlog_cache_size;
@@global.max_binlog_cache_size
4096
SET @@global.max_binlog_cache_size = 65535;
+Warnings:
+Warning 1292 Truncated incorrect max_binlog_cache_size value: '65535'
SELECT @@global.max_binlog_cache_size;
@@global.max_binlog_cache_size
61440
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
'#--------------------FN_DYNVARS_072_04-------------------------#'
SET @@global.max_binlog_cache_size = -1;
Warnings:
@@ -48,12 +56,12 @@ Warnings:
Warning 1292 Truncated incorrect max_binlog_cache_size value: '100000000000'
SELECT @@global.max_binlog_cache_size;
@@global.max_binlog_cache_size
-4294963200
+99999997952
SET @@global.max_binlog_cache_size = 10000.01;
ERROR 42000: Incorrect argument type to variable 'max_binlog_cache_size'
SELECT @@global.max_binlog_cache_size;
@@global.max_binlog_cache_size
-4294963200
+99999997952
SET @@global.max_binlog_cache_size = -1024;
Warnings:
Warning 1292 Truncated incorrect max_binlog_cache_size value: '-1024'
@@ -67,18 +75,15 @@ SELECT @@global.max_binlog_cache_size;
@@global.max_binlog_cache_size
4096
SET @@global.max_binlog_cache_size = 4294967296;
-Warnings:
-Warning 1292 Truncated incorrect max_binlog_cache_size value: '4294967296'
SELECT @@global.max_binlog_cache_size;
@@global.max_binlog_cache_size
-4294963200
+4294967296
SET @@global.max_binlog_cache_size = 4095;
Warnings:
Warning 1292 Truncated incorrect max_binlog_cache_size value: '4095'
SELECT @@global.max_binlog_cache_size;
@@global.max_binlog_cache_size
4096
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.max_binlog_cache_size = ON;
ERROR 42000: Incorrect argument type to variable 'max_binlog_cache_size'
SELECT @@global.max_binlog_cache_size;
@@ -120,6 +125,8 @@ SELECT @@global.max_binlog_cache_size;
4096
'#---------------------FN_DYNVARS_072_08----------------------#'
SET @@global.max_binlog_cache_size = 5000;
+Warnings:
+Warning 1292 Truncated incorrect max_binlog_cache_size value: '5000'
SELECT @@max_binlog_cache_size = @@global.max_binlog_cache_size;
@@max_binlog_cache_size = @@global.max_binlog_cache_size
1
@@ -142,4 +149,4 @@ ERROR 42S22: Unknown column 'max_binlog_cache_size' in 'field list'
SET @@global.max_binlog_cache_size = @start_value;
SELECT @@global.max_binlog_cache_size;
@@global.max_binlog_cache_size
-4294963200
+18446744073709547520
diff --git a/mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic_64.result b/mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic_64.result
deleted file mode 100644
index 10a42f6ab0e..00000000000
--- a/mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic_64.result
+++ /dev/null
@@ -1,141 +0,0 @@
-SET @start_value = @@global.max_binlog_cache_size;
-SELECT @start_value;
-@start_value
-18446744073709547520
-'#--------------------FN_DYNVARS_072_01------------------------#'
-SET @@global.max_binlog_cache_size = 5000;
-SET @@global.max_binlog_cache_size = DEFAULT;
-SELECT @@global.max_binlog_cache_size;
-@@global.max_binlog_cache_size
-18446744073709547520
-'#---------------------FN_DYNVARS_072_02-------------------------#'
-SET @@global.max_binlog_cache_size = @start_value;
-SELECT @@global.max_binlog_cache_size = 4294967295;
-@@global.max_binlog_cache_size = 4294967295
-0
-'Bug# 34876: Incorrect Default Value is assigned to variable';
-'#--------------------FN_DYNVARS_072_03------------------------#'
-SET @@global.max_binlog_cache_size = 4096;
-SELECT @@global.max_binlog_cache_size;
-@@global.max_binlog_cache_size
-4096
-SET @@global.max_binlog_cache_size = 4294967295;
-SELECT @@global.max_binlog_cache_size;
-@@global.max_binlog_cache_size
-4294963200
-SET @@global.max_binlog_cache_size = 4294967294;
-SELECT @@global.max_binlog_cache_size;
-@@global.max_binlog_cache_size
-4294963200
-SET @@global.max_binlog_cache_size = 4097;
-SELECT @@global.max_binlog_cache_size;
-@@global.max_binlog_cache_size
-4096
-SET @@global.max_binlog_cache_size = 65535;
-SELECT @@global.max_binlog_cache_size;
-@@global.max_binlog_cache_size
-61440
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
-'#--------------------FN_DYNVARS_072_04-------------------------#'
-SET @@global.max_binlog_cache_size = -1;
-Warnings:
-Warning 1292 Truncated incorrect max_binlog_cache_size value: '-1'
-SELECT @@global.max_binlog_cache_size;
-@@global.max_binlog_cache_size
-4096
-SET @@global.max_binlog_cache_size = 100000000000;
-SELECT @@global.max_binlog_cache_size;
-@@global.max_binlog_cache_size
-99999997952
-SET @@global.max_binlog_cache_size = 10000.01;
-ERROR 42000: Incorrect argument type to variable 'max_binlog_cache_size'
-SELECT @@global.max_binlog_cache_size;
-@@global.max_binlog_cache_size
-99999997952
-SET @@global.max_binlog_cache_size = -1024;
-Warnings:
-Warning 1292 Truncated incorrect max_binlog_cache_size value: '-1024'
-SELECT @@global.max_binlog_cache_size;
-@@global.max_binlog_cache_size
-4096
-SET @@global.max_binlog_cache_size = 1024;
-Warnings:
-Warning 1292 Truncated incorrect max_binlog_cache_size value: '1024'
-SELECT @@global.max_binlog_cache_size;
-@@global.max_binlog_cache_size
-4096
-SET @@global.max_binlog_cache_size = 4294967296;
-SELECT @@global.max_binlog_cache_size;
-@@global.max_binlog_cache_size
-4294967296
-SET @@global.max_binlog_cache_size = 4095;
-Warnings:
-Warning 1292 Truncated incorrect max_binlog_cache_size value: '4095'
-SELECT @@global.max_binlog_cache_size;
-@@global.max_binlog_cache_size
-4096
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-SET @@global.max_binlog_cache_size = ON;
-ERROR 42000: Incorrect argument type to variable 'max_binlog_cache_size'
-SELECT @@global.max_binlog_cache_size;
-@@global.max_binlog_cache_size
-4096
-SET @@global.max_binlog_cache_size = 'test';
-ERROR 42000: Incorrect argument type to variable 'max_binlog_cache_size'
-SELECT @@global.max_binlog_cache_size;
-@@global.max_binlog_cache_size
-4096
-'#-------------------FN_DYNVARS_072_05----------------------------#'
-SET @@session.max_binlog_cache_size = 4096;
-ERROR HY000: Variable 'max_binlog_cache_size' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT @@session.max_binlog_cache_size;
-ERROR HY000: Variable 'max_binlog_cache_size' is a GLOBAL variable
-'#----------------------FN_DYNVARS_072_06------------------------#'
-SELECT @@global.max_binlog_cache_size = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='max_binlog_cache_size';
-@@global.max_binlog_cache_size = VARIABLE_VALUE
-1
-SELECT @@max_binlog_cache_size = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.SESSION_VARIABLES
-WHERE VARIABLE_NAME='max_binlog_cache_size';
-@@max_binlog_cache_size = VARIABLE_VALUE
-1
-'#---------------------FN_DYNVARS_072_07----------------------#'
-SET @@global.max_binlog_cache_size = TRUE;
-Warnings:
-Warning 1292 Truncated incorrect max_binlog_cache_size value: '1'
-SELECT @@global.max_binlog_cache_size;
-@@global.max_binlog_cache_size
-4096
-SET @@global.max_binlog_cache_size = FALSE;
-Warnings:
-Warning 1292 Truncated incorrect max_binlog_cache_size value: '0'
-SELECT @@global.max_binlog_cache_size;
-@@global.max_binlog_cache_size
-4096
-'#---------------------FN_DYNVARS_072_08----------------------#'
-SET @@global.max_binlog_cache_size = 5000;
-SELECT @@max_binlog_cache_size = @@global.max_binlog_cache_size;
-@@max_binlog_cache_size = @@global.max_binlog_cache_size
-1
-'#---------------------FN_DYNVARS_072_09----------------------#'
-SET max_binlog_cache_size = 6000;
-ERROR HY000: Variable 'max_binlog_cache_size' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT @@max_binlog_cache_size;
-@@max_binlog_cache_size
-4096
-SET local.max_binlog_cache_size = 7000;
-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 'max_binlog_cache_size = 7000' at line 1
-SELECT local.max_binlog_cache_size;
-ERROR 42S02: Unknown table 'local' in field list
-SET global.max_binlog_cache_size = 8000;
-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 'max_binlog_cache_size = 8000' at line 1
-SELECT global.max_binlog_cache_size;
-ERROR 42S02: Unknown table 'global' in field list
-SELECT max_binlog_cache_size = @@session.max_binlog_cache_size;
-ERROR 42S22: Unknown column 'max_binlog_cache_size' in 'field list'
-SET @@global.max_binlog_cache_size = @start_value;
-SELECT @@global.max_binlog_cache_size;
-@@global.max_binlog_cache_size
-18446744073709547520
diff --git a/mysql-test/suite/sys_vars/r/max_binlog_size_basic.result b/mysql-test/suite/sys_vars/r/max_binlog_size_basic.result
index 658289628b0..33f5495a011 100644
--- a/mysql-test/suite/sys_vars/r/max_binlog_size_basic.result
+++ b/mysql-test/suite/sys_vars/r/max_binlog_size_basic.result
@@ -4,11 +4,12 @@ SELECT @start_value;
1073741824
'#--------------------FN_DYNVARS_072_01------------------------#'
SET @@global.max_binlog_size = 5000;
+Warnings:
+Warning 1292 Truncated incorrect max_binlog_size value: '5000'
SET @@global.max_binlog_size = DEFAULT;
SELECT @@global.max_binlog_size;
@@global.max_binlog_size
1073741824
-'Bug# 34878: This variable has invalid default value as compared to documentation';
'#---------------------FN_DYNVARS_072_02-------------------------#'
SET @@global.max_binlog_size = @start_value;
SELECT @@global.max_binlog_size = 1073741824;
@@ -24,18 +25,23 @@ SELECT @@global.max_binlog_size;
@@global.max_binlog_size
1073741824
SET @@global.max_binlog_size = 1073741823;
+Warnings:
+Warning 1292 Truncated incorrect max_binlog_size value: '1073741823'
SELECT @@global.max_binlog_size;
@@global.max_binlog_size
1073737728
SET @@global.max_binlog_size = 4097;
+Warnings:
+Warning 1292 Truncated incorrect max_binlog_size value: '4097'
SELECT @@global.max_binlog_size;
@@global.max_binlog_size
4096
SET @@global.max_binlog_size = 65535;
+Warnings:
+Warning 1292 Truncated incorrect max_binlog_size value: '65535'
SELECT @@global.max_binlog_size;
@@global.max_binlog_size
61440
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
'#--------------------FN_DYNVARS_072_04-------------------------#'
SET @@global.max_binlog_size = -1;
Warnings:
@@ -78,7 +84,6 @@ Warning 1292 Truncated incorrect max_binlog_size value: '4095'
SELECT @@global.max_binlog_size;
@@global.max_binlog_size
4096
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.max_binlog_size = ON;
ERROR 42000: Incorrect argument type to variable 'max_binlog_size'
SELECT @@global.max_binlog_size;
@@ -120,6 +125,8 @@ SELECT @@global.max_binlog_size;
4096
'#---------------------FN_DYNVARS_072_08----------------------#'
SET @@global.max_binlog_size = 5000;
+Warnings:
+Warning 1292 Truncated incorrect max_binlog_size value: '5000'
SELECT @@max_binlog_size = @@global.max_binlog_size;
@@max_binlog_size = @@global.max_binlog_size
1
diff --git a/mysql-test/suite/sys_vars/r/max_connect_errors_basic_32.result b/mysql-test/suite/sys_vars/r/max_connect_errors_basic_32.result
index 42e64f1b418..19f6f12a50b 100644
--- a/mysql-test/suite/sys_vars/r/max_connect_errors_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/max_connect_errors_basic_32.result
@@ -8,7 +8,6 @@ SET @@global.max_connect_errors = DEFAULT;
SELECT @@global.max_connect_errors;
@@global.max_connect_errors
10
-'Bug# 34876: This variable has invalid default value as compared to documentation';
'#---------------------FN_DYNVARS_073_02-------------------------#'
SET @@global.max_connect_errors = @start_value;
SELECT @@global.max_connect_errors = 10;
@@ -35,7 +34,6 @@ SET @@global.max_connect_errors = 2;
SELECT @@global.max_connect_errors;
@@global.max_connect_errors
2
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
'#--------------------FN_DYNVARS_073_04-------------------------#'
SET @@global.max_connect_errors = -1;
Warnings:
@@ -72,7 +70,6 @@ Warning 1292 Truncated incorrect max_connect_errors value: '4294967296'
SELECT @@global.max_connect_errors;
@@global.max_connect_errors
4294967295
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.max_connect_errors = ON;
ERROR 42000: Incorrect argument type to variable 'max_connect_errors'
SELECT @@global.max_connect_errors;
diff --git a/mysql-test/suite/sys_vars/r/max_connect_errors_basic_64.result b/mysql-test/suite/sys_vars/r/max_connect_errors_basic_64.result
index 762cfd14a3a..bbc117b65b6 100644
--- a/mysql-test/suite/sys_vars/r/max_connect_errors_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/max_connect_errors_basic_64.result
@@ -8,7 +8,6 @@ SET @@global.max_connect_errors = DEFAULT;
SELECT @@global.max_connect_errors;
@@global.max_connect_errors
10
-'Bug# 34876: This variable has invalid default value as compared to documentation';
'#---------------------FN_DYNVARS_073_02-------------------------#'
SET @@global.max_connect_errors = @start_value;
SELECT @@global.max_connect_errors = 10;
@@ -35,7 +34,6 @@ SET @@global.max_connect_errors = 2;
SELECT @@global.max_connect_errors;
@@global.max_connect_errors
2
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
'#--------------------FN_DYNVARS_073_04-------------------------#'
SET @@global.max_connect_errors = -1;
Warnings:
@@ -68,7 +66,6 @@ SET @@global.max_connect_errors = 4294967296;
SELECT @@global.max_connect_errors;
@@global.max_connect_errors
4294967296
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.max_connect_errors = ON;
ERROR 42000: Incorrect argument type to variable 'max_connect_errors'
SELECT @@global.max_connect_errors;
diff --git a/mysql-test/suite/sys_vars/r/max_connections_basic.result b/mysql-test/suite/sys_vars/r/max_connections_basic.result
index d917cd97b25..eac35f3bf2b 100644
--- a/mysql-test/suite/sys_vars/r/max_connections_basic.result
+++ b/mysql-test/suite/sys_vars/r/max_connections_basic.result
@@ -8,7 +8,6 @@ SET @@global.max_connections = DEFAULT;
SELECT @@global.max_connections;
@@global.max_connections
151
-'Bug# 34876: This variable has invalid default value as compared to documentation';
'#---------------------FN_DYNVARS_074_02-------------------------#'
SET @@global.max_connections = @start_value;
SELECT @@global.max_connections = 151;
@@ -35,7 +34,6 @@ SET @@global.max_connections = 2;
SELECT @@global.max_connections;
@@global.max_connections
2
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
'#--------------------FN_DYNVARS_074_04-------------------------#'
SET @@global.max_connections = -1;
Warnings:
@@ -72,7 +70,6 @@ Warning 1292 Truncated incorrect max_connections value: '100001'
SELECT @@global.max_connections;
@@global.max_connections
100000
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.max_connections = ON;
ERROR 42000: Incorrect argument type to variable 'max_connections'
SELECT @@global.max_connections;
diff --git a/mysql-test/suite/sys_vars/r/max_delayed_threads_basic.result b/mysql-test/suite/sys_vars/r/max_delayed_threads_basic.result
index 946c24e3082..a78ac90107f 100644
--- a/mysql-test/suite/sys_vars/r/max_delayed_threads_basic.result
+++ b/mysql-test/suite/sys_vars/r/max_delayed_threads_basic.result
@@ -14,7 +14,6 @@ SELECT @@global.max_delayed_threads;
20
SET @@session.max_delayed_threads = 1000;
ERROR 42000: Variable 'max_delayed_threads' can't be set to the value of '1000'
-'Bug# 34882: Valid values are not allowed to assign in this variable';
SET @@session.max_delayed_threads = DEFAULT;
SELECT @@session.max_delayed_threads;
@@session.max_delayed_threads
@@ -37,7 +36,6 @@ SET @@global.max_delayed_threads = 1025;
SELECT @@global.max_delayed_threads;
@@global.max_delayed_threads
1025
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
SET @@global.max_delayed_threads = 0;
SELECT @@global.max_delayed_threads;
@@global.max_delayed_threads
@@ -93,8 +91,8 @@ Warning 1292 Truncated incorrect max_delayed_threads value: '16385'
SELECT @@global.max_delayed_threads;
@@global.max_delayed_threads
16384
-SET @@global.max_delayed_threads = 65530.34.;
-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 '.' at line 1
+SET @@global.max_delayed_threads = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_delayed_threads'
SELECT @@global.max_delayed_threads;
@@global.max_delayed_threads
16384
@@ -104,32 +102,36 @@ SELECT @@global.max_delayed_threads;
@@global.max_delayed_threads
16384
SET @@session.max_delayed_threads = 16385;
-ERROR 42000: Variable 'max_delayed_threads' can't be set to the value of '16385'
+Warnings:
+Warning 1292 Truncated incorrect max_delayed_threads value: '16385'
SELECT @@session.max_delayed_threads;
@@session.max_delayed_threads
-16383
+16384
SET @@session.max_delayed_threads = -1;
-ERROR 42000: Variable 'max_delayed_threads' can't be set to the value of '-1'
+Warnings:
+Warning 1292 Truncated incorrect max_delayed_threads value: '-1'
SELECT @@session.max_delayed_threads;
@@session.max_delayed_threads
-16383
+0
SET @@session.max_delayed_threads = -2;
-ERROR 42000: Variable 'max_delayed_threads' can't be set to the value of '-2'
+Warnings:
+Warning 1292 Truncated incorrect max_delayed_threads value: '-2'
SELECT @@session.max_delayed_threads;
@@session.max_delayed_threads
-16383
-SET @@session.max_delayed_threads = 65530.34.;
-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 '.' at line 1
+0
+SET @@session.max_delayed_threads = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_delayed_threads'
SET @@session.max_delayed_threads = 10737418241;
-ERROR 42000: Variable 'max_delayed_threads' can't be set to the value of '10737418241'
+Warnings:
+Warning 1292 Truncated incorrect max_delayed_threads value: '10737418241'
SELECT @@session.max_delayed_threads;
@@session.max_delayed_threads
-16383
+16384
SET @@session.max_delayed_threads = test;
ERROR 42000: Incorrect argument type to variable 'max_delayed_threads'
SELECT @@session.max_delayed_threads;
@@session.max_delayed_threads
-16383
+16384
'#------------------FN_DYNVARS_075_06-----------------------#'
SELECT @@global.max_delayed_threads = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
@@ -170,7 +172,7 @@ SET max_delayed_threads = 1024;
ERROR 42000: Variable 'max_delayed_threads' can't be set to the value of '1024'
SELECT @@max_delayed_threads;
@@max_delayed_threads
-16383
+16384
SELECT local.max_delayed_threads;
ERROR 42S02: Unknown table 'local' in field list
SELECT session.max_delayed_threads;
diff --git a/mysql-test/suite/sys_vars/r/max_error_count_basic.result b/mysql-test/suite/sys_vars/r/max_error_count_basic.result
index 7be8e0f37a3..980789b09be 100644
--- a/mysql-test/suite/sys_vars/r/max_error_count_basic.result
+++ b/mysql-test/suite/sys_vars/r/max_error_count_basic.result
@@ -35,7 +35,6 @@ SET @@global.max_error_count = 0;
SELECT @@global.max_error_count;
@@global.max_error_count
0
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
SET @@global.max_error_count = 65535;
SELECT @@global.max_error_count;
@@global.max_error_count
@@ -86,8 +85,8 @@ Warning 1292 Truncated incorrect max_error_count value: '10737418241'
SELECT @@global.max_error_count;
@@global.max_error_count
65535
-SET @@global.max_error_count = 65530.34.;
-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 '.' at line 1
+SET @@global.max_error_count = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_error_count'
SELECT @@global.max_error_count;
@@global.max_error_count
65535
@@ -113,14 +112,13 @@ Warning 1292 Truncated incorrect max_error_count value: '-2'
SELECT @@session.max_error_count;
@@session.max_error_count
0
-SET @@session.max_error_count = 65530.34.;
-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 '.' at line 1
+SET @@session.max_error_count = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_error_count'
SET @@session.max_error_count = 10737418241;
Warnings:
SELECT @@session.max_error_count;
@@session.max_error_count
65535
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.max_error_count = test;
ERROR 42000: Incorrect argument type to variable 'max_error_count'
SELECT @@session.max_error_count;
diff --git a/mysql-test/suite/sys_vars/r/max_heap_table_size_basic_32.result b/mysql-test/suite/sys_vars/r/max_heap_table_size_basic.result
index deedb9ae43c..2c6d86d49f3 100644
--- a/mysql-test/suite/sys_vars/r/max_heap_table_size_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/max_heap_table_size_basic.result
@@ -8,11 +8,15 @@ SELECT @start_session_value;
1048576
'#--------------------FN_DYNVARS_077_01-------------------------#'
SET @@global.max_heap_table_size = 1677721610;
+Warnings:
+Warning 1292 Truncated incorrect max_heap_table_size value: '1677721610'
SET @@global.max_heap_table_size = DEFAULT;
SELECT @@global.max_heap_table_size;
@@global.max_heap_table_size
16777216
SET @@session.max_heap_table_size = 1677721610;
+Warnings:
+Warning 1292 Truncated incorrect max_heap_table_size value: '1677721610'
SET @@session.max_heap_table_size = DEFAULT;
SELECT @@session.max_heap_table_size;
@@session.max_heap_table_size
@@ -32,10 +36,14 @@ SELECT @@global.max_heap_table_size;
@@global.max_heap_table_size
16384
SET @@global.max_heap_table_size = 16385;
+Warnings:
+Warning 1292 Truncated incorrect max_heap_table_size value: '16385'
SELECT @@global.max_heap_table_size;
@@global.max_heap_table_size
16384
SET @@global.max_heap_table_size = 65535;
+Warnings:
+Warning 1292 Truncated incorrect max_heap_table_size value: '65535'
SELECT @@global.max_heap_table_size;
@@global.max_heap_table_size
64512
@@ -51,17 +59,20 @@ Warning 1292 Truncated incorrect max_heap_table_size value: '4294967295'
SELECT @@global.max_heap_table_size;
@@global.max_heap_table_size
4294966272
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
'#--------------------FN_DYNVARS_077_04-------------------------#'
SET @@session.max_heap_table_size = 16384;
SELECT @@session.max_heap_table_size;
@@session.max_heap_table_size
16384
SET @@session.max_heap_table_size = 16385;
+Warnings:
+Warning 1292 Truncated incorrect max_heap_table_size value: '16385'
SELECT @@session.max_heap_table_size;
@@session.max_heap_table_size
16384
SET @@session.max_heap_table_size = 65535;
+Warnings:
+Warning 1292 Truncated incorrect max_heap_table_size value: '65535'
SELECT @@session.max_heap_table_size;
@@session.max_heap_table_size
64512
@@ -77,7 +88,6 @@ Warning 1292 Truncated incorrect max_heap_table_size value: '4294967295'
SELECT @@session.max_heap_table_size;
@@session.max_heap_table_size
4294966272
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
'#------------------FN_DYNVARS_077_05-----------------------#'
SET @@global.max_heap_table_size = -1;
Warnings:
@@ -104,21 +114,19 @@ SELECT @@global.max_heap_table_size;
@@global.max_heap_table_size
16384
SET @@global.max_heap_table_size = 4294967296;
-Warnings:
-Warning 1292 Truncated incorrect max_heap_table_size value: '4294967296'
SELECT @@global.max_heap_table_size;
@@global.max_heap_table_size
-4294966272
-SET @@global.max_heap_table_size = 65530.34.;
-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 '.' at line 1
+4294967296
+SET @@global.max_heap_table_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_heap_table_size'
SELECT @@global.max_heap_table_size;
@@global.max_heap_table_size
-4294966272
+4294967296
SET @@global.max_heap_table_size = test;
ERROR 42000: Incorrect argument type to variable 'max_heap_table_size'
SELECT @@global.max_heap_table_size;
@@global.max_heap_table_size
-4294966272
+4294967296
SET @@session.max_heap_table_size = -1;
Warnings:
Warning 1292 Truncated incorrect max_heap_table_size value: '-1'
@@ -132,25 +140,22 @@ SELECT @@session.max_heap_table_size;
@@session.max_heap_table_size
16384
SET @@session.max_heap_table_size = 4294967296;
-Warnings:
-Warning 1292 Truncated incorrect max_heap_table_size value: '4294967296'
SELECT @@session.max_heap_table_size;
@@session.max_heap_table_size
-4294966272
-SET @@session.max_heap_table_size = 65530.34.;
-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 '.' at line 1
+4294967296
+SET @@session.max_heap_table_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_heap_table_size'
SET @@session.max_heap_table_size = 10737418241;
Warnings:
Warning 1292 Truncated incorrect max_heap_table_size value: '10737418241'
SELECT @@session.max_heap_table_size;
@@session.max_heap_table_size
-4294966272
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
+10737418240
SET @@session.max_heap_table_size = test;
ERROR 42000: Incorrect argument type to variable 'max_heap_table_size'
SELECT @@session.max_heap_table_size;
@@session.max_heap_table_size
-4294966272
+10737418240
'#------------------FN_DYNVARS_077_06-----------------------#'
SELECT @@global.max_heap_table_size = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
@@ -178,6 +183,8 @@ SELECT @@global.max_heap_table_size;
16384
'#---------------------FN_DYNVARS_077_09----------------------#'
SET @@global.max_heap_table_size = 163845;
+Warnings:
+Warning 1292 Truncated incorrect max_heap_table_size value: '163845'
SELECT @@max_heap_table_size = @@global.max_heap_table_size;
@@max_heap_table_size = @@global.max_heap_table_size
0
@@ -191,6 +198,8 @@ SELECT @@local.max_heap_table_size = @@session.max_heap_table_size;
1
'#---------------------FN_DYNVARS_077_11----------------------#'
SET max_heap_table_size = 316777216;
+Warnings:
+Warning 1292 Truncated incorrect max_heap_table_size value: '316777216'
SELECT @@max_heap_table_size;
@@max_heap_table_size
316776448
diff --git a/mysql-test/suite/sys_vars/r/max_heap_table_size_basic_64.result b/mysql-test/suite/sys_vars/r/max_heap_table_size_basic_64.result
deleted file mode 100644
index 6642b6024b5..00000000000
--- a/mysql-test/suite/sys_vars/r/max_heap_table_size_basic_64.result
+++ /dev/null
@@ -1,196 +0,0 @@
-SET @start_global_value = @@global.max_heap_table_size;
-SELECT @start_global_value;
-@start_global_value
-1048576
-SET @start_session_value = @@session.max_heap_table_size;
-SELECT @start_session_value;
-@start_session_value
-1048576
-'#--------------------FN_DYNVARS_077_01-------------------------#'
-SET @@global.max_heap_table_size = 1677721610;
-SET @@global.max_heap_table_size = DEFAULT;
-SELECT @@global.max_heap_table_size;
-@@global.max_heap_table_size
-16777216
-SET @@session.max_heap_table_size = 1677721610;
-SET @@session.max_heap_table_size = DEFAULT;
-SELECT @@session.max_heap_table_size;
-@@session.max_heap_table_size
-16777216
-'#--------------------FN_DYNVARS_077_02-------------------------#'
-SET @@global.max_heap_table_size = DEFAULT;
-SELECT @@global.max_heap_table_size = 16777216;
-@@global.max_heap_table_size = 16777216
-1
-SET @@session.max_heap_table_size = DEFAULT;
-SELECT @@session.max_heap_table_size = 16777216;
-@@session.max_heap_table_size = 16777216
-1
-'#--------------------FN_DYNVARS_077_03-------------------------#'
-SET @@global.max_heap_table_size = 16384;
-SELECT @@global.max_heap_table_size;
-@@global.max_heap_table_size
-16384
-SET @@global.max_heap_table_size = 16385;
-SELECT @@global.max_heap_table_size;
-@@global.max_heap_table_size
-16384
-SET @@global.max_heap_table_size = 65535;
-SELECT @@global.max_heap_table_size;
-@@global.max_heap_table_size
-64512
-SET @@global.max_heap_table_size = 4294967294;
-SELECT @@global.max_heap_table_size;
-@@global.max_heap_table_size
-4294966272
-SET @@global.max_heap_table_size = 4294967295;
-SELECT @@global.max_heap_table_size;
-@@global.max_heap_table_size
-4294966272
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
-'#--------------------FN_DYNVARS_077_04-------------------------#'
-SET @@session.max_heap_table_size = 16384;
-SELECT @@session.max_heap_table_size;
-@@session.max_heap_table_size
-16384
-SET @@session.max_heap_table_size = 16385;
-SELECT @@session.max_heap_table_size;
-@@session.max_heap_table_size
-16384
-SET @@session.max_heap_table_size = 65535;
-SELECT @@session.max_heap_table_size;
-@@session.max_heap_table_size
-64512
-SET @@session.max_heap_table_size = 4294967294;
-SELECT @@session.max_heap_table_size;
-@@session.max_heap_table_size
-4294966272
-SET @@session.max_heap_table_size = 4294967295;
-SELECT @@session.max_heap_table_size;
-@@session.max_heap_table_size
-4294966272
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
-'#------------------FN_DYNVARS_077_05-----------------------#'
-SET @@global.max_heap_table_size = -1;
-Warnings:
-Warning 1292 Truncated incorrect max_heap_table_size value: '-1'
-SELECT @@global.max_heap_table_size;
-@@global.max_heap_table_size
-16384
-SET @@global.max_heap_table_size = -1024;
-Warnings:
-Warning 1292 Truncated incorrect max_heap_table_size value: '-1024'
-SELECT @@global.max_heap_table_size;
-@@global.max_heap_table_size
-16384
-SET @@global.max_heap_table_size = 1024;
-Warnings:
-Warning 1292 Truncated incorrect max_heap_table_size value: '1024'
-SELECT @@global.max_heap_table_size;
-@@global.max_heap_table_size
-16384
-SET @@global.max_heap_table_size = 16383;
-Warnings:
-Warning 1292 Truncated incorrect max_heap_table_size value: '16383'
-SELECT @@global.max_heap_table_size;
-@@global.max_heap_table_size
-16384
-SET @@global.max_heap_table_size = 4294967296;
-SELECT @@global.max_heap_table_size;
-@@global.max_heap_table_size
-4294967296
-SET @@global.max_heap_table_size = 65530.34.;
-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 '.' at line 1
-SELECT @@global.max_heap_table_size;
-@@global.max_heap_table_size
-4294967296
-SET @@global.max_heap_table_size = test;
-ERROR 42000: Incorrect argument type to variable 'max_heap_table_size'
-SELECT @@global.max_heap_table_size;
-@@global.max_heap_table_size
-4294967296
-SET @@session.max_heap_table_size = -1;
-Warnings:
-Warning 1292 Truncated incorrect max_heap_table_size value: '-1'
-SELECT @@session.max_heap_table_size;
-@@session.max_heap_table_size
-16384
-SET @@session.max_heap_table_size = 16383;
-Warnings:
-Warning 1292 Truncated incorrect max_heap_table_size value: '16383'
-SELECT @@session.max_heap_table_size;
-@@session.max_heap_table_size
-16384
-SET @@session.max_heap_table_size = 4294967296;
-SELECT @@session.max_heap_table_size;
-@@session.max_heap_table_size
-4294967296
-SET @@session.max_heap_table_size = 65530.34.;
-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 '.' at line 1
-SET @@session.max_heap_table_size = 10737418241;
-SELECT @@session.max_heap_table_size;
-@@session.max_heap_table_size
-10737418240
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-SET @@session.max_heap_table_size = test;
-ERROR 42000: Incorrect argument type to variable 'max_heap_table_size'
-SELECT @@session.max_heap_table_size;
-@@session.max_heap_table_size
-10737418240
-'#------------------FN_DYNVARS_077_06-----------------------#'
-SELECT @@global.max_heap_table_size = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='max_heap_table_size';
-@@global.max_heap_table_size = VARIABLE_VALUE
-1
-'#------------------FN_DYNVARS_077_07-----------------------#'
-SELECT @@session.max_heap_table_size = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.SESSION_VARIABLES
-WHERE VARIABLE_NAME='max_heap_table_size';
-@@session.max_heap_table_size = VARIABLE_VALUE
-1
-'#------------------FN_DYNVARS_077_08-----------------------#'
-SET @@global.max_heap_table_size = TRUE;
-Warnings:
-Warning 1292 Truncated incorrect max_heap_table_size value: '1'
-SELECT @@global.max_heap_table_size;
-@@global.max_heap_table_size
-16384
-SET @@global.max_heap_table_size = FALSE;
-Warnings:
-Warning 1292 Truncated incorrect max_heap_table_size value: '0'
-SELECT @@global.max_heap_table_size;
-@@global.max_heap_table_size
-16384
-'#---------------------FN_DYNVARS_077_09----------------------#'
-SET @@global.max_heap_table_size = 163845;
-SELECT @@max_heap_table_size = @@global.max_heap_table_size;
-@@max_heap_table_size = @@global.max_heap_table_size
-0
-'#---------------------FN_DYNVARS_077_10----------------------#'
-SET @@max_heap_table_size = 16777216;
-SELECT @@max_heap_table_size = @@local.max_heap_table_size;
-@@max_heap_table_size = @@local.max_heap_table_size
-1
-SELECT @@local.max_heap_table_size = @@session.max_heap_table_size;
-@@local.max_heap_table_size = @@session.max_heap_table_size
-1
-'#---------------------FN_DYNVARS_077_11----------------------#'
-SET max_heap_table_size = 316777216;
-SELECT @@max_heap_table_size;
-@@max_heap_table_size
-316776448
-SELECT local.max_heap_table_size;
-ERROR 42S02: Unknown table 'local' in field list
-SELECT session.max_heap_table_size;
-ERROR 42S02: Unknown table 'session' in field list
-SELECT max_heap_table_size = @@session.max_heap_table_size;
-ERROR 42S22: Unknown column 'max_heap_table_size' in 'field list'
-SET @@global.max_heap_table_size = @start_global_value;
-SELECT @@global.max_heap_table_size;
-@@global.max_heap_table_size
-1048576
-SET @@session.max_heap_table_size = @start_session_value;
-SELECT @@session.max_heap_table_size;
-@@session.max_heap_table_size
-1048576
diff --git a/mysql-test/suite/sys_vars/r/max_insert_delayed_threads_basic.result b/mysql-test/suite/sys_vars/r/max_insert_delayed_threads_basic.result
index 2f2f7f0c0fc..aa79a5a7b9d 100644
--- a/mysql-test/suite/sys_vars/r/max_insert_delayed_threads_basic.result
+++ b/mysql-test/suite/sys_vars/r/max_insert_delayed_threads_basic.result
@@ -6,30 +6,28 @@ SET @start_session_value = @@session.max_insert_delayed_threads;
SELECT @start_session_value;
@start_session_value
20
-'#--------------------FN_DYNVARS_078_01-------------------------#'
+'#--------------------FN_DYNVARS_075_01-------------------------#'
SET @@global.max_insert_delayed_threads = 1000;
SET @@global.max_insert_delayed_threads = DEFAULT;
-ERROR 42000: Variable 'max_insert_delayed_threads' doesn't have a default value
SELECT @@global.max_insert_delayed_threads;
@@global.max_insert_delayed_threads
-1000
+20
SET @@session.max_insert_delayed_threads = 1000;
+ERROR 42000: Variable 'max_insert_delayed_threads' can't be set to the value of '1000'
SET @@session.max_insert_delayed_threads = DEFAULT;
SELECT @@session.max_insert_delayed_threads;
@@session.max_insert_delayed_threads
-1000
-'#--------------------FN_DYNVARS_078_02-------------------------#'
+20
+'#--------------------FN_DYNVARS_075_02-------------------------#'
SET @@global.max_insert_delayed_threads = DEFAULT;
-ERROR 42000: Variable 'max_insert_delayed_threads' doesn't have a default value
SELECT @@global.max_insert_delayed_threads = 20;
@@global.max_insert_delayed_threads = 20
-0
+1
SET @@session.max_insert_delayed_threads = DEFAULT;
SELECT @@session.max_insert_delayed_threads = 20;
@@session.max_insert_delayed_threads = 20
-0
-'Bug# 34876: This variable has invalid default value as compared to documentation';
-'#--------------------FN_DYNVARS_078_03-------------------------#'
+1
+'#--------------------FN_DYNVARS_075_03-------------------------#'
SET @@global.max_insert_delayed_threads = 1;
SELECT @@global.max_insert_delayed_threads;
@@global.max_insert_delayed_threads
@@ -38,7 +36,6 @@ SET @@global.max_insert_delayed_threads = 1025;
SELECT @@global.max_insert_delayed_threads;
@@global.max_insert_delayed_threads
1025
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
SET @@global.max_insert_delayed_threads = 0;
SELECT @@global.max_insert_delayed_threads;
@@global.max_insert_delayed_threads
@@ -51,17 +48,17 @@ SET @@global.max_insert_delayed_threads = 16383;
SELECT @@global.max_insert_delayed_threads;
@@global.max_insert_delayed_threads
16383
-'#--------------------FN_DYNVARS_078_04-------------------------#'
+'#--------------------FN_DYNVARS_075_04-------------------------#'
SET @@session.max_insert_delayed_threads = 1;
ERROR 42000: Variable 'max_insert_delayed_threads' can't be set to the value of '1'
SELECT @@session.max_insert_delayed_threads;
@@session.max_insert_delayed_threads
-1000
+20
SET @@session.max_insert_delayed_threads = 1025;
ERROR 42000: Variable 'max_insert_delayed_threads' can't be set to the value of '1025'
SELECT @@session.max_insert_delayed_threads;
@@session.max_insert_delayed_threads
-1000
+20
SET @@session.max_insert_delayed_threads = 0;
SELECT @@session.max_insert_delayed_threads;
@@session.max_insert_delayed_threads
@@ -75,7 +72,7 @@ SET @@session.max_insert_delayed_threads = 16383;
SELECT @@session.max_insert_delayed_threads;
@@session.max_insert_delayed_threads
16383
-'#------------------FN_DYNVARS_078_05-----------------------#'
+'#------------------FN_DYNVARS_075_05-----------------------#'
SET @@global.max_insert_delayed_threads = -1024;
Warnings:
Warning 1292 Truncated incorrect max_insert_delayed_threads value: '-1024'
@@ -94,8 +91,8 @@ Warning 1292 Truncated incorrect max_insert_delayed_threads value: '16385'
SELECT @@global.max_insert_delayed_threads;
@@global.max_insert_delayed_threads
16384
-SET @@global.max_insert_delayed_threads = 65530.34.;
-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 '.' at line 1
+SET @@global.max_insert_delayed_threads = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_insert_delayed_threads'
SELECT @@global.max_insert_delayed_threads;
@@global.max_insert_delayed_threads
16384
@@ -105,45 +102,49 @@ SELECT @@global.max_insert_delayed_threads;
@@global.max_insert_delayed_threads
16384
SET @@session.max_insert_delayed_threads = 16385;
-ERROR 42000: Variable 'max_insert_delayed_threads' can't be set to the value of '16385'
+Warnings:
+Warning 1292 Truncated incorrect max_insert_delayed_threads value: '16385'
SELECT @@session.max_insert_delayed_threads;
@@session.max_insert_delayed_threads
-16383
+16384
SET @@session.max_insert_delayed_threads = -1;
-ERROR 42000: Variable 'max_insert_delayed_threads' can't be set to the value of '-1'
+Warnings:
+Warning 1292 Truncated incorrect max_insert_delayed_threads value: '-1'
SELECT @@session.max_insert_delayed_threads;
@@session.max_insert_delayed_threads
-16383
+0
SET @@session.max_insert_delayed_threads = -2;
-ERROR 42000: Variable 'max_insert_delayed_threads' can't be set to the value of '-2'
+Warnings:
+Warning 1292 Truncated incorrect max_insert_delayed_threads value: '-2'
SELECT @@session.max_insert_delayed_threads;
@@session.max_insert_delayed_threads
-16383
-SET @@session.max_insert_delayed_threads = 65530.34.;
-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 '.' at line 1
+0
+SET @@session.max_insert_delayed_threads = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_insert_delayed_threads'
SET @@session.max_insert_delayed_threads = 10737418241;
-ERROR 42000: Variable 'max_insert_delayed_threads' can't be set to the value of '10737418241'
+Warnings:
+Warning 1292 Truncated incorrect max_insert_delayed_threads value: '10737418241'
SELECT @@session.max_insert_delayed_threads;
@@session.max_insert_delayed_threads
-16383
+16384
SET @@session.max_insert_delayed_threads = test;
ERROR 42000: Incorrect argument type to variable 'max_insert_delayed_threads'
SELECT @@session.max_insert_delayed_threads;
@@session.max_insert_delayed_threads
-16383
-'#------------------FN_DYNVARS_078_06-----------------------#'
+16384
+'#------------------FN_DYNVARS_075_06-----------------------#'
SELECT @@global.max_insert_delayed_threads = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='max_insert_delayed_threads';
@@global.max_insert_delayed_threads = VARIABLE_VALUE
1
-'#------------------FN_DYNVARS_078_07-----------------------#'
+'#------------------FN_DYNVARS_075_07-----------------------#'
SELECT @@session.max_insert_delayed_threads = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='max_insert_delayed_threads';
@@session.max_insert_delayed_threads = VARIABLE_VALUE
1
-'#------------------FN_DYNVARS_078_08-----------------------#'
+'#------------------FN_DYNVARS_075_08-----------------------#'
SET @@global.max_insert_delayed_threads = TRUE;
SELECT @@global.max_insert_delayed_threads;
@@global.max_insert_delayed_threads
@@ -152,12 +153,12 @@ SET @@global.max_insert_delayed_threads = FALSE;
SELECT @@global.max_insert_delayed_threads;
@@global.max_insert_delayed_threads
0
-'#---------------------FN_DYNVARS_078_09----------------------#'
+'#---------------------FN_DYNVARS_001_09----------------------#'
SET @@global.max_insert_delayed_threads = 2048;
SELECT @@max_insert_delayed_threads = @@global.max_insert_delayed_threads;
@@max_insert_delayed_threads = @@global.max_insert_delayed_threads
0
-'#---------------------FN_DYNVARS_078_10----------------------#'
+'#---------------------FN_DYNVARS_001_10----------------------#'
SET @@max_insert_delayed_threads = 100000;
ERROR 42000: Variable 'max_insert_delayed_threads' can't be set to the value of '100000'
SELECT @@max_insert_delayed_threads = @@local.max_insert_delayed_threads;
@@ -166,12 +167,12 @@ SELECT @@max_insert_delayed_threads = @@local.max_insert_delayed_threads;
SELECT @@local.max_insert_delayed_threads = @@session.max_insert_delayed_threads;
@@local.max_insert_delayed_threads = @@session.max_insert_delayed_threads
1
-'#---------------------FN_DYNVARS_078_11----------------------#'
+'#---------------------FN_DYNVARS_001_11----------------------#'
SET max_insert_delayed_threads = 1024;
ERROR 42000: Variable 'max_insert_delayed_threads' can't be set to the value of '1024'
SELECT @@max_insert_delayed_threads;
@@max_insert_delayed_threads
-16383
+16384
SELECT local.max_insert_delayed_threads;
ERROR 42S02: Unknown table 'local' in field list
SELECT session.max_insert_delayed_threads;
diff --git a/mysql-test/suite/sys_vars/r/max_join_size_basic.result b/mysql-test/suite/sys_vars/r/max_join_size_basic.result
new file mode 100644
index 00000000000..5cebefe9ea3
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/max_join_size_basic.result
@@ -0,0 +1,51 @@
+SET @start_global_value = @@global.max_join_size;
+SELECT @start_global_value;
+@start_global_value
+18446744073709551615
+select @@global.max_join_size;
+@@global.max_join_size
+18446744073709551615
+select @@session.max_join_size;
+@@session.max_join_size
+18446744073709551615
+show global variables like 'max_join_size';
+Variable_name Value
+max_join_size 18446744073709551615
+show session variables like 'max_join_size';
+Variable_name Value
+max_join_size 18446744073709551615
+select * from information_schema.global_variables where variable_name='max_join_size';
+VARIABLE_NAME VARIABLE_VALUE
+MAX_JOIN_SIZE 18446744073709551615
+select * from information_schema.session_variables where variable_name='max_join_size';
+VARIABLE_NAME VARIABLE_VALUE
+MAX_JOIN_SIZE 18446744073709551615
+set global max_join_size=10;
+select @@global.max_join_size;
+@@global.max_join_size
+10
+set session max_join_size=20;
+select @@session.max_join_size;
+@@session.max_join_size
+20
+set global max_join_size=1.1;
+ERROR 42000: Incorrect argument type to variable 'max_join_size'
+set global max_join_size=1e1;
+ERROR 42000: Incorrect argument type to variable 'max_join_size'
+set global max_join_size="foo";
+ERROR 42000: Incorrect argument type to variable 'max_join_size'
+select @@sql_big_selects;
+@@sql_big_selects
+0
+set max_join_size=cast(-1 as unsigned int);
+select @@sql_big_selects;
+@@sql_big_selects
+1
+set max_join_size=100;
+select @@sql_big_selects;
+@@sql_big_selects
+0
+SET @@global.max_join_size = @start_global_value;
+SELECT @@global.max_join_size;
+@@global.max_join_size
+18446744073709551615
diff --git a/mysql-test/suite/sys_vars/r/max_length_for_sort_data_basic.result b/mysql-test/suite/sys_vars/r/max_length_for_sort_data_basic.result
index 8936946c774..21d6f66f0bc 100644
--- a/mysql-test/suite/sys_vars/r/max_length_for_sort_data_basic.result
+++ b/mysql-test/suite/sys_vars/r/max_length_for_sort_data_basic.result
@@ -93,8 +93,8 @@ Warning 1292 Truncated incorrect max_length_for_sort_data value: '0'
SELECT @@global.max_length_for_sort_data;
@@global.max_length_for_sort_data
4
-SET @@global.max_length_for_sort_data = 65530.34.;
-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 '.' at line 1
+SET @@global.max_length_for_sort_data = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_length_for_sort_data'
SELECT @@global.max_length_for_sort_data;
@@global.max_length_for_sort_data
4
@@ -127,8 +127,8 @@ Warning 1292 Truncated incorrect max_length_for_sort_data value: '0'
SELECT @@session.max_length_for_sort_data;
@@session.max_length_for_sort_data
4
-SET @@session.max_length_for_sort_data = 65530.34.;
-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 '.' at line 1
+SET @@session.max_length_for_sort_data = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_length_for_sort_data'
SET @@session.max_length_for_sort_data = 10737418241;
Warnings:
Warning 1292 Truncated incorrect max_length_for_sort_data value: '10737418241'
diff --git a/mysql-test/suite/sys_vars/r/max_prepared_stmt_count_basic.result b/mysql-test/suite/sys_vars/r/max_prepared_stmt_count_basic.result
index 9c28c287980..adfb9be367b 100644
--- a/mysql-test/suite/sys_vars/r/max_prepared_stmt_count_basic.result
+++ b/mysql-test/suite/sys_vars/r/max_prepared_stmt_count_basic.result
@@ -70,7 +70,6 @@ Warning 1292 Truncated incorrect max_prepared_stmt_count value: '104857612'
SELECT @@global.max_prepared_stmt_count;
@@global.max_prepared_stmt_count
1048576
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.max_prepared_stmt_count = ON;
ERROR 42000: Incorrect argument type to variable 'max_prepared_stmt_count'
SELECT @@global.max_prepared_stmt_count;
diff --git a/mysql-test/suite/sys_vars/r/max_relay_log_size_basic.result b/mysql-test/suite/sys_vars/r/max_relay_log_size_basic.result
index 168459cf7b6..73d957accc1 100644
--- a/mysql-test/suite/sys_vars/r/max_relay_log_size_basic.result
+++ b/mysql-test/suite/sys_vars/r/max_relay_log_size_basic.result
@@ -4,6 +4,8 @@ SELECT @start_value;
0
'#--------------------FN_DYNVARS_082_01------------------------#'
SET @@global.max_relay_log_size = 5000;
+Warnings:
+Warning 1292 Truncated incorrect max_relay_log_size value: '5000'
SET @@global.max_relay_log_size = DEFAULT;
SELECT @@global.max_relay_log_size;
@@global.max_relay_log_size
@@ -13,13 +15,14 @@ SET @@global.max_relay_log_size = @start_value;
SELECT @@global.max_relay_log_size = 1024;
@@global.max_relay_log_size = 1024
0
-'Bug# 34876: This variable has invalid default value as compared to documentation';
'#--------------------FN_DYNVARS_082_03------------------------#'
SET @@global.max_relay_log_size = 0;
SELECT @@global.max_relay_log_size;
@@global.max_relay_log_size
0
SET @@global.max_relay_log_size = 1;
+Warnings:
+Warning 1292 Truncated incorrect max_relay_log_size value: '1'
SELECT @@global.max_relay_log_size;
@@global.max_relay_log_size
0
@@ -28,14 +31,17 @@ SELECT @@global.max_relay_log_size;
@@global.max_relay_log_size
1073741824
SET @@global.max_relay_log_size = 1073741823;
+Warnings:
+Warning 1292 Truncated incorrect max_relay_log_size value: '1073741823'
SELECT @@global.max_relay_log_size;
@@global.max_relay_log_size
1073737728
SET @@global.max_relay_log_size = 65535;
+Warnings:
+Warning 1292 Truncated incorrect max_relay_log_size value: '65535'
SELECT @@global.max_relay_log_size;
@@global.max_relay_log_size
61440
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
'#--------------------FN_DYNVARS_082_04-------------------------#'
SET @@global.max_relay_log_size = -1;
Warnings:
@@ -72,7 +78,6 @@ Warning 1292 Truncated incorrect max_relay_log_size value: '10737418241'
SELECT @@global.max_relay_log_size;
@@global.max_relay_log_size
1073741824
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.max_relay_log_size = ON;
ERROR 42000: Incorrect argument type to variable 'max_relay_log_size'
SELECT @@global.max_relay_log_size;
@@ -101,6 +106,8 @@ WHERE VARIABLE_NAME='max_relay_log_size';
1
'#---------------------FN_DYNVARS_082_07----------------------#'
SET @@global.max_relay_log_size = TRUE;
+Warnings:
+Warning 1292 Truncated incorrect max_relay_log_size value: '1'
SELECT @@global.max_relay_log_size;
@@global.max_relay_log_size
0
@@ -110,6 +117,8 @@ SELECT @@global.max_relay_log_size;
0
'#---------------------FN_DYNVARS_082_08----------------------#'
SET @@global.max_relay_log_size = 5000;
+Warnings:
+Warning 1292 Truncated incorrect max_relay_log_size value: '5000'
SELECT @@max_relay_log_size = @@global.max_relay_log_size;
@@max_relay_log_size = @@global.max_relay_log_size
1
diff --git a/mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_32.result b/mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_32.result
index 9a58ad44cff..2973e7e1efd 100644
--- a/mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_32.result
@@ -87,8 +87,8 @@ Warning 1292 Truncated incorrect max_seeks_for_key value: '4294967296'
SELECT @@global.max_seeks_for_key;
@@global.max_seeks_for_key
4294967295
-SET @@global.max_seeks_for_key = 65530.34.;
-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 '.' at line 1
+SET @@global.max_seeks_for_key = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_seeks_for_key'
SELECT @@global.max_seeks_for_key;
@@global.max_seeks_for_key
4294967295
@@ -109,15 +109,14 @@ Warning 1292 Truncated incorrect max_seeks_for_key value: '-2'
SELECT @@session.max_seeks_for_key;
@@session.max_seeks_for_key
1
-SET @@session.max_seeks_for_key = 65530.34.;
-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 '.' at line 1
+SET @@session.max_seeks_for_key = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_seeks_for_key'
SET @@session.max_seeks_for_key = 4294967296;
Warnings:
Warning 1292 Truncated incorrect max_seeks_for_key value: '4294967296'
SELECT @@session.max_seeks_for_key;
@@session.max_seeks_for_key
4294967295
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.max_seeks_for_key = test;
ERROR 42000: Incorrect argument type to variable 'max_seeks_for_key'
SELECT @@session.max_seeks_for_key;
diff --git a/mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_64.result b/mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_64.result
index 5b1e076c188..ef48f229abc 100644
--- a/mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_64.result
@@ -85,8 +85,8 @@ SET @@global.max_seeks_for_key = 4294967296;
SELECT @@global.max_seeks_for_key;
@@global.max_seeks_for_key
4294967296
-SET @@global.max_seeks_for_key = 65530.34.;
-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 '.' at line 1
+SET @@global.max_seeks_for_key = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_seeks_for_key'
SELECT @@global.max_seeks_for_key;
@@global.max_seeks_for_key
4294967296
@@ -107,13 +107,12 @@ Warning 1292 Truncated incorrect max_seeks_for_key value: '-2'
SELECT @@session.max_seeks_for_key;
@@session.max_seeks_for_key
1
-SET @@session.max_seeks_for_key = 65530.34.;
-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 '.' at line 1
+SET @@session.max_seeks_for_key = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_seeks_for_key'
SET @@session.max_seeks_for_key = 4294967296;
SELECT @@session.max_seeks_for_key;
@@session.max_seeks_for_key
4294967296
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.max_seeks_for_key = test;
ERROR 42000: Incorrect argument type to variable 'max_seeks_for_key'
SELECT @@session.max_seeks_for_key;
diff --git a/mysql-test/suite/sys_vars/r/max_sort_length_basic.result b/mysql-test/suite/sys_vars/r/max_sort_length_basic.result
index f0a9ca83376..a8876b2c81e 100644
--- a/mysql-test/suite/sys_vars/r/max_sort_length_basic.result
+++ b/mysql-test/suite/sys_vars/r/max_sort_length_basic.result
@@ -93,8 +93,8 @@ Warning 1292 Truncated incorrect max_sort_length value: '0'
SELECT @@global.max_sort_length;
@@global.max_sort_length
4
-SET @@global.max_sort_length = 65530.34.;
-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 '.' at line 1
+SET @@global.max_sort_length = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_sort_length'
SELECT @@global.max_sort_length;
@@global.max_sort_length
4
@@ -127,8 +127,8 @@ Warning 1292 Truncated incorrect max_sort_length value: '0'
SELECT @@session.max_sort_length;
@@session.max_sort_length
4
-SET @@session.max_sort_length = 65530.34.;
-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 '.' at line 1
+SET @@session.max_sort_length = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_sort_length'
SET @@session.max_sort_length = 10737418241;
Warnings:
Warning 1292 Truncated incorrect max_sort_length value: '10737418241'
diff --git a/mysql-test/suite/sys_vars/r/max_sp_recursion_depth_basic.result b/mysql-test/suite/sys_vars/r/max_sp_recursion_depth_basic.result
index e5f267253f4..b3d4917fd75 100644
--- a/mysql-test/suite/sys_vars/r/max_sp_recursion_depth_basic.result
+++ b/mysql-test/suite/sys_vars/r/max_sp_recursion_depth_basic.result
@@ -97,8 +97,8 @@ Warning 1292 Truncated incorrect max_sp_recursion_depth value: '3000'
SELECT @@global.max_sp_recursion_depth;
@@global.max_sp_recursion_depth
255
-SET @@global.max_sp_recursion_depth = 65530.34.;
-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 '.' at line 1
+SET @@global.max_sp_recursion_depth = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_sp_recursion_depth'
SELECT @@global.max_sp_recursion_depth;
@@global.max_sp_recursion_depth
255
@@ -131,8 +131,8 @@ Warning 1292 Truncated incorrect max_sp_recursion_depth value: '-1'
SELECT @@session.max_sp_recursion_depth;
@@session.max_sp_recursion_depth
0
-SET @@session.max_sp_recursion_depth = 65530.34.;
-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 '.' at line 1
+SET @@session.max_sp_recursion_depth = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_sp_recursion_depth'
SET @@session.max_sp_recursion_depth = 10737418241;
Warnings:
Warning 1292 Truncated incorrect max_sp_recursion_depth value: '10737418241'
diff --git a/mysql-test/suite/sys_vars/r/max_tmp_tables_basic_32.result b/mysql-test/suite/sys_vars/r/max_tmp_tables_basic_32.result
index 1346d24ca47..5daf78fcae1 100644
--- a/mysql-test/suite/sys_vars/r/max_tmp_tables_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/max_tmp_tables_basic_32.result
@@ -93,8 +93,8 @@ Warning 1292 Truncated incorrect max_tmp_tables value: '429496729500'
SELECT @@global.max_tmp_tables;
@@global.max_tmp_tables
4294967295
-SET @@global.max_tmp_tables = 65530.34.;
-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 '.' at line 1
+SET @@global.max_tmp_tables = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_tmp_tables'
SELECT @@global.max_tmp_tables;
@@global.max_tmp_tables
4294967295
@@ -127,8 +127,8 @@ Warning 1292 Truncated incorrect max_tmp_tables value: '-1'
SELECT @@session.max_tmp_tables;
@@session.max_tmp_tables
1
-SET @@session.max_tmp_tables = 65530.34.;
-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 '.' at line 1
+SET @@session.max_tmp_tables = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_tmp_tables'
SET @@session.max_tmp_tables = 10737418241;
Warnings:
Warning 1292 Truncated incorrect max_tmp_tables value: '10737418241'
diff --git a/mysql-test/suite/sys_vars/r/max_tmp_tables_basic_64.result b/mysql-test/suite/sys_vars/r/max_tmp_tables_basic_64.result
index 808e99b739d..32953d24b2b 100644
--- a/mysql-test/suite/sys_vars/r/max_tmp_tables_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/max_tmp_tables_basic_64.result
@@ -89,8 +89,8 @@ SET @@global.max_tmp_tables = 429496729500;
SELECT @@global.max_tmp_tables;
@@global.max_tmp_tables
429496729500
-SET @@global.max_tmp_tables = 65530.34.;
-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 '.' at line 1
+SET @@global.max_tmp_tables = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_tmp_tables'
SELECT @@global.max_tmp_tables;
@@global.max_tmp_tables
429496729500
@@ -119,8 +119,8 @@ Warning 1292 Truncated incorrect max_tmp_tables value: '-1'
SELECT @@session.max_tmp_tables;
@@session.max_tmp_tables
1
-SET @@session.max_tmp_tables = 65530.34.;
-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 '.' at line 1
+SET @@session.max_tmp_tables = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_tmp_tables'
SET @@session.max_tmp_tables = 10737418241;
SELECT @@session.max_tmp_tables;
@@session.max_tmp_tables
diff --git a/mysql-test/suite/sys_vars/r/max_user_connections_basic.result b/mysql-test/suite/sys_vars/r/max_user_connections_basic.result
index 3250b2f03ea..cc43b631085 100644
--- a/mysql-test/suite/sys_vars/r/max_user_connections_basic.result
+++ b/mysql-test/suite/sys_vars/r/max_user_connections_basic.result
@@ -13,23 +13,17 @@ SELECT @@global.max_user_connections;
@@global.max_user_connections
0
SET @@session.max_user_connections = 1000;
-ERROR HY000: Variable 'max_user_connections' is a GLOBAL variable and should be set with SET GLOBAL
-SET @@session.max_user_connections = DEFAULT;
-ERROR 42000: Variable 'max_user_connections' doesn't have a default value
-SELECT @@session.max_user_connections;
-@@session.max_user_connections
-0
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
+ERROR HY000: SESSION variable 'max_user_connections' is read-only. Use SET GLOBAL to assign the value
'#--------------------FN_DYNVARS_087_02-------------------------#'
SET @@global.max_user_connections = DEFAULT;
SELECT @@global.max_user_connections = 0;
@@global.max_user_connections = 0
1
SET @@session.max_user_connections = DEFAULT;
-ERROR 42000: Variable 'max_user_connections' doesn't have a default value
-SELECT @@session.max_user_connections = 0;
-@@session.max_user_connections = 0
-1
+ERROR HY000: SESSION variable 'max_user_connections' is read-only. Use SET GLOBAL to assign the value
+SELECT @@session.max_user_connections;
+@@session.max_user_connections
+0
'#--------------------FN_DYNVARS_087_03-------------------------#'
SET @@global.max_user_connections = 1;
SELECT @@global.max_user_connections;
@@ -53,31 +47,39 @@ SELECT @@global.max_user_connections;
4294967294
'#------------------FN_DYNVARS_087_05-----------------------#'
SET @@global.max_user_connections = -1024;
+Warnings:
+Warning 1292 Truncated incorrect max_user_connections value: '-1024'
SELECT @@global.max_user_connections;
@@global.max_user_connections
-4294966272
+0
SET @@global.max_user_connections = 4294967296;
+Warnings:
+Warning 1292 Truncated incorrect max_user_connections value: '4294967296'
SELECT @@global.max_user_connections;
@@global.max_user_connections
-0
+4294967295
SET @@global.max_user_connections = -1;
+Warnings:
+Warning 1292 Truncated incorrect max_user_connections value: '-1'
SELECT @@global.max_user_connections;
@@global.max_user_connections
-4294967295
+0
SET @@global.max_user_connections = 429496729500;
+Warnings:
+Warning 1292 Truncated incorrect max_user_connections value: '429496729500'
SELECT @@global.max_user_connections;
@@global.max_user_connections
-4294967196
-SET @@global.max_user_connections = 65530.34.;
-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 '.' at line 1
+4294967295
+SET @@global.max_user_connections = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_user_connections'
SELECT @@global.max_user_connections;
@@global.max_user_connections
-4294967196
+4294967295
SET @@global.max_user_connections = test;
ERROR 42000: Incorrect argument type to variable 'max_user_connections'
SELECT @@global.max_user_connections;
@@global.max_user_connections
-4294967196
+4294967295
'#------------------FN_DYNVARS_087_06-----------------------#'
SELECT @@global.max_user_connections = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
diff --git a/mysql-test/suite/sys_vars/r/max_write_lock_count_basic_32.result b/mysql-test/suite/sys_vars/r/max_write_lock_count_basic_32.result
index 24af37260b7..59d92d5cfe8 100644
--- a/mysql-test/suite/sys_vars/r/max_write_lock_count_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/max_write_lock_count_basic_32.result
@@ -59,8 +59,8 @@ Warning 1292 Truncated incorrect max_write_lock_count value: '429496729500'
SELECT @@global.max_write_lock_count;
@@global.max_write_lock_count
4294967295
-SET @@global.max_write_lock_count = 65530.34.;
-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 '.' at line 1
+SET @@global.max_write_lock_count = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_write_lock_count'
SELECT @@global.max_write_lock_count;
@@global.max_write_lock_count
4294967295
diff --git a/mysql-test/suite/sys_vars/r/max_write_lock_count_basic_64.result b/mysql-test/suite/sys_vars/r/max_write_lock_count_basic_64.result
index 934777e38d3..af675e40e19 100644
--- a/mysql-test/suite/sys_vars/r/max_write_lock_count_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/max_write_lock_count_basic_64.result
@@ -55,8 +55,8 @@ SET @@global.max_write_lock_count = 429496729500;
SELECT @@global.max_write_lock_count;
@@global.max_write_lock_count
429496729500
-SET @@global.max_write_lock_count = 65530.34.;
-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 '.' at line 1
+SET @@global.max_write_lock_count = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'max_write_lock_count'
SELECT @@global.max_write_lock_count;
@@global.max_write_lock_count
429496729500
diff --git a/mysql-test/suite/sys_vars/r/maximum_basic.result b/mysql-test/suite/sys_vars/r/maximum_basic.result
new file mode 100644
index 00000000000..20b6bbc962e
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/maximum_basic.result
@@ -0,0 +1,18 @@
+SET @@session.auto_increment_increment=40960;
+Warnings:
+Warning 1292 Truncated incorrect auto_increment_increment value: '40960'
+SELECT @@session.auto_increment_increment;
+@@session.auto_increment_increment
+8192
+SET @@session.tmp_table_size=40960;
+Warnings:
+Warning 1292 Truncated incorrect tmp_table_size value: '40960'
+SELECT @@session.tmp_table_size;
+@@session.tmp_table_size
+8192
+SET @@session.max_join_size=40960;
+Warnings:
+Warning 1292 Truncated incorrect max_join_size value: '40960'
+SELECT @@session.max_join_size;
+@@session.max_join_size
+8192
diff --git a/mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_32.result b/mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_32.result
index c40640ffa3a..b4b1b9ae402 100644
--- a/mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_32.result
@@ -93,8 +93,8 @@ Warning 1292 Truncated incorrect min_examined_row_limit value: '429496729500'
SELECT @@global.min_examined_row_limit;
@@global.min_examined_row_limit
4294967295
-SET @@global.min_examined_row_limit = 65530.34.;
-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 '.' at line 1
+SET @@global.min_examined_row_limit = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'min_examined_row_limit'
SELECT @@global.min_examined_row_limit;
@@global.min_examined_row_limit
4294967295
@@ -115,15 +115,14 @@ Warning 1292 Truncated incorrect min_examined_row_limit value: '-1'
SELECT @@session.min_examined_row_limit;
@@session.min_examined_row_limit
0
-SET @@session.min_examined_row_limit = 65530.34.;
-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 '.' at line 1
+SET @@session.min_examined_row_limit = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'min_examined_row_limit'
SET @@session.min_examined_row_limit = 4294967295021;
Warnings:
Warning 1292 Truncated incorrect min_examined_row_limit value: '4294967295021'
SELECT @@session.min_examined_row_limit;
@@session.min_examined_row_limit
4294967295
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.min_examined_row_limit = test;
ERROR 42000: Incorrect argument type to variable 'min_examined_row_limit'
SELECT @@session.min_examined_row_limit;
diff --git a/mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_64.result b/mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_64.result
index 5cf77ed6dc8..30ccfce0175 100644
--- a/mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_64.result
@@ -91,8 +91,8 @@ SET @@global.min_examined_row_limit = 429496729500;
SELECT @@global.min_examined_row_limit;
@@global.min_examined_row_limit
429496729500
-SET @@global.min_examined_row_limit = 65530.34.;
-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 '.' at line 1
+SET @@global.min_examined_row_limit = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'min_examined_row_limit'
SELECT @@global.min_examined_row_limit;
@@global.min_examined_row_limit
429496729500
@@ -111,13 +111,12 @@ Warning 1292 Truncated incorrect min_examined_row_limit value: '-1'
SELECT @@session.min_examined_row_limit;
@@session.min_examined_row_limit
0
-SET @@session.min_examined_row_limit = 65530.34.;
-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 '.' at line 1
+SET @@session.min_examined_row_limit = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'min_examined_row_limit'
SET @@session.min_examined_row_limit = 4294967295021;
SELECT @@session.min_examined_row_limit;
@@session.min_examined_row_limit
4294967295021
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.min_examined_row_limit = test;
ERROR 42000: Incorrect argument type to variable 'min_examined_row_limit'
SELECT @@session.min_examined_row_limit;
diff --git a/mysql-test/suite/sys_vars/r/myisam_data_pointer_size_basic.result b/mysql-test/suite/sys_vars/r/myisam_data_pointer_size_basic.result
index 86f7788fcdf..be5731c83bd 100644
--- a/mysql-test/suite/sys_vars/r/myisam_data_pointer_size_basic.result
+++ b/mysql-test/suite/sys_vars/r/myisam_data_pointer_size_basic.result
@@ -70,8 +70,8 @@ Warning 1292 Truncated incorrect myisam_data_pointer_size value: '4294967296'
SELECT @@global.myisam_data_pointer_size;
@@global.myisam_data_pointer_size
7
-SET @@global.myisam_data_pointer_size = 65530.34.;
-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 '.' at line 1
+SET @@global.myisam_data_pointer_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'myisam_data_pointer_size'
SELECT @@global.myisam_data_pointer_size;
@@global.myisam_data_pointer_size
7
@@ -80,7 +80,6 @@ ERROR 42000: Incorrect argument type to variable 'myisam_data_pointer_size'
SELECT @@global.myisam_data_pointer_size;
@@global.myisam_data_pointer_size
7
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
'#------------------FN_DYNVARS_093_06-----------------------#'
SET @@global.myisam_data_pointer_size = 3;
SELECT @@global.myisam_data_pointer_size = VARIABLE_VALUE
diff --git a/mysql-test/suite/sys_vars/r/myisam_data_pointer_size_func.result b/mysql-test/suite/sys_vars/r/myisam_data_pointer_size_func.result
index 82d9a7dad66..58bb0d0b52b 100644
--- a/mysql-test/suite/sys_vars/r/myisam_data_pointer_size_func.result
+++ b/mysql-test/suite/sys_vars/r/myisam_data_pointer_size_func.result
@@ -1,3 +1,4 @@
+call mtr.add_suppression("The table 't1' is full");
'#--------------------FN_DYNVARS_093_01-------------------------#'
SET @start_value= @@global.myisam_data_pointer_size;
SET @@global.myisam_data_pointer_size = 2;
diff --git a/mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_32.result b/mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_32.result
index b2a8603de92..ab4f136db6f 100644
--- a/mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_32.result
@@ -4,11 +4,12 @@ SELECT @start_global_value;
2146435072
'#--------------------FN_DYNVARS_094_01-------------------------#'
SET @@global.myisam_max_sort_file_size = 500000;
+Warnings:
+Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '500000'
SET @@global.myisam_max_sort_file_size = DEFAULT;
SELECT @@global.myisam_max_sort_file_size;
@@global.myisam_max_sort_file_size
2146435072
-'Bug# 34876: This variable has invalid default value as compared to documentation';
'#--------------------FN_DYNVARS_094_02-------------------------#'
SET @@global.myisam_max_sort_file_size = DEFAULT;
SELECT @@global.myisam_max_sort_file_size = 2147483648;
@@ -20,10 +21,14 @@ SELECT @@global.myisam_max_sort_file_size;
@@global.myisam_max_sort_file_size
0
SET @@global.myisam_max_sort_file_size = 1024;
+Warnings:
+Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '1024'
SELECT @@global.myisam_max_sort_file_size;
@@global.myisam_max_sort_file_size
0
SET @@global.myisam_max_sort_file_size = 123456789;
+Warnings:
+Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '123456789'
SELECT @@global.myisam_max_sort_file_size;
@@global.myisam_max_sort_file_size
122683392
@@ -65,8 +70,8 @@ Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '-2147483649'
SELECT @@global.myisam_max_sort_file_size;
@@global.myisam_max_sort_file_size
0
-SET @@global.myisam_max_sort_file_size = 65530.34.;
-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 '.' at line 1
+SET @@global.myisam_max_sort_file_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'myisam_max_sort_file_size'
SELECT @@global.myisam_max_sort_file_size;
@@global.myisam_max_sort_file_size
0
@@ -77,9 +82,10 @@ SELECT @@global.myisam_max_sort_file_size;
0
SET @@global.myisam_max_sort_file_size = 1G;
ERROR 42000: Incorrect argument type to variable 'myisam_max_sort_file_size'
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
'#------------------FN_DYNVARS_094_06-----------------------#'
SET @@global.myisam_max_sort_file_size = 3000;
+Warnings:
+Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '3000'
SELECT @@global.myisam_max_sort_file_size = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='myisam_max_sort_file_size';
@@ -93,6 +99,8 @@ count(VARIABLE_VALUE)
1
'#------------------FN_DYNVARS_094_08-----------------------#'
SET @@global.myisam_max_sort_file_size = TRUE;
+Warnings:
+Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '1'
SELECT @@global.myisam_max_sort_file_size;
@@global.myisam_max_sort_file_size
0
@@ -102,6 +110,8 @@ SELECT @@global.myisam_max_sort_file_size;
0
'#---------------------FN_DYNVARS_001_09----------------------#'
SET @@global.myisam_max_sort_file_size = 512;
+Warnings:
+Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '512'
SELECT @@myisam_max_sort_file_size = @@global.myisam_max_sort_file_size;
@@myisam_max_sort_file_size = @@global.myisam_max_sort_file_size
1
@@ -114,6 +124,8 @@ SELECT @@myisam_max_sort_file_size;
@@myisam_max_sort_file_size
0
SET global myisam_max_sort_file_size = 64;
+Warnings:
+Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '64'
SET @@global.myisam_max_sort_file_size = @start_global_value;
SELECT @@global.myisam_max_sort_file_size;
@@global.myisam_max_sort_file_size
diff --git a/mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_64.result b/mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_64.result
index df2a49e4dd5..0cef4de3630 100644
--- a/mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_64.result
@@ -4,11 +4,12 @@ SELECT @start_global_value;
9223372036853727232
'#--------------------FN_DYNVARS_094_01-------------------------#'
SET @@global.myisam_max_sort_file_size = 500000;
+Warnings:
+Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '500000'
SET @@global.myisam_max_sort_file_size = DEFAULT;
SELECT @@global.myisam_max_sort_file_size;
@@global.myisam_max_sort_file_size
9223372036853727232
-'Bug# 34876: This variable has invalid default value as compared to documentation';
'#--------------------FN_DYNVARS_094_02-------------------------#'
SET @@global.myisam_max_sort_file_size = DEFAULT;
SELECT @@global.myisam_max_sort_file_size = 2147483648;
@@ -20,10 +21,14 @@ SELECT @@global.myisam_max_sort_file_size;
@@global.myisam_max_sort_file_size
0
SET @@global.myisam_max_sort_file_size = 1024;
+Warnings:
+Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '1024'
SELECT @@global.myisam_max_sort_file_size;
@@global.myisam_max_sort_file_size
0
SET @@global.myisam_max_sort_file_size = 123456789;
+Warnings:
+Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '123456789'
SELECT @@global.myisam_max_sort_file_size;
@@global.myisam_max_sort_file_size
122683392
@@ -65,8 +70,8 @@ Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '-2147483649'
SELECT @@global.myisam_max_sort_file_size;
@@global.myisam_max_sort_file_size
0
-SET @@global.myisam_max_sort_file_size = 65530.34.;
-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 '.' at line 1
+SET @@global.myisam_max_sort_file_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'myisam_max_sort_file_size'
SELECT @@global.myisam_max_sort_file_size;
@@global.myisam_max_sort_file_size
0
@@ -77,9 +82,10 @@ SELECT @@global.myisam_max_sort_file_size;
0
SET @@global.myisam_max_sort_file_size = 1G;
ERROR 42000: Incorrect argument type to variable 'myisam_max_sort_file_size'
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
'#------------------FN_DYNVARS_094_06-----------------------#'
SET @@global.myisam_max_sort_file_size = 3000;
+Warnings:
+Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '3000'
SELECT @@global.myisam_max_sort_file_size = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='myisam_max_sort_file_size';
@@ -93,6 +99,8 @@ count(VARIABLE_VALUE)
1
'#------------------FN_DYNVARS_094_08-----------------------#'
SET @@global.myisam_max_sort_file_size = TRUE;
+Warnings:
+Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '1'
SELECT @@global.myisam_max_sort_file_size;
@@global.myisam_max_sort_file_size
0
@@ -102,6 +110,8 @@ SELECT @@global.myisam_max_sort_file_size;
0
'#---------------------FN_DYNVARS_001_09----------------------#'
SET @@global.myisam_max_sort_file_size = 512;
+Warnings:
+Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '512'
SELECT @@myisam_max_sort_file_size = @@global.myisam_max_sort_file_size;
@@myisam_max_sort_file_size = @@global.myisam_max_sort_file_size
1
@@ -114,6 +124,8 @@ SELECT @@myisam_max_sort_file_size;
@@myisam_max_sort_file_size
0
SET global myisam_max_sort_file_size = 64;
+Warnings:
+Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '64'
SET @@global.myisam_max_sort_file_size = @start_global_value;
SELECT @@global.myisam_max_sort_file_size;
@@global.myisam_max_sort_file_size
diff --git a/mysql-test/suite/sys_vars/r/myisam_mmap_size_basic.result b/mysql-test/suite/sys_vars/r/myisam_mmap_size_basic.result
new file mode 100644
index 00000000000..8919c090e96
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/myisam_mmap_size_basic.result
@@ -0,0 +1,21 @@
+select @@global.myisam_mmap_size;
+@@global.myisam_mmap_size
+18446744073709551615
+select @@session.myisam_mmap_size;
+ERROR HY000: Variable 'myisam_mmap_size' is a GLOBAL variable
+show global variables like 'myisam_mmap_size';
+Variable_name Value
+myisam_mmap_size 18446744073709551615
+show session variables like 'myisam_mmap_size';
+Variable_name Value
+myisam_mmap_size 18446744073709551615
+select * from information_schema.global_variables where variable_name='myisam_mmap_size';
+VARIABLE_NAME VARIABLE_VALUE
+MYISAM_MMAP_SIZE 18446744073709551615
+select * from information_schema.session_variables where variable_name='myisam_mmap_size';
+VARIABLE_NAME VARIABLE_VALUE
+MYISAM_MMAP_SIZE 18446744073709551615
+set global myisam_mmap_size=1;
+ERROR HY000: Variable 'myisam_mmap_size' is a read only variable
+set session myisam_mmap_size=1;
+ERROR HY000: Variable 'myisam_mmap_size' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/myisam_recover_options_basic.result b/mysql-test/suite/sys_vars/r/myisam_recover_options_basic.result
new file mode 100644
index 00000000000..22384d3c6ef
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/myisam_recover_options_basic.result
@@ -0,0 +1,21 @@
+select @@global.myisam_recover_options;
+@@global.myisam_recover_options
+OFF
+select @@session.myisam_recover_options;
+ERROR HY000: Variable 'myisam_recover_options' is a GLOBAL variable
+show global variables like 'myisam_recover_options';
+Variable_name Value
+myisam_recover_options OFF
+show session variables like 'myisam_recover_options';
+Variable_name Value
+myisam_recover_options OFF
+select * from information_schema.global_variables where variable_name='myisam_recover_options';
+VARIABLE_NAME VARIABLE_VALUE
+MYISAM_RECOVER_OPTIONS OFF
+select * from information_schema.session_variables where variable_name='myisam_recover_options';
+VARIABLE_NAME VARIABLE_VALUE
+MYISAM_RECOVER_OPTIONS OFF
+set global myisam_recover_options=1;
+ERROR HY000: Variable 'myisam_recover_options' is a read only variable
+set session myisam_recover_options=1;
+ERROR HY000: Variable 'myisam_recover_options' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_32.result b/mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_32.result
index 64321814746..491f25a3d07 100644
--- a/mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_32.result
@@ -71,8 +71,8 @@ Warning 1292 Truncated incorrect myisam_repair_threads value: '429496729533'
SELECT @@global.myisam_repair_threads ;
@@global.myisam_repair_threads
4294967295
-SET @@global.myisam_repair_threads = 65530.34.;
-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 '.' at line 1
+SET @@global.myisam_repair_threads = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads'
SELECT @@global.myisam_repair_threads ;
@@global.myisam_repair_threads
4294967295
@@ -108,8 +108,8 @@ Warning 1292 Truncated incorrect myisam_repair_threads value: '-2'
SELECT @@session.myisam_repair_threads ;
@@session.myisam_repair_threads
1
-SET @@session.myisam_repair_threads = 65530.34.;
-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 '.' at line 1
+SET @@session.myisam_repair_threads = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads'
SELECT @@session.myisam_repair_threads ;
@@session.myisam_repair_threads
1
diff --git a/mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_64.result b/mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_64.result
index 0a317d28b11..50589c4041c 100644
--- a/mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_64.result
@@ -69,8 +69,8 @@ SET @@global.myisam_repair_threads = 429496729533;
SELECT @@global.myisam_repair_threads ;
@@global.myisam_repair_threads
429496729533
-SET @@global.myisam_repair_threads = 65530.34.;
-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 '.' at line 1
+SET @@global.myisam_repair_threads = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads'
SELECT @@global.myisam_repair_threads ;
@@global.myisam_repair_threads
429496729533
@@ -106,8 +106,8 @@ Warning 1292 Truncated incorrect myisam_repair_threads value: '-2'
SELECT @@session.myisam_repair_threads ;
@@session.myisam_repair_threads
1
-SET @@session.myisam_repair_threads = 65530.34.;
-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 '.' at line 1
+SET @@session.myisam_repair_threads = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads'
SELECT @@session.myisam_repair_threads ;
@@session.myisam_repair_threads
1
diff --git a/mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic.result b/mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic.result
deleted file mode 100644
index 74d2fb3ec86..00000000000
--- a/mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic.result
+++ /dev/null
@@ -1,184 +0,0 @@
-SET @start_global_value = @@global.myisam_sort_buffer_size ;
-SELECT @start_global_value;
-@start_global_value
-8388608
-SET @start_session_value = @@session.myisam_sort_buffer_size ;
-SELECT @start_session_value;
-@start_session_value
-8388608
-'#--------------------FN_DYNVARS_005_01-------------------------#'
-SET @@global.myisam_sort_buffer_size = 100;
-SET @@global.myisam_sort_buffer_size = DEFAULT;
-SELECT @@global.myisam_sort_buffer_size ;
-@@global.myisam_sort_buffer_size
-8388608
-SET @@session.myisam_sort_buffer_size = 200;
-SET @@session.myisam_sort_buffer_size = DEFAULT;
-SELECT @@session.myisam_sort_buffer_size ;
-@@session.myisam_sort_buffer_size
-8388608
-'#--------------------FN_DYNVARS_005_02-------------------------#'
-SET @@global.myisam_sort_buffer_size = DEFAULT;
-SELECT @@global.myisam_sort_buffer_size = 8388608;
-@@global.myisam_sort_buffer_size = 8388608
-1
-SET @@session.myisam_sort_buffer_size = DEFAULT;
-SELECT @@session.myisam_sort_buffer_size = 8388608;
-@@session.myisam_sort_buffer_size = 8388608
-1
-'#--------------------FN_DYNVARS_005_03-------------------------#'
-SET @@global.myisam_sort_buffer_size = 4;
-SELECT @@global.myisam_sort_buffer_size ;
-@@global.myisam_sort_buffer_size
-4
-SET @@global.myisam_sort_buffer_size = 4294967295;
-SELECT @@global.myisam_sort_buffer_size ;
-@@global.myisam_sort_buffer_size
-4294967295
-SET @@global.myisam_sort_buffer_size = 655354;
-SELECT @@global.myisam_sort_buffer_size ;
-@@global.myisam_sort_buffer_size
-655354
-'#--------------------FN_DYNVARS_005_04-------------------------#'
-SET @@session.myisam_sort_buffer_size = 4;
-SELECT @@session.myisam_sort_buffer_size ;
-@@session.myisam_sort_buffer_size
-4
-SET @@session.myisam_sort_buffer_size = 4294967295;
-SELECT @@session.myisam_sort_buffer_size ;
-@@session.myisam_sort_buffer_size
-4294967295
-SET @@session.myisam_sort_buffer_size = 655345;
-SELECT @@session.myisam_sort_buffer_size ;
-@@session.myisam_sort_buffer_size
-655345
-'#------------------FN_DYNVARS_005_05-----------------------#'
-SET @@global.myisam_sort_buffer_size = 0;
-Warnings:
-Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0'
-SELECT @@global.myisam_sort_buffer_size ;
-@@global.myisam_sort_buffer_size
-4
-SET @@global.myisam_sort_buffer_size = -1024;
-Warnings:
-Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0'
-SELECT @@global.myisam_sort_buffer_size ;
-@@global.myisam_sort_buffer_size
-4
-SET @@global.myisam_sort_buffer_size = 429496729533;
-Warnings:
-Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '429496729533'
-SELECT @@global.myisam_sort_buffer_size ;
-@@global.myisam_sort_buffer_size
-4294967295
-SET @@global.myisam_sort_buffer_size = 65530.34.;
-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 '.' at line 1
-SELECT @@global.myisam_sort_buffer_size ;
-@@global.myisam_sort_buffer_size
-4294967295
-SET @@global.myisam_sort_buffer_size = test;
-ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size'
-SELECT @@global.myisam_sort_buffer_size ;
-@@global.myisam_sort_buffer_size
-4294967295
-SET @@global.myisam_sort_buffer_size = "test";
-ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size'
-SELECT @@global.myisam_sort_buffer_size ;
-@@global.myisam_sort_buffer_size
-4294967295
-SET @@global.myisam_sort_buffer_size = 'test';
-ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size'
-SELECT @@global.myisam_sort_buffer_size ;
-@@global.myisam_sort_buffer_size
-4294967295
-SET @@global.myisam_sort_buffer_size = ON;
-ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size'
-SELECT @@global.myisam_sort_buffer_size ;
-@@global.myisam_sort_buffer_size
-4294967295
-SET @@session.myisam_sort_buffer_size = 0;
-Warnings:
-Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0'
-SELECT @@session.myisam_sort_buffer_size ;
-@@session.myisam_sort_buffer_size
-4
-SET @@session.myisam_sort_buffer_size = -2;
-Warnings:
-Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0'
-SELECT @@session.myisam_sort_buffer_size ;
-@@session.myisam_sort_buffer_size
-4
-SET @@session.myisam_sort_buffer_size = 65530.34.;
-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 '.' at line 1
-SELECT @@session.myisam_sort_buffer_size ;
-@@session.myisam_sort_buffer_size
-4
-SET @@session.myisam_sort_buffer_size = test;
-ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size'
-SELECT @@session.myisam_sort_buffer_size ;
-@@session.myisam_sort_buffer_size
-4
-SET @@session.myisam_sort_buffer_size = "test";
-ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size'
-SELECT @@session.myisam_sort_buffer_size ;
-@@session.myisam_sort_buffer_size
-4
-'#------------------FN_DYNVARS_005_06-----------------------#'
-SELECT @@global.myisam_sort_buffer_size = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='myisam_sort_buffer_size ';
-@@global.myisam_sort_buffer_size = VARIABLE_VALUE
-1
-'#------------------FN_DYNVARS_005_07-----------------------#'
-SELECT @@session.myisam_sort_buffer_size = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.SESSION_VARIABLES
-WHERE VARIABLE_NAME='myisam_sort_buffer_size ';
-@@session.myisam_sort_buffer_size = VARIABLE_VALUE
-1
-'#------------------FN_DYNVARS_005_08-----------------------#'
-SET @@global.myisam_sort_buffer_size = TRUE;
-Warnings:
-Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '1'
-SELECT @@global.myisam_sort_buffer_size ;
-@@global.myisam_sort_buffer_size
-4
-SET @@global.myisam_sort_buffer_size = FALSE;
-Warnings:
-Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0'
-SELECT @@global.myisam_sort_buffer_size ;
-@@global.myisam_sort_buffer_size
-4
-'#---------------------FN_DYNVARS_001_09----------------------#'
-SET @@global.myisam_sort_buffer_size = 10;
-SELECT @@myisam_sort_buffer_size = @@global.myisam_sort_buffer_size ;
-@@myisam_sort_buffer_size = @@global.myisam_sort_buffer_size
-0
-'#---------------------FN_DYNVARS_001_10----------------------#'
-SET @@myisam_sort_buffer_size = 100;
-SELECT @@myisam_sort_buffer_size = @@local.myisam_sort_buffer_size ;
-@@myisam_sort_buffer_size = @@local.myisam_sort_buffer_size
-1
-SELECT @@local.myisam_sort_buffer_size = @@session.myisam_sort_buffer_size ;
-@@local.myisam_sort_buffer_size = @@session.myisam_sort_buffer_size
-1
-'#---------------------FN_DYNVARS_001_11----------------------#'
-SET myisam_sort_buffer_size = 1;
-Warnings:
-Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '1'
-SELECT @@myisam_sort_buffer_size ;
-@@myisam_sort_buffer_size
-4
-SELECT local.myisam_sort_buffer_size ;
-ERROR 42S02: Unknown table 'local' in field list
-SELECT session.myisam_sort_buffer_size ;
-ERROR 42S02: Unknown table 'session' in field list
-SELECT myisam_sort_buffer_size = @@session.myisam_sort_buffer_size ;
-ERROR 42S22: Unknown column 'myisam_sort_buffer_size' in 'field list'
-SET @@global.myisam_sort_buffer_size = @start_global_value;
-SELECT @@global.myisam_sort_buffer_size ;
-@@global.myisam_sort_buffer_size
-8388608
-SET @@session.myisam_sort_buffer_size = @start_session_value;
-SELECT @@session.myisam_sort_buffer_size ;
-@@session.myisam_sort_buffer_size
-8388608
diff --git a/mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_32.result b/mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_32.result
index 2657d599df7..5cb52734d21 100644
--- a/mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_32.result
@@ -71,8 +71,8 @@ Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '429496729533'
SELECT @@global.myisam_sort_buffer_size ;
@@global.myisam_sort_buffer_size
4294967295
-SET @@global.myisam_sort_buffer_size = 65530.34.;
-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 '.' at line 1
+SET @@global.myisam_sort_buffer_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size'
SELECT @@global.myisam_sort_buffer_size ;
@@global.myisam_sort_buffer_size
4294967295
@@ -108,8 +108,8 @@ Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '-2'
SELECT @@session.myisam_sort_buffer_size ;
@@session.myisam_sort_buffer_size
4
-SET @@session.myisam_sort_buffer_size = 65530.34.;
-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 '.' at line 1
+SET @@session.myisam_sort_buffer_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size'
SELECT @@session.myisam_sort_buffer_size ;
@@session.myisam_sort_buffer_size
4
diff --git a/mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_64.result b/mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_64.result
index be9e415d830..2069b32fdcd 100644
--- a/mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_64.result
@@ -69,8 +69,8 @@ SET @@global.myisam_sort_buffer_size = 429496729533;
SELECT @@global.myisam_sort_buffer_size ;
@@global.myisam_sort_buffer_size
429496729533
-SET @@global.myisam_sort_buffer_size = 65530.34.;
-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 '.' at line 1
+SET @@global.myisam_sort_buffer_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size'
SELECT @@global.myisam_sort_buffer_size ;
@@global.myisam_sort_buffer_size
429496729533
@@ -106,8 +106,8 @@ Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '-2'
SELECT @@session.myisam_sort_buffer_size ;
@@session.myisam_sort_buffer_size
4
-SET @@session.myisam_sort_buffer_size = 65530.34.;
-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 '.' at line 1
+SET @@session.myisam_sort_buffer_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size'
SELECT @@session.myisam_sort_buffer_size ;
@@session.myisam_sort_buffer_size
4
diff --git a/mysql-test/suite/sys_vars/r/myisam_stats_method_basic.result b/mysql-test/suite/sys_vars/r/myisam_stats_method_basic.result
index 3272ef6e538..f5f1c2d59cf 100644
--- a/mysql-test/suite/sys_vars/r/myisam_stats_method_basic.result
+++ b/mysql-test/suite/sys_vars/r/myisam_stats_method_basic.result
@@ -91,35 +91,7 @@ SELECT @@global.myisam_stats_method;
@@global.myisam_stats_method
nulls_ignored
SET @@global.myisam_stats_method = 0.4;
-SELECT @@global.myisam_stats_method;
-@@global.myisam_stats_method
-nulls_unequal
-SET @@global.myisam_stats_method = 1.0;
-SELECT @@global.myisam_stats_method;
-@@global.myisam_stats_method
-nulls_equal
-SET @@global.myisam_stats_method = 1.1;
-SELECT @@global.myisam_stats_method;
-@@global.myisam_stats_method
-nulls_equal
-SET @@global.myisam_stats_method = 1.5;
-SELECT @@global.myisam_stats_method;
-@@global.myisam_stats_method
-nulls_ignored
-SET @@global.myisam_stats_method = 2.49;
-SELECT @@global.myisam_stats_method;
-@@global.myisam_stats_method
-nulls_ignored
-SET @@session.myisam_stats_method = 0.5;
-SELECT @@session.myisam_stats_method;
-@@session.myisam_stats_method
-nulls_equal
-SET @@session.myisam_stats_method = 1.6;
-SELECT @@session.myisam_stats_method;
-@@session.myisam_stats_method
-nulls_ignored
-'Bug# 34877: Decimal values can be used within the range [0.0-2.5). Values';
-'are rounded to 0,1,2 as evident from outcome.';
+ERROR 42000: Incorrect argument type to variable 'myisam_stats_method'
SET @@global.myisam_stats_method = 3;
ERROR 42000: Variable 'myisam_stats_method' can't be set to the value of '3'
'#---------------------FN_DYNVARS_097_08----------------------#'
diff --git a/mysql-test/suite/sys_vars/r/myisam_use_mmap_basic.result b/mysql-test/suite/sys_vars/r/myisam_use_mmap_basic.result
index c0f92acb983..4b0e4afa38e 100644
--- a/mysql-test/suite/sys_vars/r/myisam_use_mmap_basic.result
+++ b/mysql-test/suite/sys_vars/r/myisam_use_mmap_basic.result
@@ -11,10 +11,10 @@ COUNT(@@GLOBAL.myisam_use_mmap)
1
1 Expected
'#---------------------BS_STVARS_042_03----------------------#'
-SELECT @@GLOBAL.myisam_use_mmap = VARIABLE_VALUE
+SELECT IF(@@GLOBAL.myisam_use_mmap, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='myisam_use_mmap';
-@@GLOBAL.myisam_use_mmap = VARIABLE_VALUE
+IF(@@GLOBAL.myisam_use_mmap, "ON", "OFF") = VARIABLE_VALUE
1
1 Expected
SELECT COUNT(@@GLOBAL.myisam_use_mmap);
diff --git a/mysql-test/suite/sys_vars/r/named_pipe_basic.result b/mysql-test/suite/sys_vars/r/named_pipe_basic.result
new file mode 100644
index 00000000000..472a4f4d0f6
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/named_pipe_basic.result
@@ -0,0 +1,21 @@
+select @@global.named_pipe;
+@@global.named_pipe
+0
+select @@session.named_pipe;
+ERROR HY000: Variable 'named_pipe' is a GLOBAL variable
+show global variables like 'named_pipe';
+Variable_name Value
+named_pipe OFF
+show session variables like 'named_pipe';
+Variable_name Value
+named_pipe OFF
+select * from information_schema.global_variables where variable_name='named_pipe';
+VARIABLE_NAME VARIABLE_VALUE
+NAMED_PIPE OFF
+select * from information_schema.session_variables where variable_name='named_pipe';
+VARIABLE_NAME VARIABLE_VALUE
+NAMED_PIPE OFF
+set global named_pipe=1;
+ERROR HY000: Variable 'named_pipe' is a read only variable
+set session named_pipe=1;
+ERROR HY000: Variable 'named_pipe' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/net_buffer_length_basic.result b/mysql-test/suite/sys_vars/r/net_buffer_length_basic.result
index 07f933b5a4b..178ada08d65 100644
--- a/mysql-test/suite/sys_vars/r/net_buffer_length_basic.result
+++ b/mysql-test/suite/sys_vars/r/net_buffer_length_basic.result
@@ -2,6 +2,8 @@ SET @start_global_value = @@global.net_buffer_length;
SET @@global.net_buffer_length = DEFAULT;
'#--------------------FN_DYNVARS_109_01-------------------------#'
SET @@global.net_buffer_length = 10000;
+Warnings:
+Warning 1292 Truncated incorrect net_buffer_length value: '10000'
SET @@global.net_buffer_length = DEFAULT;
SELECT @@global.net_buffer_length;
@@global.net_buffer_length
@@ -9,7 +11,7 @@ SELECT @@global.net_buffer_length;
SET @@session.net_buffer_length = 20000;
ERROR HY000: SESSION variable 'net_buffer_length' is read-only. Use SET GLOBAL to assign the value
SET @@session.net_buffer_length = DEFAULT;
-ERROR 42000: Variable 'net_buffer_length' doesn't have a default value
+ERROR HY000: SESSION variable 'net_buffer_length' is read-only. Use SET GLOBAL to assign the value
SELECT @@session.net_buffer_length;
@@session.net_buffer_length
16384
@@ -24,6 +26,8 @@ SELECT @@global.net_buffer_length;
@@global.net_buffer_length
1024
SET @@global.net_buffer_length = 1025;
+Warnings:
+Warning 1292 Truncated incorrect net_buffer_length value: '1025'
SELECT @@global.net_buffer_length;
@@global.net_buffer_length
1024
@@ -32,14 +36,17 @@ SELECT @@global.net_buffer_length;
@@global.net_buffer_length
1048576
SET @@global.net_buffer_length = 1048575;
+Warnings:
+Warning 1292 Truncated incorrect net_buffer_length value: '1048575'
SELECT @@global.net_buffer_length;
@@global.net_buffer_length
1047552
SET @@global.net_buffer_length = 65535;
+Warnings:
+Warning 1292 Truncated incorrect net_buffer_length value: '65535'
SELECT @@global.net_buffer_length;
@@global.net_buffer_length
64512
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
'#--------------------FN_DYNVARS_109_04-------------------------#'
'#------------------FN_DYNVARS_109_05-----------------------#'
SET @@global.net_buffer_length = 0;
@@ -72,8 +79,8 @@ Warning 1292 Truncated incorrect net_buffer_length value: '104857633'
SELECT @@global.net_buffer_length;
@@global.net_buffer_length
1048576
-SET @@global.net_buffer_length = 65530.34.;
-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 '.' at line 1
+SET @@global.net_buffer_length = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'net_buffer_length'
SELECT @@global.net_buffer_length;
@@global.net_buffer_length
1048576
@@ -82,7 +89,6 @@ ERROR 42000: Incorrect argument type to variable 'net_buffer_length'
SELECT @@global.net_buffer_length;
@@global.net_buffer_length
1048576
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.net_buffer_length = test;
ERROR 42000: Incorrect argument type to variable 'net_buffer_length'
SELECT @@session.net_buffer_length;
diff --git a/mysql-test/suite/sys_vars/r/net_read_timeout_basic.result b/mysql-test/suite/sys_vars/r/net_read_timeout_basic.result
index aeee25c6526..7d2826ffed1 100644
--- a/mysql-test/suite/sys_vars/r/net_read_timeout_basic.result
+++ b/mysql-test/suite/sys_vars/r/net_read_timeout_basic.result
@@ -71,8 +71,8 @@ Warning 1292 Truncated incorrect net_read_timeout value: '655360354'
SELECT @@global.net_read_timeout;
@@global.net_read_timeout
31536000
-SET @@global.net_read_timeout = 65530.34.;
-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 '.' at line 1
+SET @@global.net_read_timeout = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'net_read_timeout'
SELECT @@global.net_read_timeout;
@@global.net_read_timeout
31536000
@@ -93,15 +93,14 @@ Warning 1292 Truncated incorrect net_read_timeout value: '-2'
SELECT @@session.net_read_timeout;
@@session.net_read_timeout
1
-SET @@session.net_read_timeout = 65530.34.;
-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 '.' at line 1
+SET @@session.net_read_timeout = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'net_read_timeout'
SET @@session.net_read_timeout = 6555015425;
Warnings:
Warning 1292 Truncated incorrect net_read_timeout value: '6555015425'
SELECT @@session.net_read_timeout;
@@session.net_read_timeout
31536000
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.net_read_timeout = test;
ERROR 42000: Incorrect argument type to variable 'net_read_timeout'
SELECT @@session.net_read_timeout;
diff --git a/mysql-test/suite/sys_vars/r/net_retry_count_basic_32.result b/mysql-test/suite/sys_vars/r/net_retry_count_basic_32.result
index 7a8b99ac55c..46eb9d5e1c0 100644
--- a/mysql-test/suite/sys_vars/r/net_retry_count_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/net_retry_count_basic_32.result
@@ -93,8 +93,8 @@ Warning 1292 Truncated incorrect net_retry_count value: '429496729500'
SELECT @@global.net_retry_count;
@@global.net_retry_count
4294967295
-SET @@global.net_retry_count = 65530.34.;
-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 '.' at line 1
+SET @@global.net_retry_count = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'net_retry_count'
SELECT @@global.net_retry_count;
@@global.net_retry_count
4294967295
@@ -115,8 +115,8 @@ Warning 1292 Truncated incorrect net_retry_count value: '-2'
SELECT @@session.net_retry_count;
@@session.net_retry_count
1
-SET @@session.net_retry_count = 65530.34.;
-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 '.' at line 1
+SET @@session.net_retry_count = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'net_retry_count'
SET @@session.net_retry_count = 6555015425;
Warnings:
Warning 1292 Truncated incorrect net_retry_count value: '6555015425'
@@ -129,7 +129,6 @@ Warning 1292 Truncated incorrect net_retry_count value: '4294967296'
SELECT @@session.net_retry_count;
@@session.net_retry_count
4294967295
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.net_retry_count = test;
ERROR 42000: Incorrect argument type to variable 'net_retry_count'
SELECT @@session.net_retry_count;
diff --git a/mysql-test/suite/sys_vars/r/net_retry_count_basic_64.result b/mysql-test/suite/sys_vars/r/net_retry_count_basic_64.result
index 67dae3d1291..28f0ca5be0f 100644
--- a/mysql-test/suite/sys_vars/r/net_retry_count_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/net_retry_count_basic_64.result
@@ -89,8 +89,8 @@ SET @@global.net_retry_count = 429496729500;
SELECT @@global.net_retry_count;
@@global.net_retry_count
429496729500
-SET @@global.net_retry_count = 65530.34.;
-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 '.' at line 1
+SET @@global.net_retry_count = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'net_retry_count'
SELECT @@global.net_retry_count;
@@global.net_retry_count
429496729500
@@ -111,8 +111,8 @@ Warning 1292 Truncated incorrect net_retry_count value: '-2'
SELECT @@session.net_retry_count;
@@session.net_retry_count
1
-SET @@session.net_retry_count = 65530.34.;
-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 '.' at line 1
+SET @@session.net_retry_count = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'net_retry_count'
SET @@session.net_retry_count = 6555015425;
SELECT @@session.net_retry_count;
@@session.net_retry_count
@@ -121,7 +121,6 @@ SET @@session.net_retry_count = 4294967296;
SELECT @@session.net_retry_count;
@@session.net_retry_count
4294967296
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.net_retry_count = test;
ERROR 42000: Incorrect argument type to variable 'net_retry_count'
SELECT @@session.net_retry_count;
diff --git a/mysql-test/suite/sys_vars/r/net_write_timeout_basic.result b/mysql-test/suite/sys_vars/r/net_write_timeout_basic.result
index 8857b8c0e37..28ffad86ffc 100644
--- a/mysql-test/suite/sys_vars/r/net_write_timeout_basic.result
+++ b/mysql-test/suite/sys_vars/r/net_write_timeout_basic.result
@@ -71,8 +71,8 @@ Warning 1292 Truncated incorrect net_write_timeout value: '655360354'
SELECT @@global.net_write_timeout;
@@global.net_write_timeout
31536000
-SET @@global.net_write_timeout = 65530.34.;
-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 '.' at line 1
+SET @@global.net_write_timeout = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'net_write_timeout'
SELECT @@global.net_write_timeout;
@@global.net_write_timeout
31536000
@@ -93,15 +93,14 @@ Warning 1292 Truncated incorrect net_write_timeout value: '-2'
SELECT @@session.net_write_timeout;
@@session.net_write_timeout
1
-SET @@session.net_write_timeout = 65530.34.;
-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 '.' at line 1
+SET @@session.net_write_timeout = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'net_write_timeout'
SET @@session.net_write_timeout = 6555015425;
Warnings:
Warning 1292 Truncated incorrect net_write_timeout value: '6555015425'
SELECT @@session.net_write_timeout;
@@session.net_write_timeout
31536000
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.net_write_timeout = test;
ERROR 42000: Incorrect argument type to variable 'net_write_timeout'
SELECT @@session.net_write_timeout;
diff --git a/mysql-test/suite/sys_vars/r/new_basic.result b/mysql-test/suite/sys_vars/r/new_basic.result
index b36e540ddd9..c1f11e20cca 100644
--- a/mysql-test/suite/sys_vars/r/new_basic.result
+++ b/mysql-test/suite/sys_vars/r/new_basic.result
@@ -94,7 +94,7 @@ ERROR 42000: Variable 'new' can't be set to the value of '-1024'
SET @@global.new = 65536;
ERROR 42000: Variable 'new' can't be set to the value of '65536'
SET @@global.new = 65530.34;
-ERROR 42000: Variable 'new' can't be set to the value of '65530'
+ERROR 42000: Incorrect argument type to variable 'new'
SET @@global.new = test;
ERROR 42000: Variable 'new' can't be set to the value of 'test'
SET @@session.new = ONN;
@@ -102,31 +102,28 @@ ERROR 42000: Variable 'new' can't be set to the value of 'ONN'
SET @@session.new = ONF;
ERROR 42000: Variable 'new' can't be set to the value of 'ONF'
SET @@session.new = OF;
-SELECT @@session.new;
-@@session.new
-0
-'Bug# 34828: FN_DYNVARS_113_05 - OF is also working as OFF and no error is coming';
+ERROR 42000: Variable 'new' can't be set to the value of 'OF'
SET @@session.new = 'OFN';
ERROR 42000: Variable 'new' can't be set to the value of 'OFN'
SET @@session.new = -2;
ERROR 42000: Variable 'new' can't be set to the value of '-2'
-SET @@session.new = 65530.34.;
-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 '.' at line 1
+SET @@session.new = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'new'
SET @@session.new = 65550;
ERROR 42000: Variable 'new' can't be set to the value of '65550'
SET @@session.new = test;
ERROR 42000: Variable 'new' can't be set to the value of 'test'
'#------------------FN_DYNVARS_113_06-----------------------#'
-SELECT @@global.new = VARIABLE_VALUE
+SELECT IF(@@global.new, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='new';
-@@global.new = VARIABLE_VALUE
+IF(@@global.new, "ON", "OFF") = VARIABLE_VALUE
1
'#------------------FN_DYNVARS_113_07-----------------------#'
-SELECT @@session.new = VARIABLE_VALUE
+SELECT IF(@@session.new, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='new';
-@@session.new = VARIABLE_VALUE
+IF(@@session.new, "ON", "OFF") = VARIABLE_VALUE
1
'#---------------------FN_DYNVARS_113_08----------------------#'
SET @@new = OFF;
diff --git a/mysql-test/suite/sys_vars/r/old_alter_table_basic.result b/mysql-test/suite/sys_vars/r/old_alter_table_basic.result
new file mode 100644
index 00000000000..0619235b8e0
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/old_alter_table_basic.result
@@ -0,0 +1,40 @@
+SET @start_global_value = @@global.old_alter_table;
+SELECT @start_global_value;
+@start_global_value
+0
+select @@global.old_alter_table;
+@@global.old_alter_table
+0
+select @@session.old_alter_table;
+@@session.old_alter_table
+0
+show global variables like 'old_alter_table';
+Variable_name Value
+old_alter_table OFF
+show session variables like 'old_alter_table';
+Variable_name Value
+old_alter_table OFF
+select * from information_schema.global_variables where variable_name='old_alter_table';
+VARIABLE_NAME VARIABLE_VALUE
+OLD_ALTER_TABLE OFF
+select * from information_schema.session_variables where variable_name='old_alter_table';
+VARIABLE_NAME VARIABLE_VALUE
+OLD_ALTER_TABLE OFF
+set global old_alter_table=1;
+select @@global.old_alter_table;
+@@global.old_alter_table
+1
+set session old_alter_table=ON;
+select @@session.old_alter_table;
+@@session.old_alter_table
+1
+set global old_alter_table=1.1;
+ERROR 42000: Incorrect argument type to variable 'old_alter_table'
+set global old_alter_table=1e1;
+ERROR 42000: Incorrect argument type to variable 'old_alter_table'
+set global old_alter_table="foo";
+ERROR 42000: Variable 'old_alter_table' can't be set to the value of 'foo'
+SET @@global.old_alter_table = @start_global_value;
+SELECT @@global.old_alter_table;
+@@global.old_alter_table
+0
diff --git a/mysql-test/suite/sys_vars/r/old_basic.result b/mysql-test/suite/sys_vars/r/old_basic.result
new file mode 100644
index 00000000000..03bf61257c1
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/old_basic.result
@@ -0,0 +1,21 @@
+select @@global.old;
+@@global.old
+0
+select @@session.old;
+ERROR HY000: Variable 'old' is a GLOBAL variable
+show global variables like 'old';
+Variable_name Value
+old OFF
+show session variables like 'old';
+Variable_name Value
+old OFF
+select * from information_schema.global_variables where variable_name='old';
+VARIABLE_NAME VARIABLE_VALUE
+OLD OFF
+select * from information_schema.session_variables where variable_name='old';
+VARIABLE_NAME VARIABLE_VALUE
+OLD OFF
+set global old=1;
+ERROR HY000: Variable 'old' is a read only variable
+set session old=1;
+ERROR HY000: Variable 'old' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/old_passwords_basic.result b/mysql-test/suite/sys_vars/r/old_passwords_basic.result
index ecf23ab302b..26d0e79071b 100644
--- a/mysql-test/suite/sys_vars/r/old_passwords_basic.result
+++ b/mysql-test/suite/sys_vars/r/old_passwords_basic.result
@@ -90,7 +90,7 @@ ERROR 42000: Variable 'old_passwords' can't be set to the value of '-1024'
SET @@global.old_passwords = 65536;
ERROR 42000: Variable 'old_passwords' can't be set to the value of '65536'
SET @@global.old_passwords = 65530.34;
-ERROR 42000: Variable 'old_passwords' can't be set to the value of '65530'
+ERROR 42000: Incorrect argument type to variable 'old_passwords'
SET @@global.old_passwords = test;
ERROR 42000: Variable 'old_passwords' can't be set to the value of 'test'
SET @@session.old_passwords = ONN;
@@ -98,31 +98,28 @@ ERROR 42000: Variable 'old_passwords' can't be set to the value of 'ONN'
SET @@session.old_passwords = ONF;
ERROR 42000: Variable 'old_passwords' can't be set to the value of 'ONF'
SET @@session.old_passwords = OF;
-SELECT @@session.old_passwords;
-@@session.old_passwords
-0
-'Bug# 34828: OF is also working as OFF and no error is coming';
+ERROR 42000: Variable 'old_passwords' can't be set to the value of 'OF'
SET @@session.old_passwords = 'OFN';
ERROR 42000: Variable 'old_passwords' can't be set to the value of 'OFN'
SET @@session.old_passwords = -2;
ERROR 42000: Variable 'old_passwords' can't be set to the value of '-2'
-SET @@session.old_passwords = 65530.34.;
-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 '.' at line 1
+SET @@session.old_passwords = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'old_passwords'
SET @@session.old_passwords = 65550;
ERROR 42000: Variable 'old_passwords' can't be set to the value of '65550'
SET @@session.old_passwords = test;
ERROR 42000: Variable 'old_passwords' can't be set to the value of 'test'
'#------------------FN_DYNVARS_114_06-----------------------#'
-SELECT @@global.old_passwords = VARIABLE_VALUE
+SELECT IF(@@global.old_passwords, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='old_passwords';
-@@global.old_passwords = VARIABLE_VALUE
+IF(@@global.old_passwords, "ON", "OFF") = VARIABLE_VALUE
1
'#------------------FN_DYNVARS_114_07-----------------------#'
-SELECT @@session.old_passwords = VARIABLE_VALUE
+SELECT IF(@@session.old_passwords, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='old_passwords';
-@@session.old_passwords = VARIABLE_VALUE
+IF(@@session.old_passwords, "ON", "OFF") = VARIABLE_VALUE
1
'#---------------------FN_DYNVARS_114_08----------------------#'
SET @@old_passwords = OFF;
diff --git a/mysql-test/suite/sys_vars/r/open_files_limit_basic.result b/mysql-test/suite/sys_vars/r/open_files_limit_basic.result
new file mode 100644
index 00000000000..7ca75b8d283
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/open_files_limit_basic.result
@@ -0,0 +1,21 @@
+select @@global.open_files_limit;
+@@global.open_files_limit
+#
+select @@session.open_files_limit;
+ERROR HY000: Variable 'open_files_limit' is a GLOBAL variable
+show global variables like 'open_files_limit';
+Variable_name Value
+open_files_limit #
+show session variables like 'open_files_limit';
+Variable_name Value
+open_files_limit #
+select * from information_schema.global_variables where variable_name='open_files_limit';
+VARIABLE_NAME VARIABLE_VALUE
+OPEN_FILES_LIMIT #
+select * from information_schema.session_variables where variable_name='open_files_limit';
+VARIABLE_NAME VARIABLE_VALUE
+OPEN_FILES_LIMIT #
+set global open_files_limit=1;
+ERROR HY000: Variable 'open_files_limit' is a read only variable
+set session open_files_limit=1;
+ERROR HY000: Variable 'open_files_limit' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/optimizer_prune_level_basic.result b/mysql-test/suite/sys_vars/r/optimizer_prune_level_basic.result
index c126569ebcd..99843f0b93f 100644
--- a/mysql-test/suite/sys_vars/r/optimizer_prune_level_basic.result
+++ b/mysql-test/suite/sys_vars/r/optimizer_prune_level_basic.result
@@ -114,15 +114,14 @@ Warning 1292 Truncated incorrect optimizer_prune_level value: '-2'
SELECT @@session.optimizer_prune_level;
@@session.optimizer_prune_level
0
-SET @@session.optimizer_prune_level = 65530.34.;
-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 '.' at line 1
+SET @@session.optimizer_prune_level = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level'
SET @@session.optimizer_prune_level = 65550;
Warnings:
Warning 1292 Truncated incorrect optimizer_prune_level value: '65550'
SELECT @@session.optimizer_prune_level;
@@session.optimizer_prune_level
1
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.optimizer_prune_level = test;
ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level'
'#------------------FN_DYNVARS_115_06-----------------------#'
diff --git a/mysql-test/suite/sys_vars/r/optimizer_search_depth_basic.result b/mysql-test/suite/sys_vars/r/optimizer_search_depth_basic.result
index 9c49ae7e73f..4d94fb02be7 100644
--- a/mysql-test/suite/sys_vars/r/optimizer_search_depth_basic.result
+++ b/mysql-test/suite/sys_vars/r/optimizer_search_depth_basic.result
@@ -83,8 +83,8 @@ Warning 1292 Truncated incorrect optimizer_search_depth value: '65536'
SELECT @@global.optimizer_search_depth;
@@global.optimizer_search_depth
63
-SET @@global.optimizer_search_depth = 65530.34.;
-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 '.' at line 1
+SET @@global.optimizer_search_depth = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'optimizer_search_depth'
SELECT @@global.optimizer_search_depth;
@@global.optimizer_search_depth
63
@@ -105,15 +105,14 @@ Warning 1292 Truncated incorrect optimizer_search_depth value: '-2'
SELECT @@session.optimizer_search_depth;
@@session.optimizer_search_depth
0
-SET @@session.optimizer_search_depth = 65530.34.;
-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 '.' at line 1
+SET @@session.optimizer_search_depth = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'optimizer_search_depth'
SET @@session.optimizer_search_depth = 65550;
Warnings:
Warning 1292 Truncated incorrect optimizer_search_depth value: '65550'
SELECT @@session.optimizer_search_depth;
@@session.optimizer_search_depth
63
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.optimizer_search_depth = test;
ERROR 42000: Incorrect argument type to variable 'optimizer_search_depth'
SELECT @@session.optimizer_search_depth;
diff --git a/mysql-test/suite/sys_vars/r/optimizer_switch_basic.result b/mysql-test/suite/sys_vars/r/optimizer_switch_basic.result
new file mode 100644
index 00000000000..2d648259a26
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/optimizer_switch_basic.result
@@ -0,0 +1,54 @@
+SET @start_global_value = @@global.optimizer_switch;
+SELECT @start_global_value;
+@start_global_value
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
+select @@global.optimizer_switch;
+@@global.optimizer_switch
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
+select @@session.optimizer_switch;
+@@session.optimizer_switch
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
+show global variables like 'optimizer_switch';
+Variable_name Value
+optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
+show session variables like 'optimizer_switch';
+Variable_name Value
+optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
+select * from information_schema.global_variables where variable_name='optimizer_switch';
+VARIABLE_NAME VARIABLE_VALUE
+OPTIMIZER_SWITCH index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
+select * from information_schema.session_variables where variable_name='optimizer_switch';
+VARIABLE_NAME VARIABLE_VALUE
+OPTIMIZER_SWITCH index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
+set global optimizer_switch=10;
+select @@global.optimizer_switch;
+@@global.optimizer_switch
+index_merge=off,index_merge_union=on,index_merge_sort_union=off,index_merge_intersection=on,engine_condition_pushdown=off
+set session optimizer_switch=5;
+select @@session.optimizer_switch;
+@@session.optimizer_switch
+index_merge=on,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=off,engine_condition_pushdown=off
+set global optimizer_switch="index_merge_sort_union=on";
+select @@global.optimizer_switch;
+@@global.optimizer_switch
+index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
+set session optimizer_switch="index_merge=off";
+select @@session.optimizer_switch;
+@@session.optimizer_switch
+index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=off,engine_condition_pushdown=off
+set session optimizer_switch="default";
+select @@session.optimizer_switch;
+@@session.optimizer_switch
+index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
+set global optimizer_switch=1.1;
+ERROR 42000: Incorrect argument type to variable 'optimizer_switch'
+set global optimizer_switch=1e1;
+ERROR 42000: Incorrect argument type to variable 'optimizer_switch'
+set session optimizer_switch="index_merge";
+ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'index_merge'
+set session optimizer_switch="foobar";
+ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'foobar'
+SET @@global.optimizer_switch = @start_global_value;
+SELECT @@global.optimizer_switch;
+@@global.optimizer_switch
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
diff --git a/mysql-test/suite/sys_vars/r/performance_schema_basic.result b/mysql-test/suite/sys_vars/r/performance_schema_basic.result
new file mode 100644
index 00000000000..d494b64502b
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/performance_schema_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema;
+@@global.performance_schema
+1
+select @@session.performance_schema;
+ERROR HY000: Variable 'performance_schema' is a GLOBAL variable
+show global variables like 'performance_schema';
+Variable_name Value
+performance_schema ON
+show session variables like 'performance_schema';
+Variable_name Value
+performance_schema ON
+select * from information_schema.global_variables
+where variable_name='performance_schema';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA ON
+select * from information_schema.session_variables
+where variable_name='performance_schema';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA ON
+set global performance_schema=1;
+ERROR HY000: Variable 'performance_schema' is a read only variable
+set session performance_schema=1;
+ERROR HY000: Variable 'performance_schema' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_events_waits_history_long_size_basic.result b/mysql-test/suite/sys_vars/r/pfs_events_waits_history_long_size_basic.result
new file mode 100644
index 00000000000..6aa1b0b6325
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_events_waits_history_long_size_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_events_waits_history_long_size;
+@@global.performance_schema_events_waits_history_long_size
+15000
+select @@session.performance_schema_events_waits_history_long_size;
+ERROR HY000: Variable 'performance_schema_events_waits_history_long_size' is a GLOBAL variable
+show global variables like 'performance_schema_events_waits_history_long_size';
+Variable_name Value
+performance_schema_events_waits_history_long_size 15000
+show session variables like 'performance_schema_events_waits_history_long_size';
+Variable_name Value
+performance_schema_events_waits_history_long_size 15000
+select * from information_schema.global_variables
+where variable_name='performance_schema_events_waits_history_long_size';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_EVENTS_WAITS_HISTORY_LONG_SIZE 15000
+select * from information_schema.session_variables
+where variable_name='performance_schema_events_waits_history_long_size';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_EVENTS_WAITS_HISTORY_LONG_SIZE 15000
+set global performance_schema_events_waits_history_long_size=1;
+ERROR HY000: Variable 'performance_schema_events_waits_history_long_size' is a read only variable
+set session performance_schema_events_waits_history_long_size=1;
+ERROR HY000: Variable 'performance_schema_events_waits_history_long_size' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_events_waits_history_size_basic.result b/mysql-test/suite/sys_vars/r/pfs_events_waits_history_size_basic.result
new file mode 100644
index 00000000000..defa4eca1d4
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_events_waits_history_size_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_events_waits_history_size;
+@@global.performance_schema_events_waits_history_size
+15
+select @@session.performance_schema_events_waits_history_size;
+ERROR HY000: Variable 'performance_schema_events_waits_history_size' is a GLOBAL variable
+show global variables like 'performance_schema_events_waits_history_size';
+Variable_name Value
+performance_schema_events_waits_history_size 15
+show session variables like 'performance_schema_events_waits_history_size';
+Variable_name Value
+performance_schema_events_waits_history_size 15
+select * from information_schema.global_variables
+where variable_name='performance_schema_events_waits_history_size';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_EVENTS_WAITS_HISTORY_SIZE 15
+select * from information_schema.session_variables
+where variable_name='performance_schema_events_waits_history_size';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_EVENTS_WAITS_HISTORY_SIZE 15
+set global performance_schema_events_waits_history_size=1;
+ERROR HY000: Variable 'performance_schema_events_waits_history_size' is a read only variable
+set session performance_schema_events_waits_history_size=1;
+ERROR HY000: Variable 'performance_schema_events_waits_history_size' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_cond_classes_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_cond_classes_basic.result
new file mode 100644
index 00000000000..ec980a90cbd
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_cond_classes_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_cond_classes;
+@@global.performance_schema_max_cond_classes
+123
+select @@session.performance_schema_max_cond_classes;
+ERROR HY000: Variable 'performance_schema_max_cond_classes' is a GLOBAL variable
+show global variables like 'performance_schema_max_cond_classes';
+Variable_name Value
+performance_schema_max_cond_classes 123
+show session variables like 'performance_schema_max_cond_classes';
+Variable_name Value
+performance_schema_max_cond_classes 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_cond_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_COND_CLASSES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_cond_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_COND_CLASSES 123
+set global performance_schema_max_cond_classes=1;
+ERROR HY000: Variable 'performance_schema_max_cond_classes' is a read only variable
+set session performance_schema_max_cond_classes=1;
+ERROR HY000: Variable 'performance_schema_max_cond_classes' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_cond_instances_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_cond_instances_basic.result
new file mode 100644
index 00000000000..5bdb24ed0b8
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_cond_instances_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_cond_instances;
+@@global.performance_schema_max_cond_instances
+123
+select @@session.performance_schema_max_cond_instances;
+ERROR HY000: Variable 'performance_schema_max_cond_instances' is a GLOBAL variable
+show global variables like 'performance_schema_max_cond_instances';
+Variable_name Value
+performance_schema_max_cond_instances 123
+show session variables like 'performance_schema_max_cond_instances';
+Variable_name Value
+performance_schema_max_cond_instances 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_cond_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_COND_INSTANCES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_cond_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_COND_INSTANCES 123
+set global performance_schema_max_cond_instances=1;
+ERROR HY000: Variable 'performance_schema_max_cond_instances' is a read only variable
+set session performance_schema_max_cond_instances=1;
+ERROR HY000: Variable 'performance_schema_max_cond_instances' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_file_classes_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_file_classes_basic.result
new file mode 100644
index 00000000000..47eaa449106
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_file_classes_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_file_classes;
+@@global.performance_schema_max_file_classes
+123
+select @@session.performance_schema_max_file_classes;
+ERROR HY000: Variable 'performance_schema_max_file_classes' is a GLOBAL variable
+show global variables like 'performance_schema_max_file_classes';
+Variable_name Value
+performance_schema_max_file_classes 123
+show session variables like 'performance_schema_max_file_classes';
+Variable_name Value
+performance_schema_max_file_classes 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_file_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_FILE_CLASSES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_file_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_FILE_CLASSES 123
+set global performance_schema_max_file_classes=1;
+ERROR HY000: Variable 'performance_schema_max_file_classes' is a read only variable
+set session performance_schema_max_file_classes=1;
+ERROR HY000: Variable 'performance_schema_max_file_classes' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_file_handles_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_file_handles_basic.result
new file mode 100644
index 00000000000..7d210ea3103
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_file_handles_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_file_handles;
+@@global.performance_schema_max_file_handles
+123
+select @@session.performance_schema_max_file_handles;
+ERROR HY000: Variable 'performance_schema_max_file_handles' is a GLOBAL variable
+show global variables like 'performance_schema_max_file_handles';
+Variable_name Value
+performance_schema_max_file_handles 123
+show session variables like 'performance_schema_max_file_handles';
+Variable_name Value
+performance_schema_max_file_handles 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_file_handles';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_FILE_HANDLES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_file_handles';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_FILE_HANDLES 123
+set global performance_schema_max_file_handles=1;
+ERROR HY000: Variable 'performance_schema_max_file_handles' is a read only variable
+set session performance_schema_max_file_handles=1;
+ERROR HY000: Variable 'performance_schema_max_file_handles' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_file_instances_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_file_instances_basic.result
new file mode 100644
index 00000000000..097d4c14ed1
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_file_instances_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_file_instances;
+@@global.performance_schema_max_file_instances
+123
+select @@session.performance_schema_max_file_instances;
+ERROR HY000: Variable 'performance_schema_max_file_instances' is a GLOBAL variable
+show global variables like 'performance_schema_max_file_instances';
+Variable_name Value
+performance_schema_max_file_instances 123
+show session variables like 'performance_schema_max_file_instances';
+Variable_name Value
+performance_schema_max_file_instances 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_file_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_FILE_INSTANCES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_file_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_FILE_INSTANCES 123
+set global performance_schema_max_file_instances=1;
+ERROR HY000: Variable 'performance_schema_max_file_instances' is a read only variable
+set session performance_schema_max_file_instances=1;
+ERROR HY000: Variable 'performance_schema_max_file_instances' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_mutex_classes_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_mutex_classes_basic.result
new file mode 100644
index 00000000000..f2b75ef9540
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_mutex_classes_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_mutex_classes;
+@@global.performance_schema_max_mutex_classes
+123
+select @@session.performance_schema_max_mutex_classes;
+ERROR HY000: Variable 'performance_schema_max_mutex_classes' is a GLOBAL variable
+show global variables like 'performance_schema_max_mutex_classes';
+Variable_name Value
+performance_schema_max_mutex_classes 123
+show session variables like 'performance_schema_max_mutex_classes';
+Variable_name Value
+performance_schema_max_mutex_classes 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_mutex_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_MUTEX_CLASSES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_mutex_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_MUTEX_CLASSES 123
+set global performance_schema_max_mutex_classes=1;
+ERROR HY000: Variable 'performance_schema_max_mutex_classes' is a read only variable
+set session performance_schema_max_mutex_classes=1;
+ERROR HY000: Variable 'performance_schema_max_mutex_classes' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_mutex_instances_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_mutex_instances_basic.result
new file mode 100644
index 00000000000..f12fa6ace03
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_mutex_instances_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_mutex_instances;
+@@global.performance_schema_max_mutex_instances
+123
+select @@session.performance_schema_max_mutex_instances;
+ERROR HY000: Variable 'performance_schema_max_mutex_instances' is a GLOBAL variable
+show global variables like 'performance_schema_max_mutex_instances';
+Variable_name Value
+performance_schema_max_mutex_instances 123
+show session variables like 'performance_schema_max_mutex_instances';
+Variable_name Value
+performance_schema_max_mutex_instances 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_mutex_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_MUTEX_INSTANCES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_mutex_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_MUTEX_INSTANCES 123
+set global performance_schema_max_mutex_instances=1;
+ERROR HY000: Variable 'performance_schema_max_mutex_instances' is a read only variable
+set session performance_schema_max_mutex_instances=1;
+ERROR HY000: Variable 'performance_schema_max_mutex_instances' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_rwlock_classes_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_rwlock_classes_basic.result
new file mode 100644
index 00000000000..6c2d4b773c0
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_rwlock_classes_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_rwlock_classes;
+@@global.performance_schema_max_rwlock_classes
+123
+select @@session.performance_schema_max_rwlock_classes;
+ERROR HY000: Variable 'performance_schema_max_rwlock_classes' is a GLOBAL variable
+show global variables like 'performance_schema_max_rwlock_classes';
+Variable_name Value
+performance_schema_max_rwlock_classes 123
+show session variables like 'performance_schema_max_rwlock_classes';
+Variable_name Value
+performance_schema_max_rwlock_classes 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_rwlock_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_RWLOCK_CLASSES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_rwlock_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_RWLOCK_CLASSES 123
+set global performance_schema_max_rwlock_classes=1;
+ERROR HY000: Variable 'performance_schema_max_rwlock_classes' is a read only variable
+set session performance_schema_max_rwlock_classes=1;
+ERROR HY000: Variable 'performance_schema_max_rwlock_classes' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_rwlock_instances_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_rwlock_instances_basic.result
new file mode 100644
index 00000000000..169387d369d
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_rwlock_instances_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_rwlock_instances;
+@@global.performance_schema_max_rwlock_instances
+123
+select @@session.performance_schema_max_rwlock_instances;
+ERROR HY000: Variable 'performance_schema_max_rwlock_instances' is a GLOBAL variable
+show global variables like 'performance_schema_max_rwlock_instances';
+Variable_name Value
+performance_schema_max_rwlock_instances 123
+show session variables like 'performance_schema_max_rwlock_instances';
+Variable_name Value
+performance_schema_max_rwlock_instances 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_rwlock_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_RWLOCK_INSTANCES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_rwlock_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_RWLOCK_INSTANCES 123
+set global performance_schema_max_rwlock_instances=1;
+ERROR HY000: Variable 'performance_schema_max_rwlock_instances' is a read only variable
+set session performance_schema_max_rwlock_instances=1;
+ERROR HY000: Variable 'performance_schema_max_rwlock_instances' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_table_handles_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_table_handles_basic.result
new file mode 100644
index 00000000000..5f661b0ecdd
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_table_handles_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_table_handles;
+@@global.performance_schema_max_table_handles
+123
+select @@session.performance_schema_max_table_handles;
+ERROR HY000: Variable 'performance_schema_max_table_handles' is a GLOBAL variable
+show global variables like 'performance_schema_max_table_handles';
+Variable_name Value
+performance_schema_max_table_handles 123
+show session variables like 'performance_schema_max_table_handles';
+Variable_name Value
+performance_schema_max_table_handles 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_table_handles';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_TABLE_HANDLES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_table_handles';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_TABLE_HANDLES 123
+set global performance_schema_max_table_handles=1;
+ERROR HY000: Variable 'performance_schema_max_table_handles' is a read only variable
+set session performance_schema_max_table_handles=1;
+ERROR HY000: Variable 'performance_schema_max_table_handles' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_table_instances_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_table_instances_basic.result
new file mode 100644
index 00000000000..8497527abb5
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_table_instances_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_table_instances;
+@@global.performance_schema_max_table_instances
+123
+select @@session.performance_schema_max_table_instances;
+ERROR HY000: Variable 'performance_schema_max_table_instances' is a GLOBAL variable
+show global variables like 'performance_schema_max_table_instances';
+Variable_name Value
+performance_schema_max_table_instances 123
+show session variables like 'performance_schema_max_table_instances';
+Variable_name Value
+performance_schema_max_table_instances 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_table_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_TABLE_INSTANCES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_table_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_TABLE_INSTANCES 123
+set global performance_schema_max_table_instances=1;
+ERROR HY000: Variable 'performance_schema_max_table_instances' is a read only variable
+set session performance_schema_max_table_instances=1;
+ERROR HY000: Variable 'performance_schema_max_table_instances' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_thread_classes_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_thread_classes_basic.result
new file mode 100644
index 00000000000..9d45e13b46e
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_thread_classes_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_thread_classes;
+@@global.performance_schema_max_thread_classes
+123
+select @@session.performance_schema_max_thread_classes;
+ERROR HY000: Variable 'performance_schema_max_thread_classes' is a GLOBAL variable
+show global variables like 'performance_schema_max_thread_classes';
+Variable_name Value
+performance_schema_max_thread_classes 123
+show session variables like 'performance_schema_max_thread_classes';
+Variable_name Value
+performance_schema_max_thread_classes 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_thread_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_THREAD_CLASSES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_thread_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_THREAD_CLASSES 123
+set global performance_schema_max_thread_classes=1;
+ERROR HY000: Variable 'performance_schema_max_thread_classes' is a read only variable
+set session performance_schema_max_thread_classes=1;
+ERROR HY000: Variable 'performance_schema_max_thread_classes' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_thread_instances_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_thread_instances_basic.result
new file mode 100644
index 00000000000..dbb3967ad33
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_thread_instances_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_thread_instances;
+@@global.performance_schema_max_thread_instances
+123
+select @@session.performance_schema_max_thread_instances;
+ERROR HY000: Variable 'performance_schema_max_thread_instances' is a GLOBAL variable
+show global variables like 'performance_schema_max_thread_instances';
+Variable_name Value
+performance_schema_max_thread_instances 123
+show session variables like 'performance_schema_max_thread_instances';
+Variable_name Value
+performance_schema_max_thread_instances 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_thread_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_THREAD_INSTANCES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_thread_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_THREAD_INSTANCES 123
+set global performance_schema_max_thread_instances=1;
+ERROR HY000: Variable 'performance_schema_max_thread_instances' is a read only variable
+set session performance_schema_max_thread_instances=1;
+ERROR HY000: Variable 'performance_schema_max_thread_instances' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pid_file_basic.result b/mysql-test/suite/sys_vars/r/pid_file_basic.result
new file mode 100644
index 00000000000..dc3b6ca97c5
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pid_file_basic.result
@@ -0,0 +1,21 @@
+select @@global.pid_file;
+@@global.pid_file
+MYSQLTEST_VARDIR/run/mysqld.1.pid
+select @@session.pid_file;
+ERROR HY000: Variable 'pid_file' is a GLOBAL variable
+show global variables like 'pid_file';
+Variable_name Value
+pid_file MYSQLTEST_VARDIR/run/mysqld.1.pid
+show session variables like 'pid_file';
+Variable_name Value
+pid_file MYSQLTEST_VARDIR/run/mysqld.1.pid
+select * from information_schema.global_variables where variable_name='pid_file';
+VARIABLE_NAME VARIABLE_VALUE
+PID_FILE MYSQLTEST_VARDIR/run/mysqld.1.pid
+select * from information_schema.session_variables where variable_name='pid_file';
+VARIABLE_NAME VARIABLE_VALUE
+PID_FILE MYSQLTEST_VARDIR/run/mysqld.1.pid
+set global pid_file=1;
+ERROR HY000: Variable 'pid_file' is a read only variable
+set session pid_file=1;
+ERROR HY000: Variable 'pid_file' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/plugin_dir_basic.result b/mysql-test/suite/sys_vars/r/plugin_dir_basic.result
new file mode 100644
index 00000000000..f81cae24dda
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/plugin_dir_basic.result
@@ -0,0 +1,21 @@
+select @@global.plugin_dir;
+@@global.plugin_dir
+MYSQL_LIBDIR/plugin
+select @@session.plugin_dir;
+ERROR HY000: Variable 'plugin_dir' is a GLOBAL variable
+show global variables like 'plugin_dir';
+Variable_name Value
+plugin_dir MYSQL_LIBDIR/plugin
+show session variables like 'plugin_dir';
+Variable_name Value
+plugin_dir MYSQL_LIBDIR/plugin
+select * from information_schema.global_variables where variable_name='plugin_dir';
+VARIABLE_NAME VARIABLE_VALUE
+PLUGIN_DIR MYSQL_LIBDIR/plugin
+select * from information_schema.session_variables where variable_name='plugin_dir';
+VARIABLE_NAME VARIABLE_VALUE
+PLUGIN_DIR MYSQL_LIBDIR/plugin
+set global plugin_dir=1;
+ERROR HY000: Variable 'plugin_dir' is a read only variable
+set session plugin_dir=1;
+ERROR HY000: Variable 'plugin_dir' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/port_basic.result b/mysql-test/suite/sys_vars/r/port_basic.result
new file mode 100644
index 00000000000..cca50395927
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/port_basic.result
@@ -0,0 +1,21 @@
+select @@global.port;
+@@global.port
+MASTER_MYPORT
+select @@session.port;
+ERROR HY000: Variable 'port' is a GLOBAL variable
+show global variables like 'port';
+Variable_name Value
+port MASTER_MYPORT
+show session variables like 'port';
+Variable_name Value
+port MASTER_MYPORT
+select * from information_schema.global_variables where variable_name='port';
+VARIABLE_NAME VARIABLE_VALUE
+PORT MASTER_MYPORT
+select * from information_schema.session_variables where variable_name='port';
+VARIABLE_NAME VARIABLE_VALUE
+PORT MASTER_MYPORT
+set global port=1;
+ERROR HY000: Variable 'port' is a read only variable
+set session port=1;
+ERROR HY000: Variable 'port' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/preload_buffer_size_basic.result b/mysql-test/suite/sys_vars/r/preload_buffer_size_basic.result
index fd8bdd222d2..fef19db95c5 100644
--- a/mysql-test/suite/sys_vars/r/preload_buffer_size_basic.result
+++ b/mysql-test/suite/sys_vars/r/preload_buffer_size_basic.result
@@ -93,8 +93,8 @@ Warning 1292 Truncated incorrect preload_buffer_size value: '1073741825'
SELECT @@global.preload_buffer_size;
@@global.preload_buffer_size
1073741824
-SET @@global.preload_buffer_size = 65530.34.;
-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 '.' at line 1
+SET @@global.preload_buffer_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'preload_buffer_size'
SELECT @@global.preload_buffer_size;
@@global.preload_buffer_size
1073741824
@@ -115,8 +115,8 @@ Warning 1292 Truncated incorrect preload_buffer_size value: '-2'
SELECT @@session.preload_buffer_size;
@@session.preload_buffer_size
1024
-SET @@session.preload_buffer_size = 65530.34.;
-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 '.' at line 1
+SET @@session.preload_buffer_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'preload_buffer_size'
SET @@session.preload_buffer_size = 1023;
Warnings:
Warning 1292 Truncated incorrect preload_buffer_size value: '1023'
@@ -129,7 +129,6 @@ Warning 1292 Truncated incorrect preload_buffer_size value: '1073741825'
SELECT @@session.preload_buffer_size;
@@session.preload_buffer_size
1073741824
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.preload_buffer_size = test;
ERROR 42000: Incorrect argument type to variable 'preload_buffer_size'
SELECT @@session.preload_buffer_size;
diff --git a/mysql-test/suite/sys_vars/r/profiling_basic.result b/mysql-test/suite/sys_vars/r/profiling_basic.result
new file mode 100644
index 00000000000..26704b6b725
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/profiling_basic.result
@@ -0,0 +1,40 @@
+SET @start_global_value = @@global.profiling;
+SELECT @start_global_value;
+@start_global_value
+0
+select @@global.profiling;
+@@global.profiling
+0
+select @@session.profiling;
+@@session.profiling
+0
+show global variables like 'profiling';
+Variable_name Value
+profiling OFF
+show session variables like 'profiling';
+Variable_name Value
+profiling OFF
+select * from information_schema.global_variables where variable_name='profiling';
+VARIABLE_NAME VARIABLE_VALUE
+PROFILING OFF
+select * from information_schema.session_variables where variable_name='profiling';
+VARIABLE_NAME VARIABLE_VALUE
+PROFILING OFF
+set global profiling=1;
+select @@global.profiling;
+@@global.profiling
+1
+set session profiling=ON;
+select @@session.profiling;
+@@session.profiling
+1
+set global profiling=1.1;
+ERROR 42000: Incorrect argument type to variable 'profiling'
+set global profiling=1e1;
+ERROR 42000: Incorrect argument type to variable 'profiling'
+set global profiling="foo";
+ERROR 42000: Variable 'profiling' can't be set to the value of 'foo'
+SET @@global.profiling = @start_global_value;
+SELECT @@global.profiling;
+@@global.profiling
+0
diff --git a/mysql-test/suite/sys_vars/r/profiling_history_size_basic.result b/mysql-test/suite/sys_vars/r/profiling_history_size_basic.result
new file mode 100644
index 00000000000..be92d075326
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/profiling_history_size_basic.result
@@ -0,0 +1,50 @@
+SET @start_global_value = @@global.profiling_history_size;
+SELECT @start_global_value;
+@start_global_value
+15
+select @@global.profiling_history_size;
+@@global.profiling_history_size
+15
+select @@session.profiling_history_size;
+@@session.profiling_history_size
+15
+show global variables like 'profiling_history_size';
+Variable_name Value
+profiling_history_size 15
+show session variables like 'profiling_history_size';
+Variable_name Value
+profiling_history_size 15
+select * from information_schema.global_variables where variable_name='profiling_history_size';
+VARIABLE_NAME VARIABLE_VALUE
+PROFILING_HISTORY_SIZE 15
+select * from information_schema.session_variables where variable_name='profiling_history_size';
+VARIABLE_NAME VARIABLE_VALUE
+PROFILING_HISTORY_SIZE 15
+set global profiling_history_size=10;
+select @@global.profiling_history_size;
+@@global.profiling_history_size
+10
+set session profiling_history_size=20;
+select @@session.profiling_history_size;
+@@session.profiling_history_size
+20
+set global profiling_history_size=1.1;
+ERROR 42000: Incorrect argument type to variable 'profiling_history_size'
+set global profiling_history_size=1e1;
+ERROR 42000: Incorrect argument type to variable 'profiling_history_size'
+set global profiling_history_size="foo";
+ERROR 42000: Incorrect argument type to variable 'profiling_history_size'
+set session profiling_history_size=0;
+select @@profiling_history_size;
+@@profiling_history_size
+0
+set session profiling_history_size=101;
+Warnings:
+Warning 1292 Truncated incorrect profiling_history_size value: '101'
+select @@profiling_history_size;
+@@profiling_history_size
+100
+SET @@global.profiling_history_size = @start_global_value;
+SELECT @@global.profiling_history_size;
+@@global.profiling_history_size
+15
diff --git a/mysql-test/suite/sys_vars/r/protocol_version_basic.result b/mysql-test/suite/sys_vars/r/protocol_version_basic.result
new file mode 100644
index 00000000000..d00d8615762
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/protocol_version_basic.result
@@ -0,0 +1,21 @@
+select @@global.protocol_version;
+@@global.protocol_version
+10
+select @@session.protocol_version;
+ERROR HY000: Variable 'protocol_version' is a GLOBAL variable
+show global variables like 'protocol_version';
+Variable_name Value
+protocol_version 10
+show session variables like 'protocol_version';
+Variable_name Value
+protocol_version 10
+select * from information_schema.global_variables where variable_name='protocol_version';
+VARIABLE_NAME VARIABLE_VALUE
+PROTOCOL_VERSION 10
+select * from information_schema.session_variables where variable_name='protocol_version';
+VARIABLE_NAME VARIABLE_VALUE
+PROTOCOL_VERSION 10
+set global protocol_version=1;
+ERROR HY000: Variable 'protocol_version' is a read only variable
+set session protocol_version=1;
+ERROR HY000: Variable 'protocol_version' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pseudo_thread_id_basic.result b/mysql-test/suite/sys_vars/r/pseudo_thread_id_basic.result
new file mode 100644
index 00000000000..e6619e206f1
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pseudo_thread_id_basic.result
@@ -0,0 +1,27 @@
+select @@global.pseudo_thread_id;
+ERROR HY000: Variable 'pseudo_thread_id' is a SESSION variable
+select @@session.pseudo_thread_id=0;
+@@session.pseudo_thread_id=0
+0
+show global variables like 'pseudo_thread_id';
+Variable_name Value
+show session variables like 'pseudo_thread_id';
+Variable_name Value
+pseudo_thread_id #
+select * from information_schema.global_variables where variable_name='pseudo_thread_id';
+VARIABLE_NAME VARIABLE_VALUE
+select * from information_schema.session_variables where variable_name='pseudo_thread_id';
+VARIABLE_NAME VARIABLE_VALUE
+PSEUDO_THREAD_ID #
+set session pseudo_thread_id=1;
+select @@session.pseudo_thread_id;
+@@session.pseudo_thread_id
+1
+set global pseudo_thread_id=1;
+ERROR HY000: Variable 'pseudo_thread_id' is a SESSION variable and can't be used with SET GLOBAL
+set session pseudo_thread_id=1.1;
+ERROR 42000: Incorrect argument type to variable 'pseudo_thread_id'
+set session pseudo_thread_id=1e1;
+ERROR 42000: Incorrect argument type to variable 'pseudo_thread_id'
+set session pseudo_thread_id="foo";
+ERROR 42000: Incorrect argument type to variable 'pseudo_thread_id'
diff --git a/mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_32.result b/mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_32.result
index 2ea0831a36d..6189a55e86e 100644
--- a/mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_32.result
@@ -8,11 +8,15 @@ SELECT @start_session_value;
8192
'#--------------------FN_DYNVARS_130_01-------------------------#'
SET @@global.query_alloc_block_size = 10000;
+Warnings:
+Warning 1292 Truncated incorrect query_alloc_block_size value: '10000'
SET @@global.query_alloc_block_size = DEFAULT;
SELECT @@global.query_alloc_block_size;
@@global.query_alloc_block_size
8192
SET @@session.query_alloc_block_size = 20000;
+Warnings:
+Warning 1292 Truncated incorrect query_alloc_block_size value: '20000'
SET @@session.query_alloc_block_size = DEFAULT;
SELECT @@session.query_alloc_block_size;
@@session.query_alloc_block_size
@@ -32,6 +36,8 @@ SELECT @@global.query_alloc_block_size;
@@global.query_alloc_block_size
1024
SET @@global.query_alloc_block_size = 1025;
+Warnings:
+Warning 1292 Truncated incorrect query_alloc_block_size value: '1025'
SELECT @@global.query_alloc_block_size;
@@global.query_alloc_block_size
1024
@@ -51,13 +57,14 @@ SET @@global.query_alloc_block_size = 65536;
SELECT @@global.query_alloc_block_size;
@@global.query_alloc_block_size
65536
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
'#--------------------FN_DYNVARS_130_04-------------------------#'
SET @@session.query_alloc_block_size = 1024;
SELECT @@session.query_alloc_block_size;
@@session.query_alloc_block_size
1024
SET @@session.query_alloc_block_size = 1025;
+Warnings:
+Warning 1292 Truncated incorrect query_alloc_block_size value: '1025'
SELECT @@session.query_alloc_block_size;
@@session.query_alloc_block_size
1024
@@ -74,6 +81,8 @@ SELECT @@session.query_alloc_block_size;
@@session.query_alloc_block_size
4294966272
SET @@session.query_alloc_block_size = 655536;
+Warnings:
+Warning 1292 Truncated incorrect query_alloc_block_size value: '655536'
SELECT @@session.query_alloc_block_size;
@@session.query_alloc_block_size
655360
@@ -102,8 +111,8 @@ Warning 1292 Truncated incorrect query_alloc_block_size value: '4294967296'
SELECT @@global.query_alloc_block_size;
@@global.query_alloc_block_size
4294966272
-SET @@global.query_alloc_block_size = 65530.34.;
-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 '.' at line 1
+SET @@global.query_alloc_block_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'query_alloc_block_size'
SELECT @@global.query_alloc_block_size;
@@global.query_alloc_block_size
4294966272
@@ -124,28 +133,20 @@ Warning 1292 Truncated incorrect query_alloc_block_size value: '-2'
SELECT @@session.query_alloc_block_size;
@@session.query_alloc_block_size
1024
-SET @@session.query_alloc_block_size = 65530.34.;
-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 '.' at line 1
+SET @@session.query_alloc_block_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'query_alloc_block_size'
SET @@session.query_alloc_block_size = 1023;
Warnings:
Warning 1292 Truncated incorrect query_alloc_block_size value: '1023'
SELECT @@session.query_alloc_block_size;
@@session.query_alloc_block_size
1024
-SET @@session.query_alloc_block_size = 4294967296;
-Warnings:
-Warning 1292 Truncated incorrect query_alloc_block_size value: '4294967296'
-SELECT @@session.query_alloc_block_size;
-@@session.query_alloc_block_size
-4294966272
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.query_alloc_block_size = test;
ERROR 42000: Incorrect argument type to variable 'query_alloc_block_size'
SELECT @@session.query_alloc_block_size;
@@session.query_alloc_block_size
-4294966272
+1024
'#------------------FN_DYNVARS_130_06-----------------------#'
-'Bug# 34877: OutOFMemeory errors are coming if we dont assign these values to variable before comparision statement';
SET @@global.query_alloc_block_size = 1;
Warnings:
Warning 1292 Truncated incorrect query_alloc_block_size value: '1'
@@ -184,6 +185,8 @@ SELECT @@query_alloc_block_size = @@global.query_alloc_block_size;
0
'#---------------------FN_DYNVARS_130_10----------------------#'
SET @@query_alloc_block_size = 5000;
+Warnings:
+Warning 1292 Truncated incorrect query_alloc_block_size value: '5000'
SELECT @@query_alloc_block_size = @@local.query_alloc_block_size;
@@query_alloc_block_size = @@local.query_alloc_block_size
1
diff --git a/mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_64.result b/mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_64.result
index 7c573bdb7cb..c77af13ecc9 100644
--- a/mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_64.result
@@ -8,11 +8,15 @@ SELECT @start_session_value;
8192
'#--------------------FN_DYNVARS_130_01-------------------------#'
SET @@global.query_alloc_block_size = 10000;
+Warnings:
+Warning 1292 Truncated incorrect query_alloc_block_size value: '10000'
SET @@global.query_alloc_block_size = DEFAULT;
SELECT @@global.query_alloc_block_size;
@@global.query_alloc_block_size
8192
SET @@session.query_alloc_block_size = 20000;
+Warnings:
+Warning 1292 Truncated incorrect query_alloc_block_size value: '20000'
SET @@session.query_alloc_block_size = DEFAULT;
SELECT @@session.query_alloc_block_size;
@@session.query_alloc_block_size
@@ -32,14 +36,20 @@ SELECT @@global.query_alloc_block_size;
@@global.query_alloc_block_size
1024
SET @@global.query_alloc_block_size = 1025;
+Warnings:
+Warning 1292 Truncated incorrect query_alloc_block_size value: '1025'
SELECT @@global.query_alloc_block_size;
@@global.query_alloc_block_size
1024
SET @@global.query_alloc_block_size = 4294967295;
+Warnings:
+Warning 1292 Truncated incorrect query_alloc_block_size value: '4294967295'
SELECT @@global.query_alloc_block_size;
@@global.query_alloc_block_size
4294966272
SET @@global.query_alloc_block_size = 4294967294;
+Warnings:
+Warning 1292 Truncated incorrect query_alloc_block_size value: '4294967294'
SELECT @@global.query_alloc_block_size;
@@global.query_alloc_block_size
4294966272
@@ -47,25 +57,32 @@ SET @@global.query_alloc_block_size = 65536;
SELECT @@global.query_alloc_block_size;
@@global.query_alloc_block_size
65536
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
'#--------------------FN_DYNVARS_130_04-------------------------#'
SET @@session.query_alloc_block_size = 1024;
SELECT @@session.query_alloc_block_size;
@@session.query_alloc_block_size
1024
SET @@session.query_alloc_block_size = 1025;
+Warnings:
+Warning 1292 Truncated incorrect query_alloc_block_size value: '1025'
SELECT @@session.query_alloc_block_size;
@@session.query_alloc_block_size
1024
SET @@session.query_alloc_block_size = 4294967295;
+Warnings:
+Warning 1292 Truncated incorrect query_alloc_block_size value: '4294967295'
SELECT @@session.query_alloc_block_size;
@@session.query_alloc_block_size
4294966272
SET @@session.query_alloc_block_size = 4294967294;
+Warnings:
+Warning 1292 Truncated incorrect query_alloc_block_size value: '4294967294'
SELECT @@session.query_alloc_block_size;
@@session.query_alloc_block_size
4294966272
SET @@session.query_alloc_block_size = 655536;
+Warnings:
+Warning 1292 Truncated incorrect query_alloc_block_size value: '655536'
SELECT @@session.query_alloc_block_size;
@@session.query_alloc_block_size
655360
@@ -92,8 +109,8 @@ SET @@global.query_alloc_block_size = 4294967296;
SELECT @@global.query_alloc_block_size;
@@global.query_alloc_block_size
4294967296
-SET @@global.query_alloc_block_size = 65530.34.;
-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 '.' at line 1
+SET @@global.query_alloc_block_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'query_alloc_block_size'
SELECT @@global.query_alloc_block_size;
@@global.query_alloc_block_size
4294967296
@@ -114,26 +131,20 @@ Warning 1292 Truncated incorrect query_alloc_block_size value: '-2'
SELECT @@session.query_alloc_block_size;
@@session.query_alloc_block_size
1024
-SET @@session.query_alloc_block_size = 65530.34.;
-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 '.' at line 1
+SET @@session.query_alloc_block_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'query_alloc_block_size'
SET @@session.query_alloc_block_size = 1023;
Warnings:
Warning 1292 Truncated incorrect query_alloc_block_size value: '1023'
SELECT @@session.query_alloc_block_size;
@@session.query_alloc_block_size
1024
-SET @@session.query_alloc_block_size = 4294967296;
-SELECT @@session.query_alloc_block_size;
-@@session.query_alloc_block_size
-4294967296
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.query_alloc_block_size = test;
ERROR 42000: Incorrect argument type to variable 'query_alloc_block_size'
SELECT @@session.query_alloc_block_size;
@@session.query_alloc_block_size
-4294967296
+1024
'#------------------FN_DYNVARS_130_06-----------------------#'
-'Bug# 34877: OutOFMemeory errors are coming if we dont assign these values to variable before comparision statement';
SET @@global.query_alloc_block_size = 1;
Warnings:
Warning 1292 Truncated incorrect query_alloc_block_size value: '1'
@@ -172,6 +183,8 @@ SELECT @@query_alloc_block_size = @@global.query_alloc_block_size;
0
'#---------------------FN_DYNVARS_130_10----------------------#'
SET @@query_alloc_block_size = 5000;
+Warnings:
+Warning 1292 Truncated incorrect query_alloc_block_size value: '5000'
SELECT @@query_alloc_block_size = @@local.query_alloc_block_size;
@@query_alloc_block_size = @@local.query_alloc_block_size
1
diff --git a/mysql-test/suite/sys_vars/r/query_cache_limit_basic_32.result b/mysql-test/suite/sys_vars/r/query_cache_limit_basic_32.result
index 4fab29b8952..074075dd2f7 100644
--- a/mysql-test/suite/sys_vars/r/query_cache_limit_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/query_cache_limit_basic_32.result
@@ -66,7 +66,6 @@ Warning 1292 Truncated incorrect query_cache_limit value: '42949672950'
SELECT @@global.query_cache_limit;
@@global.query_cache_limit
4294967295
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.query_cache_limit = ON;
ERROR 42000: Incorrect argument type to variable 'query_cache_limit'
SELECT @@global.query_cache_limit;
diff --git a/mysql-test/suite/sys_vars/r/query_cache_limit_basic_64.result b/mysql-test/suite/sys_vars/r/query_cache_limit_basic_64.result
index 7b3e759deb4..3125ee4a415 100644
--- a/mysql-test/suite/sys_vars/r/query_cache_limit_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/query_cache_limit_basic_64.result
@@ -60,7 +60,6 @@ SET @@global.query_cache_limit = 42949672950;
SELECT @@global.query_cache_limit;
@@global.query_cache_limit
42949672950
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.query_cache_limit = ON;
ERROR 42000: Incorrect argument type to variable 'query_cache_limit'
SELECT @@global.query_cache_limit;
diff --git a/mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_32.result b/mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_32.result
index b6e274d6ad2..c408a39fdc0 100644
--- a/mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_32.result
@@ -22,7 +22,6 @@ SET @@global.query_cache_min_res_unit = 1;
SELECT @@global.query_cache_min_res_unit;
@@global.query_cache_min_res_unit
512
-'Bug#34842: FN_DYNVARS_132_03 - Minimum value according to documentation is 0, and here it is 512';
SET @@global.query_cache_min_res_unit = 512;
SELECT @@global.query_cache_min_res_unit;
@@global.query_cache_min_res_unit
@@ -31,7 +30,6 @@ SET @@global.query_cache_min_res_unit = 513;
SELECT @@global.query_cache_min_res_unit;
@@global.query_cache_min_res_unit
520
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
SET @@global.query_cache_min_res_unit = 1048576;
SELECT @@global.query_cache_min_res_unit;
@@global.query_cache_min_res_unit
@@ -74,7 +72,6 @@ Warning 1292 Truncated incorrect query_cache_min_res_unit value: '42949672950'
SELECT @@global.query_cache_min_res_unit;
@@global.query_cache_min_res_unit
0
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.query_cache_min_res_unit = ON;
ERROR 42000: Incorrect argument type to variable 'query_cache_min_res_unit'
SELECT @@global.query_cache_min_res_unit;
diff --git a/mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_64.result b/mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_64.result
index fdbbc71f108..8028098c3c5 100644
--- a/mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_64.result
@@ -22,7 +22,6 @@ SET @@global.query_cache_min_res_unit = 1;
SELECT @@global.query_cache_min_res_unit;
@@global.query_cache_min_res_unit
512
-'Bug#34842: FN_DYNVARS_132_03 - Minimum value according to documentation is 0, and here it is 512';
SET @@global.query_cache_min_res_unit = 512;
SELECT @@global.query_cache_min_res_unit;
@@global.query_cache_min_res_unit
@@ -31,7 +30,6 @@ SET @@global.query_cache_min_res_unit = 513;
SELECT @@global.query_cache_min_res_unit;
@@global.query_cache_min_res_unit
520
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
SET @@global.query_cache_min_res_unit = 1048576;
SELECT @@global.query_cache_min_res_unit;
@@global.query_cache_min_res_unit
@@ -70,7 +68,6 @@ SET @@global.query_cache_min_res_unit = 42949672950;
SELECT @@global.query_cache_min_res_unit;
@@global.query_cache_min_res_unit
42949672952
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.query_cache_min_res_unit = ON;
ERROR 42000: Incorrect argument type to variable 'query_cache_min_res_unit'
SELECT @@global.query_cache_min_res_unit;
diff --git a/mysql-test/suite/sys_vars/r/query_cache_type_basic.result b/mysql-test/suite/sys_vars/r/query_cache_type_basic.result
index 101853daa80..2a5af454b90 100644
--- a/mysql-test/suite/sys_vars/r/query_cache_type_basic.result
+++ b/mysql-test/suite/sys_vars/r/query_cache_type_basic.result
@@ -59,10 +59,7 @@ ERROR 42000: Variable 'query_cache_type' can't be set to the value of 'ONDEMAND'
SET @@global.query_cache_type = 'ON,OFF';
ERROR 42000: Variable 'query_cache_type' can't be set to the value of 'ON,OFF'
SET @@global.query_cache_type = 'OF';
-SELECT @@global.query_cache_type;
-@@global.query_cache_type
-OFF
-'Bug# 34828: OF is taken as OFF.'
+ERROR 42000: Variable 'query_cache_type' can't be set to the value of 'OF'
SET @@global.query_cache_type = YES;
ERROR 42000: Variable 'query_cache_type' can't be set to the value of 'YES'
SET @@global.query_cache_type = ' ';
@@ -93,35 +90,7 @@ SELECT @@global.query_cache_type;
@@global.query_cache_type
DEMAND
SET @@global.query_cache_type = 0.4;
-SELECT @@global.query_cache_type;
-@@global.query_cache_type
-OFF
-SET @@global.query_cache_type = 1.0;
-SELECT @@global.query_cache_type;
-@@global.query_cache_type
-ON
-SET @@global.query_cache_type = 1.1;
-SELECT @@global.query_cache_type;
-@@global.query_cache_type
-ON
-SET @@global.query_cache_type = 1.5;
-SELECT @@global.query_cache_type;
-@@global.query_cache_type
-DEMAND
-SET @@global.query_cache_type = 2.49;
-SELECT @@global.query_cache_type;
-@@global.query_cache_type
-DEMAND
-SET @@session.query_cache_type = 0.5;
-SELECT @@session.query_cache_type;
-@@session.query_cache_type
-ON
-SET @@session.query_cache_type = 1.6;
-SELECT @@session.query_cache_type;
-@@session.query_cache_type
-DEMAND
-'Bug: Decimal values can be used within the range [0.0-2.5). Values';
-'are rounded to 0,1,2 as evident from outcome.';
+ERROR 42000: Incorrect argument type to variable 'query_cache_type'
SET @@global.query_cache_type = 3;
ERROR 42000: Variable 'query_cache_type' can't be set to the value of '3'
'#---------------------FN_DYNVARS_134_08----------------------#'
diff --git a/mysql-test/suite/sys_vars/r/query_cache_wlock_invalidate_basic.result b/mysql-test/suite/sys_vars/r/query_cache_wlock_invalidate_basic.result
index bff07741656..96f42bbbda3 100644
--- a/mysql-test/suite/sys_vars/r/query_cache_wlock_invalidate_basic.result
+++ b/mysql-test/suite/sys_vars/r/query_cache_wlock_invalidate_basic.result
@@ -57,22 +57,19 @@ SELECT @@global.query_cache_wlock_invalidate;
SET @@session.query_cache_wlock_invalidate = -1;
ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of '-1'
SET @@session.query_cache_wlock_invalidate = 1.6;
-ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of '2'
+ERROR 42000: Incorrect argument type to variable 'query_cache_wlock_invalidate'
SET @@session.query_cache_wlock_invalidate = "T";
ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'T'
SET @@session.query_cache_wlock_invalidate = "Y";
ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'Y'
SET @@session.query_cache_wlock_invalidate = TRÜE;
-ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'TRÜE'
SET @@session.query_cache_wlock_invalidate = ÕN;
-ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'ÕN'
+ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'ÕN'
SET @@session.query_cache_wlock_invalidate = OF;
-SELECT @@session.query_cache_wlock_invalidate;
-@@session.query_cache_wlock_invalidate
-0
-'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
+ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'OF'
SET @@session.query_cache_wlock_invalidate = ÓFF;
-ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'ÓFF'
+ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'ÓFF'
SET @@global.query_cache_wlock_invalidate = -1;
ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of '-1'
SET @@global.query_cache_wlock_invalidate = 2;
@@ -82,16 +79,13 @@ ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value o
SET @@global.query_cache_wlock_invalidate = "Y";
ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'Y'
SET @@global.query_cache_wlock_invalidate = TRÜE;
-ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'TRÜE'
SET @@global.query_cache_wlock_invalidate = ÕN;
-ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'ÕN'
+ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'ÕN'
SET @@global.query_cache_wlock_invalidate = OF;
-SELECT @@global.query_cache_wlock_invalidate;
-@@global.query_cache_wlock_invalidate
-0
-'Bug 34828: OF is taken as OFF and a value of 0 is set.'
+ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'OF'
SET @@global.query_cache_wlock_invalidate = ÓFF;
-ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'ÓFF'
+ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'ÓFF'
'#-------------------FN_DYNVARS_135_05----------------------------#'
SET @@global.query_cache_wlock_invalidate = 0;
SET @@session.query_cache_wlock_invalidate = 1;
@@ -103,10 +97,10 @@ SELECT @@session.query_cache_wlock_invalidate AS res_is_1;
res_is_1
1
'#----------------------FN_DYNVARS_135_06------------------------#'
-SELECT @@global.query_cache_wlock_invalidate = VARIABLE_VALUE
+SELECT IF(@@global.query_cache_wlock_invalidate, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='query_cache_wlock_invalidate';
-@@global.query_cache_wlock_invalidate = VARIABLE_VALUE
+IF(@@global.query_cache_wlock_invalidate, "ON", "OFF") = VARIABLE_VALUE
1
SELECT @@global.query_cache_wlock_invalidate;
@@global.query_cache_wlock_invalidate
@@ -117,11 +111,11 @@ WHERE VARIABLE_NAME='query_cache_wlock_invalidate';
VARIABLE_VALUE
OFF
'#----------------------FN_DYNVARS_135_07------------------------#'
-SELECT @@session.query_cache_wlock_invalidate = VARIABLE_VALUE
+SELECT IF(@@session.query_cache_wlock_invalidate, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='query_cache_wlock_invalidate';
-@@session.query_cache_wlock_invalidate = VARIABLE_VALUE
-0
+IF(@@session.query_cache_wlock_invalidate, "ON", "OFF") = VARIABLE_VALUE
+1
SELECT @@session.query_cache_wlock_invalidate;
@@session.query_cache_wlock_invalidate
1
diff --git a/mysql-test/suite/sys_vars/r/query_prealloc_size_basic_64.result b/mysql-test/suite/sys_vars/r/query_prealloc_size_basic.result
index a16c56f95c5..1fd363ade16 100644
--- a/mysql-test/suite/sys_vars/r/query_prealloc_size_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/query_prealloc_size_basic.result
@@ -36,6 +36,8 @@ SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size
8192
SET @@global.query_prealloc_size = 655354;
+Warnings:
+Warning 1292 Truncated incorrect query_prealloc_size value: '655354'
SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size
654336
@@ -45,6 +47,8 @@ SELECT @@session.query_prealloc_size ;
@@session.query_prealloc_size
8192
SET @@session.query_prealloc_size = 655345;
+Warnings:
+Warning 1292 Truncated incorrect query_prealloc_size value: '655345'
SELECT @@session.query_prealloc_size ;
@@session.query_prealloc_size
654336
@@ -55,8 +59,8 @@ Warning 1292 Truncated incorrect query_prealloc_size value: '0'
SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size
8192
-SET @@global.query_prealloc_size = 65530.34.;
-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 '.' at line 1
+SET @@global.query_prealloc_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'query_prealloc_size'
SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size
8192
@@ -86,8 +90,8 @@ Warning 1292 Truncated incorrect query_prealloc_size value: '0'
SELECT @@session.query_prealloc_size ;
@@session.query_prealloc_size
8192
-SET @@session.query_prealloc_size = 65530.34.;
-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 '.' at line 1
+SET @@session.query_prealloc_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'query_prealloc_size'
SELECT @@session.query_prealloc_size ;
@@session.query_prealloc_size
8192
diff --git a/mysql-test/suite/sys_vars/r/query_prealloc_size_basic_32.result b/mysql-test/suite/sys_vars/r/query_prealloc_size_basic_32.result
deleted file mode 100644
index a16c56f95c5..00000000000
--- a/mysql-test/suite/sys_vars/r/query_prealloc_size_basic_32.result
+++ /dev/null
@@ -1,166 +0,0 @@
-SET @start_global_value = @@global.query_prealloc_size ;
-SELECT @start_global_value;
-@start_global_value
-8192
-SET @start_session_value = @@session.query_prealloc_size ;
-SELECT @start_session_value;
-@start_session_value
-8192
-'#--------------------FN_DYNVARS_005_01-------------------------#'
-SET @@global.query_prealloc_size = 100;
-Warnings:
-Warning 1292 Truncated incorrect query_prealloc_size value: '100'
-SET @@global.query_prealloc_size = DEFAULT;
-SELECT @@global.query_prealloc_size ;
-@@global.query_prealloc_size
-8192
-SET @@session.query_prealloc_size = 200;
-Warnings:
-Warning 1292 Truncated incorrect query_prealloc_size value: '200'
-SET @@session.query_prealloc_size = DEFAULT;
-SELECT @@session.query_prealloc_size ;
-@@session.query_prealloc_size
-8192
-'#--------------------FN_DYNVARS_005_02-------------------------#'
-SET @@global.query_prealloc_size = DEFAULT;
-SELECT @@global.query_prealloc_size = 8192;
-@@global.query_prealloc_size = 8192
-1
-SET @@session.query_prealloc_size = DEFAULT;
-SELECT @@session.query_prealloc_size = 8192;
-@@session.query_prealloc_size = 8192
-1
-'#--------------------FN_DYNVARS_005_03-------------------------#'
-SET @@global.query_prealloc_size = 8192;
-SELECT @@global.query_prealloc_size ;
-@@global.query_prealloc_size
-8192
-SET @@global.query_prealloc_size = 655354;
-SELECT @@global.query_prealloc_size ;
-@@global.query_prealloc_size
-654336
-'#--------------------FN_DYNVARS_005_04-------------------------#'
-SET @@session.query_prealloc_size = 8192;
-SELECT @@session.query_prealloc_size ;
-@@session.query_prealloc_size
-8192
-SET @@session.query_prealloc_size = 655345;
-SELECT @@session.query_prealloc_size ;
-@@session.query_prealloc_size
-654336
-'#------------------FN_DYNVARS_005_05-----------------------#'
-SET @@global.query_prealloc_size = 0;
-Warnings:
-Warning 1292 Truncated incorrect query_prealloc_size value: '0'
-SELECT @@global.query_prealloc_size ;
-@@global.query_prealloc_size
-8192
-SET @@global.query_prealloc_size = 65530.34.;
-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 '.' at line 1
-SELECT @@global.query_prealloc_size ;
-@@global.query_prealloc_size
-8192
-SET @@global.query_prealloc_size = test;
-ERROR 42000: Incorrect argument type to variable 'query_prealloc_size'
-SELECT @@global.query_prealloc_size ;
-@@global.query_prealloc_size
-8192
-SET @@global.query_prealloc_size = "test";
-ERROR 42000: Incorrect argument type to variable 'query_prealloc_size'
-SELECT @@global.query_prealloc_size ;
-@@global.query_prealloc_size
-8192
-SET @@global.query_prealloc_size = 'test';
-ERROR 42000: Incorrect argument type to variable 'query_prealloc_size'
-SELECT @@global.query_prealloc_size ;
-@@global.query_prealloc_size
-8192
-SET @@global.query_prealloc_size = ON;
-ERROR 42000: Incorrect argument type to variable 'query_prealloc_size'
-SELECT @@global.query_prealloc_size ;
-@@global.query_prealloc_size
-8192
-SET @@session.query_prealloc_size = 0;
-Warnings:
-Warning 1292 Truncated incorrect query_prealloc_size value: '0'
-SELECT @@session.query_prealloc_size ;
-@@session.query_prealloc_size
-8192
-SET @@session.query_prealloc_size = 65530.34.;
-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 '.' at line 1
-SELECT @@session.query_prealloc_size ;
-@@session.query_prealloc_size
-8192
-SET @@session.query_prealloc_size = test;
-ERROR 42000: Incorrect argument type to variable 'query_prealloc_size'
-SELECT @@session.query_prealloc_size ;
-@@session.query_prealloc_size
-8192
-SET @@session.query_prealloc_size = "test";
-ERROR 42000: Incorrect argument type to variable 'query_prealloc_size'
-SELECT @@session.query_prealloc_size ;
-@@session.query_prealloc_size
-8192
-'#------------------FN_DYNVARS_005_06-----------------------#'
-SELECT @@global.query_prealloc_size = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='query_prealloc_size ';
-@@global.query_prealloc_size = VARIABLE_VALUE
-1
-'#------------------FN_DYNVARS_005_07-----------------------#'
-SELECT @@session.query_prealloc_size = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.SESSION_VARIABLES
-WHERE VARIABLE_NAME='query_prealloc_size ';
-@@session.query_prealloc_size = VARIABLE_VALUE
-1
-'#------------------FN_DYNVARS_005_08-----------------------#'
-SET @@global.query_prealloc_size = TRUE;
-Warnings:
-Warning 1292 Truncated incorrect query_prealloc_size value: '1'
-SELECT @@global.query_prealloc_size ;
-@@global.query_prealloc_size
-8192
-SET @@global.query_prealloc_size = FALSE;
-Warnings:
-Warning 1292 Truncated incorrect query_prealloc_size value: '0'
-SELECT @@global.query_prealloc_size ;
-@@global.query_prealloc_size
-8192
-'#---------------------FN_DYNVARS_001_09----------------------#'
-SET @@global.query_prealloc_size = 10;
-Warnings:
-Warning 1292 Truncated incorrect query_prealloc_size value: '10'
-SELECT @@query_prealloc_size = @@global.query_prealloc_size ;
-@@query_prealloc_size = @@global.query_prealloc_size
-1
-'#---------------------FN_DYNVARS_001_10----------------------#'
-SET @@query_prealloc_size = 100;
-Warnings:
-Warning 1292 Truncated incorrect query_prealloc_size value: '100'
-SELECT @@query_prealloc_size = @@local.query_prealloc_size ;
-@@query_prealloc_size = @@local.query_prealloc_size
-1
-SELECT @@local.query_prealloc_size = @@session.query_prealloc_size ;
-@@local.query_prealloc_size = @@session.query_prealloc_size
-1
-'#---------------------FN_DYNVARS_001_11----------------------#'
-SET query_prealloc_size = 1;
-Warnings:
-Warning 1292 Truncated incorrect query_prealloc_size value: '1'
-SELECT @@query_prealloc_size ;
-@@query_prealloc_size
-8192
-SELECT local.query_prealloc_size ;
-ERROR 42S02: Unknown table 'local' in field list
-SELECT session.query_prealloc_size ;
-ERROR 42S02: Unknown table 'session' in field list
-SELECT query_prealloc_size = @@session.query_prealloc_size ;
-ERROR 42S22: Unknown column 'query_prealloc_size' in 'field list'
-SET @@global.query_prealloc_size = @start_global_value;
-SELECT @@global.query_prealloc_size ;
-@@global.query_prealloc_size
-8192
-SET @@session.query_prealloc_size = @start_session_value;
-SELECT @@session.query_prealloc_size ;
-@@session.query_prealloc_size
-8192
diff --git a/mysql-test/suite/sys_vars/r/rand_seed1_basic.result b/mysql-test/suite/sys_vars/r/rand_seed1_basic.result
new file mode 100644
index 00000000000..7b92d533c9e
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/rand_seed1_basic.result
@@ -0,0 +1,27 @@
+select @@global.rand_seed1;
+ERROR HY000: Variable 'rand_seed1' is a SESSION variable
+select @@session.rand_seed1;
+@@session.rand_seed1
+0
+show global variables like 'rand_seed1';
+Variable_name Value
+show session variables like 'rand_seed1';
+Variable_name Value
+rand_seed1 0
+select * from information_schema.global_variables where variable_name='rand_seed1';
+VARIABLE_NAME VARIABLE_VALUE
+select * from information_schema.session_variables where variable_name='rand_seed1';
+VARIABLE_NAME VARIABLE_VALUE
+RAND_SEED1 0
+set session rand_seed1=1;
+select @@session.rand_seed1;
+@@session.rand_seed1
+0
+set global rand_seed1=1;
+ERROR HY000: Variable 'rand_seed1' is a SESSION variable and can't be used with SET GLOBAL
+set session rand_seed1=1.1;
+ERROR 42000: Incorrect argument type to variable 'rand_seed1'
+set session rand_seed1=1e1;
+ERROR 42000: Incorrect argument type to variable 'rand_seed1'
+set session rand_seed1="foo";
+ERROR 42000: Incorrect argument type to variable 'rand_seed1'
diff --git a/mysql-test/suite/sys_vars/r/rand_seed2_basic.result b/mysql-test/suite/sys_vars/r/rand_seed2_basic.result
new file mode 100644
index 00000000000..3d84aa3e37e
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/rand_seed2_basic.result
@@ -0,0 +1,27 @@
+select @@global.rand_seed2;
+ERROR HY000: Variable 'rand_seed2' is a SESSION variable
+select @@session.rand_seed2;
+@@session.rand_seed2
+0
+show global variables like 'rand_seed2';
+Variable_name Value
+show session variables like 'rand_seed2';
+Variable_name Value
+rand_seed2 0
+select * from information_schema.global_variables where variable_name='rand_seed2';
+VARIABLE_NAME VARIABLE_VALUE
+select * from information_schema.session_variables where variable_name='rand_seed2';
+VARIABLE_NAME VARIABLE_VALUE
+RAND_SEED2 0
+set session rand_seed2=1;
+select @@session.rand_seed2;
+@@session.rand_seed2
+0
+set global rand_seed2=1;
+ERROR HY000: Variable 'rand_seed2' is a SESSION variable and can't be used with SET GLOBAL
+set session rand_seed2=1.1;
+ERROR 42000: Incorrect argument type to variable 'rand_seed2'
+set session rand_seed2=1e1;
+ERROR 42000: Incorrect argument type to variable 'rand_seed2'
+set session rand_seed2="foo";
+ERROR 42000: Incorrect argument type to variable 'rand_seed2'
diff --git a/mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_32.result b/mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_32.result
index 9e3b7851d8a..26b32b56e57 100644
--- a/mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_32.result
@@ -37,7 +37,6 @@ Warning 1292 Truncated incorrect range_alloc_block_size value: '2048'
SELECT @@global.range_alloc_block_size;
@@global.range_alloc_block_size
4096
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
SET @@global.range_alloc_block_size = 4294967295;
Warnings:
Warning 1292 Truncated incorrect range_alloc_block_size value: '4294967295'
@@ -50,7 +49,6 @@ Warning 1292 Truncated incorrect range_alloc_block_size value: '4294967294'
SELECT @@global.range_alloc_block_size;
@@global.range_alloc_block_size
4294966272
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
'#--------------------FN_DYNVARS_137_04-------------------------#'
SET @@session.range_alloc_block_size = 2048;
Warnings:
@@ -89,8 +87,8 @@ Warning 1292 Truncated incorrect range_alloc_block_size value: '42949672951'
SELECT @@global.range_alloc_block_size;
@@global.range_alloc_block_size
4294966272
-SET @@global.range_alloc_block_size = 65530.34.;
-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 '.' at line 1
+SET @@global.range_alloc_block_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'range_alloc_block_size'
SELECT @@global.range_alloc_block_size;
@@global.range_alloc_block_size
4294966272
@@ -111,15 +109,14 @@ Warning 1292 Truncated incorrect range_alloc_block_size value: '-2'
SELECT @@session.range_alloc_block_size;
@@session.range_alloc_block_size
4096
-SET @@session.range_alloc_block_size = 65530.34.;
-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 '.' at line 1
+SET @@session.range_alloc_block_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'range_alloc_block_size'
SET @@session.range_alloc_block_size = 4294967296;
Warnings:
Warning 1292 Truncated incorrect range_alloc_block_size value: '4294967296'
SELECT @@session.range_alloc_block_size;
@@session.range_alloc_block_size
4294966272
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.range_alloc_block_size = test;
ERROR 42000: Incorrect argument type to variable 'range_alloc_block_size'
SELECT @@session.range_alloc_block_size;
diff --git a/mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_64.result b/mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_64.result
index 29bf939edac..ef91e91ca86 100644
--- a/mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_64.result
@@ -37,16 +37,18 @@ Warning 1292 Truncated incorrect range_alloc_block_size value: '2048'
SELECT @@global.range_alloc_block_size;
@@global.range_alloc_block_size
4096
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
SET @@global.range_alloc_block_size = 4294967295;
+Warnings:
+Warning 1292 Truncated incorrect range_alloc_block_size value: '4294967295'
SELECT @@global.range_alloc_block_size;
@@global.range_alloc_block_size
4294966272
SET @@global.range_alloc_block_size = 4294967294;
+Warnings:
+Warning 1292 Truncated incorrect range_alloc_block_size value: '4294967294'
SELECT @@global.range_alloc_block_size;
@@global.range_alloc_block_size
4294966272
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
'#--------------------FN_DYNVARS_137_04-------------------------#'
SET @@session.range_alloc_block_size = 2048;
Warnings:
@@ -55,10 +57,14 @@ SELECT @@session.range_alloc_block_size;
@@session.range_alloc_block_size
4096
SET @@session.range_alloc_block_size = 4294967295;
+Warnings:
+Warning 1292 Truncated incorrect range_alloc_block_size value: '4294967295'
SELECT @@session.range_alloc_block_size;
@@session.range_alloc_block_size
4294966272
SET @@session.range_alloc_block_size = 4294967294;
+Warnings:
+Warning 1292 Truncated incorrect range_alloc_block_size value: '4294967294'
SELECT @@session.range_alloc_block_size;
@@session.range_alloc_block_size
4294966272
@@ -76,11 +82,13 @@ SELECT @@global.range_alloc_block_size;
@@global.range_alloc_block_size
4096
SET @@global.range_alloc_block_size = 42949672951;
+Warnings:
+Warning 1292 Truncated incorrect range_alloc_block_size value: '42949672951'
SELECT @@global.range_alloc_block_size;
@@global.range_alloc_block_size
42949671936
-SET @@global.range_alloc_block_size = 65530.34.;
-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 '.' at line 1
+SET @@global.range_alloc_block_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'range_alloc_block_size'
SELECT @@global.range_alloc_block_size;
@@global.range_alloc_block_size
42949671936
@@ -101,13 +109,12 @@ Warning 1292 Truncated incorrect range_alloc_block_size value: '-2'
SELECT @@session.range_alloc_block_size;
@@session.range_alloc_block_size
4096
-SET @@session.range_alloc_block_size = 65530.34.;
-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 '.' at line 1
+SET @@session.range_alloc_block_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'range_alloc_block_size'
SET @@session.range_alloc_block_size = 4294967296;
SELECT @@session.range_alloc_block_size;
@@session.range_alloc_block_size
4294967296
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.range_alloc_block_size = test;
ERROR 42000: Incorrect argument type to variable 'range_alloc_block_size'
SELECT @@session.range_alloc_block_size;
diff --git a/mysql-test/suite/sys_vars/r/read_buffer_size_basic.result b/mysql-test/suite/sys_vars/r/read_buffer_size_basic.result
index 6aee841c939..bb1ed110ae2 100644
--- a/mysql-test/suite/sys_vars/r/read_buffer_size_basic.result
+++ b/mysql-test/suite/sys_vars/r/read_buffer_size_basic.result
@@ -34,20 +34,22 @@ SELECT @@session.read_buffer_size = 131072;
SET @@global.read_buffer_size = 8201;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '8201'
-SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ;
-@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228
-1
+SELECT @@global.read_buffer_size;
+@@global.read_buffer_size
+8192
SET @@global.read_buffer_size = 8200;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '8200'
-SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ;
-@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228
-1
+SELECT @@global.read_buffer_size;
+@@global.read_buffer_size
+8192
SET @@global.read_buffer_size = 2147479552;
SELECT @@global.read_buffer_size;
@@global.read_buffer_size
2147479552
SET @@global.read_buffer_size = 2147479551;
+Warnings:
+Warning 1292 Truncated incorrect read_buffer_size value: '2147479551'
SELECT @@global.read_buffer_size;
@@global.read_buffer_size
2147475456
@@ -55,20 +57,22 @@ SELECT @@global.read_buffer_size;
SET @@session.read_buffer_size = 8200;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '8200'
-SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ;
-@@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228
-1
+SELECT @@session.read_buffer_size;
+@@session.read_buffer_size
+8192
SET @@session.read_buffer_size = 8201;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '8201'
-SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ;
-@@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228
-1
+SELECT @@session.read_buffer_size;
+@@session.read_buffer_size
+8192
SET @@session.read_buffer_size = 2147479552;
SELECT @@session.read_buffer_size;
@@session.read_buffer_size
2147479552
SET @@session.read_buffer_size = 2147479551;
+Warnings:
+Warning 1292 Truncated incorrect read_buffer_size value: '2147479551'
SELECT @@session.read_buffer_size;
@@session.read_buffer_size
2147475456
@@ -76,23 +80,23 @@ SELECT @@session.read_buffer_size;
SET @@global.read_buffer_size = 8199;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '8199'
-SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ;
-@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228
-1
+SELECT @@global.read_buffer_size;
+@@global.read_buffer_size
+8192
SET @@global.read_buffer_size = -1024;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '-1024'
-SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ;
-@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228
-1
+SELECT @@global.read_buffer_size;
+@@global.read_buffer_size
+8192
SET @@global.read_buffer_size = 2147479553;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '2147479553'
SELECT @@global.read_buffer_size;
@@global.read_buffer_size
2147479552
-SET @@global.read_buffer_size = 65530.34.;
-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 '.' at line 1
+SET @@global.read_buffer_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'read_buffer_size'
SELECT @@global.read_buffer_size;
@@global.read_buffer_size
2147479552
@@ -104,24 +108,23 @@ SELECT @@global.read_buffer_size;
SET @@session.read_buffer_size = 8199;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '8199'
-SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ;
-@@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228
-1
+SELECT @@session.read_buffer_size;
+@@session.read_buffer_size
+8192
SET @@session.read_buffer_size = -2;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '-2'
-SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ;
-@@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228
-1
-SET @@session.read_buffer_size = 65530.34.;
-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 '.' at line 1
+SELECT @@session.read_buffer_size;
+@@session.read_buffer_size
+8192
+SET @@session.read_buffer_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'read_buffer_size'
SET @@session.read_buffer_size = 2147479553;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '2147479553'
SELECT @@session.read_buffer_size;
@@session.read_buffer_size
2147479552
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.read_buffer_size = test;
ERROR 42000: Incorrect argument type to variable 'read_buffer_size'
SELECT @@session.read_buffer_size;
@@ -143,23 +146,26 @@ WHERE VARIABLE_NAME='read_buffer_size';
SET @@global.read_buffer_size = TRUE;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '1'
-SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ;
-@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228
-1
+SELECT @@global.read_buffer_size;
+@@global.read_buffer_size
+8192
SET @@global.read_buffer_size = FALSE;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '0'
-SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ;
-@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228
-1
-'Bug: FN_DYNVARS_138_08- Errors are not coming on assigning TRUE/FALSE to variable'
+SELECT @@global.read_buffer_size;
+@@global.read_buffer_size
+8192
'#---------------------FN_DYNVARS_138_09----------------------#'
SET @@global.read_buffer_size = 9000;
+Warnings:
+Warning 1292 Truncated incorrect read_buffer_size value: '9000'
SELECT @@read_buffer_size = @@global.read_buffer_size;
@@read_buffer_size = @@global.read_buffer_size
0
'#---------------------FN_DYNVARS_138_10----------------------#'
SET @@read_buffer_size = 9000;
+Warnings:
+Warning 1292 Truncated incorrect read_buffer_size value: '9000'
SELECT @@read_buffer_size = @@local.read_buffer_size;
@@read_buffer_size = @@local.read_buffer_size
1
@@ -168,9 +174,11 @@ SELECT @@local.read_buffer_size = @@session.read_buffer_size;
1
'#---------------------FN_DYNVARS_138_11----------------------#'
SET read_buffer_size = 9100;
-SELECT @@read_buffer_size= 8200 OR @@read_buffer_size= 8228 ;
-@@read_buffer_size= 8200 OR @@read_buffer_size= 8228
-1
+Warnings:
+Warning 1292 Truncated incorrect read_buffer_size value: '9100'
+SELECT @@read_buffer_size;
+@@read_buffer_size
+8192
SELECT local.read_buffer_size;
ERROR 42S02: Unknown table 'local' in field list
SELECT session.read_buffer_size;
diff --git a/mysql-test/suite/sys_vars/r/read_only_basic.result b/mysql-test/suite/sys_vars/r/read_only_basic.result
index ac153fa337c..0b344eeb932 100644
--- a/mysql-test/suite/sys_vars/r/read_only_basic.result
+++ b/mysql-test/suite/sys_vars/r/read_only_basic.result
@@ -55,7 +55,7 @@ SELECT @@global.read_only;
@@global.read_only
0
SET @@global.read_only = 10000.01;
-ERROR 42000: Variable 'read_only' can't be set to the value of '10000'
+ERROR 42000: Incorrect argument type to variable 'read_only'
SELECT @@global.read_only;
@@global.read_only
0
@@ -69,7 +69,6 @@ ERROR 42000: Variable 'read_only' can't be set to the value of '42949672950'
SELECT @@global.read_only;
@@global.read_only
0
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.read_only = 'test';
ERROR 42000: Variable 'read_only' can't be set to the value of 'test'
SELECT @@global.read_only;
@@ -82,15 +81,15 @@ SELECT @@read_only;
@@read_only
0
'#----------------------FN_DYNVARS_139_06------------------------#'
-SELECT @@global.read_only = VARIABLE_VALUE
+SELECT IF(@@global.read_only, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='read_only';
-@@global.read_only = VARIABLE_VALUE
+IF(@@global.read_only, "ON", "OFF") = VARIABLE_VALUE
1
-SELECT @@read_only = VARIABLE_VALUE
+SELECT IF(@@read_only, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='read_only';
-@@read_only = VARIABLE_VALUE
+IF(@@read_only, "ON", "OFF") = VARIABLE_VALUE
1
'#---------------------FN_DYNVARS_139_07----------------------#'
SET @@global.read_only = 1;
diff --git a/mysql-test/suite/sys_vars/r/read_only_func.result b/mysql-test/suite/sys_vars/r/read_only_func.result
index 35b42d468d6..7e98b7adc50 100644
--- a/mysql-test/suite/sys_vars/r/read_only_func.result
+++ b/mysql-test/suite/sys_vars/r/read_only_func.result
@@ -20,7 +20,7 @@ id name
CREATE user sameea;
** Connecting connn using username 'sameea' **
SET Global read_ONLY=ON;
-ERROR 42000: Access denied; you need the SUPER privilege for this operation
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
CREATE TABLE t2
(
id INT NOT NULL auto_increment,
diff --git a/mysql-test/suite/sys_vars/r/read_rnd_buffer_size_basic.result b/mysql-test/suite/sys_vars/r/read_rnd_buffer_size_basic.result
index f2645e4d527..8ee67e71b79 100644
--- a/mysql-test/suite/sys_vars/r/read_rnd_buffer_size_basic.result
+++ b/mysql-test/suite/sys_vars/r/read_rnd_buffer_size_basic.result
@@ -8,42 +8,24 @@ SELECT @start_session_value;
262144
'#--------------------FN_DYNVARS_140_01-------------------------#'
SET @@global.read_rnd_buffer_size = 1000;
-Warnings:
-Warning 1292 Truncated incorrect read_rnd_buffer_size value: '1000'
SET @@global.read_rnd_buffer_size = DEFAULT;
SELECT @@global.read_rnd_buffer_size;
@@global.read_rnd_buffer_size
262144
SET @@session.read_rnd_buffer_size = 2000;
-Warnings:
-Warning 1292 Truncated incorrect read_rnd_buffer_size value: '2000'
SET @@session.read_rnd_buffer_size = DEFAULT;
SELECT @@session.read_rnd_buffer_size;
@@session.read_rnd_buffer_size
262144
-'#--------------------FN_DYNVARS_140_02-------------------------#'
-SET @@global.read_rnd_buffer_size = DEFAULT;
-SELECT @@global.read_rnd_buffer_size = 262144;
-@@global.read_rnd_buffer_size = 262144
-1
-SET @@session.read_rnd_buffer_size = DEFAULT;
-SELECT @@session.read_rnd_buffer_size = 262144;
-@@session.read_rnd_buffer_size = 262144
-1
-'Bug# 34876: This variable has invalid default value as compared to documentation';
'#--------------------FN_DYNVARS_140_03-------------------------#'
SET @@global.read_rnd_buffer_size = 8201;
-Warnings:
-Warning 1292 Truncated incorrect read_rnd_buffer_size value: '8201'
-SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228;
-@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228
-1
+SELECT @@global.read_rnd_buffer_size;
+@@global.read_rnd_buffer_size
+8201
SET @@global.read_rnd_buffer_size = 8200;
-Warnings:
-Warning 1292 Truncated incorrect read_rnd_buffer_size value: '8200'
-SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228;
-@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228
-1
+SELECT @@global.read_rnd_buffer_size;
+@@global.read_rnd_buffer_size
+8200
SET @@global.read_rnd_buffer_size = 2147479552;
SELECT @@global.read_rnd_buffer_size;
@@global.read_rnd_buffer_size
@@ -51,21 +33,16 @@ SELECT @@global.read_rnd_buffer_size;
SET @@global.read_rnd_buffer_size = 2147479551;
SELECT @@global.read_rnd_buffer_size;
@@global.read_rnd_buffer_size
-2147475456
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
+2147479551
'#--------------------FN_DYNVARS_140_04-------------------------#'
SET @@session.read_rnd_buffer_size = 8200;
-Warnings:
-Warning 1292 Truncated incorrect read_rnd_buffer_size value: '8200'
-SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228;
-@@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228
-1
+SELECT @@session.read_rnd_buffer_size;
+@@session.read_rnd_buffer_size
+8200
SET @@session.read_rnd_buffer_size = 8201;
-Warnings:
-Warning 1292 Truncated incorrect read_rnd_buffer_size value: '8201'
-SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228;
-@@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228
-1
+SELECT @@session.read_rnd_buffer_size;
+@@session.read_rnd_buffer_size
+8201
SET @@session.read_rnd_buffer_size = 2147479552;
SELECT @@session.read_rnd_buffer_size;
@@session.read_rnd_buffer_size
@@ -73,62 +50,40 @@ SELECT @@session.read_rnd_buffer_size;
SET @@session.read_rnd_buffer_size = 2147479551;
SELECT @@session.read_rnd_buffer_size;
@@session.read_rnd_buffer_size
-2147475456
+2147479551
'#------------------FN_DYNVARS_140_05-----------------------#'
SET @@global.read_rnd_buffer_size = 8199;
-Warnings:
-Warning 1292 Truncated incorrect read_rnd_buffer_size value: '8199'
-SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228;
-@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228
-1
+SELECT @@global.read_rnd_buffer_size;
+@@global.read_rnd_buffer_size
+8199
SET @@global.read_rnd_buffer_size = -1024;
Warnings:
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '-1024'
-SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228;
-@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228
-1
-SET @@global.read_rnd_buffer_size = 2147479553;
-Warnings:
-Warning 1292 Truncated incorrect read_rnd_buffer_size value: '2147479553'
SELECT @@global.read_rnd_buffer_size;
@@global.read_rnd_buffer_size
-2147479552
-SET @@global.read_rnd_buffer_size = 65530.34.;
-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 '.' at line 1
+1
+SET @@global.read_rnd_buffer_size = 2147479553;
SELECT @@global.read_rnd_buffer_size;
@@global.read_rnd_buffer_size
-2147479552
+2147479553
+SET @@global.read_rnd_buffer_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'read_rnd_buffer_size'
SET @@global.read_rnd_buffer_size = test;
ERROR 42000: Incorrect argument type to variable 'read_rnd_buffer_size'
-SELECT @@global.read_rnd_buffer_size;
-@@global.read_rnd_buffer_size
-2147479552
SET @@session.read_rnd_buffer_size = 8199;
-Warnings:
-Warning 1292 Truncated incorrect read_rnd_buffer_size value: '8199'
-SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228;
-@@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228
-1
+SELECT @@session.read_rnd_buffer_size;
+@@session.read_rnd_buffer_size
+8199
SET @@session.read_rnd_buffer_size = -2;
Warnings:
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '-2'
-SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228;
-@@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228
-1
-SET @@session.read_rnd_buffer_size = 65530.34.;
-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 '.' at line 1
-SET @@session.read_rnd_buffer_size = 2147479553;
-Warnings:
-Warning 1292 Truncated incorrect read_rnd_buffer_size value: '2147479553'
SELECT @@session.read_rnd_buffer_size;
@@session.read_rnd_buffer_size
-2147479552
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
+1
+SET @@session.read_rnd_buffer_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'read_rnd_buffer_size'
SET @@session.read_rnd_buffer_size = test;
ERROR 42000: Incorrect argument type to variable 'read_rnd_buffer_size'
-SELECT @@session.read_rnd_buffer_size;
-@@session.read_rnd_buffer_size
-2147479552
'#------------------FN_DYNVARS_140_06-----------------------#'
SELECT @@global.read_rnd_buffer_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='read_rnd_buffer_size';
@@global.read_rnd_buffer_size = VARIABLE_VALUE
@@ -141,16 +96,14 @@ VARIABLE_VALUE
1
'#------------------FN_DYNVARS_140_08-----------------------#'
SET @@global.read_rnd_buffer_size = TRUE;
-Warnings:
-Warning 1292 Truncated incorrect read_rnd_buffer_size value: '1'
-SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228;
-@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228
+SELECT @@global.read_rnd_buffer_size;
+@@global.read_rnd_buffer_size
1
SET @@global.read_rnd_buffer_size = FALSE;
Warnings:
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '0'
-SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228;
-@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228
+SELECT @@global.read_rnd_buffer_size;
+@@global.read_rnd_buffer_size
1
'#---------------------FN_DYNVARS_140_09----------------------#'
SET @@global.read_rnd_buffer_size = 9000;
@@ -167,9 +120,9 @@ SELECT @@local.read_rnd_buffer_size = @@session.read_rnd_buffer_size;
1
'#---------------------FN_DYNVARS_140_11----------------------#'
SET read_rnd_buffer_size = 9100;
-SELECT @@read_rnd_buffer_size= 8200 OR @@read_rnd_buffer_size= 8228;
-@@read_rnd_buffer_size= 8200 OR @@read_rnd_buffer_size= 8228
-1
+SELECT @@read_rnd_buffer_size;
+@@read_rnd_buffer_size
+9100
SELECT local.read_rnd_buffer_size;
ERROR 42S02: Unknown table 'local' in field list
SELECT session.read_rnd_buffer_size;
diff --git a/mysql-test/suite/sys_vars/r/relay_log_basic.result b/mysql-test/suite/sys_vars/r/relay_log_basic.result
new file mode 100644
index 00000000000..1b93db7442f
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/relay_log_basic.result
@@ -0,0 +1,21 @@
+select @@global.relay_log;
+@@global.relay_log
+NULL
+select @@session.relay_log;
+ERROR HY000: Variable 'relay_log' is a GLOBAL variable
+show global variables like 'relay_log';
+Variable_name Value
+relay_log
+show session variables like 'relay_log';
+Variable_name Value
+relay_log
+select * from information_schema.global_variables where variable_name='relay_log';
+VARIABLE_NAME VARIABLE_VALUE
+RELAY_LOG
+select * from information_schema.session_variables where variable_name='relay_log';
+VARIABLE_NAME VARIABLE_VALUE
+RELAY_LOG
+set global relay_log=1;
+ERROR HY000: Variable 'relay_log' is a read only variable
+set session relay_log=1;
+ERROR HY000: Variable 'relay_log' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/relay_log_index_basic.result b/mysql-test/suite/sys_vars/r/relay_log_index_basic.result
new file mode 100644
index 00000000000..56a3a34957c
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/relay_log_index_basic.result
@@ -0,0 +1,21 @@
+select @@global.relay_log_index;
+@@global.relay_log_index
+NULL
+select @@session.relay_log_index;
+ERROR HY000: Variable 'relay_log_index' is a GLOBAL variable
+show global variables like 'relay_log_index';
+Variable_name Value
+relay_log_index
+show session variables like 'relay_log_index';
+Variable_name Value
+relay_log_index
+select * from information_schema.global_variables where variable_name='relay_log_index';
+VARIABLE_NAME VARIABLE_VALUE
+RELAY_LOG_INDEX
+select * from information_schema.session_variables where variable_name='relay_log_index';
+VARIABLE_NAME VARIABLE_VALUE
+RELAY_LOG_INDEX
+set global relay_log_index=1;
+ERROR HY000: Variable 'relay_log_index' is a read only variable
+set session relay_log_index=1;
+ERROR HY000: Variable 'relay_log_index' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/relay_log_info_file_basic.result b/mysql-test/suite/sys_vars/r/relay_log_info_file_basic.result
new file mode 100644
index 00000000000..4c967b66882
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/relay_log_info_file_basic.result
@@ -0,0 +1,21 @@
+select @@global.relay_log_info_file;
+@@global.relay_log_info_file
+relay-log.info
+select @@session.relay_log_info_file;
+ERROR HY000: Variable 'relay_log_info_file' is a GLOBAL variable
+show global variables like 'relay_log_info_file';
+Variable_name Value
+relay_log_info_file relay-log.info
+show session variables like 'relay_log_info_file';
+Variable_name Value
+relay_log_info_file relay-log.info
+select * from information_schema.global_variables where variable_name='relay_log_info_file';
+VARIABLE_NAME VARIABLE_VALUE
+RELAY_LOG_INFO_FILE relay-log.info
+select * from information_schema.session_variables where variable_name='relay_log_info_file';
+VARIABLE_NAME VARIABLE_VALUE
+RELAY_LOG_INFO_FILE relay-log.info
+set global relay_log_info_file=1;
+ERROR HY000: Variable 'relay_log_info_file' is a read only variable
+set session relay_log_info_file=1;
+ERROR HY000: Variable 'relay_log_info_file' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/relay_log_purge_basic.result b/mysql-test/suite/sys_vars/r/relay_log_purge_basic.result
index 6f938c5265f..660550639cc 100644
--- a/mysql-test/suite/sys_vars/r/relay_log_purge_basic.result
+++ b/mysql-test/suite/sys_vars/r/relay_log_purge_basic.result
@@ -69,10 +69,10 @@ ERROR HY000: Variable 'relay_log_purge' is a GLOBAL variable and should be set w
SELECT @@session.relay_log_purge;
ERROR HY000: Variable 'relay_log_purge' is a GLOBAL variable
'#----------------------FN_DYNVARS_141_06------------------------#'
-SELECT @@global.relay_log_purge = VARIABLE_VALUE
+SELECT IF(@@global.relay_log_purge, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='relay_log_purge';
-@@global.relay_log_purge = VARIABLE_VALUE
+IF(@@global.relay_log_purge, "ON", "OFF") = VARIABLE_VALUE
1
'#---------------------FN_DYNVARS_141_07----------------------#'
SET @@global.relay_log_purge = 1;
diff --git a/mysql-test/suite/sys_vars/r/relay_log_recovery_basic.result b/mysql-test/suite/sys_vars/r/relay_log_recovery_basic.result
new file mode 100644
index 00000000000..97b991ce65b
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/relay_log_recovery_basic.result
@@ -0,0 +1,41 @@
+SET @start_global_value = @@global.relay_log_recovery;
+SELECT @start_global_value;
+@start_global_value
+0
+select @@global.relay_log_recovery;
+@@global.relay_log_recovery
+0
+select @@session.relay_log_recovery;
+ERROR HY000: Variable 'relay_log_recovery' is a GLOBAL variable
+show global variables like 'relay_log_recovery';
+Variable_name Value
+relay_log_recovery OFF
+show session variables like 'relay_log_recovery';
+Variable_name Value
+relay_log_recovery OFF
+select * from information_schema.global_variables where variable_name='relay_log_recovery';
+VARIABLE_NAME VARIABLE_VALUE
+RELAY_LOG_RECOVERY OFF
+select * from information_schema.session_variables where variable_name='relay_log_recovery';
+VARIABLE_NAME VARIABLE_VALUE
+RELAY_LOG_RECOVERY OFF
+set global relay_log_recovery=1;
+select @@global.relay_log_recovery;
+@@global.relay_log_recovery
+1
+set global relay_log_recovery=OFF;
+select @@global.relay_log_recovery;
+@@global.relay_log_recovery
+0
+set session relay_log_recovery=1;
+ERROR HY000: Variable 'relay_log_recovery' is a GLOBAL variable and should be set with SET GLOBAL
+set global relay_log_recovery=1.1;
+ERROR 42000: Incorrect argument type to variable 'relay_log_recovery'
+set global relay_log_recovery=1e1;
+ERROR 42000: Incorrect argument type to variable 'relay_log_recovery'
+set global relay_log_recovery="foo";
+ERROR 42000: Variable 'relay_log_recovery' can't be set to the value of 'foo'
+SET @@global.relay_log_recovery = @start_global_value;
+SELECT @@global.relay_log_recovery;
+@@global.relay_log_recovery
+0
diff --git a/mysql-test/suite/sys_vars/r/relay_log_space_limit_basic.result b/mysql-test/suite/sys_vars/r/relay_log_space_limit_basic.result
new file mode 100644
index 00000000000..f107352f448
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/relay_log_space_limit_basic.result
@@ -0,0 +1,21 @@
+select @@global.relay_log_space_limit;
+@@global.relay_log_space_limit
+0
+select @@session.relay_log_space_limit;
+ERROR HY000: Variable 'relay_log_space_limit' is a GLOBAL variable
+show global variables like 'relay_log_space_limit';
+Variable_name Value
+relay_log_space_limit 0
+show session variables like 'relay_log_space_limit';
+Variable_name Value
+relay_log_space_limit 0
+select * from information_schema.global_variables where variable_name='relay_log_space_limit';
+VARIABLE_NAME VARIABLE_VALUE
+RELAY_LOG_SPACE_LIMIT 0
+select * from information_schema.session_variables where variable_name='relay_log_space_limit';
+VARIABLE_NAME VARIABLE_VALUE
+RELAY_LOG_SPACE_LIMIT 0
+set global relay_log_space_limit=1;
+ERROR HY000: Variable 'relay_log_space_limit' is a read only variable
+set session relay_log_space_limit=1;
+ERROR HY000: Variable 'relay_log_space_limit' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/report_host_basic.result b/mysql-test/suite/sys_vars/r/report_host_basic.result
new file mode 100644
index 00000000000..96775aeb65d
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/report_host_basic.result
@@ -0,0 +1,21 @@
+select @@global.report_host;
+@@global.report_host
+NULL
+select @@session.report_host;
+ERROR HY000: Variable 'report_host' is a GLOBAL variable
+show global variables like 'report_host';
+Variable_name Value
+report_host
+show session variables like 'report_host';
+Variable_name Value
+report_host
+select * from information_schema.global_variables where variable_name='report_host';
+VARIABLE_NAME VARIABLE_VALUE
+REPORT_HOST
+select * from information_schema.session_variables where variable_name='report_host';
+VARIABLE_NAME VARIABLE_VALUE
+REPORT_HOST
+set global report_host=1;
+ERROR HY000: Variable 'report_host' is a read only variable
+set session report_host=1;
+ERROR HY000: Variable 'report_host' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/report_password_basic.result b/mysql-test/suite/sys_vars/r/report_password_basic.result
new file mode 100644
index 00000000000..290f1556b1c
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/report_password_basic.result
@@ -0,0 +1,21 @@
+select @@global.report_password;
+@@global.report_password
+NULL
+select @@session.report_password;
+ERROR HY000: Variable 'report_password' is a GLOBAL variable
+show global variables like 'report_password';
+Variable_name Value
+report_password
+show session variables like 'report_password';
+Variable_name Value
+report_password
+select * from information_schema.global_variables where variable_name='report_password';
+VARIABLE_NAME VARIABLE_VALUE
+REPORT_PASSWORD
+select * from information_schema.session_variables where variable_name='report_password';
+VARIABLE_NAME VARIABLE_VALUE
+REPORT_PASSWORD
+set global report_password=1;
+ERROR HY000: Variable 'report_password' is a read only variable
+set session report_password=1;
+ERROR HY000: Variable 'report_password' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/report_port_basic.result b/mysql-test/suite/sys_vars/r/report_port_basic.result
new file mode 100644
index 00000000000..1a7849c1328
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/report_port_basic.result
@@ -0,0 +1,21 @@
+select @@global.report_port;
+@@global.report_port
+DEFAULT_MASTER_PORT
+select @@session.report_port;
+ERROR HY000: Variable 'report_port' is a GLOBAL variable
+show global variables like 'report_port';
+Variable_name Value
+report_port DEFAULT_MASTER_PORT
+show session variables like 'report_port';
+Variable_name Value
+report_port DEFAULT_MASTER_PORT
+select * from information_schema.global_variables where variable_name='report_port';
+VARIABLE_NAME VARIABLE_VALUE
+REPORT_PORT DEFAULT_MASTER_PORT
+select * from information_schema.session_variables where variable_name='report_port';
+VARIABLE_NAME VARIABLE_VALUE
+REPORT_PORT DEFAULT_MASTER_PORT
+set global report_port=1;
+ERROR HY000: Variable 'report_port' is a read only variable
+set session report_port=1;
+ERROR HY000: Variable 'report_port' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/report_user_basic.result b/mysql-test/suite/sys_vars/r/report_user_basic.result
new file mode 100644
index 00000000000..696c961974e
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/report_user_basic.result
@@ -0,0 +1,21 @@
+select @@global.report_user;
+@@global.report_user
+NULL
+select @@session.report_user;
+ERROR HY000: Variable 'report_user' is a GLOBAL variable
+show global variables like 'report_user';
+Variable_name Value
+report_user
+show session variables like 'report_user';
+Variable_name Value
+report_user
+select * from information_schema.global_variables where variable_name='report_user';
+VARIABLE_NAME VARIABLE_VALUE
+REPORT_USER
+select * from information_schema.session_variables where variable_name='report_user';
+VARIABLE_NAME VARIABLE_VALUE
+REPORT_USER
+set global report_user=1;
+ERROR HY000: Variable 'report_user' is a read only variable
+set session report_user=1;
+ERROR HY000: Variable 'report_user' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/rpl_init_slave_func.result b/mysql-test/suite/sys_vars/r/rpl_init_slave_func.result
index bdb586e84c2..36b467696be 100644
--- a/mysql-test/suite/sys_vars/r/rpl_init_slave_func.result
+++ b/mysql-test/suite/sys_vars/r/rpl_init_slave_func.result
@@ -7,15 +7,19 @@ start slave;
connection slave
SET @start_max_connections= @@global.max_connections;
SET @start_init_slave= @@global.init_slave;
-SET @@global.init_slave = 'SET @@global.max_connections = @@global.max_connections + 1';
+SET NAMES utf8;
+SET @@global.init_slave = 'SET @@global.max_connections = @@global.max_connections + 1 -- комментарий';
DROP TABLE IF EXISTS t1;
CREATE TEMPORARY TABLE t1 AS SELECT @@global.init_slave AS my_column;
DESCRIBE t1;
Field Type Null Key Default Extra
-my_column varchar(59) YES NULL
+my_column varchar(74) YES NULL
+select length(my_column) from t1;
+length(my_column)
+85
DROP TABLE t1;
-SELECT @@global.init_slave = 'SET @@global.max_connections = @@global.max_connections + 1';
-@@global.init_slave = 'SET @@global.max_connections = @@global.max_connections + 1'
+SELECT @@global.init_slave = 'SET @@global.max_connections = @@global.max_connections + 1 -- комментарий';
+@@global.init_slave = 'SET @@global.max_connections = @@global.max_connections + 1 -- комментарий'
1
Expect 1
SELECT @@global.max_connections= @start_max_connections;
diff --git a/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_32.result b/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_32.result
index 3b7ecf9dc4a..f5b771c47cc 100644
--- a/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_32.result
@@ -4,31 +4,43 @@ SELECT @start_global_value;
0
'#--------------------FN_DYNVARS_142_01-------------------------#'
SET @@global.rpl_recovery_rank = 500000;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SET @@global.rpl_recovery_rank = DEFAULT;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
0
'#--------------------FN_DYNVARS_142_02-------------------------#'
SET @@global.rpl_recovery_rank = 0;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
0
SET @@global.rpl_recovery_rank = 1024;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
1024
SET @@global.rpl_recovery_rank = 123456789;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
123456789
SET @@global.rpl_recovery_rank = 2147483648*2;
Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
Warning 1292 Truncated incorrect rpl_recovery_rank value: '4294967296'
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
4294967295
SET @@global.rpl_recovery_rank = 2147483648*1024;
Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
Warning 1292 Truncated incorrect rpl_recovery_rank value: '2199023255552'
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
@@ -38,6 +50,7 @@ SELECT @@global.rpl_recovery_rank;
4294967295
SET @@global.rpl_recovery_rank = 2147483648*2147483648;
Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
Warning 1292 Truncated incorrect rpl_recovery_rank value: '4611686018427387904'
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
@@ -52,30 +65,35 @@ ERROR HY000: Variable 'rpl_recovery_rank' is a GLOBAL variable and should be set
'#------------------FN_DYNVARS_142_04-----------------------#'
SET @@global.rpl_recovery_rank = -1;
Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
Warning 1292 Truncated incorrect rpl_recovery_rank value: '-1'
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
0
SET @@global.rpl_recovery_rank = -2147483648;
Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
Warning 1292 Truncated incorrect rpl_recovery_rank value: '-2147483648'
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
0
SET @@global.rpl_recovery_rank = -2147483649;
Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
Warning 1292 Truncated incorrect rpl_recovery_rank value: '-2147483649'
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
0
-SET @@global.rpl_recovery_rank = 65530.34.;
-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 '.' at line 1
+SET @@global.rpl_recovery_rank = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'rpl_recovery_rank'
SET @@global.rpl_recovery_rank = 2147483649.56;
ERROR 42000: Incorrect argument type to variable 'rpl_recovery_rank'
SET @@global.rpl_recovery_rank = 1G;
ERROR 42000: Incorrect argument type to variable 'rpl_recovery_rank'
'#------------------FN_DYNVARS_142_05-----------------------#'
SET @@global.rpl_recovery_rank = 3000;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@global.rpl_recovery_rank = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='rpl_recovery_rank';
@@ -89,15 +107,21 @@ count(VARIABLE_VALUE)
1
'#------------------FN_DYNVARS_142_07-----------------------#'
SET @@global.rpl_recovery_rank = TRUE;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
1
SET @@global.rpl_recovery_rank = FALSE;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
0
'#---------------------FN_DYNVARS_001_08----------------------#'
SET @@global.rpl_recovery_rank = 512;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@rpl_recovery_rank = @@global.rpl_recovery_rank;
@@rpl_recovery_rank = @@global.rpl_recovery_rank
1
@@ -110,7 +134,11 @@ SELECT @@rpl_recovery_rank;
@@rpl_recovery_rank
512
SET global rpl_recovery_rank = 64;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SET @@global.rpl_recovery_rank = @start_global_value;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
0
diff --git a/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_64.result b/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_64.result
index 9ec34c677e1..14a7cdd0046 100644
--- a/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_64.result
@@ -4,28 +4,42 @@ SELECT @start_global_value;
0
'#--------------------FN_DYNVARS_142_01-------------------------#'
SET @@global.rpl_recovery_rank = 500000;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SET @@global.rpl_recovery_rank = DEFAULT;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
0
'#--------------------FN_DYNVARS_142_02-------------------------#'
SET @@global.rpl_recovery_rank = 0;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
0
SET @@global.rpl_recovery_rank = 1024;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
1024
SET @@global.rpl_recovery_rank = 123456789;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
123456789
SET @@global.rpl_recovery_rank = 2147483648*2;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
4294967296
SET @@global.rpl_recovery_rank = 2147483648*1024;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
2199023255552
@@ -33,6 +47,8 @@ SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
2199023255552
SET @@global.rpl_recovery_rank = 2147483648*2147483648;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
4611686018427387904
@@ -46,30 +62,35 @@ ERROR HY000: Variable 'rpl_recovery_rank' is a GLOBAL variable and should be set
'#------------------FN_DYNVARS_142_04-----------------------#'
SET @@global.rpl_recovery_rank = -1;
Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
Warning 1292 Truncated incorrect rpl_recovery_rank value: '-1'
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
0
SET @@global.rpl_recovery_rank = -2147483648;
Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
Warning 1292 Truncated incorrect rpl_recovery_rank value: '-2147483648'
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
0
SET @@global.rpl_recovery_rank = -2147483649;
Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
Warning 1292 Truncated incorrect rpl_recovery_rank value: '-2147483649'
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
0
-SET @@global.rpl_recovery_rank = 65530.34.;
-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 '.' at line 1
+SET @@global.rpl_recovery_rank = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'rpl_recovery_rank'
SET @@global.rpl_recovery_rank = 2147483649.56;
ERROR 42000: Incorrect argument type to variable 'rpl_recovery_rank'
SET @@global.rpl_recovery_rank = 1G;
ERROR 42000: Incorrect argument type to variable 'rpl_recovery_rank'
'#------------------FN_DYNVARS_142_05-----------------------#'
SET @@global.rpl_recovery_rank = 3000;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@global.rpl_recovery_rank = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='rpl_recovery_rank';
@@ -83,15 +104,21 @@ count(VARIABLE_VALUE)
1
'#------------------FN_DYNVARS_142_07-----------------------#'
SET @@global.rpl_recovery_rank = TRUE;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
1
SET @@global.rpl_recovery_rank = FALSE;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
0
'#---------------------FN_DYNVARS_001_08----------------------#'
SET @@global.rpl_recovery_rank = 512;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@rpl_recovery_rank = @@global.rpl_recovery_rank;
@@rpl_recovery_rank = @@global.rpl_recovery_rank
1
@@ -104,7 +131,11 @@ SELECT @@rpl_recovery_rank;
@@rpl_recovery_rank
512
SET global rpl_recovery_rank = 64;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SET @@global.rpl_recovery_rank = @start_global_value;
+Warnings:
+Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
SELECT @@global.rpl_recovery_rank;
@@global.rpl_recovery_rank
0
diff --git a/mysql-test/suite/sys_vars/r/secure_auth_basic.result b/mysql-test/suite/sys_vars/r/secure_auth_basic.result
index b8a903ba420..9f12a1760a4 100644
--- a/mysql-test/suite/sys_vars/r/secure_auth_basic.result
+++ b/mysql-test/suite/sys_vars/r/secure_auth_basic.result
@@ -68,11 +68,11 @@ WHERE VARIABLE_NAME='secure_auth';
count(VARIABLE_VALUE)
1
'#----------------------FN_DYNVARS_143_07------------------------#'
-SELECT @@global.secure_auth = VARIABLE_VALUE
+SELECT IF(@@global.secure_auth, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='secure_auth';
-@@global.secure_auth = VARIABLE_VALUE
-0
+IF(@@global.secure_auth, "ON", "OFF") = VARIABLE_VALUE
+1
SELECT @@global.secure_auth;
@@global.secure_auth
1
diff --git a/mysql-test/suite/sys_vars/r/secure_file_priv_basic.result b/mysql-test/suite/sys_vars/r/secure_file_priv_basic.result
new file mode 100644
index 00000000000..799b6468dd3
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/secure_file_priv_basic.result
@@ -0,0 +1,21 @@
+select @@global.secure_file_priv;
+@@global.secure_file_priv
+MYSQLTEST_VARDIR/
+select @@session.secure_file_priv;
+ERROR HY000: Variable 'secure_file_priv' is a GLOBAL variable
+show global variables like 'secure_file_priv';
+Variable_name Value
+secure_file_priv MYSQLTEST_VARDIR/
+show session variables like 'secure_file_priv';
+Variable_name Value
+secure_file_priv MYSQLTEST_VARDIR/
+select * from information_schema.global_variables where variable_name='secure_file_priv';
+VARIABLE_NAME VARIABLE_VALUE
+SECURE_FILE_PRIV MYSQLTEST_VARDIR/
+select * from information_schema.session_variables where variable_name='secure_file_priv';
+VARIABLE_NAME VARIABLE_VALUE
+SECURE_FILE_PRIV MYSQLTEST_VARDIR/
+set global secure_file_priv=1;
+ERROR HY000: Variable 'secure_file_priv' is a read only variable
+set session secure_file_priv=1;
+ERROR HY000: Variable 'secure_file_priv' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/server_id_basic_64.result b/mysql-test/suite/sys_vars/r/server_id_basic.result
index 12d49248f54..4059ca9e6a5 100644
--- a/mysql-test/suite/sys_vars/r/server_id_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/server_id_basic.result
@@ -69,15 +69,14 @@ Warning 1292 Truncated incorrect server_id value: '4294967298'
SELECT @@global.server_id;
@@global.server_id
4294967295
-SET @@global.server_id = 65530.34.;
-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 '.' at line 1
+SET @@global.server_id = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'server_id'
SET @@global.server_id = '125';
ERROR 42000: Incorrect argument type to variable 'server_id'
SET @@global.server_id = 7483649.56;
ERROR 42000: Incorrect argument type to variable 'server_id'
SET @@global.server_id = 1G;
ERROR 42000: Incorrect argument type to variable 'server_id'
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
'#------------------FN_DYNVARS_144_06-----------------------#'
SET @@global.server_id = 3000;
SELECT @@global.server_id = VARIABLE_VALUE
diff --git a/mysql-test/suite/sys_vars/r/server_id_basic_32.result b/mysql-test/suite/sys_vars/r/server_id_basic_32.result
deleted file mode 100644
index 12d49248f54..00000000000
--- a/mysql-test/suite/sys_vars/r/server_id_basic_32.result
+++ /dev/null
@@ -1,121 +0,0 @@
-SET @@global.general_log= 0;
-SET @start_global_value = @@global.server_id;
-SELECT @start_global_value;
-@start_global_value
-1
-'#--------------------FN_DYNVARS_144_01-------------------------#'
-SET @@global.server_id = 500000;
-SET @@global.server_id = DEFAULT;
-SELECT @@global.server_id;
-@@global.server_id
-0
-'#--------------------FN_DYNVARS_144_02-------------------------#'
-SET @@global.server_id = DEFAULT;
-SELECT @@global.server_id = 0;
-@@global.server_id = 0
-1
-'#--------------------FN_DYNVARS_144_03-------------------------#'
-SET @@global.server_id = 0;
-SELECT @@global.server_id;
-@@global.server_id
-0
-SET @@global.server_id = 1;
-SELECT @@global.server_id;
-@@global.server_id
-1
-SET @@global.server_id = 15;
-SELECT @@global.server_id;
-@@global.server_id
-15
-SET @@global.server_id = 1024;
-SELECT @@global.server_id;
-@@global.server_id
-1024
-SET @@global.server_id = 123456789;
-SELECT @@global.server_id;
-@@global.server_id
-123456789
-SET @@global.server_id = 2147483648;
-SELECT @@global.server_id;
-@@global.server_id
-2147483648
-SET @@global.server_id = 2147483648*2-1;
-SELECT @@global.server_id;
-@@global.server_id
-4294967295
-'#--------------------FN_DYNVARS_144_04-------------------------#'
-SET @@server_id = 2;
-ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL
-SET @@session.server_id = 3;
-ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL
-SET @@local.server_id = 4;
-ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL
-'#------------------FN_DYNVARS_144_05-----------------------#'
-SET @@global.server_id = -1;
-Warnings:
-Warning 1292 Truncated incorrect server_id value: '-1'
-SELECT @@global.server_id;
-@@global.server_id
-0
-SET @@global.server_id = -2147483648;
-Warnings:
-Warning 1292 Truncated incorrect server_id value: '-2147483648'
-SELECT @@global.server_id;
-@@global.server_id
-0
-SET @@global.server_id = 2147483649*2;
-Warnings:
-Warning 1292 Truncated incorrect server_id value: '4294967298'
-SELECT @@global.server_id;
-@@global.server_id
-4294967295
-SET @@global.server_id = 65530.34.;
-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 '.' at line 1
-SET @@global.server_id = '125';
-ERROR 42000: Incorrect argument type to variable 'server_id'
-SET @@global.server_id = 7483649.56;
-ERROR 42000: Incorrect argument type to variable 'server_id'
-SET @@global.server_id = 1G;
-ERROR 42000: Incorrect argument type to variable 'server_id'
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
-'#------------------FN_DYNVARS_144_06-----------------------#'
-SET @@global.server_id = 3000;
-SELECT @@global.server_id = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='server_id';
-@@global.server_id = VARIABLE_VALUE
-1
-'#------------------FN_DYNVARS_144_07-----------------------#'
-SELECT count(VARIABLE_VALUE)
-FROM INFORMATION_SCHEMA.SESSION_VARIABLES
-WHERE VARIABLE_NAME='server_id';
-count(VARIABLE_VALUE)
-1
-'#------------------FN_DYNVARS_144_08-----------------------#'
-SET @@global.server_id = TRUE;
-SELECT @@global.server_id;
-@@global.server_id
-1
-SET @@global.server_id = FALSE;
-SELECT @@global.server_id;
-@@global.server_id
-0
-'#---------------------FN_DYNVARS_001_09----------------------#'
-SET @@global.server_id = 512;
-SELECT @@server_id = @@global.server_id;
-@@server_id = @@global.server_id
-1
-'#---------------------FN_DYNVARS_001_10----------------------#'
-SET server_id = 2048;
-ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT server_id;
-ERROR 42S22: Unknown column 'server_id' in 'field list'
-SELECT @@server_id;
-@@server_id
-512
-SET global server_id = 99;
-SET @@global.server_id = @start_global_value;
-SELECT @@global.server_id;
-@@global.server_id
-1
-SET @@global.general_log= 1;
diff --git a/mysql-test/suite/sys_vars/r/shared_memory_base_name_basic.result b/mysql-test/suite/sys_vars/r/shared_memory_base_name_basic.result
new file mode 100644
index 00000000000..a94a906e121
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/shared_memory_base_name_basic.result
@@ -0,0 +1,21 @@
+select @@global.shared_memory_base_name;
+@@global.shared_memory_base_name
+MYSQLTEST_VARDIR/tmp/mysqld.1.sock
+select @@session.shared_memory_base_name;
+ERROR HY000: Variable 'shared_memory_base_name' is a GLOBAL variable
+show global variables like 'shared_memory_base_name';
+Variable_name Value
+shared_memory_base_name MYSQLTEST_VARDIR/tmp/mysqld.1.sock
+show session variables like 'shared_memory_base_name';
+Variable_name Value
+shared_memory_base_name MYSQLTEST_VARDIR/tmp/mysqld.1.sock
+select * from information_schema.global_variables where variable_name='shared_memory_base_name';
+VARIABLE_NAME VARIABLE_VALUE
+SHARED_MEMORY_BASE_NAME MYSQLTEST_VARDIR/tmp/mysqld.1.sock
+select * from information_schema.session_variables where variable_name='shared_memory_base_name';
+VARIABLE_NAME VARIABLE_VALUE
+SHARED_MEMORY_BASE_NAME MYSQLTEST_VARDIR/tmp/mysqld.1.sock
+set global shared_memory_base_name=1;
+ERROR HY000: Variable 'shared_memory_base_name' is a read only variable
+set session shared_memory_base_name=1;
+ERROR HY000: Variable 'shared_memory_base_name' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/shared_memory_basic.result b/mysql-test/suite/sys_vars/r/shared_memory_basic.result
new file mode 100644
index 00000000000..ab671af610c
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/shared_memory_basic.result
@@ -0,0 +1,21 @@
+select @@global.shared_memory;
+@@global.shared_memory
+0
+select @@session.shared_memory;
+ERROR HY000: Variable 'shared_memory' is a GLOBAL variable
+show global variables like 'shared_memory';
+Variable_name Value
+shared_memory OFF
+show session variables like 'shared_memory';
+Variable_name Value
+shared_memory OFF
+select * from information_schema.global_variables where variable_name='shared_memory';
+VARIABLE_NAME VARIABLE_VALUE
+SHARED_MEMORY OFF
+select * from information_schema.session_variables where variable_name='shared_memory';
+VARIABLE_NAME VARIABLE_VALUE
+SHARED_MEMORY OFF
+set global shared_memory=1;
+ERROR HY000: Variable 'shared_memory' is a read only variable
+set session shared_memory=1;
+ERROR HY000: Variable 'shared_memory' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/skip_external_locking_basic.result b/mysql-test/suite/sys_vars/r/skip_external_locking_basic.result
new file mode 100644
index 00000000000..fd6446bed4c
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/skip_external_locking_basic.result
@@ -0,0 +1,21 @@
+select @@global.skip_external_locking;
+@@global.skip_external_locking
+1
+select @@session.skip_external_locking;
+ERROR HY000: Variable 'skip_external_locking' is a GLOBAL variable
+show global variables like 'skip_external_locking';
+Variable_name Value
+skip_external_locking ON
+show session variables like 'skip_external_locking';
+Variable_name Value
+skip_external_locking ON
+select * from information_schema.global_variables where variable_name='skip_external_locking';
+VARIABLE_NAME VARIABLE_VALUE
+SKIP_EXTERNAL_LOCKING ON
+select * from information_schema.session_variables where variable_name='skip_external_locking';
+VARIABLE_NAME VARIABLE_VALUE
+SKIP_EXTERNAL_LOCKING ON
+set global skip_external_locking=1;
+ERROR HY000: Variable 'skip_external_locking' is a read only variable
+set session skip_external_locking=1;
+ERROR HY000: Variable 'skip_external_locking' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/skip_networking_basic.result b/mysql-test/suite/sys_vars/r/skip_networking_basic.result
new file mode 100644
index 00000000000..f2d4d5bce6c
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/skip_networking_basic.result
@@ -0,0 +1,21 @@
+select @@global.skip_networking;
+@@global.skip_networking
+0
+select @@session.skip_networking;
+ERROR HY000: Variable 'skip_networking' is a GLOBAL variable
+show global variables like 'skip_networking';
+Variable_name Value
+skip_networking OFF
+show session variables like 'skip_networking';
+Variable_name Value
+skip_networking OFF
+select * from information_schema.global_variables where variable_name='skip_networking';
+VARIABLE_NAME VARIABLE_VALUE
+SKIP_NETWORKING OFF
+select * from information_schema.session_variables where variable_name='skip_networking';
+VARIABLE_NAME VARIABLE_VALUE
+SKIP_NETWORKING OFF
+set global skip_networking=1;
+ERROR HY000: Variable 'skip_networking' is a read only variable
+set session skip_networking=1;
+ERROR HY000: Variable 'skip_networking' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/skip_show_database_basic.result b/mysql-test/suite/sys_vars/r/skip_show_database_basic.result
new file mode 100644
index 00000000000..d5aad0f1c17
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/skip_show_database_basic.result
@@ -0,0 +1,21 @@
+select @@global.skip_show_database;
+@@global.skip_show_database
+0
+select @@session.skip_show_database;
+ERROR HY000: Variable 'skip_show_database' is a GLOBAL variable
+show global variables like 'skip_show_database';
+Variable_name Value
+skip_show_database OFF
+show session variables like 'skip_show_database';
+Variable_name Value
+skip_show_database OFF
+select * from information_schema.global_variables where variable_name='skip_show_database';
+VARIABLE_NAME VARIABLE_VALUE
+SKIP_SHOW_DATABASE OFF
+select * from information_schema.session_variables where variable_name='skip_show_database';
+VARIABLE_NAME VARIABLE_VALUE
+SKIP_SHOW_DATABASE OFF
+set global skip_show_database=1;
+ERROR HY000: Variable 'skip_show_database' is a read only variable
+set session skip_show_database=1;
+ERROR HY000: Variable 'skip_show_database' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/slave_allow_batching_basic.result b/mysql-test/suite/sys_vars/r/slave_allow_batching_basic.result
index 186cfbc8f0f..a01fffac004 100644
--- a/mysql-test/suite/sys_vars/r/slave_allow_batching_basic.result
+++ b/mysql-test/suite/sys_vars/r/slave_allow_batching_basic.result
@@ -1,6 +1,5 @@
SET @global_start_value = @@global.slave_allow_batching;
ERROR HY000: Unknown system variable 'slave_allow_batching'
-'Bug: This variable is not supported in mysql version 5.1.22'
'#--------------------FN_DYNVARS_145_01------------------------#'
'#---------------------FN_DYNVARS_145_02-------------------------#'
'#--------------------FN_DYNVARS_145_03------------------------#'
diff --git a/mysql-test/suite/sys_vars/r/slave_compressed_protocol_basic.result b/mysql-test/suite/sys_vars/r/slave_compressed_protocol_basic.result
index 3f2d9d2fb3f..039cce257e5 100644
--- a/mysql-test/suite/sys_vars/r/slave_compressed_protocol_basic.result
+++ b/mysql-test/suite/sys_vars/r/slave_compressed_protocol_basic.result
@@ -66,11 +66,11 @@ WHERE VARIABLE_NAME='slave_compressed_protocol';
count(VARIABLE_VALUE)
1
'#----------------------FN_DYNVARS_147_07------------------------#'
-SELECT @@global.slave_compressed_protocol = VARIABLE_VALUE
+SELECT IF(@@global.slave_compressed_protocol, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='slave_compressed_protocol';
-@@global.slave_compressed_protocol = VARIABLE_VALUE
-0
+IF(@@global.slave_compressed_protocol, "ON", "OFF") = VARIABLE_VALUE
+1
SELECT @@global.slave_compressed_protocol;
@@global.slave_compressed_protocol
1
diff --git a/mysql-test/suite/sys_vars/r/slave_load_tmpdir_basic.result b/mysql-test/suite/sys_vars/r/slave_load_tmpdir_basic.result
new file mode 100644
index 00000000000..ae30fbacb2b
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/slave_load_tmpdir_basic.result
@@ -0,0 +1,21 @@
+select @@global.slave_load_tmpdir;
+@@global.slave_load_tmpdir
+MYSQL_TMP_DIR/mysqld.1
+select @@session.slave_load_tmpdir;
+ERROR HY000: Variable 'slave_load_tmpdir' is a GLOBAL variable
+show global variables like 'slave_load_tmpdir';
+Variable_name Value
+slave_load_tmpdir MYSQL_TMP_DIR/mysqld.1
+show session variables like 'slave_load_tmpdir';
+Variable_name Value
+slave_load_tmpdir MYSQL_TMP_DIR/mysqld.1
+select * from information_schema.global_variables where variable_name='slave_load_tmpdir';
+VARIABLE_NAME VARIABLE_VALUE
+SLAVE_LOAD_TMPDIR MYSQL_TMP_DIR/mysqld.1
+select * from information_schema.session_variables where variable_name='slave_load_tmpdir';
+VARIABLE_NAME VARIABLE_VALUE
+SLAVE_LOAD_TMPDIR MYSQL_TMP_DIR/mysqld.1
+set global slave_load_tmpdir=1;
+ERROR HY000: Variable 'slave_load_tmpdir' is a read only variable
+set session slave_load_tmpdir=1;
+ERROR HY000: Variable 'slave_load_tmpdir' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/slave_net_timeout_basic.result b/mysql-test/suite/sys_vars/r/slave_net_timeout_basic.result
index 728ce106625..1ef0b27b756 100644
--- a/mysql-test/suite/sys_vars/r/slave_net_timeout_basic.result
+++ b/mysql-test/suite/sys_vars/r/slave_net_timeout_basic.result
@@ -74,15 +74,14 @@ Warning 1292 Truncated incorrect slave_net_timeout value: '4294967298'
SELECT @@global.slave_net_timeout;
@@global.slave_net_timeout
31536000
-SET @@global.slave_net_timeout = 65530.34.;
-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 '.' at line 1
+SET @@global.slave_net_timeout = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'slave_net_timeout'
SET @@global.slave_net_timeout = 100s;
ERROR 42000: Incorrect argument type to variable 'slave_net_timeout'
SET @@global.slave_net_timeout = 7483649.56;
ERROR 42000: Incorrect argument type to variable 'slave_net_timeout'
SET @@global.slave_net_timeout = 0.6;
ERROR 42000: Incorrect argument type to variable 'slave_net_timeout'
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
'#------------------FN_DYNVARS_146_06-----------------------#'
SET @@global.slave_net_timeout = 3000;
SELECT @@global.slave_net_timeout = VARIABLE_VALUE
diff --git a/mysql-test/suite/sys_vars/r/slave_skip_errors_basic.result b/mysql-test/suite/sys_vars/r/slave_skip_errors_basic.result
new file mode 100644
index 00000000000..b74c7d3847a
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/slave_skip_errors_basic.result
@@ -0,0 +1,21 @@
+select @@global.slave_skip_errors;
+@@global.slave_skip_errors
+OFF
+select @@session.slave_skip_errors;
+ERROR HY000: Variable 'slave_skip_errors' is a GLOBAL variable
+show global variables like 'slave_skip_errors';
+Variable_name Value
+slave_skip_errors OFF
+show session variables like 'slave_skip_errors';
+Variable_name Value
+slave_skip_errors OFF
+select * from information_schema.global_variables where variable_name='slave_skip_errors';
+VARIABLE_NAME VARIABLE_VALUE
+SLAVE_SKIP_ERRORS OFF
+select * from information_schema.session_variables where variable_name='slave_skip_errors';
+VARIABLE_NAME VARIABLE_VALUE
+SLAVE_SKIP_ERRORS OFF
+set global slave_skip_errors=1;
+ERROR HY000: Variable 'slave_skip_errors' is a read only variable
+set session slave_skip_errors=1;
+ERROR HY000: Variable 'slave_skip_errors' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_32.result b/mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_32.result
index 1b6edb18f8d..86a760a5386 100644
--- a/mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_32.result
@@ -68,9 +68,8 @@ Warning 1292 Truncated incorrect slave_transaction_retries value: '4611686022722
SELECT @@global.slave_transaction_retries;
@@global.slave_transaction_retries
4294967295
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
-SET @@global.slave_transaction_retries = 65530.34.;
-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 '.' at line 1
+SET @@global.slave_transaction_retries = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries'
SET @@global.slave_transaction_retries = '100';
ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries'
SET @@global.slave_transaction_retries = 7483649.56;
diff --git a/mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_64.result b/mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_64.result
index 6e0bc659f9e..9bb422905b4 100644
--- a/mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_64.result
@@ -64,9 +64,8 @@ SET @@global.slave_transaction_retries = 2147483649*2147483649;
SELECT @@global.slave_transaction_retries;
@@global.slave_transaction_retries
4611686022722355201
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
-SET @@global.slave_transaction_retries = 65530.34.;
-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 '.' at line 1
+SET @@global.slave_transaction_retries = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries'
SET @@global.slave_transaction_retries = '100';
ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries'
SET @@global.slave_transaction_retries = 7483649.56;
diff --git a/mysql-test/suite/sys_vars/r/slave_type_conversions_basic.result b/mysql-test/suite/sys_vars/r/slave_type_conversions_basic.result
new file mode 100644
index 00000000000..722d1b39e4f
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/slave_type_conversions_basic.result
@@ -0,0 +1,26 @@
+set @saved_slave_type_conversions = @@global.slave_type_conversions;
+SELECT @@global.slave_type_conversions;
+@@global.slave_type_conversions
+
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='';
+SELECT @@global.slave_type_conversions;
+@@global.slave_type_conversions
+
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_NON_LOSSY';
+SELECT @@global.slave_type_conversions;
+@@global.slave_type_conversions
+ALL_NON_LOSSY
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY';
+SELECT @@global.slave_type_conversions;
+@@global.slave_type_conversions
+ALL_LOSSY
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY,ALL_NON_LOSSY';
+SELECT @@global.slave_type_conversions;
+@@global.slave_type_conversions
+ALL_LOSSY,ALL_NON_LOSSY
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY,ALL_NON_LOSSY,NONEXISTING_BIT';
+ERROR 42000: Variable 'slave_type_conversions' can't be set to the value of 'NONEXISTING_BIT'
+SELECT @@global.slave_type_conversions;
+@@global.slave_type_conversions
+ALL_LOSSY,ALL_NON_LOSSY
+set global slave_type_conversions = @saved_slave_type_conversions;
diff --git a/mysql-test/suite/sys_vars/r/slow_launch_time_basic.result b/mysql-test/suite/sys_vars/r/slow_launch_time_basic.result
index da13af4f4e8..4c7539be677 100644
--- a/mysql-test/suite/sys_vars/r/slow_launch_time_basic.result
+++ b/mysql-test/suite/sys_vars/r/slow_launch_time_basic.result
@@ -70,7 +70,6 @@ Warning 1292 Truncated incorrect slow_launch_time value: '42949672950'
SELECT @@global.slow_launch_time;
@@global.slow_launch_time
31536000
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.slow_launch_time = ON;
ERROR 42000: Incorrect argument type to variable 'slow_launch_time'
SELECT @@global.slow_launch_time;
diff --git a/mysql-test/suite/sys_vars/r/slow_query_log_basic.result b/mysql-test/suite/sys_vars/r/slow_query_log_basic.result
index 716309aeaff..aece80cdada 100644
--- a/mysql-test/suite/sys_vars/r/slow_query_log_basic.result
+++ b/mysql-test/suite/sys_vars/r/slow_query_log_basic.result
@@ -47,10 +47,10 @@ ERROR HY000: Variable 'slow_query_log' is a GLOBAL variable and should be set wi
SELECT @@session.slow_query_log;
ERROR HY000: Variable 'slow_query_log' is a GLOBAL variable
'#----------------------FN_DYNVARS_004_05------------------------#'
-SELECT @@global.slow_query_log = VARIABLE_VALUE
+SELECT IF(@@global.slow_query_log, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='slow_query_log';
-@@global.slow_query_log = VARIABLE_VALUE
+IF(@@global.slow_query_log, "ON", "OFF") = VARIABLE_VALUE
1
'#---------------------FN_DYNVARS_004_06----------------------#'
SET @@global.slow_query_log = 0;
diff --git a/mysql-test/suite/sys_vars/r/slow_query_log_file_basic.result b/mysql-test/suite/sys_vars/r/slow_query_log_file_basic.result
index 925f940a5c4..e3c48725998 100644
--- a/mysql-test/suite/sys_vars/r/slow_query_log_file_basic.result
+++ b/mysql-test/suite/sys_vars/r/slow_query_log_file_basic.result
@@ -1,9 +1,10 @@
SET @start_value = @@global.slow_query_log_file;
'#---------------------FN_DYNVARS_004_01-------------------------#'
SET @@global.slow_query_log_file = DEFAULT;
-SELECT RIGHT(@@global.slow_query_log_file,15);
-RIGHT(@@global.slow_query_log_file,15)
-mysqld-slow.log
+SET @a=concat(left(@@hostname, instr(concat(@@hostname, '.'), '.')-1), '-slow.log');
+SELECT RIGHT(@@global.slow_query_log_file, length(@a)) = @a;
+RIGHT(@@global.slow_query_log_file, length(@a)) = @a
+1
'#--------------------FN_DYNVARS_004_02------------------------#'
SET @@global.slow_query_log_file = mytest.log;
SET @@global.slow_query_log_file = 12;
diff --git a/mysql-test/suite/sys_vars/r/socket_basic.result b/mysql-test/suite/sys_vars/r/socket_basic.result
new file mode 100644
index 00000000000..51a09b9b762
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/socket_basic.result
@@ -0,0 +1,21 @@
+select @@global.socket;
+@@global.socket
+MYSQL_TMP_DIR/mysqld.1.sock
+select @@session.socket;
+ERROR HY000: Variable 'socket' is a GLOBAL variable
+show global variables like 'socket';
+Variable_name Value
+socket MYSQL_TMP_DIR/mysqld.1.sock
+show session variables like 'socket';
+Variable_name Value
+socket MYSQL_TMP_DIR/mysqld.1.sock
+select * from information_schema.global_variables where variable_name='socket';
+VARIABLE_NAME VARIABLE_VALUE
+SOCKET MYSQL_TMP_DIR/mysqld.1.sock
+select * from information_schema.session_variables where variable_name='socket';
+VARIABLE_NAME VARIABLE_VALUE
+SOCKET MYSQL_TMP_DIR/mysqld.1.sock
+set global socket=1;
+ERROR HY000: Variable 'socket' is a read only variable
+set session socket=1;
+ERROR HY000: Variable 'socket' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/sort_buffer_size_basic_32.result b/mysql-test/suite/sys_vars/r/sort_buffer_size_basic_32.result
index 9d3eadcc26f..cddfa9f52c9 100644
--- a/mysql-test/suite/sys_vars/r/sort_buffer_size_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/sort_buffer_size_basic_32.result
@@ -3,32 +3,32 @@ SET @start_session_value = @@session.sort_buffer_size;
'#--------------------FN_DYNVARS_151_01-------------------------#'
SET @@global.sort_buffer_size = 1000;
SET @@global.sort_buffer_size = DEFAULT;
-SELECT @@global.sort_buffer_size BETWEEN 2097116 AND 2100000;
-@@global.sort_buffer_size BETWEEN 2097116 AND 2100000
-1
+SELECT @@global.sort_buffer_size;
+@@global.sort_buffer_size
+2097152
SET @@session.sort_buffer_size = 2000;
SET @@session.sort_buffer_size = DEFAULT;
-SELECT @@session.sort_buffer_size BETWEEN 2097116 AND 2100000;
-@@session.sort_buffer_size BETWEEN 2097116 AND 2100000
-1
+SELECT @@session.sort_buffer_size;
+@@session.sort_buffer_size
+2097152
'#--------------------FN_DYNVARS_151_02-------------------------#'
SET @@global.sort_buffer_size = DEFAULT;
-SELECT @@global.sort_buffer_size BETWEEN 2097116 AND 2100000;
-@@global.sort_buffer_size BETWEEN 2097116 AND 2100000
-1
+SELECT @@global.sort_buffer_size;
+@@global.sort_buffer_size
+2097152
SET @@session.sort_buffer_size = DEFAULT;
-SELECT @@session.sort_buffer_size BETWEEN 2097116 AND 2100000;
-@@session.sort_buffer_size BETWEEN 2097116 AND 2100000
-1
+SELECT @@session.sort_buffer_size;
+@@session.sort_buffer_size
+2097152
'#--------------------FN_DYNVARS_151_03-------------------------#'
SET @@global.sort_buffer_size = 32776;
-SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
-@@global.sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@global.sort_buffer_size;
+@@global.sort_buffer_size
+32776
SET @@global.sort_buffer_size = 32777;
-SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
-@@global.sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@global.sort_buffer_size;
+@@global.sort_buffer_size
+32777
SET @@global.sort_buffer_size = 4294967295;
SELECT @@global.sort_buffer_size;
@@global.sort_buffer_size
@@ -39,13 +39,13 @@ SELECT @@global.sort_buffer_size;
4294967294
'#--------------------FN_DYNVARS_151_04-------------------------#'
SET @@session.sort_buffer_size = 32776;
-SELECT @@session.sort_buffer_size BETWEEN 32776 AND 32999;
-@@session.sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@session.sort_buffer_size;
+@@session.sort_buffer_size
+32776
SET @@session.sort_buffer_size = 32777;
-SELECT @@session.sort_buffer_size BETWEEN 32776 AND 32999;
-@@session.sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@session.sort_buffer_size;
+@@session.sort_buffer_size
+32777
SET @@session.sort_buffer_size = 4294967295;
SELECT @@session.sort_buffer_size;
@@session.sort_buffer_size
@@ -56,19 +56,19 @@ SELECT @@session.sort_buffer_size;
4294967294
'#------------------FN_DYNVARS_151_05-----------------------#'
SET @@global.sort_buffer_size = 32775;
-SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
-@@global.sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@global.sort_buffer_size;
+@@global.sort_buffer_size
+32775
SET @@global.sort_buffer_size = -1024;
-SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
-@@global.sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@global.sort_buffer_size;
+@@global.sort_buffer_size
+32768
SET @@global.sort_buffer_size = 4294967296;
SELECT @@global.sort_buffer_size;
@@global.sort_buffer_size
4294967295
-SET @@global.sort_buffer_size = 65530.34.;
-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 '.' at line 1
+SET @@global.sort_buffer_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'sort_buffer_size'
SELECT @@global.sort_buffer_size;
@@global.sort_buffer_size
4294967295
@@ -78,15 +78,15 @@ SELECT @@global.sort_buffer_size;
@@global.sort_buffer_size
4294967295
SET @@session.sort_buffer_size = 32775;
-SELECT @@session.sort_buffer_size BETWEEN 32776 AND 32999;
-@@session.sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@session.sort_buffer_size;
+@@session.sort_buffer_size
+32775
SET @@session.sort_buffer_size = -2;
-SELECT @@session.sort_buffer_size BETWEEN 32776 AND 32999;
-@@session.sort_buffer_size BETWEEN 32776 AND 32999
-1
-SET @@session.sort_buffer_size = 65530.34.;
-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 '.' at line 1
+SELECT @@session.sort_buffer_size;
+@@session.sort_buffer_size
+32768
+SET @@session.sort_buffer_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'sort_buffer_size'
SET @@session.sort_buffer_size = 4294967296;
SELECT @@session.sort_buffer_size;
@@session.sort_buffer_size
@@ -105,13 +105,13 @@ INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='sort_buffer_size';
1
'#------------------FN_DYNVARS_151_08-----------------------#'
SET @@global.sort_buffer_size = TRUE;
-SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
-@@global.sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@global.sort_buffer_size;
+@@global.sort_buffer_size
+32768
SET @@global.sort_buffer_size = FALSE;
-SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
-@@global.sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@global.sort_buffer_size;
+@@global.sort_buffer_size
+32768
'#---------------------FN_DYNVARS_151_09----------------------#'
SET @@global.sort_buffer_size = 9000;
SELECT @@sort_buffer_size = @@global.sort_buffer_size;
@@ -127,9 +127,9 @@ SELECT @@local.sort_buffer_size = @@session.sort_buffer_size;
1
'#---------------------FN_DYNVARS_151_11----------------------#'
SET sort_buffer_size = 9100;
-SELECT @@sort_buffer_size BETWEEN 32776 AND 32999;
-@@sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@sort_buffer_size;
+@@sort_buffer_size
+32768
SELECT local.sort_buffer_size;
ERROR 42S02: Unknown table 'local' in field list
SELECT session.sort_buffer_size;
diff --git a/mysql-test/suite/sys_vars/r/sort_buffer_size_basic_64.result b/mysql-test/suite/sys_vars/r/sort_buffer_size_basic_64.result
index c993c8a0a88..4fd96c154c3 100644
--- a/mysql-test/suite/sys_vars/r/sort_buffer_size_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/sort_buffer_size_basic_64.result
@@ -3,32 +3,32 @@ SET @start_session_value = @@session.sort_buffer_size;
'#--------------------FN_DYNVARS_151_01-------------------------#'
SET @@global.sort_buffer_size = 1000;
SET @@global.sort_buffer_size = DEFAULT;
-SELECT @@global.sort_buffer_size BETWEEN 2097116 AND 2100000;
-@@global.sort_buffer_size BETWEEN 2097116 AND 2100000
-1
+SELECT @@global.sort_buffer_size;
+@@global.sort_buffer_size
+2097152
SET @@session.sort_buffer_size = 2000;
SET @@session.sort_buffer_size = DEFAULT;
-SELECT @@session.sort_buffer_size BETWEEN 2097116 AND 2100000;
-@@session.sort_buffer_size BETWEEN 2097116 AND 2100000
-1
+SELECT @@session.sort_buffer_size;
+@@session.sort_buffer_size
+2097152
'#--------------------FN_DYNVARS_151_02-------------------------#'
SET @@global.sort_buffer_size = DEFAULT;
-SELECT @@global.sort_buffer_size BETWEEN 2097116 AND 2100000;
-@@global.sort_buffer_size BETWEEN 2097116 AND 2100000
-1
+SELECT @@global.sort_buffer_size;
+@@global.sort_buffer_size
+2097152
SET @@session.sort_buffer_size = DEFAULT;
-SELECT @@session.sort_buffer_size BETWEEN 2097116 AND 2100000;
-@@session.sort_buffer_size BETWEEN 2097116 AND 2100000
-1
+SELECT @@session.sort_buffer_size;
+@@session.sort_buffer_size
+2097152
'#--------------------FN_DYNVARS_151_03-------------------------#'
SET @@global.sort_buffer_size = 32776;
-SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
-@@global.sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@global.sort_buffer_size;
+@@global.sort_buffer_size
+32776
SET @@global.sort_buffer_size = 32777;
-SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
-@@global.sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@global.sort_buffer_size;
+@@global.sort_buffer_size
+32777
SET @@global.sort_buffer_size = 4294967295;
SELECT @@global.sort_buffer_size;
@@global.sort_buffer_size
@@ -39,13 +39,13 @@ SELECT @@global.sort_buffer_size;
4294967294
'#--------------------FN_DYNVARS_151_04-------------------------#'
SET @@session.sort_buffer_size = 32776;
-SELECT @@session.sort_buffer_size BETWEEN 32776 AND 32999;
-@@session.sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@session.sort_buffer_size;
+@@session.sort_buffer_size
+32776
SET @@session.sort_buffer_size = 32777;
-SELECT @@session.sort_buffer_size BETWEEN 32776 AND 32999;
-@@session.sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@session.sort_buffer_size;
+@@session.sort_buffer_size
+32777
SET @@session.sort_buffer_size = 4294967295;
SELECT @@session.sort_buffer_size;
@@session.sort_buffer_size
@@ -56,19 +56,19 @@ SELECT @@session.sort_buffer_size;
4294967294
'#------------------FN_DYNVARS_151_05-----------------------#'
SET @@global.sort_buffer_size = 32775;
-SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
-@@global.sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@global.sort_buffer_size;
+@@global.sort_buffer_size
+32775
SET @@global.sort_buffer_size = -1024;
-SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
-@@global.sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@global.sort_buffer_size;
+@@global.sort_buffer_size
+32768
SET @@global.sort_buffer_size = 4294967296;
SELECT @@global.sort_buffer_size;
@@global.sort_buffer_size
4294967296
-SET @@global.sort_buffer_size = 65530.34.;
-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 '.' at line 1
+SET @@global.sort_buffer_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'sort_buffer_size'
SELECT @@global.sort_buffer_size;
@@global.sort_buffer_size
4294967296
@@ -78,15 +78,15 @@ SELECT @@global.sort_buffer_size;
@@global.sort_buffer_size
4294967296
SET @@session.sort_buffer_size = 32775;
-SELECT @@session.sort_buffer_size BETWEEN 32776 AND 32999;
-@@session.sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@session.sort_buffer_size;
+@@session.sort_buffer_size
+32775
SET @@session.sort_buffer_size = -2;
-SELECT @@session.sort_buffer_size BETWEEN 32776 AND 32999;
-@@session.sort_buffer_size BETWEEN 32776 AND 32999
-1
-SET @@session.sort_buffer_size = 65530.34.;
-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 '.' at line 1
+SELECT @@session.sort_buffer_size;
+@@session.sort_buffer_size
+32768
+SET @@session.sort_buffer_size = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'sort_buffer_size'
SET @@session.sort_buffer_size = 4294967296;
SELECT @@session.sort_buffer_size;
@@session.sort_buffer_size
@@ -105,13 +105,13 @@ INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='sort_buffer_size';
1
'#------------------FN_DYNVARS_151_08-----------------------#'
SET @@global.sort_buffer_size = TRUE;
-SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
-@@global.sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@global.sort_buffer_size;
+@@global.sort_buffer_size
+32768
SET @@global.sort_buffer_size = FALSE;
-SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
-@@global.sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@global.sort_buffer_size;
+@@global.sort_buffer_size
+32768
'#---------------------FN_DYNVARS_151_09----------------------#'
SET @@global.sort_buffer_size = 9000;
SELECT @@sort_buffer_size = @@global.sort_buffer_size;
@@ -127,9 +127,9 @@ SELECT @@local.sort_buffer_size = @@session.sort_buffer_size;
1
'#---------------------FN_DYNVARS_151_11----------------------#'
SET sort_buffer_size = 9100;
-SELECT @@sort_buffer_size BETWEEN 32776 AND 32999;
-@@sort_buffer_size BETWEEN 32776 AND 32999
-1
+SELECT @@sort_buffer_size;
+@@sort_buffer_size
+32768
SELECT local.sort_buffer_size;
ERROR 42S02: Unknown table 'local' in field list
SELECT session.sort_buffer_size;
diff --git a/mysql-test/suite/sys_vars/r/sql_auto_is_null_basic.result b/mysql-test/suite/sys_vars/r/sql_auto_is_null_basic.result
index b3a3eecd93a..ff614e9afcf 100644
--- a/mysql-test/suite/sys_vars/r/sql_auto_is_null_basic.result
+++ b/mysql-test/suite/sys_vars/r/sql_auto_is_null_basic.result
@@ -1,54 +1,32 @@
'#---------------------BS_STVARS_044_01----------------------#'
-SELECT COUNT(@@SESSION.sql_auto_is_null);
-COUNT(@@SESSION.sql_auto_is_null)
-1
-1 Expected
+SELECT @@session.sql_auto_is_null;
+@@session.sql_auto_is_null
+0
'#---------------------BS_STVARS_044_02----------------------#'
-SET @@SESSION.sql_auto_is_null=1;
-"BUG:It should give error on setting this variable as it is readonly variable"
-Expected error 'Read only variable'
-SELECT COUNT(@@SESSION.sql_auto_is_null);
-COUNT(@@SESSION.sql_auto_is_null)
+SET @@session.sql_auto_is_null=1;
+SELECT @@session.sql_auto_is_null;
+@@session.sql_auto_is_null
1
-1 Expected
'#---------------------BS_STVARS_044_03----------------------#'
-SELECT @@SESSION.sql_auto_is_null = VARIABLE_VALUE
+SELECT IF(@@session.sql_auto_is_null, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_auto_is_null';
-@@SESSION.sql_auto_is_null = VARIABLE_VALUE
-0
-1 Expected
-SELECT COUNT(@@SESSION.sql_auto_is_null);
-COUNT(@@SESSION.sql_auto_is_null)
+IF(@@session.sql_auto_is_null, "ON", "OFF") = VARIABLE_VALUE
1
-1 Expected
-SELECT COUNT(VARIABLE_VALUE)
-FROM INFORMATION_SCHEMA.SESSION_VARIABLES
+SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_auto_is_null';
-COUNT(VARIABLE_VALUE)
-1
-1 Expected
-'#---------------------BS_STVARS_044_04----------------------#'
-SELECT @@sql_auto_is_null = @@SESSION.sql_auto_is_null;
-@@sql_auto_is_null = @@SESSION.sql_auto_is_null
-1
-1 Expected
+VARIABLE_VALUE
+ON
'#---------------------BS_STVARS_044_05----------------------#'
-SELECT COUNT(@@sql_auto_is_null);
-COUNT(@@sql_auto_is_null)
+SELECT @@sql_auto_is_null;
+@@sql_auto_is_null
1
-1 Expected
-SELECT COUNT(@@local.sql_auto_is_null);
-COUNT(@@local.sql_auto_is_null)
+SELECT @@local.sql_auto_is_null;
+@@local.sql_auto_is_null
1
-1 Expected
-SELECT COUNT(@@SESSION.sql_auto_is_null);
-COUNT(@@SESSION.sql_auto_is_null)
+SELECT @@session.sql_auto_is_null;
+@@session.sql_auto_is_null
1
-1 Expected
-SELECT COUNT(@@GLOBAL.sql_auto_is_null);
-ERROR HY000: Variable 'sql_auto_is_null' is a SESSION variable
-Expected error 'Variable is a SESSION variable'
-SELECT COUNT(sql_auto_is_null = @@GLOBAL.sql_auto_is_null);
-ERROR 42S22: Unknown column 'sql_auto_is_null' in 'field list'
-Expected error 'Readonly variable'
+SELECT @@global.sql_auto_is_null;
+@@global.sql_auto_is_null
+0
diff --git a/mysql-test/suite/sys_vars/r/sql_big_selects_basic.result b/mysql-test/suite/sys_vars/r/sql_big_selects_basic.result
index 1171382380d..98f05bda488 100644
--- a/mysql-test/suite/sys_vars/r/sql_big_selects_basic.result
+++ b/mysql-test/suite/sys_vars/r/sql_big_selects_basic.result
@@ -7,7 +7,7 @@ SET @@session.sql_big_selects = 0;
SET @@session.sql_big_selects = DEFAULT;
SELECT @@session.sql_big_selects;
@@session.sql_big_selects
-0
+1
'#---------------------FN_DYNVARS_153_02-------------------------#'
SET sql_big_selects = 1;
SELECT @@sql_big_selects;
@@ -40,25 +40,23 @@ ERROR 42000: Variable 'sql_big_selects' can't be set to the value of 'T'
SET @@session.sql_big_selects = "Y";
ERROR 42000: Variable 'sql_big_selects' can't be set to the value of 'Y'
SET @@session.sql_big_selects = TRÜE;
-ERROR 42000: Variable 'sql_big_selects' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'sql_big_selects' can't be set to the value of 'TRÜE'
SET @@session.sql_big_selects = ÕN;
-ERROR 42000: Variable 'sql_big_selects' can't be set to the value of 'ÕN'
+ERROR 42000: Variable 'sql_big_selects' can't be set to the value of 'ÕN'
SET @@session.sql_big_selects = OF;
-SELECT @@session.sql_big_selects;
-@@session.sql_big_selects
-0
-'Bug # 34828: OF is taken as OFF and a value of 0 is set.'
+ERROR 42000: Variable 'sql_big_selects' can't be set to the value of 'OF'
SET @@session.sql_big_selects = ÓFF;
-ERROR 42000: Variable 'sql_big_selects' can't be set to the value of 'ÓFF'
+ERROR 42000: Variable 'sql_big_selects' can't be set to the value of 'ÓFF'
SET @@session.sql_big_selects = '¹';
ERROR 42000: Variable 'sql_big_selects' can't be set to the value of '¹'
SET @@session.sql_big_selects = NO;
ERROR 42000: Variable 'sql_big_selects' can't be set to the value of 'NO'
'#-------------------FN_DYNVARS_153_05----------------------------#'
-SET @@global.sql_big_selects = 0;
-ERROR HY000: Variable 'sql_big_selects' is a SESSION variable and can't be used with SET GLOBAL
+SET @@global.sql_big_selects = 1-@@global.sql_big_selects;
SELECT @@global.sql_big_selects;
-ERROR HY000: Variable 'sql_big_selects' is a SESSION variable
+@@global.sql_big_selects
+0
+SET @@global.sql_big_selects = 1-@@global.sql_big_selects;
'#----------------------FN_DYNVARS_153_06------------------------#'
SELECT count(VARIABLE_VALUE)
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
@@ -66,19 +64,19 @@ WHERE VARIABLE_NAME='sql_big_selects';
count(VARIABLE_VALUE)
1
'#----------------------FN_DYNVARS_153_07------------------------#'
-SELECT @@session.sql_big_selects = VARIABLE_VALUE
+SELECT IF(@@session.sql_big_selects, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_big_selects';
-@@session.sql_big_selects = VARIABLE_VALUE
+IF(@@session.sql_big_selects, "ON", "OFF") = VARIABLE_VALUE
1
SELECT @@session.sql_big_selects;
@@session.sql_big_selects
-0
+1
SELECT VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_big_selects';
VARIABLE_VALUE
-OFF
+ON
'#---------------------FN_DYNVARS_153_08-------------------------#'
SET @@session.sql_big_selects = OFF;
SELECT @@session.sql_big_selects;
diff --git a/mysql-test/suite/sys_vars/r/sql_big_selects_func.result b/mysql-test/suite/sys_vars/r/sql_big_selects_func.result
index fc7e1f32e00..77a38e1b928 100644
--- a/mysql-test/suite/sys_vars/r/sql_big_selects_func.result
+++ b/mysql-test/suite/sys_vars/r/sql_big_selects_func.result
@@ -4,6 +4,8 @@ SET @session_sql_big_selects = @@SESSION.sql_big_selects;
SET @session_max_join_size = @@SESSION.max_join_size;
SET @global_max_join_size = @@GLOBAL.max_join_size;
SET SQL_MAX_JOIN_SIZE=9;
+Warnings:
+Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
CREATE TEMPORARY TABLE t1(a varchar(20) not null, b varchar(20));
CREATE TEMPORARY TABLE t2(a varchar(20) null, b varchar(20));
INSERT INTO t1 VALUES('aa','bb');
diff --git a/mysql-test/suite/sys_vars/r/sql_big_tables_basic.result b/mysql-test/suite/sys_vars/r/sql_big_tables_basic.result
index bce14b2aba2..09553ae7d57 100644
--- a/mysql-test/suite/sys_vars/r/sql_big_tables_basic.result
+++ b/mysql-test/suite/sys_vars/r/sql_big_tables_basic.result
@@ -12,7 +12,7 @@ SET @@session.sql_big_tables = 1;
SET @@session.sql_big_tables = DEFAULT;
SELECT @@session.sql_big_tables;
@@session.sql_big_tables
-1
+0
'#---------------------FN_DYNVARS_154_02-------------------------#'
SET sql_big_tables = 1;
SELECT @@sql_big_tables;
@@ -45,25 +45,26 @@ ERROR 42000: Variable 'sql_big_tables' can't be set to the value of 'T'
SET @@session.sql_big_tables = "Y";
ERROR 42000: Variable 'sql_big_tables' can't be set to the value of 'Y'
SET @@session.sql_big_tables = TRÜE;
-ERROR 42000: Variable 'sql_big_tables' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'sql_big_tables' can't be set to the value of 'TRÜE'
SET @@session.sql_big_tables = ÕN;
-ERROR 42000: Variable 'sql_big_tables' can't be set to the value of 'ÕN'
+ERROR 42000: Variable 'sql_big_tables' can't be set to the value of 'ÕN'
SET @@session.sql_big_tables = OF;
-SELECT @@session.sql_big_tables;
-@@session.sql_big_tables
-0
-'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
+ERROR 42000: Variable 'sql_big_tables' can't be set to the value of 'OF'
SET @@session.sql_big_tables = ÓFF;
-ERROR 42000: Variable 'sql_big_tables' can't be set to the value of 'ÓFF'
+ERROR 42000: Variable 'sql_big_tables' can't be set to the value of 'ÓFF'
SET @@session.sql_big_tables = '¹';
ERROR 42000: Variable 'sql_big_tables' can't be set to the value of '¹'
SET @@session.sql_big_tables = NO;
ERROR 42000: Variable 'sql_big_tables' can't be set to the value of 'NO'
'#-------------------FN_DYNVARS_154_05----------------------------#'
-SET @@global.sql_big_tables = 0;
-ERROR HY000: Variable 'sql_big_tables' is a SESSION variable and can't be used with SET GLOBAL
+SET @@global.sql_big_tables = 1-@@global.sql_big_tables;
SELECT @@global.sql_big_tables;
-ERROR HY000: Variable 'sql_big_tables' is a SESSION variable
+@@global.sql_big_tables
+1
+SET @@global.sql_big_tables = 1-@@global.sql_big_tables;
+SELECT @@global.sql_big_tables;
+@@global.sql_big_tables
+0
'#----------------------FN_DYNVARS_154_06------------------------#'
SELECT count(VARIABLE_VALUE)
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
@@ -71,19 +72,19 @@ WHERE VARIABLE_NAME='sql_big_tables';
count(VARIABLE_VALUE)
1
'#----------------------FN_DYNVARS_154_07------------------------#'
-SELECT @@session.sql_big_tables = VARIABLE_VALUE
+SELECT IF(@@session.sql_big_tables, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_big_tables';
-@@session.sql_big_tables = VARIABLE_VALUE
+IF(@@session.sql_big_tables, "ON", "OFF") = VARIABLE_VALUE
1
SELECT @@session.sql_big_tables;
@@session.sql_big_tables
-0
+1
SELECT VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_big_tables';
VARIABLE_VALUE
-OFF
+ON
'#---------------------FN_DYNVARS_154_08-------------------------#'
SET @@session.sql_big_tables = OFF;
SELECT @@session.sql_big_tables;
diff --git a/mysql-test/suite/sys_vars/r/sql_buffer_result_basic.result b/mysql-test/suite/sys_vars/r/sql_buffer_result_basic.result
index d03b688dbe6..2dfdcb26898 100644
--- a/mysql-test/suite/sys_vars/r/sql_buffer_result_basic.result
+++ b/mysql-test/suite/sys_vars/r/sql_buffer_result_basic.result
@@ -12,7 +12,7 @@ SET @@session.sql_buffer_result = 1;
SET @@session.sql_buffer_result = DEFAULT;
SELECT @@session.sql_buffer_result;
@@session.sql_buffer_result
-1
+0
'#---------------------FN_DYNVARS_155_02-------------------------#'
SET sql_buffer_result = 1;
SELECT @@sql_buffer_result;
@@ -43,35 +43,28 @@ ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of '2'
SET @@session.sql_buffer_result = "TRU";
ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of 'TRU'
SET @@session.sql_buffer_result = 0.4;
-SELECT @@session.sql_buffer_result;
-@@session.sql_buffer_result
-0
-SET @@session.sql_buffer_result = 1.4;
-SELECT @@session.sql_buffer_result;
-@@session.sql_buffer_result
-1
-'Bug: Decimal values are accepted and rounded to an integer before';
-'assingment.';
+ERROR 42000: Incorrect argument type to variable 'sql_buffer_result'
SET @@session.sql_buffer_result = TRÜE;
-ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of 'TRÜE'
SET @@session.sql_buffer_result = ÕN;
-ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of 'ÕN'
+ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of 'ÕN'
SET @@session.sql_buffer_result = OF;
-SELECT @@session.sql_buffer_result;
-@@session.sql_buffer_result
-0
-'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
+ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of 'OF'
SET @@session.sql_buffer_result = ÓFF;
-ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of 'ÓFF'
+ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of 'ÓFF'
SET @@session.sql_buffer_result = '¹';
ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of '¹'
SET @@session.sql_buffer_result = NO;
ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of 'NO'
'#-------------------FN_DYNVARS_155_05----------------------------#'
-SET @@global.sql_buffer_result = 0;
-ERROR HY000: Variable 'sql_buffer_result' is a SESSION variable and can't be used with SET GLOBAL
+SET @@global.sql_buffer_result = 1-@@global.sql_buffer_result;
+SELECT @@global.sql_buffer_result;
+@@global.sql_buffer_result
+1
+SET @@global.sql_buffer_result = 1-@@global.sql_buffer_result;
SELECT @@global.sql_buffer_result;
-ERROR HY000: Variable 'sql_buffer_result' is a SESSION variable
+@@global.sql_buffer_result
+0
'#----------------------FN_DYNVARS_155_06------------------------#'
SELECT count(VARIABLE_VALUE)
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
@@ -79,19 +72,19 @@ WHERE VARIABLE_NAME='sql_buffer_result';
count(VARIABLE_VALUE)
1
'#----------------------FN_DYNVARS_155_07------------------------#'
-SELECT @@session.sql_buffer_result = VARIABLE_VALUE
+SELECT IF(@@session.sql_buffer_result, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_buffer_result';
-@@session.sql_buffer_result = VARIABLE_VALUE
+IF(@@session.sql_buffer_result, "ON", "OFF") = VARIABLE_VALUE
1
SELECT @@session.sql_buffer_result;
@@session.sql_buffer_result
-0
+1
SELECT VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_buffer_result';
VARIABLE_VALUE
-OFF
+ON
'#---------------------FN_DYNVARS_155_08-------------------------#'
SET @@session.sql_buffer_result = OFF;
SELECT @@session.sql_buffer_result;
diff --git a/mysql-test/suite/sys_vars/r/sql_log_bin_basic.result b/mysql-test/suite/sys_vars/r/sql_log_bin_basic.result
index 4e37c2079d6..5e8fe4e02f7 100644
--- a/mysql-test/suite/sys_vars/r/sql_log_bin_basic.result
+++ b/mysql-test/suite/sys_vars/r/sql_log_bin_basic.result
@@ -7,7 +7,7 @@ SET @@session.sql_log_bin = 0;
SET @@session.sql_log_bin = DEFAULT;
SELECT @@session.sql_log_bin;
@@session.sql_log_bin
-0
+1
SET @@session.sql_log_bin = 1;
SET @@session.sql_log_bin = DEFAULT;
SELECT @@session.sql_log_bin;
@@ -45,43 +45,41 @@ ERROR 42000: Variable 'sql_log_bin' can't be set to the value of 'T'
SET @@session.sql_log_bin = "Y";
ERROR 42000: Variable 'sql_log_bin' can't be set to the value of 'Y'
SET @@session.sql_log_bin = TRÜE;
-ERROR 42000: Variable 'sql_log_bin' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'sql_log_bin' can't be set to the value of 'TRÜE'
SET @@session.sql_log_bin = ÕN;
-ERROR 42000: Variable 'sql_log_bin' can't be set to the value of 'ÕN'
+ERROR 42000: Variable 'sql_log_bin' can't be set to the value of 'ÕN'
SET @@session.sql_log_bin = OF;
-SELECT @@session.sql_log_bin;
-@@session.sql_log_bin
-0
-'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
+ERROR 42000: Variable 'sql_log_bin' can't be set to the value of 'OF'
SET @@session.sql_log_bin = ÓFF;
-ERROR 42000: Variable 'sql_log_bin' can't be set to the value of 'ÓFF'
+ERROR 42000: Variable 'sql_log_bin' can't be set to the value of 'ÓFF'
SET @@session.sql_log_bin = '¹';
ERROR 42000: Variable 'sql_log_bin' can't be set to the value of '¹'
SET @@session.sql_log_bin = NO;
ERROR 42000: Variable 'sql_log_bin' can't be set to the value of 'NO'
'#-------------------FN_DYNVARS_156_05----------------------------#'
SET @@global.sql_log_bin = 0;
-ERROR HY000: Variable 'sql_log_bin' is a SESSION variable and can't be used with SET GLOBAL
SELECT @@global.sql_log_bin;
-ERROR HY000: Variable 'sql_log_bin' is a SESSION variable
+@@global.sql_log_bin
+0
+SET @@global.sql_log_bin = 1;
'#----------------------FN_DYNVARS_156_06------------------------#'
SELECT count(VARIABLE_VALUE) FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='sql_log_bin';
count(VARIABLE_VALUE)
1
'#----------------------FN_DYNVARS_156_07------------------------#'
-SELECT @@session.sql_log_bin = VARIABLE_VALUE
+SELECT IF(@@session.sql_log_bin, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_log_bin';
-@@session.sql_log_bin = VARIABLE_VALUE
+IF(@@session.sql_log_bin, "ON", "OFF") = VARIABLE_VALUE
1
SELECT @@session.sql_log_bin;
@@session.sql_log_bin
-0
+1
SELECT VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_log_bin';
VARIABLE_VALUE
-OFF
+ON
'#---------------------FN_DYNVARS_156_08-------------------------#'
SET @@session.sql_log_bin = OFF;
SELECT @@session.sql_log_bin;
diff --git a/mysql-test/suite/sys_vars/r/sql_log_off_basic.result b/mysql-test/suite/sys_vars/r/sql_log_off_basic.result
index 03846cb6ce8..c2ffa17c5fe 100644
--- a/mysql-test/suite/sys_vars/r/sql_log_off_basic.result
+++ b/mysql-test/suite/sys_vars/r/sql_log_off_basic.result
@@ -12,7 +12,7 @@ SET @@session.sql_log_off = 1;
SET @@session.sql_log_off = DEFAULT;
SELECT @@session.sql_log_off;
@@session.sql_log_off
-1
+0
'#---------------------FN_DYNVARS_157_02-------------------------#'
SET sql_log_off = 1;
SELECT @@sql_log_off;
@@ -45,25 +45,26 @@ ERROR 42000: Variable 'sql_log_off' can't be set to the value of 'T'
SET @@session.sql_log_off = "Y";
ERROR 42000: Variable 'sql_log_off' can't be set to the value of 'Y'
SET @@session.sql_log_off = TRÜE;
-ERROR 42000: Variable 'sql_log_off' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'sql_log_off' can't be set to the value of 'TRÜE'
SET @@session.sql_log_off = ÕN;
-ERROR 42000: Variable 'sql_log_off' can't be set to the value of 'ÕN'
+ERROR 42000: Variable 'sql_log_off' can't be set to the value of 'ÕN'
SET @@session.sql_log_off = OF;
-SELECT @@session.sql_log_off;
-@@session.sql_log_off
-0
-'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
+ERROR 42000: Variable 'sql_log_off' can't be set to the value of 'OF'
SET @@session.sql_log_off = ÓFF;
-ERROR 42000: Variable 'sql_log_off' can't be set to the value of 'ÓFF'
+ERROR 42000: Variable 'sql_log_off' can't be set to the value of 'ÓFF'
SET @@session.sql_log_off = '¹';
ERROR 42000: Variable 'sql_log_off' can't be set to the value of '¹'
SET @@session.sql_log_off = NO;
ERROR 42000: Variable 'sql_log_off' can't be set to the value of 'NO'
'#-------------------FN_DYNVARS_157_05----------------------------#'
-SET @@global.sql_log_off = 0;
-ERROR HY000: Variable 'sql_log_off' is a SESSION variable and can't be used with SET GLOBAL
+SET @@global.sql_log_off = 1-@@global.sql_log_off;
SELECT @@global.sql_log_off;
-ERROR HY000: Variable 'sql_log_off' is a SESSION variable
+@@global.sql_log_off
+1
+SET @@global.sql_log_off = 1-@@global.sql_log_off;
+SELECT @@global.sql_log_off;
+@@global.sql_log_off
+0
'#----------------------FN_DYNVARS_157_06------------------------#'
SELECT count(VARIABLE_VALUE)
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
@@ -71,19 +72,19 @@ WHERE VARIABLE_NAME='sql_log_off';
count(VARIABLE_VALUE)
1
'#----------------------FN_DYNVARS_157_07------------------------#'
-SELECT @@session.sql_log_off = VARIABLE_VALUE
+SELECT IF(@@session.sql_log_off, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_log_off';
-@@session.sql_log_off = VARIABLE_VALUE
+IF(@@session.sql_log_off, "ON", "OFF") = VARIABLE_VALUE
1
SELECT @@session.sql_log_off;
@@session.sql_log_off
-0
+1
SELECT VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_log_off';
VARIABLE_VALUE
-OFF
+ON
'#---------------------FN_DYNVARS_157_08-------------------------#'
SET @@session.sql_log_off = OFF;
SELECT @@session.sql_log_off;
diff --git a/mysql-test/suite/sys_vars/r/sql_log_off_func.result b/mysql-test/suite/sys_vars/r/sql_log_off_func.result
index e51860534f1..51c37a16795 100644
--- a/mysql-test/suite/sys_vars/r/sql_log_off_func.result
+++ b/mysql-test/suite/sys_vars/r/sql_log_off_func.result
@@ -19,7 +19,6 @@ UPDATE t1 SET a = 'aa1' WHERE a = 'aa1-updated';
Checking if log contains the executed statement
SELECT argument FROM mysql.general_log WHERE argument = 'UPDATE t1 SET a = \'aa1\' WHERE a = \'aa1-updated\'';
argument
-UPDATE t1 SET a = 'aa1' WHERE a = 'aa1-updated'
'#--------------------FN_DYNVARS_158_03--------------------------#'
** Connecting con_int1 using root **
** Connection con_int1 **
diff --git a/mysql-test/suite/sys_vars/r/sql_log_update_basic.result b/mysql-test/suite/sys_vars/r/sql_log_update_basic.result
new file mode 100644
index 00000000000..f48cf6870da
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/sql_log_update_basic.result
@@ -0,0 +1,46 @@
+SET @start_global_value = @@global.sql_log_update;
+SELECT @start_global_value;
+@start_global_value
+1
+select @@global.sql_log_update;
+@@global.sql_log_update
+1
+select @@session.sql_log_update;
+@@session.sql_log_update
+1
+show global variables like 'sql_log_update';
+Variable_name Value
+sql_log_update ON
+show session variables like 'sql_log_update';
+Variable_name Value
+sql_log_update ON
+select * from information_schema.global_variables where variable_name='sql_log_update';
+VARIABLE_NAME VARIABLE_VALUE
+SQL_LOG_UPDATE ON
+select * from information_schema.session_variables where variable_name='sql_log_update';
+VARIABLE_NAME VARIABLE_VALUE
+SQL_LOG_UPDATE ON
+set global sql_log_update=1;
+Warnings:
+Note 1315 The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored
+select @@global.sql_log_update;
+@@global.sql_log_update
+1
+set session sql_log_update=ON;
+Warnings:
+Note 1315 The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored
+select @@session.sql_log_update;
+@@session.sql_log_update
+1
+set global sql_log_update=1.1;
+ERROR 42000: Incorrect argument type to variable 'sql_log_update'
+set global sql_log_update=1e1;
+ERROR 42000: Incorrect argument type to variable 'sql_log_update'
+set global sql_log_update="foo";
+ERROR 42000: Variable 'sql_log_update' can't be set to the value of 'foo'
+SET @@global.sql_log_update = @start_global_value;
+Warnings:
+Note 1315 The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored
+SELECT @@global.sql_log_update;
+@@global.sql_log_update
+1
diff --git a/mysql-test/suite/sys_vars/r/sql_low_priority_updates_basic.result b/mysql-test/suite/sys_vars/r/sql_low_priority_updates_basic.result
index 6a09e6720b3..28bc53e5718 100644
--- a/mysql-test/suite/sys_vars/r/sql_low_priority_updates_basic.result
+++ b/mysql-test/suite/sys_vars/r/sql_low_priority_updates_basic.result
@@ -14,8 +14,6 @@ SELECT @@session.sql_low_priority_updates;
0
SET @@global.sql_low_priority_updates = 1;
SET @@global.sql_low_priority_updates = DEFAULT;
-ERROR 42000: Variable 'sql_low_priority_updates' doesn't have a default value
-'Bug: DEFAULT value is only associated with session'
'#---------------------FN_DYNVARS_159_02-------------------------#'
SET sql_low_priority_updates = 1;
SELECT @@sql_low_priority_updates;
@@ -56,22 +54,19 @@ SELECT @@global.sql_low_priority_updates;
SET @@session.sql_low_priority_updates = -1;
ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of '-1'
SET @@session.sql_low_priority_updates = 1.6;
-ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of '2'
+ERROR 42000: Incorrect argument type to variable 'sql_low_priority_updates'
SET @@session.sql_low_priority_updates = "T";
ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'T'
SET @@session.sql_low_priority_updates = "Y";
ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'Y'
SET @@session.sql_low_priority_updates = TRÜE;
-ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'TRÜE'
SET @@session.sql_low_priority_updates = ÕN;
-ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'ÕN'
+ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'ÕN'
SET @@session.sql_low_priority_updates = OF;
-SELECT @@session.sql_low_priority_updates;
-@@session.sql_low_priority_updates
-0
-'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
+ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'OF'
SET @@session.sql_low_priority_updates = ÓFF;
-ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'ÓFF'
+ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'ÓFF'
SET @@global.sql_low_priority_updates = -1;
ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of '-1'
SET @@global.sql_low_priority_updates = 2;
@@ -81,16 +76,13 @@ ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'T
SET @@global.sql_low_priority_updates = "Y";
ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'Y'
SET @@global.sql_low_priority_updates = TRÜE;
-ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'TRÜE'
SET @@global.sql_low_priority_updates = ÕN;
-ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'ÕN'
+ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'ÕN'
SET @@global.sql_low_priority_updates = OF;
-SELECT @@global.sql_low_priority_updates;
-@@global.sql_low_priority_updates
-0
-'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
+ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'OF'
SET @@global.sql_low_priority_updates = ÓFF;
-ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'ÓFF'
+ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'ÓFF'
'#-------------------FN_DYNVARS_159_05----------------------------#'
SET @@global.sql_low_priority_updates = 0;
SET @@session.sql_low_priority_updates = 1;
@@ -102,10 +94,10 @@ SELECT @@session.sql_low_priority_updates AS res_is_1;
res_is_1
1
'#----------------------FN_DYNVARS_159_06------------------------#'
-SELECT @@global.sql_low_priority_updates = VARIABLE_VALUE
+SELECT IF(@@global.sql_low_priority_updates, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='sql_low_priority_updates';
-@@global.sql_low_priority_updates = VARIABLE_VALUE
+IF(@@global.sql_low_priority_updates, "ON", "OFF") = VARIABLE_VALUE
1
SELECT @@global.sql_low_priority_updates;
@@global.sql_low_priority_updates
@@ -116,11 +108,11 @@ WHERE VARIABLE_NAME='sql_low_priority_updates';
VARIABLE_VALUE
OFF
'#----------------------FN_DYNVARS_159_07------------------------#'
-SELECT @@session.sql_low_priority_updates = VARIABLE_VALUE
+SELECT IF(@@session.sql_low_priority_updates, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_low_priority_updates';
-@@session.sql_low_priority_updates = VARIABLE_VALUE
-0
+IF(@@session.sql_low_priority_updates, "ON", "OFF") = VARIABLE_VALUE
+1
SELECT @@session.sql_low_priority_updates;
@@session.sql_low_priority_updates
1
diff --git a/mysql-test/suite/sys_vars/r/sql_max_join_size_basic.result b/mysql-test/suite/sys_vars/r/sql_max_join_size_basic.result
new file mode 100644
index 00000000000..8aaea049b94
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/sql_max_join_size_basic.result
@@ -0,0 +1,61 @@
+SET @start_global_value = @@global.sql_max_join_size;
+SELECT @start_global_value;
+@start_global_value
+18446744073709551615
+select @@global.sql_max_join_size;
+@@global.sql_max_join_size
+18446744073709551615
+select @@session.sql_max_join_size;
+@@session.sql_max_join_size
+18446744073709551615
+show global variables like 'sql_max_join_size';
+Variable_name Value
+sql_max_join_size 18446744073709551615
+show session variables like 'sql_max_join_size';
+Variable_name Value
+sql_max_join_size 18446744073709551615
+select * from information_schema.global_variables where variable_name='sql_max_join_size';
+VARIABLE_NAME VARIABLE_VALUE
+SQL_MAX_JOIN_SIZE 18446744073709551615
+select * from information_schema.session_variables where variable_name='sql_max_join_size';
+VARIABLE_NAME VARIABLE_VALUE
+SQL_MAX_JOIN_SIZE 18446744073709551615
+set global sql_max_join_size=10;
+Warnings:
+Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
+select @@global.sql_max_join_size;
+@@global.sql_max_join_size
+10
+set session sql_max_join_size=20;
+Warnings:
+Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
+select @@session.sql_max_join_size;
+@@session.sql_max_join_size
+20
+set global sql_max_join_size=1.1;
+ERROR 42000: Incorrect argument type to variable 'sql_max_join_size'
+set global sql_max_join_size=1e1;
+ERROR 42000: Incorrect argument type to variable 'sql_max_join_size'
+set global sql_max_join_size="foo";
+ERROR 42000: Incorrect argument type to variable 'sql_max_join_size'
+select @@sql_big_selects;
+@@sql_big_selects
+0
+set sql_max_join_size=cast(-1 as unsigned int);
+Warnings:
+Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
+select @@sql_big_selects;
+@@sql_big_selects
+1
+set sql_max_join_size=100;
+Warnings:
+Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
+select @@sql_big_selects;
+@@sql_big_selects
+0
+SET @@global.sql_max_join_size = @start_global_value;
+Warnings:
+Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
+SELECT @@global.sql_max_join_size;
+@@global.sql_max_join_size
+18446744073709551615
diff --git a/mysql-test/suite/sys_vars/r/sql_max_join_size_func.result b/mysql-test/suite/sys_vars/r/sql_max_join_size_func.result
index 0e406f6611e..0720f5dc965 100644
--- a/mysql-test/suite/sys_vars/r/sql_max_join_size_func.result
+++ b/mysql-test/suite/sys_vars/r/sql_max_join_size_func.result
@@ -16,6 +16,8 @@ INSERT INTO t2 VALUES('aa3','bb');
INSERT INTO t2 VALUES('aa4','bb');
'#--------------------FN_DYNVARS_161_01-------------------------#'
SET SESSION sql_max_join_size=9;
+Warnings:
+Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a;
ERROR 42000: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
Expected error The SELECT would examine more than MAX_JOIN_SIZE rows.
@@ -30,6 +32,8 @@ aa3 bb aa3 bb
aa4 bb aa4 bb
This should work
SET SESSION sql_max_join_size=DEFAULT;
+Warnings:
+Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
DELETE FROM t2 WHERE a = 'aa4';
SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a;
a b a b
@@ -40,6 +44,8 @@ aa3 bb aa3 bb
This should work
'#----------------------------FN_DYNVARS_136_05-------------------------#'
SET GLOBAL sql_max_join_size = 4;
+Warnings:
+Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
** Connecting con_int1 using root **
** Connection con_int1 **
SELECT @@SESSION.sql_max_join_size;
@@ -47,6 +53,8 @@ SELECT @@SESSION.sql_max_join_size;
4
4 Expected
SET SESSION sql_max_join_size = 2;
+Warnings:
+Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
** Connecting con_int2 using root **
** Connection con_int2 **
SELECT @@SESSION.sql_max_join_size;
@@ -54,6 +62,8 @@ SELECT @@SESSION.sql_max_join_size;
4
4 Expected
SET SESSION sql_max_join_size = 10;
+Warnings:
+Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
** Connection con_int2 **
SELECT @@SESSION.sql_max_join_size;
@@SESSION.sql_max_join_size
@@ -71,7 +81,11 @@ SELECT @@GLOBAL.sql_max_join_size;
** Connection default **
Disconnecting Connections con_int1, con_int2
SET @@SESSION.sql_max_join_size = @session_max_join_size;
+Warnings:
+Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
SET @@GLOBAL.sql_max_join_size = @global_max_join_size ;
+Warnings:
+Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
SET @@SESSION.sql_big_selects = @session_sql_big_selects;
DROP TABLE t1;
DROP TABLE t2;
diff --git a/mysql-test/suite/sys_vars/r/sql_mode_basic.result b/mysql-test/suite/sys_vars/r/sql_mode_basic.result
index 78a9f179824..19695fd3af6 100644
--- a/mysql-test/suite/sys_vars/r/sql_mode_basic.result
+++ b/mysql-test/suite/sys_vars/r/sql_mode_basic.result
@@ -17,8 +17,6 @@ SET @@session.sql_mode = DEFAULT;
SELECT @@session.sql_mode;
@@session.sql_mode
-'Bug# 34876: Default values for both session and global sql_mode is ""';
-'and not OFF.';
'#---------------------FN_DYNVARS_152_02-------------------------#'
SET @@global.sql_mode = NULL;
ERROR 42000: Variable 'sql_mode' can't be set to the value of 'NULL'
@@ -41,8 +39,6 @@ SELECT @@session.sql_mode;
@@session.sql_mode
'#--------------------FN_DYNVARS_152_03------------------------#'
-'Bug: Incomplete sql modes valid values at:';
-'http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html';
SET @@global.sql_mode = ANSI;
SELECT @@global.sql_mode;
@@global.sql_mode
@@ -54,7 +50,7 @@ STRICT_TRANS_TABLES
SET @@global.sql_mode = TRADITIONAL;
SELECT @@global.sql_mode;
@@global.sql_mode
-STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
SET @@global.sql_mode = ALLOW_INVALID_DATES;
SELECT @@global.sql_mode;
@@global.sql_mode
@@ -170,10 +166,9 @@ PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,POSTGRESQL,NO_KEY_OPTIONS,NO_TABLE_OPTI
SET @@global.sql_mode = TRADITIONAL;
SELECT @@global.sql_mode;
@@global.sql_mode
-STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
SET @@global.sql_mode = OFF;
ERROR 42000: Variable 'sql_mode' can't be set to the value of 'OFF'
-'Bug: OFF is documented as an sql mode but infact it is not';
SET @@session.sql_mode = ANSI;
SELECT @@session.sql_mode;
@@session.sql_mode
@@ -185,7 +180,7 @@ STRICT_TRANS_TABLES
SET @@session.sql_mode = TRADITIONAL;
SELECT @@session.sql_mode;
@@session.sql_mode
-STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
SET @@session.sql_mode = ALLOW_INVALID_DATES;
SELECT @@session.sql_mode;
@@session.sql_mode
@@ -301,18 +296,14 @@ PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,POSTGRESQL,NO_KEY_OPTIONS,NO_TABLE_OPTI
SET @@session.sql_mode = TRADITIONAL;
SELECT @@session.sql_mode;
@@session.sql_mode
-STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
SET @@session.sql_mode = OFF;
ERROR 42000: Variable 'sql_mode' can't be set to the value of 'OFF'
SET @@global.sql_mode = '?';
+ERROR 42000: Variable 'sql_mode' can't be set to the value of '?'
SELECT @@global.sql_mode;
@@global.sql_mode
-?
-SET @@session.sql_mode = '?';
-SELECT @@session.sql_mode;
-@@session.sql_mode
-?
-'Bug# 34834: ? is acceptable as a valid sql mode.'
+STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
'#--------------------FN_DYNVARS_152_04-------------------------#'
SET @@global.sql_mode = -1;
ERROR 42000: Variable 'sql_mode' can't be set to the value of '-1'
@@ -366,7 +357,7 @@ REAL_AS_FLOAT,PIPES_AS_CONCAT
SET @@global.sql_mode = 50000;
SELECT @@global.sql_mode;
@@global.sql_mode
-PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,?,NO_UNSIGNED_SUBTRACTION,POSTGRESQL,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
+PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,,,NO_UNSIGNED_SUBTRACTION,POSTGRESQL,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
SET @@global.sql_mode = 500000;
SELECT @@global.sql_mode;
@@global.sql_mode
@@ -374,39 +365,11 @@ REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,POSTGR
SET @@global.sql_mode = 4294967295;
SELECT @@global.sql_mode;
@@global.sql_mode
-REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,?,ONLY_FULL_GROUP_BY,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH
+REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,,,ONLY_FULL_GROUP_BY,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH
SET @@global.sql_mode = 4294967296;
ERROR 42000: Variable 'sql_mode' can't be set to the value of '4294967296'
SET @@global.sql_mode = 0.4;
-SELECT @@global.sql_mode;
-@@global.sql_mode
-
-SET @@global.sql_mode = 1.0;
-SELECT @@global.sql_mode;
-@@global.sql_mode
-REAL_AS_FLOAT
-SET @@global.sql_mode = 40000.1;
-SELECT @@global.sql_mode;
-@@global.sql_mode
-PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,NO_UNSIGNED_SUBTRACTION,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
-SET @@global.sql_mode = 1.5;
-SELECT @@global.sql_mode;
-@@global.sql_mode
-PIPES_AS_CONCAT
-SET @@global.sql_mode = 124567.49;
-SELECT @@global.sql_mode;
-@@global.sql_mode
-REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,?,NO_DIR_IN_CREATE,ORACLE,MSSQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE
-SET @@session.sql_mode = 50000000.5;
-SELECT @@session.sql_mode;
-@@session.sql_mode
-REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,NO_DIR_IN_CREATE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL40,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,ALLOW_INVALID_DATES,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE
-SET @@session.sql_mode = 4294967295.4;
-SELECT @@session.sql_mode;
-@@session.sql_mode
-REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,?,ONLY_FULL_GROUP_BY,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH
-'Bug: Decimal values can be used within the range [0.0-4294967295.5).';
-'Values are rounded to numeric values as evident from outcome.';
+ERROR 42000: Incorrect argument type to variable 'sql_mode'
'#---------------------FN_DYNVARS_152_08----------------------#'
SET @@global.sql_mode = TRUE;
SELECT @@global.sql_mode;
@@ -434,15 +397,26 @@ SELECT @@global.sql_mode;
SET @@session.sql_mode = 'TRADITIONAL,ALLOW_INVALID_DATES,ANSI_QUOTES';
SELECT @@session.sql_mode;
@@session.sql_mode
-ANSI_QUOTES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+ANSI_QUOTES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
SET @@global.sql_mode = 'ONLY_FULL_GROUP_BY,PIPES_AS_CONCAT,REAL_AS_FLOAT,ORACLE,POSTGRESQL';
SELECT @@global.sql_mode;
@@global.sql_mode
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,POSTGRESQL,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
-SET @@session.sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,HIGH_OR_PRECEDENCE,
-IGNORE_SPACE';
-ERROR 42000: Variable 'sql_mode' can't be set to the value of '
-IGNORE_SPACE'
+SET @@session.sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,FOOBAR,IGNORE_SPACE';
+ERROR 42000: Variable 'sql_mode' can't be set to the value of 'FOOBAR'
+SET @@sql_mode=',';
+SELECT @@sql_mode;
+@@sql_mode
+
+SET @@sql_mode=',,,,ANSI_QUOTES,,,';
+SELECT @@sql_mode;
+@@sql_mode
+ANSI_QUOTES
+SET @@sql_mode=',,,,FOOBAR,,,,,';
+ERROR 42000: Variable 'sql_mode' can't be set to the value of 'FOOBAR'
+SELECT @@sql_mode;
+@@sql_mode
+ANSI_QUOTES
SET @@global.sql_mode = @global_start_value;
SELECT @@global.sql_mode;
@@global.sql_mode
diff --git a/mysql-test/suite/sys_vars/r/sql_mode_func.result b/mysql-test/suite/sys_vars/r/sql_mode_func.result
index dbf0db4e1ad..bb9ffc0717e 100644
--- a/mysql-test/suite/sys_vars/r/sql_mode_func.result
+++ b/mysql-test/suite/sys_vars/r/sql_mode_func.result
@@ -52,7 +52,7 @@ TRADITIONAL mode
SET SESSION sql_mode = TRADITIONAL;
SELECT @@SESSION.sql_mode;
@@SESSION.sql_mode
-STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
INSERT INTO t1 VALUES('t1a1','t1b1');
INSERT INTO t1 VALUES('t1a2','t1b2');
INSERT INTO t1 VALUES('t1a3','t1b3');
@@ -91,7 +91,7 @@ REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI
** Connection con_int1 **
SELECT @@SESSION.sql_mode;
@@SESSION.sql_mode
-STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
+STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
'STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, TRADITIONAL' Expected
SELECT @@GLOBAL.sql_mode;
@@GLOBAL.sql_mode
diff --git a/mysql-test/suite/sys_vars/r/sql_notes_basic.result b/mysql-test/suite/sys_vars/r/sql_notes_basic.result
index 5dd792d8ede..7a54f90f8b7 100644
--- a/mysql-test/suite/sys_vars/r/sql_notes_basic.result
+++ b/mysql-test/suite/sys_vars/r/sql_notes_basic.result
@@ -7,7 +7,7 @@ SET @@session.sql_notes = 0;
SET @@session.sql_notes = DEFAULT;
SELECT @@session.sql_notes;
@@session.sql_notes
-0
+1
SET @@session.sql_notes = 1;
SET @@session.sql_notes = DEFAULT;
SELECT @@session.sql_notes;
@@ -45,43 +45,44 @@ ERROR 42000: Variable 'sql_notes' can't be set to the value of 'T'
SET @@session.sql_notes = "Y";
ERROR 42000: Variable 'sql_notes' can't be set to the value of 'Y'
SET @@session.sql_notes = TRÜE;
-ERROR 42000: Variable 'sql_notes' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'sql_notes' can't be set to the value of 'TRÜE'
SET @@session.sql_notes = ÕN;
-ERROR 42000: Variable 'sql_notes' can't be set to the value of 'ÕN'
+ERROR 42000: Variable 'sql_notes' can't be set to the value of 'ÕN'
SET @@session.sql_notes = OF;
-SELECT @@session.sql_notes;
-@@session.sql_notes
-0
-'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
+ERROR 42000: Variable 'sql_notes' can't be set to the value of 'OF'
SET @@session.sql_notes = ÓFF;
-ERROR 42000: Variable 'sql_notes' can't be set to the value of 'ÓFF'
+ERROR 42000: Variable 'sql_notes' can't be set to the value of 'ÓFF'
SET @@session.sql_notes = '¹';
ERROR 42000: Variable 'sql_notes' can't be set to the value of '¹'
SET @@session.sql_notes = NO;
ERROR 42000: Variable 'sql_notes' can't be set to the value of 'NO'
'#-------------------FN_DYNVARS_161_05----------------------------#'
-SET @@global.sql_notes = 0;
-ERROR HY000: Variable 'sql_notes' is a SESSION variable and can't be used with SET GLOBAL
+SET @@global.sql_notes = 1-@@global.sql_notes;
SELECT @@global.sql_notes;
-ERROR HY000: Variable 'sql_notes' is a SESSION variable
+@@global.sql_notes
+0
+SET @@global.sql_notes = 1-@@global.sql_notes;
+SELECT @@global.sql_notes;
+@@global.sql_notes
+1
'#----------------------FN_DYNVARS_161_06------------------------#'
SELECT count(VARIABLE_VALUE) FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='sql_notes';
count(VARIABLE_VALUE)
1
'#----------------------FN_DYNVARS_161_07------------------------#'
-SELECT @@session.sql_notes = VARIABLE_VALUE
+SELECT IF(@@session.sql_notes, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_notes';
-@@session.sql_notes = VARIABLE_VALUE
+IF(@@session.sql_notes, "ON", "OFF") = VARIABLE_VALUE
1
SELECT @@session.sql_notes;
@@session.sql_notes
-0
+1
SELECT VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_notes';
VARIABLE_VALUE
-OFF
+ON
'#---------------------FN_DYNVARS_161_08-------------------------#'
SET @@session.sql_notes = OFF;
SELECT @@session.sql_notes;
diff --git a/mysql-test/suite/sys_vars/r/sql_quote_show_create_basic.result b/mysql-test/suite/sys_vars/r/sql_quote_show_create_basic.result
index 2550f2d1057..8cf99233ef9 100644
--- a/mysql-test/suite/sys_vars/r/sql_quote_show_create_basic.result
+++ b/mysql-test/suite/sys_vars/r/sql_quote_show_create_basic.result
@@ -7,7 +7,7 @@ SET @@session.sql_quote_show_create = 0;
SET @@session.sql_quote_show_create = DEFAULT;
SELECT @@session.sql_quote_show_create;
@@session.sql_quote_show_create
-0
+1
SET @@session.sql_quote_show_create = 1;
SET @@session.sql_quote_show_create = DEFAULT;
SELECT @@session.sql_quote_show_create;
@@ -45,25 +45,26 @@ ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'T'
SET @@session.sql_quote_show_create = "Y";
ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'Y'
SET @@session.sql_quote_show_create = TRÜE;
-ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TRÜE'
SET @@session.sql_quote_show_create = ÕN;
-ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'ÕN'
+ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'ÕN'
SET @@session.sql_quote_show_create = OF;
-SELECT @@session.sql_quote_show_create;
-@@session.sql_quote_show_create
-0
-'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
+ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'OF'
SET @@session.sql_quote_show_create = ÓFF;
-ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'ÓFF'
+ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'ÓFF'
SET @@session.sql_quote_show_create = '¹';
ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of '¹'
SET @@session.sql_quote_show_create = NO;
ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'NO'
'#-------------------FN_DYNVARS_162_05----------------------------#'
-SET @@global.sql_quote_show_create = 0;
-ERROR HY000: Variable 'sql_quote_show_create' is a SESSION variable and can't be used with SET GLOBAL
+SET @@global.sql_quote_show_create = 1-@@global.sql_quote_show_create;
SELECT @@global.sql_quote_show_create;
-ERROR HY000: Variable 'sql_quote_show_create' is a SESSION variable
+@@global.sql_quote_show_create
+0
+SET @@global.sql_quote_show_create = 1-@@global.sql_quote_show_create;
+SELECT @@global.sql_quote_show_create;
+@@global.sql_quote_show_create
+1
'#----------------------FN_DYNVARS_162_06------------------------#'
SELECT count(VARIABLE_VALUE)
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
@@ -71,19 +72,19 @@ WHERE VARIABLE_NAME='sql_quote_show_create';
count(VARIABLE_VALUE)
1
'#----------------------FN_DYNVARS_162_07------------------------#'
-SELECT @@session.sql_quote_show_create = VARIABLE_VALUE
+SELECT IF(@@session.sql_quote_show_create, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_quote_show_create';
-@@session.sql_quote_show_create = VARIABLE_VALUE
+IF(@@session.sql_quote_show_create, "ON", "OFF") = VARIABLE_VALUE
1
SELECT @@session.sql_quote_show_create;
@@session.sql_quote_show_create
-0
+1
SELECT VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_quote_show_create';
VARIABLE_VALUE
-OFF
+ON
'#---------------------FN_DYNVARS_162_08-------------------------#'
SET @@session.sql_quote_show_create = OFF;
SELECT @@session.sql_quote_show_create;
diff --git a/mysql-test/suite/sys_vars/r/sql_safe_updates_basic.result b/mysql-test/suite/sys_vars/r/sql_safe_updates_basic.result
index 539b38bb1fe..91bfcb2377e 100644
--- a/mysql-test/suite/sys_vars/r/sql_safe_updates_basic.result
+++ b/mysql-test/suite/sys_vars/r/sql_safe_updates_basic.result
@@ -12,7 +12,7 @@ SET @@session.sql_safe_updates = 1;
SET @@session.sql_safe_updates = DEFAULT;
SELECT @@session.sql_safe_updates;
@@session.sql_safe_updates
-1
+0
'#---------------------FN_DYNVARS_163_02-------------------------#'
SET sql_safe_updates = 1;
SELECT @@sql_safe_updates;
@@ -45,25 +45,26 @@ ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of 'T'
SET @@session.sql_safe_updates = "Y";
ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of 'Y'
SET @@session.sql_safe_updates = TRÜE;
-ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of 'TRÜE'
SET @@session.sql_safe_updates = ÕN;
-ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of 'ÕN'
+ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of 'ÕN'
SET @@session.sql_safe_updates = OF;
-SELECT @@session.sql_safe_updates;
-@@session.sql_safe_updates
-0
-'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
+ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of 'OF'
SET @@session.sql_safe_updates = ÓFF;
-ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of 'ÓFF'
+ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of 'ÓFF'
SET @@session.sql_safe_updates = '¹';
ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of '¹'
SET @@session.sql_safe_updates = NO;
ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of 'NO'
'#-------------------FN_DYNVARS_163_05----------------------------#'
-SET @@global.sql_safe_updates = 0;
-ERROR HY000: Variable 'sql_safe_updates' is a SESSION variable and can't be used with SET GLOBAL
+SET @@global.sql_safe_updates = 1-@@global.sql_safe_updates;
SELECT @@global.sql_safe_updates;
-ERROR HY000: Variable 'sql_safe_updates' is a SESSION variable
+@@global.sql_safe_updates
+1
+SET @@global.sql_safe_updates = 1-@@global.sql_safe_updates;
+SELECT @@global.sql_safe_updates;
+@@global.sql_safe_updates
+0
'#----------------------FN_DYNVARS_163_06------------------------#'
SELECT count(VARIABLE_VALUE)
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
@@ -71,19 +72,19 @@ WHERE VARIABLE_NAME='sql_safe_updates';
count(VARIABLE_VALUE)
1
'#----------------------FN_DYNVARS_163_07------------------------#'
-SELECT @@session.sql_safe_updates = VARIABLE_VALUE
+SELECT IF(@@session.sql_safe_updates, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_safe_updates';
-@@session.sql_safe_updates = VARIABLE_VALUE
+IF(@@session.sql_safe_updates, "ON", "OFF") = VARIABLE_VALUE
1
SELECT @@session.sql_safe_updates;
@@session.sql_safe_updates
-0
+1
SELECT VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_safe_updates';
VARIABLE_VALUE
-OFF
+ON
'#---------------------FN_DYNVARS_163_08-------------------------#'
SET @@session.sql_safe_updates = OFF;
SELECT @@session.sql_safe_updates;
diff --git a/mysql-test/suite/sys_vars/r/sql_select_limit_basic.result b/mysql-test/suite/sys_vars/r/sql_select_limit_basic.result
new file mode 100644
index 00000000000..c601fa148ce
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/sql_select_limit_basic.result
@@ -0,0 +1,40 @@
+SET @start_global_value = @@global.sql_select_limit;
+SELECT @start_global_value;
+@start_global_value
+18446744073709551615
+select @@global.sql_select_limit;
+@@global.sql_select_limit
+18446744073709551615
+select @@session.sql_select_limit;
+@@session.sql_select_limit
+18446744073709551615
+show global variables like 'sql_select_limit';
+Variable_name Value
+sql_select_limit 18446744073709551615
+show session variables like 'sql_select_limit';
+Variable_name Value
+sql_select_limit 18446744073709551615
+select * from information_schema.global_variables where variable_name='sql_select_limit';
+VARIABLE_NAME VARIABLE_VALUE
+SQL_SELECT_LIMIT 18446744073709551615
+select * from information_schema.session_variables where variable_name='sql_select_limit';
+VARIABLE_NAME VARIABLE_VALUE
+SQL_SELECT_LIMIT 18446744073709551615
+set global sql_select_limit=10;
+select @@global.sql_select_limit;
+@@global.sql_select_limit
+10
+set session sql_select_limit=20;
+select @@session.sql_select_limit;
+@@session.sql_select_limit
+20
+set global sql_select_limit=1.1;
+ERROR 42000: Incorrect argument type to variable 'sql_select_limit'
+set global sql_select_limit=1e1;
+ERROR 42000: Incorrect argument type to variable 'sql_select_limit'
+set global sql_select_limit="foo";
+ERROR 42000: Incorrect argument type to variable 'sql_select_limit'
+SET @@global.sql_select_limit = @start_global_value;
+SELECT @@global.sql_select_limit;
+@@global.sql_select_limit
+18446744073709551615
diff --git a/mysql-test/suite/sys_vars/r/sql_slave_skip_counter_basic.result b/mysql-test/suite/sys_vars/r/sql_slave_skip_counter_basic.result
index 9ceef325483..2d709c486dd 100644
--- a/mysql-test/suite/sys_vars/r/sql_slave_skip_counter_basic.result
+++ b/mysql-test/suite/sys_vars/r/sql_slave_skip_counter_basic.result
@@ -1,20 +1,22 @@
'#--------------------FN_DYNVARS_165_01-------------------------#'
SET @start_global_value = @@global.sql_slave_skip_counter;
-ERROR HY000: Variable 'sql_slave_skip_counter' can only be set, not read
SELECT @@global.sql_slave_skip_counter;
-ERROR HY000: Variable 'sql_slave_skip_counter' can only be set, not read
-'Info:This value is write only. Value can not be read'
+@@global.sql_slave_skip_counter
+0
'#--------------------FN_DYNVARS_165_02-------------------------#'
SET @@global.sql_slave_skip_counter = DEFAULT;
-ERROR 42000: Variable 'sql_slave_skip_counter' doesn't have a default value
'#--------------------FN_DYNVARS_165_03-------------------------#'
SET @@global.sql_slave_skip_counter = 0;
SET @@global.sql_slave_skip_counter = 5;
SET @@global.sql_slave_skip_counter = 1024;
SET @@global.sql_slave_skip_counter = 2147483648;
SET @@global.sql_slave_skip_counter = 2147483648*2;
+Warnings:
+Warning 1292 Truncated incorrect sql_slave_skip_counter value: '4294967296'
SET @@global.sql_slave_skip_counter = 2147483648*2-1;
SET @@global.sql_slave_skip_counter = 4294967295*4294967295;
+Warnings:
+Warning 1292 Truncated incorrect sql_slave_skip_counter value: '-8589934591'
'#--------------------FN_DYNVARS_165_03-------------------------#'
SET @@global.sql_slave_skip_counter = '5';
ERROR 42000: Incorrect argument type to variable 'sql_slave_skip_counter'
@@ -30,7 +32,7 @@ SELECT VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_slave_skip_counter';
VARIABLE_VALUE
-
+1024
'#--------------------FN_DYNVARS_165_03-------------------------#'
SET @@sql_slave_skip_counter = 10;
ERROR HY000: Variable 'sql_slave_skip_counter' is a GLOBAL variable and should be set with SET GLOBAL
@@ -38,3 +40,4 @@ SET @@session.sql_slave_skip_counter = 12;
ERROR HY000: Variable 'sql_slave_skip_counter' is a GLOBAL variable and should be set with SET GLOBAL
SET @@local.sql_slave_skip_counter = 13;
ERROR HY000: Variable 'sql_slave_skip_counter' is a GLOBAL variable and should be set with SET GLOBAL
+SET @@global.sql_slave_skip_counter = 0;
diff --git a/mysql-test/suite/sys_vars/r/sql_warnings_basic.result b/mysql-test/suite/sys_vars/r/sql_warnings_basic.result
index 46907c0ced8..762182336c3 100644
--- a/mysql-test/suite/sys_vars/r/sql_warnings_basic.result
+++ b/mysql-test/suite/sys_vars/r/sql_warnings_basic.result
@@ -12,7 +12,7 @@ SET @@session.sql_warnings = 1;
SET @@session.sql_warnings = DEFAULT;
SELECT @@session.sql_warnings;
@@session.sql_warnings
-1
+0
'#---------------------FN_DYNVARS_166_02-------------------------#'
SET sql_warnings = 1;
SELECT @@sql_warnings;
@@ -36,34 +36,33 @@ SELECT @@session.sql_warnings;
@@session.sql_warnings
1
'#--------------------FN_DYNVARS_166_04-------------------------#'
-SET @@session.sql_warnings = -0.6;
-ERROR 42000: Variable 'sql_warnings' can't be set to the value of '-1'
-SET @@session.sql_warnings = 1.9;
-ERROR 42000: Variable 'sql_warnings' can't be set to the value of '2'
+SET @@session.sql_warnings = 0.6;
+ERROR 42000: Incorrect argument type to variable 'sql_warnings'
SET @@session.sql_warnings = "T";
ERROR 42000: Variable 'sql_warnings' can't be set to the value of 'T'
SET @@session.sql_warnings = "Y";
ERROR 42000: Variable 'sql_warnings' can't be set to the value of 'Y'
SET @@session.sql_warnings = TRÜE;
-ERROR 42000: Variable 'sql_warnings' can't be set to the value of 'TRÜE'
+ERROR 42000: Variable 'sql_warnings' can't be set to the value of 'TRÜE'
SET @@session.sql_warnings = ÕN;
-ERROR 42000: Variable 'sql_warnings' can't be set to the value of 'ÕN'
+ERROR 42000: Variable 'sql_warnings' can't be set to the value of 'ÕN'
SET @@session.sql_warnings = OF;
-SELECT @@session.sql_warnings;
-@@session.sql_warnings
-0
-'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
+ERROR 42000: Variable 'sql_warnings' can't be set to the value of 'OF'
SET @@session.sql_warnings = ÓFF;
-ERROR 42000: Variable 'sql_warnings' can't be set to the value of 'ÓFF'
+ERROR 42000: Variable 'sql_warnings' can't be set to the value of 'ÓFF'
SET @@session.sql_warnings = '¹';
ERROR 42000: Variable 'sql_warnings' can't be set to the value of '¹'
SET @@session.sql_warnings = NO;
ERROR 42000: Variable 'sql_warnings' can't be set to the value of 'NO'
'#-------------------FN_DYNVARS_166_05----------------------------#'
-SET @@global.sql_warnings = 0;
-ERROR HY000: Variable 'sql_warnings' is a SESSION variable and can't be used with SET GLOBAL
+SET @@global.sql_warnings = 1-@@global.sql_warnings;
SELECT @@global.sql_warnings;
-ERROR HY000: Variable 'sql_warnings' is a SESSION variable
+@@global.sql_warnings
+1
+SET @@global.sql_warnings = 1-@@global.sql_warnings;
+SELECT @@global.sql_warnings;
+@@global.sql_warnings
+0
'#----------------------FN_DYNVARS_166_06------------------------#'
SELECT count(VARIABLE_VALUE)
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
@@ -71,20 +70,19 @@ WHERE VARIABLE_NAME='sql_warnings';
count(VARIABLE_VALUE)
1
'#----------------------FN_DYNVARS_166_07------------------------#'
-SELECT @@session.sql_warnings = VARIABLE_VALUE
+SELECT IF(@@session.sql_warnings, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_warnings';
-@@session.sql_warnings = VARIABLE_VALUE
+IF(@@session.sql_warnings, "ON", "OFF") = VARIABLE_VALUE
1
SELECT @@session.sql_warnings;
@@session.sql_warnings
-0
+1
SELECT VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_warnings';
VARIABLE_VALUE
-OFF
-'Bug: value in information schema does not match'
+ON
'#---------------------FN_DYNVARS_166_08-------------------------#'
SET @@session.sql_warnings = OFF;
SELECT @@session.sql_warnings;
diff --git a/mysql-test/suite/sys_vars/r/storage_engine_basic.result b/mysql-test/suite/sys_vars/r/storage_engine_basic.result
index 8d621ac5599..5e80f1343b7 100644
--- a/mysql-test/suite/sys_vars/r/storage_engine_basic.result
+++ b/mysql-test/suite/sys_vars/r/storage_engine_basic.result
@@ -7,9 +7,8 @@ SELECT @start_session_value;
@start_session_value
MyISAM
'#--------------------FN_DYNVARS_005_01-------------------------#'
-SET @@global.storage_engine = MYISAM;
+SET @@global.storage_engine = INNODB;
SET @@global.storage_engine = DEFAULT;
-ERROR 42000: Variable 'storage_engine' doesn't have a default value
SELECT @@global.storage_engine;
@@global.storage_engine
MyISAM
@@ -55,18 +54,20 @@ InnoDB
'#------------------FN_DYNVARS_005_04-----------------------#'
SET @@global.storage_engine = 8199;
ERROR 42000: Incorrect argument type to variable 'storage_engine'
+SET @@global.storage_engine = NULL;
+ERROR 42000: Variable 'storage_engine' can't be set to the value of 'NULL'
SET @@global.storage_engine = -1024;
ERROR 42000: Incorrect argument type to variable 'storage_engine'
-SET @@global.storage_engine = 65530.34.;
-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 '.' at line 1
+SET @@global.storage_engine = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'storage_engine'
SET @@global.storage_engine = FILE;
-ERROR 42000: Unknown table engine 'FILE'
+ERROR 42000: Unknown storage engine 'FILE'
SET @@session.storage_engine = 8199;
ERROR 42000: Incorrect argument type to variable 'storage_engine'
-SET @@session.storage_engine = 65530.34.;
-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 '.' at line 1
+SET @@session.storage_engine = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'storage_engine'
SET @@session.storage_engine = RECORD;
-ERROR 42000: Unknown table engine 'RECORD'
+ERROR 42000: Unknown storage engine 'RECORD'
'#------------------FN_DYNVARS_005_05-----------------------#'
SELECT @@global.storage_engine =
VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
@@ -105,6 +106,7 @@ SELECT session.storage_engine;
ERROR 42S02: Unknown table 'session' in field list
SELECT storage_engine = @@session.storage_engine;
ERROR 42S22: Unknown column 'storage_engine' in 'field list'
+SET @@storage_engine = @start_global_value;
SET @@global.storage_engine = @start_global_value;
SELECT @@global.storage_engine;
@@global.storage_engine
diff --git a/mysql-test/suite/sys_vars/r/sync_binlog_basic_32.result b/mysql-test/suite/sys_vars/r/sync_binlog_basic.result
index cae626ad63b..89f99fcbbee 100644
--- a/mysql-test/suite/sys_vars/r/sync_binlog_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/sync_binlog_basic.result
@@ -70,7 +70,6 @@ Warning 1292 Truncated incorrect sync_binlog value: '42949672950'
SELECT @@global.sync_binlog;
@@global.sync_binlog
4294967295
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.sync_binlog = ON;
ERROR 42000: Incorrect argument type to variable 'sync_binlog'
SELECT @@global.sync_binlog;
diff --git a/mysql-test/suite/sys_vars/r/sync_binlog_basic_64.result b/mysql-test/suite/sys_vars/r/sync_binlog_basic_64.result
deleted file mode 100644
index d3cc4e2a9c2..00000000000
--- a/mysql-test/suite/sys_vars/r/sync_binlog_basic_64.result
+++ /dev/null
@@ -1,109 +0,0 @@
-SET @start_value = @@global.sync_binlog;
-SELECT @start_value;
-@start_value
-0
-'#--------------------FN_DYNVARS_168_01------------------------#'
-SET @@global.sync_binlog = 99;
-SET @@global.sync_binlog = DEFAULT;
-SELECT @@global.sync_binlog;
-@@global.sync_binlog
-0
-'#---------------------FN_DYNVARS_168_02-------------------------#'
-SET @@global.sync_binlog = @start_value;
-SELECT @@global.sync_binlog = 0;
-@@global.sync_binlog = 0
-1
-'#--------------------FN_DYNVARS_168_03------------------------#'
-SET @@global.sync_binlog = 0;
-SELECT @@global.sync_binlog;
-@@global.sync_binlog
-0
-SET @@global.sync_binlog = 1;
-SELECT @@global.sync_binlog;
-@@global.sync_binlog
-1
-SET @@global.sync_binlog = 4294967295;
-SELECT @@global.sync_binlog;
-@@global.sync_binlog
-4294967295
-SET @@global.sync_binlog = 4294967294;
-SELECT @@global.sync_binlog;
-@@global.sync_binlog
-4294967294
-SET @@global.sync_binlog = 65536;
-SELECT @@global.sync_binlog;
-@@global.sync_binlog
-65536
-'#--------------------FN_DYNVARS_168_04-------------------------#'
-SET @@global.sync_binlog = -1;
-Warnings:
-Warning 1292 Truncated incorrect sync_binlog value: '-1'
-SELECT @@global.sync_binlog;
-@@global.sync_binlog
-0
-SET @@global.sync_binlog = 4294967296;
-SELECT @@global.sync_binlog;
-@@global.sync_binlog
-4294967296
-SET @@global.sync_binlog = 10240022115;
-SELECT @@global.sync_binlog;
-@@global.sync_binlog
-10240022115
-SET @@global.sync_binlog = 10000.01;
-ERROR 42000: Incorrect argument type to variable 'sync_binlog'
-SELECT @@global.sync_binlog;
-@@global.sync_binlog
-10240022115
-SET @@global.sync_binlog = -1024;
-Warnings:
-Warning 1292 Truncated incorrect sync_binlog value: '-1024'
-SELECT @@global.sync_binlog;
-@@global.sync_binlog
-0
-SET @@global.sync_binlog = 42949672950;
-SELECT @@global.sync_binlog;
-@@global.sync_binlog
-42949672950
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-SET @@global.sync_binlog = ON;
-ERROR 42000: Incorrect argument type to variable 'sync_binlog'
-SELECT @@global.sync_binlog;
-@@global.sync_binlog
-42949672950
-SET @@global.sync_binlog = 'test';
-ERROR 42000: Incorrect argument type to variable 'sync_binlog'
-SELECT @@global.sync_binlog;
-@@global.sync_binlog
-42949672950
-'#-------------------FN_DYNVARS_168_05----------------------------#'
-SET @@session.sync_binlog = 0;
-ERROR HY000: Variable 'sync_binlog' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT @@sync_binlog;
-@@sync_binlog
-42949672950
-'#----------------------FN_DYNVARS_168_06------------------------#'
-SELECT @@global.sync_binlog = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='sync_binlog';
-@@global.sync_binlog = VARIABLE_VALUE
-1
-'#---------------------FN_DYNVARS_168_07----------------------#'
-SET sync_binlog = 1;
-ERROR HY000: Variable 'sync_binlog' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT @@sync_binlog;
-@@sync_binlog
-42949672950
-SET local.sync_binlog = 1;
-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 'sync_binlog = 1' at line 1
-SELECT local.sync_binlog;
-ERROR 42S02: Unknown table 'local' in field list
-SET global.sync_binlog = 1;
-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 'sync_binlog = 1' at line 1
-SELECT global.sync_binlog;
-ERROR 42S02: Unknown table 'global' in field list
-SELECT sync_binlog = @@session.sync_binlog;
-ERROR 42S22: Unknown column 'sync_binlog' in 'field list'
-SET @@global.sync_binlog = @start_value;
-SELECT @@global.sync_binlog;
-@@global.sync_binlog
-0
diff --git a/mysql-test/suite/sys_vars/r/sync_frm_basic.result b/mysql-test/suite/sys_vars/r/sync_frm_basic.result
index 9792307d17f..aa5416749a3 100644
--- a/mysql-test/suite/sys_vars/r/sync_frm_basic.result
+++ b/mysql-test/suite/sys_vars/r/sync_frm_basic.result
@@ -69,10 +69,10 @@ ERROR HY000: Variable 'sync_frm' is a GLOBAL variable and should be set with SET
SELECT @@session.sync_frm;
ERROR HY000: Variable 'sync_frm' is a GLOBAL variable
'#----------------------FN_DYNVARS_169_06------------------------#'
-SELECT @@global.sync_frm = VARIABLE_VALUE
+SELECT IF(@@global.sync_frm, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='sync_frm';
-@@global.sync_frm = VARIABLE_VALUE
+IF(@@global.sync_frm, "ON", "OFF") = VARIABLE_VALUE
1
'#---------------------FN_DYNVARS_169_07----------------------#'
SET @@global.sync_frm = 1;
diff --git a/mysql-test/suite/sys_vars/r/sync_master_info_basic.result b/mysql-test/suite/sys_vars/r/sync_master_info_basic.result
new file mode 100644
index 00000000000..47aafe21a59
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/sync_master_info_basic.result
@@ -0,0 +1,47 @@
+SET @start_global_value = @@global.sync_master_info;
+SELECT @start_global_value;
+@start_global_value
+0
+select @@global.sync_master_info;
+@@global.sync_master_info
+0
+select @@session.sync_master_info;
+ERROR HY000: Variable 'sync_master_info' is a GLOBAL variable
+show global variables like 'sync_master_info';
+Variable_name Value
+sync_master_info 0
+show session variables like 'sync_master_info';
+Variable_name Value
+sync_master_info 0
+select * from information_schema.global_variables where variable_name='sync_master_info';
+VARIABLE_NAME VARIABLE_VALUE
+SYNC_MASTER_INFO 0
+select * from information_schema.session_variables where variable_name='sync_master_info';
+VARIABLE_NAME VARIABLE_VALUE
+SYNC_MASTER_INFO 0
+set global sync_master_info=1;
+select @@global.sync_master_info;
+@@global.sync_master_info
+1
+set session sync_master_info=1;
+ERROR HY000: Variable 'sync_master_info' is a GLOBAL variable and should be set with SET GLOBAL
+set global sync_master_info=1.1;
+ERROR 42000: Incorrect argument type to variable 'sync_master_info'
+set global sync_master_info=1e1;
+ERROR 42000: Incorrect argument type to variable 'sync_master_info'
+set global sync_master_info="foo";
+ERROR 42000: Incorrect argument type to variable 'sync_master_info'
+set global sync_master_info=0;
+select @@global.sync_master_info;
+@@global.sync_master_info
+0
+set global sync_master_info=cast(-1 as unsigned int);
+Warnings:
+Warning 1292 Truncated incorrect sync_master_info value: '18446744073709551615'
+select @@global.sync_master_info;
+@@global.sync_master_info
+4294967295
+SET @@global.sync_master_info = @start_global_value;
+SELECT @@global.sync_master_info;
+@@global.sync_master_info
+0
diff --git a/mysql-test/suite/sys_vars/r/sync_relay_log_basic.result b/mysql-test/suite/sys_vars/r/sync_relay_log_basic.result
new file mode 100644
index 00000000000..75eac82f11e
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/sync_relay_log_basic.result
@@ -0,0 +1,47 @@
+SET @start_global_value = @@global.sync_relay_log;
+SELECT @start_global_value;
+@start_global_value
+0
+select @@global.sync_relay_log;
+@@global.sync_relay_log
+0
+select @@session.sync_relay_log;
+ERROR HY000: Variable 'sync_relay_log' is a GLOBAL variable
+show global variables like 'sync_relay_log';
+Variable_name Value
+sync_relay_log 0
+show session variables like 'sync_relay_log';
+Variable_name Value
+sync_relay_log 0
+select * from information_schema.global_variables where variable_name='sync_relay_log';
+VARIABLE_NAME VARIABLE_VALUE
+SYNC_RELAY_LOG 0
+select * from information_schema.session_variables where variable_name='sync_relay_log';
+VARIABLE_NAME VARIABLE_VALUE
+SYNC_RELAY_LOG 0
+set global sync_relay_log=1;
+select @@global.sync_relay_log;
+@@global.sync_relay_log
+1
+set session sync_relay_log=1;
+ERROR HY000: Variable 'sync_relay_log' is a GLOBAL variable and should be set with SET GLOBAL
+set global sync_relay_log=1.1;
+ERROR 42000: Incorrect argument type to variable 'sync_relay_log'
+set global sync_relay_log=1e1;
+ERROR 42000: Incorrect argument type to variable 'sync_relay_log'
+set global sync_relay_log="foo";
+ERROR 42000: Incorrect argument type to variable 'sync_relay_log'
+set global sync_relay_log=0;
+select @@global.sync_relay_log;
+@@global.sync_relay_log
+0
+set global sync_relay_log=cast(-1 as unsigned int);
+Warnings:
+Warning 1292 Truncated incorrect sync_relay_log value: '18446744073709551615'
+select @@global.sync_relay_log;
+@@global.sync_relay_log
+4294967295
+SET @@global.sync_relay_log = @start_global_value;
+SELECT @@global.sync_relay_log;
+@@global.sync_relay_log
+0
diff --git a/mysql-test/suite/sys_vars/r/sync_relay_log_info_basic.result b/mysql-test/suite/sys_vars/r/sync_relay_log_info_basic.result
new file mode 100644
index 00000000000..fe0efdc0737
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/sync_relay_log_info_basic.result
@@ -0,0 +1,47 @@
+SET @start_global_value = @@global.sync_relay_log_info;
+SELECT @start_global_value;
+@start_global_value
+0
+select @@global.sync_relay_log_info;
+@@global.sync_relay_log_info
+0
+select @@session.sync_relay_log_info;
+ERROR HY000: Variable 'sync_relay_log_info' is a GLOBAL variable
+show global variables like 'sync_relay_log_info';
+Variable_name Value
+sync_relay_log_info 0
+show session variables like 'sync_relay_log_info';
+Variable_name Value
+sync_relay_log_info 0
+select * from information_schema.global_variables where variable_name='sync_relay_log_info';
+VARIABLE_NAME VARIABLE_VALUE
+SYNC_RELAY_LOG_INFO 0
+select * from information_schema.session_variables where variable_name='sync_relay_log_info';
+VARIABLE_NAME VARIABLE_VALUE
+SYNC_RELAY_LOG_INFO 0
+set global sync_relay_log_info=1;
+select @@global.sync_relay_log_info;
+@@global.sync_relay_log_info
+1
+set session sync_relay_log_info=1;
+ERROR HY000: Variable 'sync_relay_log_info' is a GLOBAL variable and should be set with SET GLOBAL
+set global sync_relay_log_info=1.1;
+ERROR 42000: Incorrect argument type to variable 'sync_relay_log_info'
+set global sync_relay_log_info=1e1;
+ERROR 42000: Incorrect argument type to variable 'sync_relay_log_info'
+set global sync_relay_log_info="foo";
+ERROR 42000: Incorrect argument type to variable 'sync_relay_log_info'
+set global sync_relay_log_info=0;
+select @@global.sync_relay_log_info;
+@@global.sync_relay_log_info
+0
+set global sync_relay_log_info=cast(-1 as unsigned int);
+Warnings:
+Warning 1292 Truncated incorrect sync_relay_log_info value: '18446744073709551615'
+select @@global.sync_relay_log_info;
+@@global.sync_relay_log_info
+4294967295
+SET @@global.sync_relay_log_info = @start_global_value;
+SELECT @@global.sync_relay_log_info;
+@@global.sync_relay_log_info
+0
diff --git a/mysql-test/suite/sys_vars/r/table_definition_cache_basic.result b/mysql-test/suite/sys_vars/r/table_definition_cache_basic.result
index 612d4138003..0f5794aa329 100644
--- a/mysql-test/suite/sys_vars/r/table_definition_cache_basic.result
+++ b/mysql-test/suite/sys_vars/r/table_definition_cache_basic.result
@@ -1,7 +1,7 @@
SET @start_value = @@global.table_definition_cache;
SELECT @start_value;
@start_value
-256
+400
'#--------------------FN_DYNVARS_019_01------------------------#'
SET @@global.table_definition_cache = 100;
Warnings:
@@ -9,25 +9,25 @@ Warning 1292 Truncated incorrect table_definition_cache value: '100'
SET @@global.table_definition_cache = DEFAULT;
SELECT @@global.table_definition_cache;
@@global.table_definition_cache
-256
+400
'#---------------------FN_DYNVARS_019_02-------------------------#'
SET @@global.table_definition_cache = DEFAULT;
-SELECT @@global.table_definition_cache = 128;
-@@global.table_definition_cache = 128
-0
+SELECT @@global.table_definition_cache = 400;
+@@global.table_definition_cache = 400
+1
'#--------------------FN_DYNVARS_019_03------------------------#'
SET @@global.table_definition_cache = 1;
Warnings:
Warning 1292 Truncated incorrect table_definition_cache value: '1'
SELECT @@global.table_definition_cache;
@@global.table_definition_cache
-256
+400
SET @@global.table_definition_cache = 2;
Warnings:
Warning 1292 Truncated incorrect table_definition_cache value: '2'
SELECT @@global.table_definition_cache;
@@global.table_definition_cache
-256
+400
SET @@global.table_definition_cache = 524287;
SELECT @@global.table_definition_cache;
@@global.table_definition_cache
@@ -42,13 +42,13 @@ Warnings:
Warning 1292 Truncated incorrect table_definition_cache value: '0'
SELECT @@global.table_definition_cache;
@@global.table_definition_cache
-256
+400
SET @@global.table_definition_cache = -1024;
Warnings:
Warning 1292 Truncated incorrect table_definition_cache value: '-1024'
SELECT @@global.table_definition_cache;
@@global.table_definition_cache
-256
+400
SET @@global.table_definition_cache = 524289;
Warnings:
Warning 1292 Truncated incorrect table_definition_cache value: '524289'
@@ -61,7 +61,6 @@ Warning 1292 Truncated incorrect table_definition_cache value: '42949672950'
SELECT @@global.table_definition_cache;
@@global.table_definition_cache
524288
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.table_definition_cache = 21221204.10;
ERROR 42000: Incorrect argument type to variable 'table_definition_cache'
SET @@global.table_definition_cache = ON;
@@ -83,13 +82,13 @@ Warnings:
Warning 1292 Truncated incorrect table_definition_cache value: '1'
SELECT @@global.table_definition_cache;
@@global.table_definition_cache
-256
+400
SET @@global.table_definition_cache = FALSE;
Warnings:
Warning 1292 Truncated incorrect table_definition_cache value: '0'
SELECT @@global.table_definition_cache;
@@global.table_definition_cache
-256
+400
'#---------------------FN_DYNVARS_019_08----------------------#'
SET @@global.table_definition_cache = 5;
Warnings:
@@ -109,4 +108,4 @@ ERROR 42S22: Unknown column 'table_definition_cache' in 'field list'
SET @@global.table_definition_cache = @start_value;
SELECT @@global.table_definition_cache;
@@global.table_definition_cache
-256
+400
diff --git a/mysql-test/suite/sys_vars/r/table_lock_wait_timeout_basic.result b/mysql-test/suite/sys_vars/r/table_lock_wait_timeout_basic.result
index a500581c228..68c36242cc1 100644
--- a/mysql-test/suite/sys_vars/r/table_lock_wait_timeout_basic.result
+++ b/mysql-test/suite/sys_vars/r/table_lock_wait_timeout_basic.result
@@ -47,7 +47,6 @@ Warning 1292 Truncated incorrect table_lock_wait_timeout value: '-1024'
SET @@global.table_lock_wait_timeout= 0;
Warnings:
Warning 1292 Truncated incorrect table_lock_wait_timeout value: '0'
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.table_lock_wait_timeout= 10000.01;
ERROR 42000: Incorrect argument type to variable 'table_lock_wait_timeout'
SET @@global.table_lock_wait_timeout= ON;
diff --git a/mysql-test/suite/sys_vars/r/table_open_cache_basic.result b/mysql-test/suite/sys_vars/r/table_open_cache_basic.result
index 080bcb6537e..0b0c3230e5e 100644
--- a/mysql-test/suite/sys_vars/r/table_open_cache_basic.result
+++ b/mysql-test/suite/sys_vars/r/table_open_cache_basic.result
@@ -1,17 +1,17 @@
SET @start_value = @@global.table_open_cache ;
SELECT @start_value;
@start_value
-64
+400
'#--------------------FN_DYNVARS_001_01------------------------#'
SET @@global.table_open_cache = 99;
SET @@global.table_open_cache = DeFAULT;
SELECT @@global.table_open_cache;
@@global.table_open_cache
-64
+400
'#---------------------FN_DYNVARS_001_02-------------------------#'
SET @@global.table_open_cache = Default;
-SELECT @@global.table_open_cache = 64;
-@@global.table_open_cache = 64
+SELECT @@global.table_open_cache = 400;
+@@global.table_open_cache = 400
1
'#--------------------FN_DYNVARS_001_03------------------------#'
SET @@global.table_open_cache = 8;
@@ -61,7 +61,6 @@ Warning 1292 Truncated incorrect table_open_cache value: '0'
SELECT @@global.table_open_cache ;
@@global.table_open_cache
1
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.table_open_cache = 10000.01;
ERROR 42000: Incorrect argument type to variable 'table_open_cache'
SET @@global.table_open_cache = ON;
@@ -105,4 +104,4 @@ ERROR 42S22: Unknown column 'table_open_cache' in 'field list'
SET @@global.table_open_cache = @start_value;
SELECT @@global.table_open_cache ;
@@global.table_open_cache
-64
+400
diff --git a/mysql-test/suite/sys_vars/r/thread_cache_size_basic.result b/mysql-test/suite/sys_vars/r/thread_cache_size_basic.result
new file mode 100644
index 00000000000..1c802f1afdd
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/thread_cache_size_basic.result
@@ -0,0 +1,47 @@
+SET @start_global_value = @@global.thread_cache_size;
+SELECT @start_global_value;
+@start_global_value
+0
+select @@global.thread_cache_size;
+@@global.thread_cache_size
+0
+select @@session.thread_cache_size;
+ERROR HY000: Variable 'thread_cache_size' is a GLOBAL variable
+show global variables like 'thread_cache_size';
+Variable_name Value
+thread_cache_size 0
+show session variables like 'thread_cache_size';
+Variable_name Value
+thread_cache_size 0
+select * from information_schema.global_variables where variable_name='thread_cache_size';
+VARIABLE_NAME VARIABLE_VALUE
+THREAD_CACHE_SIZE 0
+select * from information_schema.session_variables where variable_name='thread_cache_size';
+VARIABLE_NAME VARIABLE_VALUE
+THREAD_CACHE_SIZE 0
+set global thread_cache_size=1;
+select @@global.thread_cache_size;
+@@global.thread_cache_size
+1
+set session thread_cache_size=1;
+ERROR HY000: Variable 'thread_cache_size' is a GLOBAL variable and should be set with SET GLOBAL
+set global thread_cache_size=1.1;
+ERROR 42000: Incorrect argument type to variable 'thread_cache_size'
+set global thread_cache_size=1e1;
+ERROR 42000: Incorrect argument type to variable 'thread_cache_size'
+set global thread_cache_size="foo";
+ERROR 42000: Incorrect argument type to variable 'thread_cache_size'
+set global thread_cache_size=0;
+select @@global.thread_cache_size;
+@@global.thread_cache_size
+0
+set global thread_cache_size=cast(-1 as unsigned int);
+Warnings:
+Warning 1292 Truncated incorrect thread_cache_size value: '18446744073709551615'
+select @@global.thread_cache_size;
+@@global.thread_cache_size
+16384
+SET @@global.thread_cache_size = @start_global_value;
+SELECT @@global.thread_cache_size;
+@@global.thread_cache_size
+0
diff --git a/mysql-test/suite/sys_vars/r/thread_concurrency_basic.result b/mysql-test/suite/sys_vars/r/thread_concurrency_basic.result
new file mode 100644
index 00000000000..ea8c0168212
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/thread_concurrency_basic.result
@@ -0,0 +1,21 @@
+select @@global.thread_concurrency;
+@@global.thread_concurrency
+10
+select @@session.thread_concurrency;
+ERROR HY000: Variable 'thread_concurrency' is a GLOBAL variable
+show global variables like 'thread_concurrency';
+Variable_name Value
+thread_concurrency 10
+show session variables like 'thread_concurrency';
+Variable_name Value
+thread_concurrency 10
+select * from information_schema.global_variables where variable_name='thread_concurrency';
+VARIABLE_NAME VARIABLE_VALUE
+THREAD_CONCURRENCY 10
+select * from information_schema.session_variables where variable_name='thread_concurrency';
+VARIABLE_NAME VARIABLE_VALUE
+THREAD_CONCURRENCY 10
+set global thread_concurrency=1;
+ERROR HY000: Variable 'thread_concurrency' is a read only variable
+set session thread_concurrency=1;
+ERROR HY000: Variable 'thread_concurrency' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/thread_stack_basic.result b/mysql-test/suite/sys_vars/r/thread_stack_basic.result
new file mode 100644
index 00000000000..c9c458a28a9
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/thread_stack_basic.result
@@ -0,0 +1,21 @@
+select @@global.thread_stack;
+@@global.thread_stack
+262144
+select @@session.thread_stack;
+ERROR HY000: Variable 'thread_stack' is a GLOBAL variable
+show global variables like 'thread_stack';
+Variable_name Value
+thread_stack 262144
+show session variables like 'thread_stack';
+Variable_name Value
+thread_stack 262144
+select * from information_schema.global_variables where variable_name='thread_stack';
+VARIABLE_NAME VARIABLE_VALUE
+THREAD_STACK 262144
+select * from information_schema.session_variables where variable_name='thread_stack';
+VARIABLE_NAME VARIABLE_VALUE
+THREAD_STACK 262144
+set global thread_stack=1;
+ERROR HY000: Variable 'thread_stack' is a read only variable
+set session thread_stack=1;
+ERROR HY000: Variable 'thread_stack' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/time_format_basic.result b/mysql-test/suite/sys_vars/r/time_format_basic.result
new file mode 100644
index 00000000000..fcc23608d39
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/time_format_basic.result
@@ -0,0 +1,21 @@
+select @@global.time_format;
+@@global.time_format
+%H:%i:%s
+select @@session.time_format;
+ERROR HY000: Variable 'time_format' is a GLOBAL variable
+show global variables like 'time_format';
+Variable_name Value
+time_format %H:%i:%s
+show session variables like 'time_format';
+Variable_name Value
+time_format %H:%i:%s
+select * from information_schema.global_variables where variable_name='time_format';
+VARIABLE_NAME VARIABLE_VALUE
+TIME_FORMAT %H:%i:%s
+select * from information_schema.session_variables where variable_name='time_format';
+VARIABLE_NAME VARIABLE_VALUE
+TIME_FORMAT %H:%i:%s
+set global time_format=1;
+ERROR HY000: Variable 'time_format' is a read only variable
+set session time_format=1;
+ERROR HY000: Variable 'time_format' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/timed_mutexes_basic.result b/mysql-test/suite/sys_vars/r/timed_mutexes_basic.result
index d8bd2cd975f..50a5285b0d7 100644
--- a/mysql-test/suite/sys_vars/r/timed_mutexes_basic.result
+++ b/mysql-test/suite/sys_vars/r/timed_mutexes_basic.result
@@ -67,11 +67,11 @@ WHERE VARIABLE_NAME='timed_mutexes';
count(VARIABLE_VALUE)
1
'#----------------------FN_DYNVARS_177_07------------------------#'
-SELECT @@global.timed_mutexes = VARIABLE_VALUE
+SELECT IF(@@global.timed_mutexes, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='timed_mutexes';
-@@global.timed_mutexes = VARIABLE_VALUE
-0
+IF(@@global.timed_mutexes, "ON", "OFF") = VARIABLE_VALUE
+1
SELECT @@global.timed_mutexes;
@@global.timed_mutexes
1
diff --git a/mysql-test/suite/sys_vars/r/timestamp_basic_32.result b/mysql-test/suite/sys_vars/r/timestamp_basic.result
index a8be2201e68..a73de543815 100644
--- a/mysql-test/suite/sys_vars/r/timestamp_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/timestamp_basic.result
@@ -1,25 +1,24 @@
SET @session_start_value = @@session.timestamp;
'#--------------------FN_DYNVARS_001_01------------------------#'
SET @@timestamp = DEFAULT;
-'timestamp does not have any DEFAULT value'
+SELECT @@timestamp = UNIX_TIMESTAMP();
+@@timestamp = UNIX_TIMESTAMP()
+1
'#---------------------FN_DYNVARS_001_02-------------------------#'
SET @@global.timestamp = "1000";
ERROR HY000: Variable 'timestamp' is a SESSION variable and can't be used with SET GLOBAL
'#--------------------FN_DYNVARS_001_03------------------------#'
SET @@timestamp = 0;
+SELECT @@timestamp = UNIX_TIMESTAMP();
+@@timestamp = UNIX_TIMESTAMP()
+1
'Setting 0 resets timestamp to session default timestamp'
-SET @@timestamp = 123456789123456;
-SELECT @@timestamp;
-@@timestamp
-2249167232
-SET @@timestamp = 60*60*60*60*365;
-SELECT @@timestamp;
-@@timestamp
-435432704
SET @@timestamp = -1000000000;
-SELECT @@timestamp;
-@@timestamp
-3294967296
+Warnings:
+Warning 1292 Truncated incorrect timestamp value: '-1000000000'
+SELECT @@timestamp = UNIX_TIMESTAMP();
+@@timestamp = UNIX_TIMESTAMP()
+1
SET @temp_ts = @@timestamp - @@timestamp;
SELECT @temp_ts;
@temp_ts
@@ -27,7 +26,6 @@ SELECT @temp_ts;
'#--------------------FN_DYNVARS_001_04-------------------------#'
SET @@timestamp = "100";
ERROR 42000: Incorrect argument type to variable 'timestamp'
-'Bug# 34836: Documentation says its a string variable but infact its numeric'
SET @@timestamp = " ";
ERROR 42000: Incorrect argument type to variable 'timestamp'
SET @@timestamp = 1.1;
diff --git a/mysql-test/suite/sys_vars/r/timestamp_basic_64.result b/mysql-test/suite/sys_vars/r/timestamp_basic_64.result
deleted file mode 100644
index 824a3ea5529..00000000000
--- a/mysql-test/suite/sys_vars/r/timestamp_basic_64.result
+++ /dev/null
@@ -1,68 +0,0 @@
-SET @session_start_value = @@session.timestamp;
-'#--------------------FN_DYNVARS_001_01------------------------#'
-SET @@timestamp = DEFAULT;
-'timestamp does not have any DEFAULT value'
-'#---------------------FN_DYNVARS_001_02-------------------------#'
-SET @@global.timestamp = "1000";
-ERROR HY000: Variable 'timestamp' is a SESSION variable and can't be used with SET GLOBAL
-'#--------------------FN_DYNVARS_001_03------------------------#'
-SET @@timestamp = 0;
-'Setting 0 resets timestamp to session default timestamp'
-SET @@timestamp = 123456789123456;
-SELECT @@timestamp;
-@@timestamp
-123456789123456
-SET @@timestamp = 60*60*60*60*365;
-SELECT @@timestamp;
-@@timestamp
-4730400000
-SET @@timestamp = -1000000000;
-SELECT @@timestamp;
-@@timestamp
-18446744072709551616
-SET @temp_ts = @@timestamp - @@timestamp;
-SELECT @temp_ts;
-@temp_ts
-0
-'#--------------------FN_DYNVARS_001_04-------------------------#'
-SET @@timestamp = "100";
-ERROR 42000: Incorrect argument type to variable 'timestamp'
-'Bug# 34836: Documentation says its a string variable but infact its numeric'
-SET @@timestamp = " ";
-ERROR 42000: Incorrect argument type to variable 'timestamp'
-SET @@timestamp = 1.1;
-ERROR 42000: Incorrect argument type to variable 'timestamp'
-SET @@timestamp = 9999999999999999999999;
-ERROR 42000: Incorrect argument type to variable 'timestamp'
-'#----------------------FN_DYNVARS_001_06------------------------#'
-'#---------------------FN_DYNVARS_001_08-------------------------#'
-SET @@timestamp = OFF;
-ERROR 42000: Incorrect argument type to variable 'timestamp'
-SET @@timestamp = ON;
-ERROR 42000: Incorrect argument type to variable 'timestamp'
-SET @@timestamp = TRUE;
-SELECT @@timestamp;
-@@timestamp
-1
-SET @@timestamp = FALSE;
-'#---------------------FN_DYNVARS_001_10----------------------#'
-SET @@timestamp = 123456;
-SELECT @@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp;
-@@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp
-1
-SET @@timestamp = 654321;
-SELECT @@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp;
-@@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp
-1
-'#---------------------FN_DYNVARS_001_11----------------------#'
-SET timestamp = 1;
-SELECT @@timestamp;
-@@timestamp
-1
-SELECT local.timestamp;
-ERROR 42S02: Unknown table 'local' in field list
-SELECT session.timestamp;
-ERROR 42S02: Unknown table 'session' in field list
-SELECT timestamp = @@session.timestamp;
-ERROR 42S22: Unknown column 'timestamp' in 'field list'
-SET @@timestamp = @session_start_value;
diff --git a/mysql-test/suite/sys_vars/r/tmp_table_size_basic.result b/mysql-test/suite/sys_vars/r/tmp_table_size_basic.result
index 2ebeb8d61d8..06b624ad5c8 100644
--- a/mysql-test/suite/sys_vars/r/tmp_table_size_basic.result
+++ b/mysql-test/suite/sys_vars/r/tmp_table_size_basic.result
@@ -100,8 +100,6 @@ SELECT @@session.tmp_table_size;
SET @@session.tmp_table_size = "Test";
ERROR 42000: Incorrect argument type to variable 'tmp_table_size'
SET @@session.tmp_table_size = 12345678901;
-Warnings:
-Warning 1292 Truncated incorrect tmp_table_size value: '12345678901'
SELECT @@session.tmp_table_size IN (12345678901,4294967295);
@@session.tmp_table_size IN (12345678901,4294967295)
1
diff --git a/mysql-test/suite/sys_vars/r/transaction_alloc_block_size_basic_32.result b/mysql-test/suite/sys_vars/r/transaction_alloc_block_size_basic_32.result
index 8c6a788862d..a7afc334ba1 100644
--- a/mysql-test/suite/sys_vars/r/transaction_alloc_block_size_basic_32.result
+++ b/mysql-test/suite/sys_vars/r/transaction_alloc_block_size_basic_32.result
@@ -36,6 +36,8 @@ SELECT @@global.transaction_alloc_block_size;
@@global.transaction_alloc_block_size
1024
SET @@global.transaction_alloc_block_size = 60020;
+Warnings:
+Warning 1292 Truncated incorrect transaction_alloc_block_size value: '60020'
SELECT @@global.transaction_alloc_block_size;
@@global.transaction_alloc_block_size
59392
@@ -45,7 +47,6 @@ Warning 1292 Truncated incorrect transaction_alloc_block_size value: '4294967295
SELECT @@global.transaction_alloc_block_size;
@@global.transaction_alloc_block_size
4294966272
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
'#--------------------FN_DYNVARS_005_04-------------------------#'
SET @@session.transaction_alloc_block_size = 1024;
SELECT @@session.transaction_alloc_block_size;
@@ -58,10 +59,11 @@ SELECT @@session.transaction_alloc_block_size;
@@session.transaction_alloc_block_size
4294966272
SET @@session.transaction_alloc_block_size = 65535;
+Warnings:
+Warning 1292 Truncated incorrect transaction_alloc_block_size value: '65535'
SELECT @@session.transaction_alloc_block_size;
@@session.transaction_alloc_block_size
64512
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
'#------------------FN_DYNVARS_005_05-----------------------#'
SET @@global.transaction_alloc_block_size = 0;
Warnings:
@@ -81,7 +83,6 @@ Warning 1292 Truncated incorrect transaction_alloc_block_size value: '1234567892
SELECT @@global.transaction_alloc_block_size;
@@global.transaction_alloc_block_size
4294966272
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.transaction_alloc_block_size = ON;
ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size'
SET @@global.transaction_alloc_block_size = OFF;
@@ -114,7 +115,6 @@ Warning 1292 Truncated incorrect transaction_alloc_block_size value: '1234567890
SELECT @@session.transaction_alloc_block_size;
@@session.transaction_alloc_block_size
4294966272
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.transaction_alloc_block_size = ON;
ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size'
SET @@session.transaction_alloc_block_size = OFF;
@@ -167,6 +167,8 @@ SELECT @@local.transaction_alloc_block_size = @@session.transaction_alloc_block_
1
'#---------------------FN_DYNVARS_001_10----------------------#'
SET transaction_alloc_block_size = 1027;
+Warnings:
+Warning 1292 Truncated incorrect transaction_alloc_block_size value: '1027'
SELECT @@transaction_alloc_block_size;
@@transaction_alloc_block_size
1024
diff --git a/mysql-test/suite/sys_vars/r/transaction_alloc_block_size_basic_64.result b/mysql-test/suite/sys_vars/r/transaction_alloc_block_size_basic_64.result
index 749df56c60b..3c958439231 100644
--- a/mysql-test/suite/sys_vars/r/transaction_alloc_block_size_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/transaction_alloc_block_size_basic_64.result
@@ -36,28 +36,34 @@ SELECT @@global.transaction_alloc_block_size;
@@global.transaction_alloc_block_size
1024
SET @@global.transaction_alloc_block_size = 60020;
+Warnings:
+Warning 1292 Truncated incorrect transaction_alloc_block_size value: '60020'
SELECT @@global.transaction_alloc_block_size;
@@global.transaction_alloc_block_size
59392
SET @@global.transaction_alloc_block_size = 4294967295;
+Warnings:
+Warning 1292 Truncated incorrect transaction_alloc_block_size value: '4294967295'
SELECT @@global.transaction_alloc_block_size;
@@global.transaction_alloc_block_size
4294966272
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
'#--------------------FN_DYNVARS_005_04-------------------------#'
SET @@session.transaction_alloc_block_size = 1024;
SELECT @@session.transaction_alloc_block_size;
@@session.transaction_alloc_block_size
1024
SET @@session.transaction_alloc_block_size =4294967295;
+Warnings:
+Warning 1292 Truncated incorrect transaction_alloc_block_size value: '4294967295'
SELECT @@session.transaction_alloc_block_size;
@@session.transaction_alloc_block_size
4294966272
SET @@session.transaction_alloc_block_size = 65535;
+Warnings:
+Warning 1292 Truncated incorrect transaction_alloc_block_size value: '65535'
SELECT @@session.transaction_alloc_block_size;
@@session.transaction_alloc_block_size
64512
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
'#------------------FN_DYNVARS_005_05-----------------------#'
SET @@global.transaction_alloc_block_size = 0;
Warnings:
@@ -72,10 +78,11 @@ SELECT @@global.transaction_alloc_block_size;
@@global.transaction_alloc_block_size
1024
SET @@global.transaction_alloc_block_size = 123456789201;
+Warnings:
+Warning 1292 Truncated incorrect transaction_alloc_block_size value: '123456789201'
SELECT @@global.transaction_alloc_block_size;
@@global.transaction_alloc_block_size
123456788480
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.transaction_alloc_block_size = ON;
ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size'
SET @@global.transaction_alloc_block_size = OFF;
@@ -103,10 +110,11 @@ SELECT @@global.transaction_alloc_block_size;
@@global.transaction_alloc_block_size
1024
SET @@session.transaction_alloc_block_size = 12345678901;
+Warnings:
+Warning 1292 Truncated incorrect transaction_alloc_block_size value: '12345678901'
SELECT @@session.transaction_alloc_block_size;
@@session.transaction_alloc_block_size
12345678848
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.transaction_alloc_block_size = ON;
ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size'
SET @@session.transaction_alloc_block_size = OFF;
@@ -142,6 +150,8 @@ WHERE VARIABLE_NAME='transaction_alloc_block_size';
'#---------------------FN_DYNVARS_001_08----------------------#'
SET @@transaction_alloc_block_size = 1024;
SET @@global.transaction_alloc_block_size = 4294967295;
+Warnings:
+Warning 1292 Truncated incorrect transaction_alloc_block_size value: '4294967295'
SELECT @@transaction_alloc_block_size = @@global.transaction_alloc_block_size;
@@transaction_alloc_block_size = @@global.transaction_alloc_block_size
0
@@ -157,6 +167,8 @@ SELECT @@local.transaction_alloc_block_size = @@session.transaction_alloc_block_
1
'#---------------------FN_DYNVARS_001_10----------------------#'
SET transaction_alloc_block_size = 1027;
+Warnings:
+Warning 1292 Truncated incorrect transaction_alloc_block_size value: '1027'
SELECT @@transaction_alloc_block_size;
@@transaction_alloc_block_size
1024
diff --git a/mysql-test/suite/sys_vars/r/tx_isolation_basic.result b/mysql-test/suite/sys_vars/r/tx_isolation_basic.result
index d487a6d92a8..b784d6bb180 100644
--- a/mysql-test/suite/sys_vars/r/tx_isolation_basic.result
+++ b/mysql-test/suite/sys_vars/r/tx_isolation_basic.result
@@ -9,16 +9,13 @@ REPEATABLE-READ
'#--------------------FN_DYNVARS_183_01------------------------#'
SET @@global.tx_isolation = 'READ-UNCOMMITTED';
SET @@global.tx_isolation = DEFAULT;
-ERROR 42000: Variable 'tx_isolation' doesn't have a default value
-'Bug# 34878: Documentation specifies a DEFAULT value of REPEATABLE-READ';
-'where as DEFAULT is not supported here.';
-SET @@session.tx_isolation = 'SERIALIZABLE';
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
SET @@session.tx_isolation = DEFAULT;
SELECT @@session.tx_isolation;
@@session.tx_isolation
-READ-UNCOMMITTED
-'Bug# 34876: Documentation specifies a DEFAULT value of REPEATABLE-READ';
-'where as DEFAULT here as no effect.';
+REPEATABLE-READ
'#---------------------FN_DYNVARS_183_02-------------------------#'
SET @@global.tx_isolation = NULL;
ERROR 42000: Variable 'tx_isolation' can't be set to the value of 'NULL'
@@ -67,10 +64,7 @@ ERROR 42000: Variable 'tx_isolation' can't be set to the value of '-1'
SET @@global.tx_isolation = READUNCOMMITTED;
ERROR 42000: Variable 'tx_isolation' can't be set to the value of 'READUNCOMMITTED'
SET @@global.tx_isolation = 'REPEATABLE';
-SELECT @@global.tx_isolation;
-@@global.tx_isolation
-REPEATABLE-READ
-'Bug# 34833: REPEATABLE is not documented as as valid tx_isolation level'
+ERROR 42000: Variable 'tx_isolation' can't be set to the value of 'REPEATABLE'
SET @@global.tx_isolation = OFF;
ERROR 42000: Variable 'tx_isolation' can't be set to the value of 'OFF'
SET @@global.tx_isolation = ON;
@@ -82,10 +76,7 @@ ERROR 42000: Variable 'tx_isolation' can't be set to the value of '-1'
SET @@tx_isolation = READUNCOMMITTED;
ERROR 42000: Variable 'tx_isolation' can't be set to the value of 'READUNCOMMITTED'
SET @@tx_isolation = 'REPEATABLE';
-SELECT @@tx_isolation;
-@@tx_isolation
-REPEATABLE-READ
-'Bug# 34833: REPEATABLE is not documented as as valid tx_isolation level'
+ERROR 42000: Variable 'tx_isolation' can't be set to the value of 'REPEATABLE'
SET @@tx_isolation = 'NONE';
ERROR 42000: Variable 'tx_isolation' can't be set to the value of 'NONE'
SET @@tx_isolation = 'ALL';
@@ -120,29 +111,7 @@ SELECT @@global.tx_isolation;
@@global.tx_isolation
SERIALIZABLE
SET @@global.tx_isolation = 0.4;
-SELECT @@global.tx_isolation;
-@@global.tx_isolation
-READ-UNCOMMITTED
-SET @@global.tx_isolation = 1.1;
-SELECT @@global.tx_isolation;
-@@global.tx_isolation
-READ-COMMITTED
-SET @@global.tx_isolation = 1.5;
-SELECT @@global.tx_isolation;
-@@global.tx_isolation
-REPEATABLE-READ
-SET @@global.tx_isolation = 2.9;
-SELECT @@global.tx_isolation;
-@@global.tx_isolation
-SERIALIZABLE
-SET @@session.tx_isolation = 3.49;
-SELECT @@session.tx_isolation;
-@@session.tx_isolation
-SERIALIZABLE
-SET @@session.tx_isolation = 3.6;
-ERROR 42000: Variable 'tx_isolation' can't be set to the value of '4'
-'Bug: Decimal values can be used within the range [0.0-3.5).';
-'Values are rounded to 0,1,2,3 as evident from outcome.';
+ERROR 42000: Incorrect argument type to variable 'tx_isolation'
'#---------------------FN_DYNVARS_183_08----------------------#'
SET @@global.tx_isolation = TRUE;
SELECT @@global.tx_isolation;
diff --git a/mysql-test/suite/sys_vars/r/unique_checks_basic.result b/mysql-test/suite/sys_vars/r/unique_checks_basic.result
index cc22c1c7f98..60cf2795309 100644
--- a/mysql-test/suite/sys_vars/r/unique_checks_basic.result
+++ b/mysql-test/suite/sys_vars/r/unique_checks_basic.result
@@ -7,12 +7,7 @@ SET @@session.unique_checks= 1;
SET @@session.unique_checks= DEFAULT;
SELECT @@session.unique_checks;
@@session.unique_checks
-1
-'#--------------------FN_DYNVARS_005_02-------------------------#'
-SET @@session.unique_checks = DEFAULT;
-SELECT @@session.unique_checks =1;
-@@session.unique_checks =1
-1
+0
'#--------------------FN_DYNVARS_005_04-------------------------#'
SET @@session.unique_checks =1;
SELECT @@session.unique_checks;
@@ -58,10 +53,10 @@ ERROR 42000: Variable 'unique_checks' can't be set to the value of 'test'
SET @@session.unique_checks = 123456789031;
ERROR 42000: Variable 'unique_checks' can't be set to the value of '123456789031'
'#------------------FN_DYNVARS_005_07-----------------------#'
-SELECT @@session.unique_checks = VARIABLE_VALUE
+SELECT IF(@@session.unique_checks, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='unique_checks';
-@@session.unique_checks = VARIABLE_VALUE
+IF(@@session.unique_checks, "ON", "OFF") = VARIABLE_VALUE
1
'#---------------------FN_DYNVARS_001_08----------------------#'
SET @@unique_checks = 1;
diff --git a/mysql-test/suite/sys_vars/r/updatable_views_with_limit_basic.result b/mysql-test/suite/sys_vars/r/updatable_views_with_limit_basic.result
index e2eebbd7a2c..fb31ae7f10a 100644
--- a/mysql-test/suite/sys_vars/r/updatable_views_with_limit_basic.result
+++ b/mysql-test/suite/sys_vars/r/updatable_views_with_limit_basic.result
@@ -118,7 +118,7 @@ ERROR 42000: Variable 'updatable_views_with_limit' can't be set to the value of
SET @@global.updatable_views_with_limit = "FALSE";
ERROR 42000: Variable 'updatable_views_with_limit' can't be set to the value of 'FALSE'
SET @@global.updatable_views_with_limit = 65530.34;
-ERROR 42000: Variable 'updatable_views_with_limit' can't be set to the value of '65530'
+ERROR 42000: Incorrect argument type to variable 'updatable_views_with_limit'
SET @@global.updatable_views_with_limit ="Testing";
ERROR 42000: Variable 'updatable_views_with_limit' can't be set to the value of 'Testing'
SET @@session.updatable_views_with_limit = "ON";
diff --git a/mysql-test/suite/sys_vars/r/wait_timeout_basic_64.result b/mysql-test/suite/sys_vars/r/wait_timeout_basic.result
index c9bffc61b6f..6dc99dcd5e3 100644
--- a/mysql-test/suite/sys_vars/r/wait_timeout_basic_64.result
+++ b/mysql-test/suite/sys_vars/r/wait_timeout_basic.result
@@ -45,7 +45,6 @@ Warning 1292 Truncated incorrect wait_timeout value: '0'
SET @@global.wait_timeout = -1024;
Warnings:
Warning 1292 Truncated incorrect wait_timeout value: '-1024'
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@global.wait_timeout = ON;
ERROR 42000: Incorrect argument type to variable 'wait_timeout'
SET @@global.wait_timeout = OFF;
diff --git a/mysql-test/suite/sys_vars/r/wait_timeout_basic_32.result b/mysql-test/suite/sys_vars/r/wait_timeout_basic_32.result
deleted file mode 100644
index c9bffc61b6f..00000000000
--- a/mysql-test/suite/sys_vars/r/wait_timeout_basic_32.result
+++ /dev/null
@@ -1,129 +0,0 @@
-SET @start_global_value = @@global.wait_timeout;
-SET @start_session_value = @@session.wait_timeout;
-'#--------------------FN_DYNVARS_005_01-------------------------#'
-SET @@global.wait_timeout = 100;
-SET @@global.wait_timeout = DEFAULT;
-SELECT @@global.wait_timeout;
-@@global.wait_timeout
-28800
-SET @@session.wait_timeout = 200;
-SET @@session.wait_timeout = DEFAULT;
-SELECT @@session.wait_timeout;
-@@session.wait_timeout
-28800
-'#--------------------FN_DYNVARS_005_02-------------------------#'
-SET @@global.wait_timeout = DEFAULT;
-SELECT @@global.wait_timeout = @default_wait_timeout;
-@@global.wait_timeout = @default_wait_timeout
-1
-SET @@session.wait_timeout = DEFAULT;
-SELECT @@session.wait_timeout = @default_wait_timeout;
-@@session.wait_timeout = @default_wait_timeout
-1
-'#--------------------FN_DYNVARS_005_03-------------------------#'
-SET @@global.wait_timeout= 1;
-SELECT @@global.wait_timeout;
-@@global.wait_timeout
-1
-SET @@global.wait_timeout = 60020;
-SELECT @@global.wait_timeout;
-@@global.wait_timeout
-60020
-SET @@global.wait_timeout = 31536000;
-SELECT @@global.wait_timeout = @max_wait_timeout;
-@@global.wait_timeout = @max_wait_timeout
-1
-'#--------------------FN_DYNVARS_005_04-------------------------#'
-SET @@session.wait_timeout =6000;
-SELECT @@session.wait_timeout;
-@@session.wait_timeout
-6000
-'#------------------FN_DYNVARS_005_05-----------------------#'
-SET @@global.wait_timeout = 0;
-Warnings:
-Warning 1292 Truncated incorrect wait_timeout value: '0'
-SET @@global.wait_timeout = -1024;
-Warnings:
-Warning 1292 Truncated incorrect wait_timeout value: '-1024'
-'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-SET @@global.wait_timeout = ON;
-ERROR 42000: Incorrect argument type to variable 'wait_timeout'
-SET @@global.wait_timeout = OFF;
-ERROR 42000: Incorrect argument type to variable 'wait_timeout'
-SET @@global.wait_timeout = True;
-SELECT @@global.wait_timeout;
-@@global.wait_timeout
-1
-SET @@global.wait_timeout = False;
-Warnings:
-Warning 1292 Truncated incorrect wait_timeout value: '0'
-SELECT @@global.wait_timeout;
-@@global.wait_timeout
-1
-SET @@global.wait_timeout = 65530.34;
-ERROR 42000: Incorrect argument type to variable 'wait_timeout'
-SET @@global.wait_timeout ="Test";
-ERROR 42000: Incorrect argument type to variable 'wait_timeout'
-SET @@session.wait_timeout = ON;
-ERROR 42000: Incorrect argument type to variable 'wait_timeout'
-SET @@session.wait_timeout = OFF;
-ERROR 42000: Incorrect argument type to variable 'wait_timeout'
-SET @@session.wait_timeout = True;
-SELECT @@session.wait_timeout;
-@@session.wait_timeout
-1
-SET @@session.wait_timeout = False;
-Warnings:
-Warning 1292 Truncated incorrect wait_timeout value: '0'
-SELECT @@session.wait_timeout;
-@@session.wait_timeout
-1
-SET @@session.wait_timeout = "Test";
-ERROR 42000: Incorrect argument type to variable 'wait_timeout'
-SET @@session.wait_timeout = 'test';
-ERROR 42000: Incorrect argument type to variable 'wait_timeout'
-SET @@session.wait_timeout = 123456789031;
-Warnings:
-Warning 1292 Truncated incorrect wait_timeout value: '123456789031'
-SELECT @@session.wait_timeout = @max_wait_timeout;
-@@session.wait_timeout = @max_wait_timeout
-1
-'#------------------FN_DYNVARS_005_06-----------------------#'
-SELECT @@global.wait_timeout = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='wait_timeout';
-@@global.wait_timeout = VARIABLE_VALUE
-1
-'#------------------FN_DYNVARS_005_07-----------------------#'
-SELECT @@session.wait_timeout = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.SESSION_VARIABLES
-WHERE VARIABLE_NAME='wait_timeout';
-@@session.wait_timeout = VARIABLE_VALUE
-1
-'#---------------------FN_DYNVARS_001_09----------------------#'
-SET @@global.wait_timeout = 30000;
-SET @@global.wait_timeout = 40000;
-SELECT @@wait_timeout = @@global.wait_timeout;
-@@wait_timeout = @@global.wait_timeout
-0
-'#---------------------FN_DYNVARS_001_10----------------------#'
-SET @@wait_timeout = 100;
-SELECT @@wait_timeout = @@local.wait_timeout;
-@@wait_timeout = @@local.wait_timeout
-1
-SELECT @@local.wait_timeout = @@session.wait_timeout;
-@@local.wait_timeout = @@session.wait_timeout
-1
-'#---------------------FN_DYNVARS_001_11----------------------#'
-SET wait_timeout = 1027;
-SELECT @@wait_timeout;
-@@wait_timeout
-1027
-SELECT local.wait_timeout;
-ERROR 42S02: Unknown table 'local' in field list
-SELECT session.wait_timeout;
-ERROR 42S02: Unknown table 'session' in field list
-SELECT wait_timeout = @@session.wait_timeout;
-ERROR 42S22: Unknown column 'wait_timeout' in 'field list'
-SET @@global.wait_timeout = @start_global_value;
-SET @@session.wait_timeout = @start_session_value;
diff --git a/mysql-test/suite/sys_vars/t/all_vars.test b/mysql-test/suite/sys_vars/t/all_vars.test
new file mode 100644
index 00000000000..6a18b5e3d37
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/all_vars.test
@@ -0,0 +1,60 @@
+# Copyright (C) 2009-2010 Sun Microsystems, Inc.
+#
+# 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
+
+--source include/not_embedded.inc
+
+#
+# This test verifies that *all* system variables are tested
+# by the sys_vars suite. For every system variable
+# there must be a <variable_name>_basic.test file.
+#
+
+#
+# we can diff in perl or in sql, as it's my_SQL_test suite, do it in sql
+#
+
+perl;
+ use File::Basename;
+ my $dirname=dirname($ENV{MYSQLTEST_FILE});
+ my @all_tests=<$dirname/*_basic{,_32,_64}.test>;
+ open(F, '>', "$ENV{MYSQLTEST_VARDIR}/tmp/sys_vars.all_vars.txt") or die;
+ binmode F;
+ print F join "\n", sort map { s/_basic(_32|_64)?\.test$//; basename $_ } @all_tests;
+EOF
+
+create table t1 (test_name text);
+create table t2 (variable_name text);
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+eval load data infile "$MYSQLTEST_VARDIR/tmp/sys_vars.all_vars.txt" into table t1;
+
+insert into t2 select variable_name from information_schema.global_variables;
+insert into t2 select variable_name from information_schema.session_variables;
+
+# Performance schema variables are too long for files named
+# 'mysql-test/suite/sys_vars/t/' ...
+# ... 'performance_schema_events_waits_history_long_size_basic-master.opt'
+# to fit in the tar source distribution (limit in old tar)
+# Renaming the tests to aliases below.
+
+update t2 set variable_name= replace(variable_name, "PERFORMANCE_SCHEMA_", "PFS_");
+
+select variable_name as `There should be *no* long test name listed below:` from t2
+ where length(variable_name) > 50;
+
+select variable_name as `There should be *no* variables listed below:` from t2
+ left join t1 on variable_name=test_name where test_name is null;
+
+drop table t1;
+drop table t2;
diff --git a/mysql-test/suite/sys_vars/t/auto_increment_increment_basic.test b/mysql-test/suite/sys_vars/t/auto_increment_increment_basic.test
index 4acfb8f503b..d76880b149e 100644
--- a/mysql-test/suite/sys_vars/t/auto_increment_increment_basic.test
+++ b/mysql-test/suite/sys_vars/t/auto_increment_increment_basic.test
@@ -103,8 +103,8 @@ SET @@global.auto_increment_increment = -1024;
SELECT @@global.auto_increment_increment;
SET @@global.auto_increment_increment = 65536;
SELECT @@global.auto_increment_increment;
---Error ER_PARSE_ERROR
-SET @@global.auto_increment_increment = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.auto_increment_increment = 65530.34;
SELECT @@global.auto_increment_increment;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.auto_increment_increment = test;
@@ -114,11 +114,10 @@ SET @@session.auto_increment_increment = 0;
SELECT @@session.auto_increment_increment;
SET @@session.auto_increment_increment = -2;
SELECT @@session.auto_increment_increment;
---Error ER_PARSE_ERROR
-SET @@session.auto_increment_increment = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.auto_increment_increment = 65530.34;
SET @@session.auto_increment_increment = 65550;
SELECT @@session.auto_increment_increment;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.auto_increment_increment = test;
diff --git a/mysql-test/suite/sys_vars/t/auto_increment_increment_func.test b/mysql-test/suite/sys_vars/t/auto_increment_increment_func.test
index 7822775fb35..51c32669934 100644
--- a/mysql-test/suite/sys_vars/t/auto_increment_increment_func.test
+++ b/mysql-test/suite/sys_vars/t/auto_increment_increment_func.test
@@ -119,8 +119,6 @@ SELECT @@session.auto_increment_increment = 20;
SET @@session.auto_increment_increment = 5;
INSERT into t1(name) values('Record_10');
SELECT * from t1;
---echo 'Bug#35362: Here Record_10 id should be 120 instead of 115 because we'
---echo 'have set the value of variable to 5'
SET @@session.auto_increment_increment = 1;
SELECT @@auto_increment_increment;
@@ -176,9 +174,6 @@ INSERT into t1(name) values('Record_17');
INSERT into t1(name) values('Record_18');
SELECT * from t1;
---echo 'Bug#35364: Variable is incrementing some random values on assigning -ve value'
-
-
############################################################
# Disconnecting all connection & dropping table #
############################################################
diff --git a/mysql-test/suite/sys_vars/t/auto_increment_offset_basic.test b/mysql-test/suite/sys_vars/t/auto_increment_offset_basic.test
index a98fd6467ad..76261645b30 100644
--- a/mysql-test/suite/sys_vars/t/auto_increment_offset_basic.test
+++ b/mysql-test/suite/sys_vars/t/auto_increment_offset_basic.test
@@ -117,7 +117,6 @@ SET @@session.auto_increment_offset = -2;
SELECT @@session.auto_increment_offset;
SET @@session.auto_increment_offset = 65550;
SELECT @@session.auto_increment_offset;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.auto_increment_offset = ON;
diff --git a/mysql-test/suite/sys_vars/t/auto_increment_offset_func.test b/mysql-test/suite/sys_vars/t/auto_increment_offset_func.test
index 7e1668452cc..0ac96255acf 100644
--- a/mysql-test/suite/sys_vars/t/auto_increment_offset_func.test
+++ b/mysql-test/suite/sys_vars/t/auto_increment_offset_func.test
@@ -111,8 +111,6 @@ SELECT * from t1;
--echo ## Setting value of variable less than last insert id ##
SET @@session.auto_increment_offset = 5;
INSERT into t1(name) values('Record_9');
---echo 'Bug#35367: Random value of id is increasing on assigning value to';
---echo 'variable that is less than current offset';
INSERT into t1(name) values('Record_10');
INSERT into t1(name) values('Record_11');
INSERT into t1(name) values('Record_12');
@@ -133,9 +131,6 @@ SET @@auto_increment_increment = 10;
INSERT into t1(name) values('Record_13');
INSERT into t1(name) values('Record_14');
SELECT * from t1;
---echo 'Bug#35369: Some invalid value of id is increasing on assigning value to';
---echo 'variable that is greater than auto_increment_increment';
-
--echo '#--------------------FN_DYNVARS_002_06-------------------------#'
###############################################################################
@@ -165,8 +160,6 @@ SELECT @@auto_increment_offset = -10;
INSERT into t1(name) values('Record_17');
INSERT into t1(name) values('Record_18');
SELECT * from t1;
---echo 'Bug#35370: Some invalid value of id is increasing on assigning negative';
---echo ' value in variable';
--echo ## Assigning value that is out of range of variable ##
SET @@auto_increment_offset = 65536;
diff --git a/mysql-test/suite/sys_vars/t/auto_commit_basic.test b/mysql-test/suite/sys_vars/t/autocommit_basic.test
index 0ea070ded59..fa6654ae37c 100644
--- a/mysql-test/suite/sys_vars/t/auto_commit_basic.test
+++ b/mysql-test/suite/sys_vars/t/autocommit_basic.test
@@ -33,7 +33,7 @@
# Saving initial value of autocommit in a temporary variable #
########################################################################
-SET @start_value = @@autocommit;
+SET @start_value = @@global.autocommit;
SELECT @start_value;
@@ -45,7 +45,6 @@ SELECT @start_value;
SET @@autocommit = 0;
SET @@autocommit = DEFAULT;
SELECT @@autocommit;
-echo 'Bug: variable DEFAULT value not working and is not throwing error';
--echo '#---------------------FN_DYNVARS_003_02-------------------------#'
###############################################
@@ -102,10 +101,9 @@ SET @@autocommit = '';
# Test if accessing global autocommit gives error #
###########################################################################
---Error ER_LOCAL_VARIABLE
SET @@global.autocommit = 0;
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
SELECT @@global.autocommit;
+SET @@global.autocommit = 1;
--echo '#----------------------FN_DYNVARS_003_06------------------------#'
@@ -113,10 +111,9 @@ SELECT @@global.autocommit;
# Check if the value in SESSION Table matches value in variable #
#########################################################################
-SELECT @@session.autocommit = VARIABLE_VALUE
+SELECT IF(@@session.autocommit, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='autocommit';
---echo Bug # 34839: Values in variable and information_schema do not match for autocommit
--echo '#----------------------FN_DYNVARS_003_07------------------------#'
#########################################################################
@@ -124,7 +121,7 @@ WHERE VARIABLE_NAME='autocommit';
#########################################################################
SET @@autocommit = 1;
-SELECT @@autocommit = VARIABLE_VALUE
+SELECT IF(@@autocommit, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='autocommit';
@@ -182,8 +179,8 @@ SELECT autocommit = @@session.autocommit;
# Restore initial value #
##############################
-SET @@autocommit = @start_value;
-SELECT @@autocommit;
+SET @@global.autocommit = @start_value;
+SELECT @@global.autocommit;
########################################################################
# END OF autocommit TESTS #
diff --git a/mysql-test/suite/sys_vars/t/autocommit_func-master.opt b/mysql-test/suite/sys_vars/t/autocommit_func-master.opt
deleted file mode 100644
index 627becdbfb5..00000000000
--- a/mysql-test/suite/sys_vars/t/autocommit_func-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---innodb
diff --git a/mysql-test/suite/sys_vars/t/autocommit_func.test b/mysql-test/suite/sys_vars/t/autocommit_func.test
index 07e15ce40da..06193448588 100644
--- a/mysql-test/suite/sys_vars/t/autocommit_func.test
+++ b/mysql-test/suite/sys_vars/t/autocommit_func.test
@@ -145,7 +145,6 @@ SELECT * from t1;
--echo ## Connecting with connection # 01 and inserting few records ##
CONNECTION test_con1;
SELECT * from t1;
---echo 'Bug#35373: Records donot get committed in transaction on switching connections'
INSERT into t1(name) values('Record_6');
SELECT * from t1;
diff --git a/mysql-test/suite/sys_vars/t/automatic_sp_privileges_basic.test b/mysql-test/suite/sys_vars/t/automatic_sp_privileges_basic.test
index 74da0904454..dfa733a0b9b 100644
--- a/mysql-test/suite/sys_vars/t/automatic_sp_privileges_basic.test
+++ b/mysql-test/suite/sys_vars/t/automatic_sp_privileges_basic.test
@@ -113,10 +113,9 @@ SELECT @@session.automatic_sp_privileges;
# Check if the value in GLOBAL Tables matches values in variable #
##############################################################################
-SELECT @@global.automatic_sp_privileges = VARIABLE_VALUE
+SELECT IF(@@global.automatic_sp_privileges, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='automatic_sp_privileges';
-echo 'Bug# 34839: Values in variable and information_schema donot match';
--echo '#---------------------FN_DYNVARS_004_07----------------------#'
###################################################################
diff --git a/mysql-test/suite/sys_vars/t/back_log_basic.test b/mysql-test/suite/sys_vars/t/back_log_basic.test
new file mode 100644
index 00000000000..518ca2f0e5f
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/back_log_basic.test
@@ -0,0 +1,19 @@
+#
+# show the global and session values;
+#
+select @@global.back_log;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.back_log;
+show global variables like 'back_log';
+show session variables like 'back_log';
+select * from information_schema.global_variables where variable_name='back_log';
+select * from information_schema.session_variables where variable_name='back_log';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global back_log=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session back_log=1;
+
diff --git a/mysql-test/suite/sys_vars/t/big_tables_basic.test b/mysql-test/suite/sys_vars/t/big_tables_basic.test
index 8665895bb19..89a7ee83bc8 100644
--- a/mysql-test/suite/sys_vars/t/big_tables_basic.test
+++ b/mysql-test/suite/sys_vars/t/big_tables_basic.test
@@ -45,7 +45,6 @@ SELECT @start_value;
SET @@big_tables = 1;
SET @@big_tables = DEFAULT;
SELECT @@big_tables;
---echo 'Bug# 34829: No default value for variable and setting default does not raise error';
--echo '#--------------------FN_DYNVARS_005_02------------------------#'
@@ -96,21 +95,18 @@ SET @@big_tables = '';
# Test if accessing global big_tables gives error #
###########################################################################
---Error ER_LOCAL_VARIABLE
-SET @@global.big_tables = 0;
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SET @@global.big_tables = 1-@@global.big_tables;
SELECT @@global.big_tables;
-
+SET @@global.big_tables = 1-@@global.big_tables;
--echo '#----------------------FN_DYNVARS_005_05------------------------#'
##############################################################################
# Check if the value in SESSION Tables matches values in variable #
##############################################################################
-SELECT @@big_tables = VARIABLE_VALUE
+SELECT IF(@@big_tables, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='big_tables';
---echo Bug # 34839: Values in variable and information_schema do not match for autocommit
--echo '#---------------------FN_DYNVARS_005_06----------------------#'
diff --git a/mysql-test/suite/sys_vars/t/character_set_client_basic.test b/mysql-test/suite/sys_vars/t/character_set_client_basic.test
index 177a663c112..26912e89509 100644
--- a/mysql-test/suite/sys_vars/t/character_set_client_basic.test
+++ b/mysql-test/suite/sys_vars/t/character_set_client_basic.test
@@ -164,14 +164,8 @@ SELECT @@character_set_client;
SET @@character_set_client = utf8;
SELECT @@character_set_client;
-#SET @@character_set_client = ucs2;
-#--Error ER_PARSE_ERROR
-#SELECT @@session.character_set_client;
---echo 'Bug: Assignment of ucs2 to session character-set does not raise error';
---echo 'but selecting variable after setting it does.';
---echo 'Even catching this does not allow any further character-set to be set.';
---echo 'Offending querry seems to be:';
---echo 'SET @@character_set_client = ucs2;'
+--error ER_WRONG_VALUE_FOR_VAR
+SET @@character_set_client = ucs2;
SET @@character_set_client = cp866;
SELECT @@character_set_client;
@@ -256,9 +250,6 @@ SET @@global.character_set_client = 100;
SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS);
SELECT @total_charset;
---echo 'Bug # 34843: character sets are mapped in such a way that 100 and following';
---echo 'numbers gives error, and before 100 the 36 mapped wraps arround';
---echo 'several times.';
--echo '#--------------------FN_DYNVARS_010_10-------------------------#'
###############################################################################
diff --git a/mysql-test/suite/sys_vars/t/character_set_client_func.test b/mysql-test/suite/sys_vars/t/character_set_client_func.test
index 19994672fa4..90f5cdaae0f 100644
--- a/mysql-test/suite/sys_vars/t/character_set_client_func.test
+++ b/mysql-test/suite/sys_vars/t/character_set_client_func.test
@@ -38,8 +38,6 @@ SELECT @@global.character_set_client;
SELECT @@session.character_set_client;
disconnect con1;
---echo 'Bug# 35372: session character_set_client is not effected by global character_set_client'
-
--echo '#--------------------FN_DYNVARS_010_02-------------------------#'
#############################################################
# Begin the functionality Testing of character_set_client #
@@ -62,13 +60,13 @@ CREATE TABLE t1(a CHAR(3) character set utf8);
--echo 'For latin1 characterset';
SET @@session.character_set_client = latin1;
INSERT INTO t1 values('è');
-SELECT a,CHAR_LENGTH(a) FROM t1;
+SELECT hex(a),CHAR_LENGTH(a) FROM t1;
DELETE FROM t1;
--echo 'For utf8 characterset';
SET @@session.character_set_client = utf8;
INSERT INTO t1 values('è');
-SELECT a,CHAR_LENGTH(a) FROM t1;
+SELECT hex(a),CHAR_LENGTH(a) FROM t1;
DELETE FROM t1;
--disable_warnings
diff --git a/mysql-test/suite/sys_vars/t/character_set_connection_basic.test b/mysql-test/suite/sys_vars/t/character_set_connection_basic.test
index 5e28d43ce3e..1a51843e0e8 100644
--- a/mysql-test/suite/sys_vars/t/character_set_connection_basic.test
+++ b/mysql-test/suite/sys_vars/t/character_set_connection_basic.test
@@ -182,9 +182,6 @@ SET @@global.character_set_connection = 100;
SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS);
SELECT @total_charset;
---echo 'Bug # 34843: character sets are mapped in such a way that 100 and following ';
---echo 'numbers gives error, and before 100 the 36 mapped wraps arround';
---echo 'several times.';
--echo '#--------------------FN_DYNVARS_011_10-------------------------#'
################################################################################
diff --git a/mysql-test/suite/sys_vars/t/character_set_database_basic.test b/mysql-test/suite/sys_vars/t/character_set_database_basic.test
index 08069c00ae0..07b4b31b25c 100644
--- a/mysql-test/suite/sys_vars/t/character_set_database_basic.test
+++ b/mysql-test/suite/sys_vars/t/character_set_database_basic.test
@@ -182,8 +182,6 @@ SET @@global.character_set_database = 100;
SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS);
SELECT @total_charset;
---echo 'Bug # 34843: character sets are mapped in such a way that 100 and following';
---echo 'numbers gives error, and before 100 the 36 mapped wraps arround several times.';
--echo '#--------------------FN_DYNVARS_012_10-------------------------#'
##############################################################################
diff --git a/mysql-test/suite/sys_vars/t/character_set_database_func.test b/mysql-test/suite/sys_vars/t/character_set_database_func.test
index 78b1f1ab49b..d3da8660766 100644
--- a/mysql-test/suite/sys_vars/t/character_set_database_func.test
+++ b/mysql-test/suite/sys_vars/t/character_set_database_func.test
@@ -38,7 +38,6 @@ connect (con1,localhost,root,,,,);
connection con1;
SELECT @@global.character_set_database;
SELECT @@session.character_set_database;
---echo 'Bug#35356: session character_set_database differ from global character_set_database'
disconnect con1;
--echo '#--------------------FN_DYNVARS_008_02-------------------------#'
@@ -70,8 +69,6 @@ SHOW CREATE TABLE t1;
DROP TABLE t1;
DROP DATABASE db1;
---echo 'Bug#35357: character_set_database does not effects CREATE DATABASE without characater set'
-
#==============================================================================
--echo '--ascii character set specified--'
#==============================================================================
@@ -109,9 +106,6 @@ DROP TABLE IF EXISTS t1;
#==============================================================================
---echo 'Bug#27208: If no current database, character_set_database !=character_set_server'
-#==============================================================================
-
SET GLOBAL character_set_server=latin5;
connect (con2, localhost, root,,);
diff --git a/mysql-test/suite/sys_vars/t/character_set_filesystem_basic.test b/mysql-test/suite/sys_vars/t/character_set_filesystem_basic.test
index 3ba9c269a84..928d02ee46b 100644
--- a/mysql-test/suite/sys_vars/t/character_set_filesystem_basic.test
+++ b/mysql-test/suite/sys_vars/t/character_set_filesystem_basic.test
@@ -165,8 +165,6 @@ SET @@character_set_filesystem = 100;
SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS);
SELECT @total_charset;
-echo 'Bug # 34843: character sets are mapped in such a way that 100 and following ';
-echo 'numbers give error, and before 100 the 36 mapped wraps arround several times.';
--echo '#--------------------FN_DYNVARS_008_10-------------------------#'
################################################################################
diff --git a/mysql-test/suite/sys_vars/t/character_set_server_basic.test b/mysql-test/suite/sys_vars/t/character_set_server_basic.test
index 21eb3fb36dc..d692c1f633c 100644
--- a/mysql-test/suite/sys_vars/t/character_set_server_basic.test
+++ b/mysql-test/suite/sys_vars/t/character_set_server_basic.test
@@ -72,6 +72,9 @@ SET global character_set_server=utf8;
--Error ER_BAD_FIELD_ERROR
SELECT global character_set_server;
+--error ER_WRONG_VALUE_FOR_VAR
+SET @@character_set_server = null;
+
--echo '#--------------------FN_DYNVARS_009_02-------------------------#'
###############################################################################
# Check the DEFAULT value of character_set_server for session and global #
@@ -178,12 +181,6 @@ SELECT @@global.character_set_server;
--Error ER_UNKNOWN_CHARACTER_SET
SET @@global.character_set_server = 100;
-SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS);
-SELECT @total_charset;
---echo 'Bug # 34843: character sets are mapped in such a way that 100 and following ';
---echo 'numbers gives error, and before 100 the 36 mapped wraps arround ';
---echo 'several times.';
-
--echo '#--------------------FN_DYNVARS_009_10-------------------------#'
###############################################################################
# Change the value of character_set_server to an invalid value for session #
diff --git a/mysql-test/suite/sys_vars/t/character_sets_dir_basic.test b/mysql-test/suite/sys_vars/t/character_sets_dir_basic.test
new file mode 100644
index 00000000000..30befb5b0f1
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/character_sets_dir_basic.test
@@ -0,0 +1,24 @@
+#
+# show the global and session values;
+#
+--replace_result $MYSQL_SHAREDIR MYSQL_SHAREDIR
+select @@global.character_sets_dir;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.character_sets_dir;
+--replace_result $MYSQL_SHAREDIR MYSQL_SHAREDIR
+show global variables like 'character_sets_dir';
+--replace_result $MYSQL_SHAREDIR MYSQL_SHAREDIR
+show session variables like 'character_sets_dir';
+--replace_result $MYSQL_SHAREDIR MYSQL_SHAREDIR
+select * from information_schema.global_variables where variable_name='character_sets_dir';
+--replace_result $MYSQL_SHAREDIR MYSQL_SHAREDIR
+select * from information_schema.session_variables where variable_name='character_sets_dir';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global character_sets_dir="foo";
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session character_sets_dir="foo";
+
diff --git a/mysql-test/suite/sys_vars/t/collation_connection_basic.test b/mysql-test/suite/sys_vars/t/collation_connection_basic.test
index bf82ea321b7..92f1766fc9c 100644
--- a/mysql-test/suite/sys_vars/t/collation_connection_basic.test
+++ b/mysql-test/suite/sys_vars/t/collation_connection_basic.test
@@ -121,7 +121,7 @@ SET @@collation_connection = latin7_general_ci + latin7_general_cs;
# Change the value of collation_connection to a valid value for session #
###############################################################################
-let collation_variable = @@session.collation_connection;
+let $collation_variable = @@session.collation_connection;
--source suite/sys_vars/inc/collation_basic.inc
@@ -130,7 +130,7 @@ let collation_variable = @@session.collation_connection;
# Change the value of collation_connection to a valid value for global #
###############################################################################
-let collation_variable = @@global.collation_connection;
+let $collation_variable = @@global.collation_connection;
--source suite/sys_vars/inc/collation_basic.inc
diff --git a/mysql-test/suite/sys_vars/t/collation_database_basic.test b/mysql-test/suite/sys_vars/t/collation_database_basic.test
index 557f32b86a0..da06778bb68 100644
--- a/mysql-test/suite/sys_vars/t/collation_database_basic.test
+++ b/mysql-test/suite/sys_vars/t/collation_database_basic.test
@@ -78,6 +78,7 @@ SELECT global collation_database;
##############################################################################
SET @@collation_database = latin1_bin;
SET @@collation_database = DEFAULT;
+SELECT DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME=DATABASE();
SELECT @@collation_database AS DEFAULT_VALUE;
SET @@global.collation_database = latin1_bin;
@@ -120,7 +121,7 @@ SET @@collation_database = latin7_general_ci + latin7_general_cs;
# Change the value of collation_database to a valid value for session #
###########################################################################
-let collation_variable = @@session.collation_database;
+let $collation_variable = @@session.collation_database;
--source suite/sys_vars/inc/collation_basic.inc
@@ -129,7 +130,7 @@ let collation_variable = @@session.collation_database;
# Change the value of collation_database to a valid value for global #
###############################################################################
-let collation_variable = @@global.collation_database;
+let $collation_variable = @@global.collation_database;
--source suite/sys_vars/inc/collation_basic.inc
diff --git a/mysql-test/suite/sys_vars/t/collation_database_func.test b/mysql-test/suite/sys_vars/t/collation_database_func.test
index ba8fc5a3d5e..aa8716408f7 100644
--- a/mysql-test/suite/sys_vars/t/collation_database_func.test
+++ b/mysql-test/suite/sys_vars/t/collation_database_func.test
@@ -38,8 +38,6 @@ SELECT @@global.collation_database;
SELECT @@session.collation_database;
disconnect con1;
---echo 'Bug#35378: New session collation_database is not change by global collation_database'
-
--echo '#--------------------FN_DYNVARS_011_02-------------------------#'
#########################################################
# Begin the functionality Testing of collation_database #
@@ -69,7 +67,6 @@ SET @@session.collation_database = latin2_croatian_ci;
CREATE DATABASE db1;
USE db1;
SHOW CREATE DATABASE db1;
---echo 'Bug#35380: collation_database does not effects CREATE DATABASE without characater set'
CREATE TABLE t1(a CHAR(20));
SHOW CREATE TABLE t1;
diff --git a/mysql-test/suite/sys_vars/t/collation_server_basic.test b/mysql-test/suite/sys_vars/t/collation_server_basic.test
index a8af13c13ae..0d01c7d3076 100644
--- a/mysql-test/suite/sys_vars/t/collation_server_basic.test
+++ b/mysql-test/suite/sys_vars/t/collation_server_basic.test
@@ -120,7 +120,7 @@ SET @@collation_server = latin7_general_ci + latin7_general_cs;
# Change the value of collation_server to a valid value for session #
##############################################################################
-let collation_variable = @@session.collation_server;
+let $collation_variable = @@session.collation_server;
--source suite/sys_vars/inc/collation_basic.inc
@@ -129,7 +129,7 @@ let collation_variable = @@session.collation_server;
# Change the value of collation_server to a valid value for global #
#############################################################################
-let collation_variable = @@global.collation_server;
+let $collation_variable = @@global.collation_server;
--source suite/sys_vars/inc/collation_basic.inc
diff --git a/mysql-test/suite/sys_vars/t/completion_type_basic.test b/mysql-test/suite/sys_vars/t/completion_type_basic.test
index 7ffc1aa593b..927654cd32a 100644
--- a/mysql-test/suite/sys_vars/t/completion_type_basic.test
+++ b/mysql-test/suite/sys_vars/t/completion_type_basic.test
@@ -53,18 +53,6 @@ SET @@session.completion_type = DEFAULT;
SELECT @@session.completion_type;
---echo '#--------------------FN_DYNVARS_017_02-------------------------#'
-###############################################################
-# Check the DEFAULT value of completion_type #
-###############################################################
-
-SET @@global.completion_type = @start_global_value;
-SELECT @@global.completion_type = 0;
-
-SET @@session.completion_type = @start_session_value;
-SELECT @@session.completion_type = 0;
-
-
--echo '#--------------------FN_DYNVARS_017_03-------------------------#'
#########################################################################
# Change the value of completion_type to a valid value for GLOBAL Scope #
@@ -77,6 +65,12 @@ SELECT @@global.completion_type;
SET @@global.completion_type = 2;
SELECT @@global.completion_type;
+SET @@global.completion_type = NO_CHAIN;
+SELECT @@global.completion_type;
+SET @@global.completion_type = CHAIN;
+SELECT @@global.completion_type;
+SET @@global.completion_type = 'RELEASE';
+SELECT @@global.completion_type;
--echo '#--------------------FN_DYNVARS_017_04-------------------------#'
##########################################################################
@@ -90,19 +84,25 @@ SELECT @@session.completion_type;
SET @@session.completion_type = 2;
SELECT @@session.completion_type;
+SET @@session.completion_type = 'NO_CHAIN';
+SELECT @@session.completion_type;
+SET @@session.completion_type = 'CHAIN';
+SELECT @@session.completion_type;
+SET @@session.completion_type = 'RELEASE';
+SELECT @@session.completion_type;
--echo '#------------------FN_DYNVARS_017_05-----------------------#'
###########################################################
# Change the value of completion_type to an invalid value #
###########################################################
-
+set sql_mode=TRADITIONAL;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.completion_type = 10;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.completion_type = -1024;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.completion_type = 2.4;
---Error ER_WRONG_TYPE_FOR_VAR
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.completion_type = OFF;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.completion_type = 10;
@@ -110,7 +110,7 @@ SET @@session.completion_type = 10;
SET @@session.completion_type = -2;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.completion_type = 1.2;
---Error ER_WRONG_TYPE_FOR_VAR
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.completion_type = ON;
@@ -177,6 +177,7 @@ SET @@global.completion_type = @start_global_value;
SELECT @@global.completion_type;
SET @@session.completion_type = @start_session_value;
SELECT @@session.completion_type;
+set sql_mode='';
############################################
# END OF completion_type TESTS #
diff --git a/mysql-test/suite/sys_vars/t/completion_type_func.test b/mysql-test/suite/sys_vars/t/completion_type_func.test
index 8e363ed2a7d..9495a8e118c 100644
--- a/mysql-test/suite/sys_vars/t/completion_type_func.test
+++ b/mysql-test/suite/sys_vars/t/completion_type_func.test
@@ -156,7 +156,7 @@ COMMIT;
--echo ## Inserting rows should give error here because connection should ##
--echo ## disconnect after using COMMIT ##
---Error 2006,2013,ER_SERVER_SHUTDOWN
+--Error 2006,2013,ER_QUERY_INTERRUPTED
INSERT INTO t1 VALUES(4,'Record_4');
--echo switch to connection test_con2
@@ -171,7 +171,7 @@ INSERT INTO t1 VALUES(12,'Record_12');
ROLLBACK;
--echo ## Expect a failure due to COMMIT/ROLLBACK AND RELEASE behavior ##
---Error 2006,2013,ER_SERVER_SHUTDOWN,
+--Error 2006,2013,ER_QUERY_INTERRUPTED
INSERT INTO t1 VALUES(4,'Record_4');
connection default;
diff --git a/mysql-test/suite/sys_vars/t/concurrent_insert_basic.test b/mysql-test/suite/sys_vars/t/concurrent_insert_basic.test
index bc401ef22a3..5be569e52d3 100644
--- a/mysql-test/suite/sys_vars/t/concurrent_insert_basic.test
+++ b/mysql-test/suite/sys_vars/t/concurrent_insert_basic.test
@@ -67,35 +67,41 @@ SELECT @@global.concurrent_insert;
SET @@global.concurrent_insert = 2;
SELECT @@global.concurrent_insert;
+SET @@global.concurrent_insert = NEVER;
+SELECT @@global.concurrent_insert;
+SET @@global.concurrent_insert = AUTO;
+SELECT @@global.concurrent_insert;
+SET @@global.concurrent_insert = ALWAYS;
+SELECT @@global.concurrent_insert;
+
--echo '#--------------------FN_DYNVARS_018_04-------------------------#'
###########################################################################
# Change the value of concurrent_insert to invalid value #
###########################################################################
+--error ER_WRONG_VALUE_FOR_VAR
SET @@global.concurrent_insert = -1;
-Select @@global.concurrent_insert;
+--error ER_WRONG_VALUE_FOR_VAR
SET @@global.concurrent_insert = 100;
-Select @@global.concurrent_insert;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
---Error ER_WRONG_TYPE_FOR_VAR
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.concurrent_insert = TRUEF;
---Error ER_WRONG_TYPE_FOR_VAR
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.concurrent_insert = TRUE_F;
---Error ER_WRONG_TYPE_FOR_VAR
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.concurrent_insert = FALSE0;
---Error ER_WRONG_TYPE_FOR_VAR
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.concurrent_insert = OON;
---Error ER_WRONG_TYPE_FOR_VAR
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.concurrent_insert = ONN;
---Error ER_WRONG_TYPE_FOR_VAR
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.concurrent_insert = OOFF;
---Error ER_WRONG_TYPE_FOR_VAR
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.concurrent_insert = 0FF;
---Error ER_WRONG_TYPE_FOR_VAR
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.concurrent_insert = ' ';
---Error ER_WRONG_TYPE_FOR_VAR
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.concurrent_insert = " ";
---Error ER_WRONG_TYPE_FOR_VAR
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.concurrent_insert = '';
@@ -125,9 +131,9 @@ WHERE VARIABLE_NAME='concurrent_insert';
# Check if ON and OFF values can be used on variable #
###################################################################
---Error ER_WRONG_TYPE_FOR_VAR
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.concurrent_insert = OFF;
---Error ER_WRONG_TYPE_FOR_VAR
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.concurrent_insert = ON;
diff --git a/mysql-test/suite/sys_vars/t/connect_timeout_basic.test b/mysql-test/suite/sys_vars/t/connect_timeout_basic.test
index 095c85f8295..d89734a00c2 100644
--- a/mysql-test/suite/sys_vars/t/connect_timeout_basic.test
+++ b/mysql-test/suite/sys_vars/t/connect_timeout_basic.test
@@ -79,7 +79,6 @@ SET @@global.connect_timeout = -1024;
SELECT @@global.connect_timeout;
SET @@global.connect_timeout = 42949672950;
SELECT @@global.connect_timeout;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.connect_timeout = 21221204.10;
--Error ER_WRONG_TYPE_FOR_VAR
diff --git a/mysql-test/suite/sys_vars/t/date_format_basic.test b/mysql-test/suite/sys_vars/t/date_format_basic.test
new file mode 100644
index 00000000000..a69295b405d
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/date_format_basic.test
@@ -0,0 +1,18 @@
+#
+# show the global and session values;
+#
+select @@global.date_format;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.date_format;
+show global variables like 'date_format';
+show session variables like 'date_format';
+select * from information_schema.global_variables where variable_name='date_format';
+select * from information_schema.session_variables where variable_name='date_format';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global date_format="foo";
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session date_format="foo";
diff --git a/mysql-test/suite/sys_vars/t/datetime_format_basic.test b/mysql-test/suite/sys_vars/t/datetime_format_basic.test
new file mode 100644
index 00000000000..553d3126328
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/datetime_format_basic.test
@@ -0,0 +1,18 @@
+#
+# show the global and session values;
+#
+select @@global.datetime_format;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.datetime_format;
+show global variables like 'datetime_format';
+show session variables like 'datetime_format';
+select * from information_schema.global_variables where variable_name='datetime_format';
+select * from information_schema.session_variables where variable_name='datetime_format';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global datetime_format="foo";
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session datetime_format="foo";
diff --git a/mysql-test/suite/sys_vars/t/debug_basic.test b/mysql-test/suite/sys_vars/t/debug_basic.test
new file mode 100644
index 00000000000..b54626c38ca
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/debug_basic.test
@@ -0,0 +1,22 @@
+--source include/have_debug.inc
+#
+# exists both as global and session
+#
+set session debug="L";
+
+select @@global.debug="1"; # just to show that global.debug exists
+select @@session.debug; # here we know the value and can display it
+--replace_column 2 #
+show global variables like 'debug';
+show session variables like 'debug';
+--replace_column 2 #
+select * from information_schema.global_variables where variable_name="debug";
+select * from information_schema.session_variables where variable_name="debug";
+
+--error ER_WRONG_TYPE_FOR_VAR
+set @@global.debug=1;
+--error ER_WRONG_TYPE_FOR_VAR
+set @@global.debug=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set @@global.debug=1e1;
+
diff --git a/mysql-test/suite/sys_vars/t/debug_sync_basic.test b/mysql-test/suite/sys_vars/t/debug_sync_basic.test
new file mode 100644
index 00000000000..c2c4df95c32
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/debug_sync_basic.test
@@ -0,0 +1,21 @@
+--source include/have_debug_sync.inc
+#
+# exists as session only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@global.debug_sync;
+select @@session.debug_sync;
+
+show global variables like "debug_sync";
+show session variables like "debug_sync";
+
+select * from information_schema.global_variables where variable_name="debug_sync";
+select * from information_schema.session_variables where variable_name="debug_sync";
+
+--error ER_WRONG_TYPE_FOR_VAR
+set @@session.debug_sync=1;
+--error ER_WRONG_TYPE_FOR_VAR
+set @@session.debug_sync=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set @@session.debug_sync=1e1;
+
diff --git a/mysql-test/suite/sys_vars/t/default_storage_engine_basic.test b/mysql-test/suite/sys_vars/t/default_storage_engine_basic.test
new file mode 100644
index 00000000000..17f2d2cc852
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/default_storage_engine_basic.test
@@ -0,0 +1,183 @@
+############## mysql-test\t\storage_engine_basic.test ##################
+# #
+# #
+# Creation Date: 2008-02-14 #
+# Author: Salman Rawala #
+# #
+# Description: Test Cases of Dynamic System Variable #
+# default_storage_engine that check behavior of this #
+# variable with valid values, invalid values, accessing #
+# variable with scope that is allowed and with scope that #
+# is now allowed. #
+# #
+# Reference: http://dev.mysql.com/doc/refman/5.1/en/ #
+# server-system-variables.html#option_mysqld_storage_engine #
+# #
+########################################################################
+
+--source include/have_innodb.inc
+--source include/load_sysvars.inc
+
+######################################################################
+# START OF default_storage_engine TESTS #
+######################################################################
+
+
+#############################################################
+# Save initial value #
+#############################################################
+
+SET @start_global_value = @@global.default_storage_engine;
+SELECT @start_global_value;
+SET @start_session_value = @@session.default_storage_engine;
+SELECT @start_session_value;
+
+
+--echo '#--------------------FN_DYNVARS_005_01-------------------------#'
+######################################################################
+# Display the DEFAULT value of default_storage_engine #
+######################################################################
+
+SET @@global.default_storage_engine = INNODB;
+SET @@global.default_storage_engine = DEFAULT;
+SELECT @@global.default_storage_engine;
+
+SET @@session.default_storage_engine = INNODB;
+SET @@session.default_storage_engine = DEFAULT;
+SELECT @@session.default_storage_engine;
+
+
+--echo '#--------------------FN_DYNVARS_005_02-------------------------#'
+########################################################################
+# Change the value of default_storage_engine to a valid value for GLOBAL Scope #
+########################################################################
+
+SET @@global.default_storage_engine = MYISAM;
+SELECT @@global.default_storage_engine;
+SET @@global.default_storage_engine = MERGE;
+SELECT @@global.default_storage_engine;
+SET @@global.default_storage_engine = MEMORY;
+SELECT @@global.default_storage_engine;
+SET @@global.default_storage_engine = INNODB;
+SELECT @@global.default_storage_engine;
+
+
+--echo '#--------------------FN_DYNVARS_005_03-------------------------#'
+#########################################################################
+# Change the value of default_storage_engine to a valid value for SESSION Scope #
+#########################################################################
+
+SET @@session.default_storage_engine = MYISAM;
+SELECT @@session.default_storage_engine;
+SET @@session.default_storage_engine = MERGE;
+SELECT @@session.default_storage_engine;
+SET @@session.default_storage_engine = MEMORY;
+SELECT @@session.default_storage_engine;
+SET @@session.default_storage_engine = INNODB;
+SELECT @@session.default_storage_engine;
+
+
+--echo '#------------------FN_DYNVARS_005_04-----------------------#'
+##################################################################
+# Change the value of default_storage_engine to an invalid value #
+##################################################################
+
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.default_storage_engine = 8199;
+
+--Error ER_WRONG_VALUE_FOR_VAR
+SET @@global.default_storage_engine = NULL;
+
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.default_storage_engine = -1024;
+
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.default_storage_engine = 65530.34;
+
+--Error ER_UNKNOWN_STORAGE_ENGINE
+SET @@global.default_storage_engine = FILE;
+
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.default_storage_engine = 8199;
+
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.default_storage_engine = 65530.34;
+
+--Error ER_UNKNOWN_STORAGE_ENGINE
+SET @@session.default_storage_engine = RECORD;
+
+
+--echo '#------------------FN_DYNVARS_005_05-----------------------#'
+####################################################################
+# Check if the value in GLOBAL Table matches value in variable #
+####################################################################
+
+
+SELECT @@global.default_storage_engine =
+ VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+ WHERE VARIABLE_NAME='default_storage_engine';
+
+--echo '#------------------FN_DYNVARS_005_06-----------------------#'
+####################################################################
+# Check if the value in SESSION Table matches value in variable #
+####################################################################
+
+SELECT @@session.default_storage_engine =
+ VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES
+ WHERE VARIABLE_NAME='default_storage_engine';
+
+
+--echo '#------------------FN_DYNVARS_005_07-----------------------#'
+####################################################################
+# Check if TRUE and FALSE values can be used on variable #
+####################################################################
+
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.default_storage_engine = TRUE;
+
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.default_storage_engine = FALSE;
+
+
+--echo '#---------------------FN_DYNVARS_001_8----------------------#'
+###############################################################
+# Check if accessing variable with SESSION,LOCAL and without #
+# SCOPE points to same session variable #
+###############################################################
+
+SET @@default_storage_engine = MYISAM;
+SELECT @@default_storage_engine = @@local.default_storage_engine;
+SELECT @@local.default_storage_engine = @@session.default_storage_engine;
+
+
+--echo '#---------------------FN_DYNVARS_001_9----------------------#'
+#########################################################################
+# Check if default_storage_engine can be accessed with and without @@ sign #
+#########################################################################
+
+SET default_storage_engine = MEMORY;
+SELECT @@default_storage_engine;
+--Error ER_UNKNOWN_TABLE
+SELECT local.default_storage_engine;
+--Error ER_UNKNOWN_TABLE
+SELECT session.default_storage_engine;
+--Error ER_BAD_FIELD_ERROR
+SELECT default_storage_engine = @@session.default_storage_engine;
+
+# check the old obsolete name
+SET @@default_storage_engine = @start_global_value;
+
+####################################
+# Restore initial value #
+####################################
+
+SET @@global.default_storage_engine = @start_global_value;
+SELECT @@global.default_storage_engine;
+SET @@session.default_storage_engine = @start_session_value;
+SELECT @@session.default_storage_engine;
+
+
+#############################################################
+# END OF default_storage_engine TESTS #
+#############################################################
+
diff --git a/mysql-test/suite/sys_vars/t/default_week_format_basic.test b/mysql-test/suite/sys_vars/t/default_week_format_basic.test
index d8b4a09541f..e609cdc53f5 100644
--- a/mysql-test/suite/sys_vars/t/default_week_format_basic.test
+++ b/mysql-test/suite/sys_vars/t/default_week_format_basic.test
@@ -118,7 +118,6 @@ SET @@session.default_week_format = -2;
SELECT @@session.default_week_format;
SET @@session.default_week_format = 65550;
SELECT @@session.default_week_format;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--echo '#------------------FN_DYNVARS_022_06-----------------------#'
###############################################################################
diff --git a/mysql-test/suite/sys_vars/t/delay_key_write_basic.test b/mysql-test/suite/sys_vars/t/delay_key_write_basic.test
index faa1cb3cc6e..25176879eb1 100644
--- a/mysql-test/suite/sys_vars/t/delay_key_write_basic.test
+++ b/mysql-test/suite/sys_vars/t/delay_key_write_basic.test
@@ -44,10 +44,7 @@ SELECT @start_value;
########################################################################
SET @@global.delay_key_write = OFF;
---Error ER_NO_DEFAULT
SET @@global.delay_key_write = DEFAULT;
---echo 'Bug # 34878: Documentation specifies a DEFAULT value of ON for variable but';
---echo 'its not supported';
SELECT @@global.delay_key_write;
@@ -92,10 +89,8 @@ SET @@global.delay_key_write = ERROR;
SET @@global.delay_key_write = FALSE0;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.delay_key_write = ONN;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.delay_key_write = OF;
-SELECT @@global.delay_key_write;
---echo 'Bug# 34828: Variable is incorrectly accepting OF as a value'
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.delay_key_write = ' ';
diff --git a/mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test b/mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test
index 61f7d801a1a..88f247135c8 100644
--- a/mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test
+++ b/mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test
@@ -1,11 +1,11 @@
################################################################################
# #
-# Variable Name: sql_low_priority_updates #
+# Variable Name: delayed_insert_limit #
# Scope: GLOBAL #
# Access Type: Dynamic #
-# Data Type: BOOLEAN #
-# Default Value: 1 TRUE #
-# Values: 1 TRUE, 0 FALSE #
+# Data Type: Numeric #
+# Default Value: 100 #
+# Range: 1 - 4294967295 #
# #
# #
# Creation Date: 2008-02-25 #
@@ -13,7 +13,7 @@
# Modified: HHunger 2009-02-26 Replaced 2 sleeps by wait conditions #
# Modified: mleich 2009-03-18 Partially reimplemented #
# #
-# Description: Test Cases of Dynamic System Variable "sql_low_priority_updates"#
+# Description: Test Cases of Dynamic System Variable "delayed_insert_limit" #
# that checks behavior of this variable in the following ways #
# * Functionality based on different values #
# #
@@ -109,10 +109,10 @@ delimiter ;|
--echo ** Connection con0 **
connection con0;
let $wait_condition=
- SELECT variable_value > 0 FROM information_schema.global_status
+ SELECT variable_value > @@global.delayed_insert_limit
+ FROM information_schema.global_status
WHERE variable_name like 'Not_flushed_delayed_rows';
--source include/wait_condition.inc
-let $my_select= SELECT COUNT(*) BETWEEN 21 AND 43 FROM t1;
let $my_select= SELECT COUNT(*) FROM t1;
send;
eval $my_select;
@@ -136,6 +136,13 @@ connection con0;
--echo Asynchronous "reap" result
--echo The next result suffers from
--echo '# Bug#35386 insert delayed inserts 1 + limit rows instead of just limit rows'
+#
+# on UNLOCK TABLES both SELECT in the con0 and delayed insert thread in the
+# con1 were awaken. There's no FIFO for TL_WRITE_DELAYED and TL_READ,
+# so either the first delayed_insert_limit rows will be inserted
+# before select (which will see 21 row) or select will go first (and see 6 rows)
+#
+--replace_result 6 21
reap;
--echo ** Connection default **
diff --git a/mysql-test/suite/sys_vars/t/delayed_insert_timeout_basic.test b/mysql-test/suite/sys_vars/t/delayed_insert_timeout_basic.test
index 8bad6b2dfe6..2486ff5800f 100644
--- a/mysql-test/suite/sys_vars/t/delayed_insert_timeout_basic.test
+++ b/mysql-test/suite/sys_vars/t/delayed_insert_timeout_basic.test
@@ -79,8 +79,6 @@ SET @@global.delayed_insert_timeout = -1024;
SELECT @@global.delayed_insert_timeout;
SET @@global.delayed_insert_timeout = 42949672950;
SELECT @@global.delayed_insert_timeout;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.delayed_insert_timeout = 429496729.5;
diff --git a/mysql-test/suite/sys_vars/t/disabled.def b/mysql-test/suite/sys_vars/t/disabled.def
new file mode 100644
index 00000000000..483eea9daeb
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/disabled.def
@@ -0,0 +1,17 @@
+##############################################################################
+#
+# 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.
+#
+##############################################################################
+query_cache_size_basic_32 : Bug#36747: Allocating a large query cache is not deterministic
+query_cache_size_basic_64 : Bug#36747: Allocating a large query cache is not deterministic
+transaction_prealloc_size_basic_32 : Bug#36747
+transaction_prealloc_size_basic_64 : Bug#36747
+#thread_cache_size_func : Bug#40575: 2008-11-07 joro main.thread_cache_size_func fails in pushbuild when run with pool of threads
+
diff --git a/mysql-test/suite/sys_vars/t/div_precision_increment_basic.test b/mysql-test/suite/sys_vars/t/div_precision_increment_basic.test
index 40497e829df..65edf6dd76f 100644
--- a/mysql-test/suite/sys_vars/t/div_precision_increment_basic.test
+++ b/mysql-test/suite/sys_vars/t/div_precision_increment_basic.test
@@ -114,7 +114,6 @@ SET @@session.div_precision_increment = -2;
SELECT @@session.div_precision_increment;
SET @@session.div_precision_increment = 65550;
SELECT @@session.div_precision_increment;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.div_precision_increment = 65530.30;
diff --git a/mysql-test/suite/sys_vars/t/div_precision_increment_func.test b/mysql-test/suite/sys_vars/t/div_precision_increment_func.test
index aebca88abf9..1c2cbfc24e9 100644
--- a/mysql-test/suite/sys_vars/t/div_precision_increment_func.test
+++ b/mysql-test/suite/sys_vars/t/div_precision_increment_func.test
@@ -37,7 +37,7 @@ CREATE TABLE t1
id INT NOT NULL auto_increment,
PRIMARY KEY (id),
name VARCHAR(30),
-salary LONG
+salary INT
);
--echo '#--------------------FN_DYNVARS_027_01-------------------------#'
@@ -55,7 +55,6 @@ INSERT into t1(name, salary) values('Record_2', 501);
INSERT into t1(name, salary) values('Record_3', 210);
SELECT name, salary, ((salary * 2.5)/1000) AS INCOME from t1;
---echo 'Bug#35374: div_precision is not working with table column'
--echo ## Verifying variable's behavior with direct division ##
SELECT 1/7;
@@ -80,7 +79,7 @@ CREATE TABLE t1
id INT NOT NULL auto_increment,
PRIMARY KEY (id),
name VARCHAR(30),
-salary LONG,
+salary INT,
income_tax FLOAT
);
diff --git a/mysql-test/suite/sys_vars/t/engine_condition_pushdown_basic.test b/mysql-test/suite/sys_vars/t/engine_condition_pushdown_basic.test
index ee781159d6a..ab9bfc3dd6a 100644
--- a/mysql-test/suite/sys_vars/t/engine_condition_pushdown_basic.test
+++ b/mysql-test/suite/sys_vars/t/engine_condition_pushdown_basic.test
@@ -40,6 +40,10 @@ SELECT @session_start_value;
SET @global_start_value = @@global.engine_condition_pushdown;
SELECT @global_start_value;
+# same for optimizer_switch
+select @old_session_opt_switch:=@@session.optimizer_switch,
+@old_global_opt_switch:=@@global.optimizer_switch;
+
--echo '#--------------------FN_DYNVARS_028_01------------------------#'
########################################################################
# Display the DEFAULT value of engine_condition_pushdown #
@@ -101,7 +105,7 @@ SELECT @@global.engine_condition_pushdown;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.engine_condition_pushdown = -1;
---Error ER_WRONG_VALUE_FOR_VAR
+--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.engine_condition_pushdown = 1.6;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.engine_condition_pushdown = "T";
@@ -111,16 +115,12 @@ SET @@session.engine_condition_pushdown = "Y";
SET @@session.engine_condition_pushdown = TRÜE;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.engine_condition_pushdown = ÕN;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.engine_condition_pushdown = OF;
-SELECT @@session.engine_condition_pushdown;
---echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.engine_condition_pushdown = ÓFF;
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.engine_condition_pushdown = -1;
--Error ER_WRONG_VALUE_FOR_VAR
@@ -133,12 +133,8 @@ SET @@global.engine_condition_pushdown = "Y";
SET @@global.engine_condition_pushdown = TRÜE;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.engine_condition_pushdown = ÕN;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.engine_condition_pushdown = OF;
-SELECT @@global.engine_condition_pushdown;
-
---echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.engine_condition_pushdown = ÓFF;
@@ -160,7 +156,7 @@ SELECT @@session.engine_condition_pushdown AS res_is_1;
# Check if the value in GLOBAL Table matches value in variable #
#########################################################################
-SELECT @@global.engine_condition_pushdown = VARIABLE_VALUE
+SELECT IF(@@global.engine_condition_pushdown, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='engine_condition_pushdown';
SELECT @@global.engine_condition_pushdown;
@@ -173,7 +169,7 @@ WHERE VARIABLE_NAME='engine_condition_pushdown';
# Check if the value in SESSION Table matches value in variable #
#########################################################################
-SELECT @@session.engine_condition_pushdown = VARIABLE_VALUE
+SELECT IF(@@session.engine_condition_pushdown, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='engine_condition_pushdown';
SELECT @@session.engine_condition_pushdown;
@@ -212,6 +208,44 @@ SELECT @@global.engine_condition_pushdown;
SET @@global.engine_condition_pushdown = FALSE;
SELECT @@global.engine_condition_pushdown;
+--echo Check that @@engine_condition_pushdown influences
+--echo @@optimizer_switch and vice-versa
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+set @@session.engine_condition_pushdown = TRUE;
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+set @@session.engine_condition_pushdown = FALSE;
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+set @@global.engine_condition_pushdown = TRUE;
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+set @@global.engine_condition_pushdown = FALSE;
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+set @@session.optimizer_switch = "engine_condition_pushdown=on";
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+set @@session.optimizer_switch = "engine_condition_pushdown=off";
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+set @@global.optimizer_switch = "engine_condition_pushdown=on";
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+set @@global.optimizer_switch = "engine_condition_pushdown=off";
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+
##############################
# Restore initial value #
##############################
@@ -222,6 +256,12 @@ SELECT @@session.engine_condition_pushdown;
SET @@global.engine_condition_pushdown = @global_start_value;
SELECT @@global.engine_condition_pushdown;
+set @session.optimizer_switch=@old_session_opt_switch,
+@@global.optimizer_switch=@old_global_opt_switch;
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+
###############################################################
# END OF engine_condition_pushdown TESTS #
###############################################################
diff --git a/mysql-test/suite/sys_vars/t/event_scheduler_basic.test b/mysql-test/suite/sys_vars/t/event_scheduler_basic.test
index f7045651613..2e6aa3cba5c 100644
--- a/mysql-test/suite/sys_vars/t/event_scheduler_basic.test
+++ b/mysql-test/suite/sys_vars/t/event_scheduler_basic.test
@@ -43,10 +43,8 @@ SELECT @start_value;
# Verify default value of variable #
###############################################
---Error ER_NO_DEFAULT
SET @@global.event_scheduler = DEFAULT;
-#SELECT @@global.event_scheduler = OFF;
---echo 'Bug# 34878: According to documentation the default value of variable is OFF';
+SELECT @@global.event_scheduler;
--echo '#--------------------FN_DYNVARS_004_02------------------------#'
#######################################################################
diff --git a/mysql-test/suite/sys_vars/t/expire_logs_days_basic.test b/mysql-test/suite/sys_vars/t/expire_logs_days_basic.test
index 02448d1fd11..f19ab922c72 100644
--- a/mysql-test/suite/sys_vars/t/expire_logs_days_basic.test
+++ b/mysql-test/suite/sys_vars/t/expire_logs_days_basic.test
@@ -91,7 +91,6 @@ SET @@global.expire_logs_days = -1024;
SELECT @@global.expire_logs_days;
SET @@global.expire_logs_days = 42949672950;
SELECT @@global.expire_logs_days;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.expire_logs_days = ON;
diff --git a/mysql-test/suite/sys_vars/t/flush_basic.test b/mysql-test/suite/sys_vars/t/flush_basic.test
index f5f6665562e..4eb821e9af1 100644
--- a/mysql-test/suite/sys_vars/t/flush_basic.test
+++ b/mysql-test/suite/sys_vars/t/flush_basic.test
@@ -43,9 +43,7 @@ SELECT @start_value;
#############################################################
SET @@global.flush = ON;
---Error ER_NO_DEFAULT
SET @@global.flush = DEFAULT;
---echo 'Bug# 34878: FN_DYNVARS_002_01 - Default value is off according to Documentation of MySQL';
SELECT @@global.flush;
@@ -120,7 +118,7 @@ SELECT @@session.flush;
# Check if the value in GLOBAL Tables matches values in variable #
####################################################################
-SELECT @@global.flush = VARIABLE_VALUE
+SELECT IF(@@global.flush, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='flush';
diff --git a/mysql-test/suite/sys_vars/t/flush_time_basic.test b/mysql-test/suite/sys_vars/t/flush_time_basic.test
new file mode 100644
index 00000000000..9604769d460
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/flush_time_basic.test
@@ -0,0 +1,50 @@
+
+#
+# note, the default is 1800 on windows, 0 everywhere else
+#
+
+SET @start_global_value = @@global.flush_time;
+
+#
+# exists as global only
+#
+--replace_result 1800 0
+select @@global.flush_time;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.flush_time;
+--replace_result 1800 0
+show global variables like 'flush_time';
+--replace_result 1800 0
+show session variables like 'flush_time';
+--replace_result 1800 0
+select * from information_schema.global_variables where variable_name='flush_time';
+--replace_result 1800 0
+select * from information_schema.session_variables where variable_name='flush_time';
+
+#
+# show that it's writable
+#
+set global flush_time=1;
+select @@global.flush_time;
+--error ER_GLOBAL_VARIABLE
+set session flush_time=1;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global flush_time=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global flush_time=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global flush_time="foo";
+
+#
+# min/max values
+#
+set global flush_time=0;
+select @@global.flush_time;
+set global flush_time=cast(-1 as unsigned int);
+select @@global.flush_time;
+
+SET @@global.flush_time = @start_global_value;
diff --git a/mysql-test/suite/sys_vars/t/foreign_key_checks_basic.test b/mysql-test/suite/sys_vars/t/foreign_key_checks_basic.test
index 54d94aca971..8a327ab699b 100644
--- a/mysql-test/suite/sys_vars/t/foreign_key_checks_basic.test
+++ b/mysql-test/suite/sys_vars/t/foreign_key_checks_basic.test
@@ -46,7 +46,6 @@ SET @@session.foreign_key_checks = 1;
SET @@session.foreign_key_checks = DEFAULT;
SELECT @@session.foreign_key_checks;
---echo 'Bug# 34878: No DEFAULT value for variable. Also setting DEFAULT does not give error'
--echo '#---------------------FN_DYNVARS_032_02-------------------------#'
#############################################################################
@@ -94,12 +93,8 @@ SET @@session.foreign_key_checks = "Y";
SET @@session.foreign_key_checks = TRÜE;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.foreign_key_checks = ÕN;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.foreign_key_checks = OF;
-SELECT @@session.foreign_key_checks;
-
---echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.foreign_key_checks = ÓFF;
--Error ER_WRONG_VALUE_FOR_VAR
@@ -113,11 +108,9 @@ SET @@session.foreign_key_checks = NO;
# Test if accessing global foreign_key_checks gives error #
###########################################################################
---Error ER_LOCAL_VARIABLE
SET @@global.foreign_key_checks = 0;
-
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
SELECT @@global.foreign_key_checks;
+SET @@global.foreign_key_checks = 1;
--echo '#----------------------FN_DYNVARS_032_06------------------------#'
#########################################################################
@@ -131,7 +124,7 @@ SELECT count(VARIABLE_VALUE) FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARI
# Check if the value in GLOBAL Table matches value in variable #
#########################################################################
-SELECT @@session.foreign_key_checks = VARIABLE_VALUE
+SELECT IF(@@session.foreign_key_checks, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='foreign_key_checks';
SELECT @@session.foreign_key_checks;
diff --git a/mysql-test/suite/sys_vars/t/foreign_key_checks_func.test b/mysql-test/suite/sys_vars/t/foreign_key_checks_func.test
index 4d2c63bbce6..5786b9283be 100644
--- a/mysql-test/suite/sys_vars/t/foreign_key_checks_func.test
+++ b/mysql-test/suite/sys_vars/t/foreign_key_checks_func.test
@@ -93,9 +93,6 @@ INSERT INTO t2 values (20,4);
SET @@session.foreign_key_checks = 1;
UPDATE t2 SET b=4 where a=20;
---echo 'Bug#35358: Updating an incorrect foreign key(inserted by disabling '
---echo 'foreign_key_checks)to the same value does not raise error after '
---echo 'enabling foreign_key_checks'
#==============================================================================
--echo 'Check when foreign_key_checks is enabled and FK constraint is re-created'
diff --git a/mysql-test/suite/sys_vars/t/ft_boolean_syntax_basic.test b/mysql-test/suite/sys_vars/t/ft_boolean_syntax_basic.test
index 4117605c452..454b5d7477e 100644
--- a/mysql-test/suite/sys_vars/t/ft_boolean_syntax_basic.test
+++ b/mysql-test/suite/sys_vars/t/ft_boolean_syntax_basic.test
@@ -145,10 +145,7 @@ WHERE VARIABLE_NAME='ft_boolean_syntax') AS res;
#############################################################################
# Content of initial variable
SELECT @global_start_value;
---Error ER_WRONG_VALUE_FOR_VAR
SET @@global.ft_boolean_syntax = @global_start_value;
---echo 'Bug# 34883: ft_boolean_syntax cant be assigned values from session temporary';
---echo 'variables';
####################################
# Restore Default value #
diff --git a/mysql-test/suite/sys_vars/t/ft_boolean_syntax_func.test b/mysql-test/suite/sys_vars/t/ft_boolean_syntax_func.test
index 4ea28b015cb..242d404d244 100644
--- a/mysql-test/suite/sys_vars/t/ft_boolean_syntax_func.test
+++ b/mysql-test/suite/sys_vars/t/ft_boolean_syntax_func.test
@@ -92,15 +92,11 @@ SELECT * FROM articles WHERE MATCH (title,body)
AGAINST ('"faster than"' IN BOOLEAN MODE);
SELECT * FROM articles WHERE MATCH (title,body)
-AGAINST ('+run ~line' IN BOOLEAN MODE);
-
---Echo 'Bug#35359: ~ is not working correctly. Its behaving like -'
+AGAINST ('+tutorial ~line' IN BOOLEAN MODE);
SELECT * FROM articles WHERE MATCH (title,body)
AGAINST ('10*' IN BOOLEAN MODE);
---Echo 'Bug#35360: * is not working correctly. Not all rows are returned'
-
SELECT id,title,body, (MATCH (title,body)
AGAINST ('+MySQL +(>show <dbms)' IN BOOLEAN MODE)) AS relevance
FROM articles WHERE MATCH (title,body)
@@ -114,8 +110,6 @@ SET @@global.ft_boolean_syntax='~ /!@#$%^&*()-';
SELECT * FROM articles WHERE MATCH (title,body)
AGAINST ('~mySQL /yourSQL' IN BOOLEAN MODE);
---echo 'Bug#35361: Different syntax does not produce result as default operators'
-
#restore default
SET @@global.ft_boolean_syntax=DEFAULT;
diff --git a/mysql-test/suite/sys_vars/t/ft_max_word_len_basic.test b/mysql-test/suite/sys_vars/t/ft_max_word_len_basic.test
new file mode 100644
index 00000000000..525a5bc29e5
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/ft_max_word_len_basic.test
@@ -0,0 +1,19 @@
+#
+# only global
+#
+select @@global.ft_max_word_len;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.ft_max_word_len;
+show global variables like 'ft_max_word_len';
+show session variables like 'ft_max_word_len';
+select * from information_schema.global_variables where variable_name='ft_max_word_len';
+select * from information_schema.session_variables where variable_name='ft_max_word_len';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global ft_max_word_len=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session ft_max_word_len=1;
+
diff --git a/mysql-test/suite/sys_vars/t/ft_min_word_len_basic.test b/mysql-test/suite/sys_vars/t/ft_min_word_len_basic.test
new file mode 100644
index 00000000000..7819e9c00e7
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/ft_min_word_len_basic.test
@@ -0,0 +1,19 @@
+#
+# only global
+#
+select @@global.ft_min_word_len;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.ft_min_word_len;
+show global variables like 'ft_min_word_len';
+show session variables like 'ft_min_word_len';
+select * from information_schema.global_variables where variable_name='ft_min_word_len';
+select * from information_schema.session_variables where variable_name='ft_min_word_len';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global ft_min_word_len=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session ft_min_word_len=1;
+
diff --git a/mysql-test/suite/sys_vars/t/ft_query_expansion_limit_basic.test b/mysql-test/suite/sys_vars/t/ft_query_expansion_limit_basic.test
new file mode 100644
index 00000000000..988ee71ebdf
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/ft_query_expansion_limit_basic.test
@@ -0,0 +1,19 @@
+#
+# only global
+#
+select @@global.ft_query_expansion_limit;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.ft_query_expansion_limit;
+show global variables like 'ft_query_expansion_limit';
+show session variables like 'ft_query_expansion_limit';
+select * from information_schema.global_variables where variable_name='ft_query_expansion_limit';
+select * from information_schema.session_variables where variable_name='ft_query_expansion_limit';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global ft_query_expansion_limit=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session ft_query_expansion_limit=1;
+
diff --git a/mysql-test/suite/sys_vars/t/ft_stopword_file_basic.test b/mysql-test/suite/sys_vars/t/ft_stopword_file_basic.test
new file mode 100644
index 00000000000..3d527ff8ec1
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/ft_stopword_file_basic.test
@@ -0,0 +1,19 @@
+#
+# only global
+#
+select @@global.ft_stopword_file;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.ft_stopword_file;
+show global variables like 'ft_stopword_file';
+show session variables like 'ft_stopword_file';
+select * from information_schema.global_variables where variable_name='ft_stopword_file';
+select * from information_schema.session_variables where variable_name='ft_stopword_file';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global ft_stopword_file=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session ft_stopword_file=1;
+
diff --git a/mysql-test/suite/sys_vars/t/general_log_basic.test b/mysql-test/suite/sys_vars/t/general_log_basic.test
index 82f3be45bc9..6a1d00f1b6f 100644
--- a/mysql-test/suite/sys_vars/t/general_log_basic.test
+++ b/mysql-test/suite/sys_vars/t/general_log_basic.test
@@ -103,7 +103,7 @@ SELECT @@session.general_log;
# Check if the value in GLOBAL Tables matches values in variable #
##############################################################################
-SELECT @@global.general_log = VARIABLE_VALUE
+SELECT IF(@@global.general_log, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='general_log';
diff --git a/mysql-test/suite/sys_vars/t/general_log_file_basic.test b/mysql-test/suite/sys_vars/t/general_log_file_basic.test
index 014108f88d2..43d7414a0c2 100644
--- a/mysql-test/suite/sys_vars/t/general_log_file_basic.test
+++ b/mysql-test/suite/sys_vars/t/general_log_file_basic.test
@@ -45,7 +45,8 @@ SELECT @start_value;
###############################################
SET @@global.general_log_file = DEFAULT;
-SELECT RIGHT(@@global.general_log_file,10) AS log_file;
+SET @a=concat(left(@@hostname, instr(concat(@@hostname, '.'), '.')-1), '.log');
+SELECT RIGHT(@@global.general_log_file, length(@a)) = @a;
--echo '#--------------------FN_DYNVARS_004_02------------------------#'
diff --git a/mysql-test/suite/sys_vars/t/general_log_func.test b/mysql-test/suite/sys_vars/t/general_log_func.test
index 24d535e88e5..55ed944c6b2 100644
--- a/mysql-test/suite/sys_vars/t/general_log_func.test
+++ b/mysql-test/suite/sys_vars/t/general_log_func.test
@@ -46,8 +46,18 @@ name VARCHAR(30)
SET @@global.general_log = OFF;
SELECT @@general_log;
-
let $MYSQLD_LOGFILE= `select @@global.general_log_file`;
+
+#
+# truncate the existing log - it could be larger than max_allowed_packet
+# and that would cause load_file() below to fail
+#
+--remove_file $MYSQLD_LOGFILE
+flush logs;
+SET @@global.general_log = ON;
+flush logs;
+SET @@global.general_log = OFF;
+
--copy_file $MYSQLD_LOGFILE $MYSQLD_LOGFILE.copy
--echo ## Inserting some Records & Verifying output in log ##
@@ -78,13 +88,12 @@ INSERT into t1(name) values('Record_4');
--copy_file $MYSQLD_LOGFILE $MYSQLD_LOGFILE.orig
--chmod 0777 $MYSQLD_LOGFILE.orig
---echo ## There should be a difference ##
-SET @@global.max_allowed_packet= 1024*1024*1024;
+--echo ## old log is a proper prefix of the new log ##
--replace_result $MYSQLD_LOGFILE MYSQLD_LOGFILE
eval SET @orig_file= load_file('$MYSQLD_LOGFILE.orig');
--replace_result $MYSQLD_LOGFILE MYSQLD_LOGFILE
eval SET @copy_file= load_file('$MYSQLD_LOGFILE.copy');
-eval SELECT STRCMP(@orig_file, @copy_file);
+SELECT @orig_file > @copy_file, left(@orig_file, length(@copy_file)) = @copy_file;
--remove_file $MYSQLD_LOGFILE.copy
--remove_file $MYSQLD_LOGFILE.orig
diff --git a/mysql-test/suite/sys_vars/t/group_concat_max_len_basic.test b/mysql-test/suite/sys_vars/t/group_concat_max_len_basic.test
index 1bc707f4b5d..5a78b4b0571 100644
--- a/mysql-test/suite/sys_vars/t/group_concat_max_len_basic.test
+++ b/mysql-test/suite/sys_vars/t/group_concat_max_len_basic.test
@@ -103,8 +103,8 @@ SET @@global.group_concat_max_len = -1024;
SELECT @@global.group_concat_max_len;
SET @@global.group_concat_max_len = 65536;
SELECT @@global.group_concat_max_len;
---Error ER_PARSE_ERROR
-SET @@global.group_concat_max_len = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.group_concat_max_len = 65530.34;
SELECT @@global.group_concat_max_len;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.group_concat_max_len = test;
@@ -114,11 +114,10 @@ SET @@session.group_concat_max_len = 0;
SELECT @@session.group_concat_max_len;
SET @@session.group_concat_max_len = -2;
SELECT @@session.group_concat_max_len;
---Error ER_PARSE_ERROR
-SET @@session.group_concat_max_len = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.group_concat_max_len = 65530.34;
SET @@session.group_concat_max_len = 65550;
SELECT @@session.group_concat_max_len;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.group_concat_max_len = test;
diff --git a/mysql-test/suite/sys_vars/t/have_profiling_basic.test b/mysql-test/suite/sys_vars/t/have_profiling_basic.test
new file mode 100644
index 00000000000..da0ca88d2e3
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/have_profiling_basic.test
@@ -0,0 +1,23 @@
+#
+# only global
+#
+select @@global.have_profiling="1";
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.have_profiling;
+--replace_column 2 #
+show global variables like 'have_profiling';
+--replace_column 2 #
+show session variables like 'have_profiling';
+--replace_column 2 #
+select * from information_schema.global_variables where variable_name='have_profiling';
+--replace_column 2 #
+select * from information_schema.session_variables where variable_name='have_profiling';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global have_profiling=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session have_profiling=1;
+
diff --git a/mysql-test/suite/sys_vars/t/identity_basic.test b/mysql-test/suite/sys_vars/t/identity_basic.test
index fa5fc807414..2ddec32a621 100644
--- a/mysql-test/suite/sys_vars/t/identity_basic.test
+++ b/mysql-test/suite/sys_vars/t/identity_basic.test
@@ -89,7 +89,6 @@ SET @@session.identity = -1024;
SELECT @@session.identity;
SET @@session.identity = 42949672950;
SELECT @@session.identity;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.identity = ON;
diff --git a/mysql-test/suite/sys_vars/t/ignore_builtin_innodb_basic.test b/mysql-test/suite/sys_vars/t/ignore_builtin_innodb_basic.test
new file mode 100644
index 00000000000..7295c466974
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/ignore_builtin_innodb_basic.test
@@ -0,0 +1,19 @@
+#
+# only global
+#
+select @@global.ignore_builtin_innodb;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.ignore_builtin_innodb;
+show global variables like 'ignore_builtin_innodb';
+show session variables like 'ignore_builtin_innodb';
+select * from information_schema.global_variables where variable_name='ignore_builtin_innodb';
+select * from information_schema.session_variables where variable_name='ignore_builtin_innodb';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global ignore_builtin_innodb=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session ignore_builtin_innodb=1;
+
diff --git a/mysql-test/suite/sys_vars/t/init_connect_basic.test b/mysql-test/suite/sys_vars/t/init_connect_basic.test
index 8557dfbf4fc..b2f2cb92e40 100644
--- a/mysql-test/suite/sys_vars/t/init_connect_basic.test
+++ b/mysql-test/suite/sys_vars/t/init_connect_basic.test
@@ -94,6 +94,11 @@ SELECT @@global.init_connect;
SET @@global.init_connect="SET autocomit=0;REVOKE ALL ON INFORMATION_SCHEMA.*";
SELECT @@global.init_connect;
+SET @@global.init_connect='set @a="12\034"';
+SELECT @@global.init_connect;
+SELECT hex(@@global.init_connect);
+SHOW VARIABLES LIKE 'init_connect';
+
SET @@global.init_connect='SHOW VARIABLES';
SELECT @@global.init_connect;
diff --git a/mysql-test/suite/sys_vars/t/init_file_basic.test b/mysql-test/suite/sys_vars/t/init_file_basic.test
new file mode 100644
index 00000000000..0b59fcd7be5
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/init_file_basic.test
@@ -0,0 +1,19 @@
+#
+# only global
+#
+select @@global.init_file;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.init_file;
+show global variables like 'init_file';
+show session variables like 'init_file';
+select * from information_schema.global_variables where variable_name='init_file';
+select * from information_schema.session_variables where variable_name='init_file';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global init_file=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session init_file=1;
+
diff --git a/mysql-test/suite/sys_vars/t/innodb_checksums_basic.test b/mysql-test/suite/sys_vars/t/innodb_checksums_basic.test
index 89daad9ce0a..c4c39d7d380 100644
--- a/mysql-test/suite/sys_vars/t/innodb_checksums_basic.test
+++ b/mysql-test/suite/sys_vars/t/innodb_checksums_basic.test
@@ -52,7 +52,7 @@ SELECT COUNT(@@GLOBAL.innodb_checksums);
# Check if the value in GLOBAL Table matches value in variable #
#################################################################
-SELECT @@GLOBAL.innodb_checksums = VARIABLE_VALUE
+SELECT IF(@@GLOBAL.innodb_checksums, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='innodb_checksums';
--echo 1 Expected
diff --git a/mysql-test/suite/sys_vars/t/innodb_commit_concurrency_basic.test b/mysql-test/suite/sys_vars/t/innodb_commit_concurrency_basic.test
index 1ef69e34999..42d172934d1 100644
--- a/mysql-test/suite/sys_vars/t/innodb_commit_concurrency_basic.test
+++ b/mysql-test/suite/sys_vars/t/innodb_commit_concurrency_basic.test
@@ -74,29 +74,25 @@ SELECT @@global.innodb_commit_concurrency;
SET @@global.innodb_commit_concurrency = 0;
SELECT @@global.innodb_commit_concurrency;
-SET @@global.innodb_commit_concurrency = 1;
-SELECT @@global.innodb_commit_concurrency;
-SET @@global.innodb_commit_concurrency = 1000;
-SELECT @@global.innodb_commit_concurrency;
-
--echo '#--------------------FN_DYNVARS_046_04-------------------------#'
###########################################################################
# Change the value of innodb_commit_concurrency to invalid value #
###########################################################################
+#
+# InnoDB doesn't allow innodb_commit_concurrency to change from
+# zero to non-zero or vice versa
+#
+--Error ER_WRONG_VALUE_FOR_VAR
+SET @@global.innodb_commit_concurrency = 1;
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.innodb_commit_concurrency = -1;
-SELECT @@global.innodb_commit_concurrency;
-
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.innodb_commit_concurrency = "T";
-SELECT @@global.innodb_commit_concurrency;
-
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.innodb_commit_concurrency = "Y";
-SELECT @@global.innodb_commit_concurrency;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.innodb_commit_concurrency = 1001;
-SELECT @@global.innodb_commit_concurrency;
--echo '#----------------------FN_DYNVARS_046_05------------------------#'
#########################################################################
@@ -123,17 +119,6 @@ SELECT @@global.innodb_commit_concurrency;
SET @@global.innodb_commit_concurrency = ON;
SELECT @@global.innodb_commit_concurrency;
---echo '#---------------------FN_DYNVARS_046_07----------------------#'
-###################################################################
-# Check if TRUE and FALSE values can be used on variable #
-###################################################################
-
-
-SET @@global.innodb_commit_concurrency = TRUE;
-SELECT @@global.innodb_commit_concurrency;
-SET @@global.innodb_commit_concurrency = FALSE;
-SELECT @@global.innodb_commit_concurrency;
-
##############################
# Restore initial value #
##############################
diff --git a/mysql-test/suite/sys_vars/inc/innodb_concurrency_tickets_basic.inc b/mysql-test/suite/sys_vars/t/innodb_concurrency_tickets_basic.test
index 67b0247d169..67b0247d169 100644
--- a/mysql-test/suite/sys_vars/inc/innodb_concurrency_tickets_basic.inc
+++ b/mysql-test/suite/sys_vars/t/innodb_concurrency_tickets_basic.test
diff --git a/mysql-test/suite/sys_vars/t/innodb_concurrency_tickets_basic_32.test b/mysql-test/suite/sys_vars/t/innodb_concurrency_tickets_basic_32.test
deleted file mode 100644
index 13e1b205a4d..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_concurrency_tickets_basic_32.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 32 bit machines #
-################################################################################
-
---source include/have_32bit.inc
---source suite/sys_vars/inc/innodb_concurrency_tickets_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/innodb_concurrency_tickets_basic_64.test b/mysql-test/suite/sys_vars/t/innodb_concurrency_tickets_basic_64.test
deleted file mode 100644
index fc26c903de5..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_concurrency_tickets_basic_64.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 64 bit machines #
-################################################################################
-
---source include/have_64bit.inc
---source suite/sys_vars/inc/innodb_concurrency_tickets_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/innodb_doublewrite_basic.test b/mysql-test/suite/sys_vars/t/innodb_doublewrite_basic.test
index 4a0460bb4bc..72dd22cbeb8 100644
--- a/mysql-test/suite/sys_vars/t/innodb_doublewrite_basic.test
+++ b/mysql-test/suite/sys_vars/t/innodb_doublewrite_basic.test
@@ -52,7 +52,7 @@ SELECT COUNT(@@GLOBAL.innodb_doublewrite);
# Check if the value in GLOBAL Table matches value in variable #
#################################################################
-SELECT @@GLOBAL.innodb_doublewrite = VARIABLE_VALUE
+SELECT IF(@@GLOBAL.innodb_doublewrite, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='innodb_doublewrite';
--echo 1 Expected
diff --git a/mysql-test/suite/sys_vars/t/innodb_file_io_threads_basic.test b/mysql-test/suite/sys_vars/t/innodb_file_io_threads_basic.test
index 8e09c75ded6..32cdd0beac4 100644
--- a/mysql-test/suite/sys_vars/t/innodb_file_io_threads_basic.test
+++ b/mysql-test/suite/sys_vars/t/innodb_file_io_threads_basic.test
@@ -28,7 +28,9 @@
####################################################################
# Displaying default value #
####################################################################
-SELECT COUNT(@@GLOBAL.innodb_file_io_threads);
+SELECT COUNT(@@GLOBAL.innodb_read_io_threads);
+--echo 1 Expected
+SELECT COUNT(@@GLOBAL.innodb_write_io_threads);
--echo 1 Expected
@@ -38,10 +40,17 @@ SELECT COUNT(@@GLOBAL.innodb_file_io_threads);
####################################################################
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SET @@GLOBAL.innodb_file_io_threads=1;
+SET @@GLOBAL.innodb_read_io_threads=1;
--echo Expected error 'Read only variable'
-SELECT COUNT(@@GLOBAL.innodb_file_io_threads);
+SELECT COUNT(@@GLOBAL.innodb_read_io_threads);
+--echo 1 Expected
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SET @@GLOBAL.innodb_write_io_threads=1;
+--echo Expected error 'Read only variable'
+
+SELECT COUNT(@@GLOBAL.innodb_write_io_threads);
--echo 1 Expected
@@ -52,51 +61,84 @@ SELECT COUNT(@@GLOBAL.innodb_file_io_threads);
# Check if the value in GLOBAL Table matches value in variable #
#################################################################
-SELECT @@GLOBAL.innodb_file_io_threads = VARIABLE_VALUE
+SELECT @@GLOBAL.innodb_read_io_threads = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_file_io_threads';
+WHERE VARIABLE_NAME='innodb_read_io_threads';
--echo 1 Expected
-SELECT COUNT(@@GLOBAL.innodb_file_io_threads);
+SELECT COUNT(@@GLOBAL.innodb_read_io_threads);
--echo 1 Expected
SELECT COUNT(VARIABLE_VALUE)
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_file_io_threads';
+WHERE VARIABLE_NAME='innodb_read_io_threads';
+--echo 1 Expected
+
+SELECT @@GLOBAL.innodb_write_io_threads = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='innodb_write_io_threads';
+--echo 1 Expected
+
+SELECT COUNT(@@GLOBAL.innodb_write_io_threads);
--echo 1 Expected
+SELECT COUNT(VARIABLE_VALUE)
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='innodb_write_io_threads';
+--echo 1 Expected
--echo '#---------------------BS_STVARS_027_04----------------------#'
################################################################################
# Check if accessing variable with and without GLOBAL point to same variable #
################################################################################
-SELECT @@innodb_file_io_threads = @@GLOBAL.innodb_file_io_threads;
+SELECT @@innodb_read_io_threads = @@GLOBAL.innodb_read_io_threads;
--echo 1 Expected
+SELECT @@innodb_write_io_threads = @@GLOBAL.innodb_write_io_threads;
+--echo 1 Expected
--echo '#---------------------BS_STVARS_027_05----------------------#'
################################################################################
-# Check if innodb_file_io_threads can be accessed with and without @@ sign #
+# Check if innodb_read_io_threads can be accessed with and without @@ sign #
+# Check if innodb_write_io_threads can be accessed with and without @@ sign #
################################################################################
-SELECT COUNT(@@innodb_file_io_threads);
+SELECT COUNT(@@innodb_read_io_threads);
+--echo 1 Expected
+
+--Error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SELECT COUNT(@@local.innodb_read_io_threads);
+--echo Expected error 'Variable is a GLOBAL variable'
+
+--Error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SELECT COUNT(@@SESSION.innodb_read_io_threads);
+--echo Expected error 'Variable is a GLOBAL variable'
+
+SELECT COUNT(@@GLOBAL.innodb_read_io_threads);
+--echo 1 Expected
+
+--Error ER_BAD_FIELD_ERROR
+SELECT innodb_read_io_threads = @@SESSION.innodb_read_io_threads;
+--echo Expected error 'Readonly variable'
+
+SELECT COUNT(@@innodb_write_io_threads);
--echo 1 Expected
--Error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT COUNT(@@local.innodb_file_io_threads);
+SELECT COUNT(@@local.innodb_write_io_threads);
--echo Expected error 'Variable is a GLOBAL variable'
--Error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT COUNT(@@SESSION.innodb_file_io_threads);
+SELECT COUNT(@@SESSION.innodb_write_io_threads);
--echo Expected error 'Variable is a GLOBAL variable'
-SELECT COUNT(@@GLOBAL.innodb_file_io_threads);
+SELECT COUNT(@@GLOBAL.innodb_write_io_threads);
--echo 1 Expected
--Error ER_BAD_FIELD_ERROR
-SELECT innodb_file_io_threads = @@SESSION.innodb_file_io_threads;
+SELECT innodb_write_io_threads = @@SESSION.innodb_write_io_threads;
--echo Expected error 'Readonly variable'
diff --git a/mysql-test/suite/sys_vars/t/innodb_file_per_table_basic.test b/mysql-test/suite/sys_vars/t/innodb_file_per_table_basic.test
index bc0e34c484e..76a50df8879 100644
--- a/mysql-test/suite/sys_vars/t/innodb_file_per_table_basic.test
+++ b/mysql-test/suite/sys_vars/t/innodb_file_per_table_basic.test
@@ -37,10 +37,6 @@ SELECT COUNT(@@GLOBAL.innodb_file_per_table);
# Check if Value can set #
####################################################################
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SET @@GLOBAL.innodb_file_per_table=1;
---echo Expected error 'Read only variable'
-
SELECT COUNT(@@GLOBAL.innodb_file_per_table);
--echo 1 Expected
@@ -52,7 +48,7 @@ SELECT COUNT(@@GLOBAL.innodb_file_per_table);
# Check if the value in GLOBAL Table matches value in variable #
#################################################################
-SELECT @@GLOBAL.innodb_file_per_table = VARIABLE_VALUE
+SELECT IF(@@GLOBAL.innodb_file_per_table,'ON','OFF') = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='innodb_file_per_table';
--echo 1 Expected
diff --git a/mysql-test/suite/sys_vars/t/innodb_lock_wait_timeout_basic.test b/mysql-test/suite/sys_vars/t/innodb_lock_wait_timeout_basic.test
index ed31fc9eb6b..8cfd23fd6e7 100644
--- a/mysql-test/suite/sys_vars/t/innodb_lock_wait_timeout_basic.test
+++ b/mysql-test/suite/sys_vars/t/innodb_lock_wait_timeout_basic.test
@@ -37,10 +37,6 @@ SELECT COUNT(@@GLOBAL.innodb_lock_wait_timeout);
# Check if Value can set #
####################################################################
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SET @@GLOBAL.innodb_lock_wait_timeout=1;
---echo Expected error 'Read only variable'
-
SELECT COUNT(@@GLOBAL.innodb_lock_wait_timeout);
--echo 1 Expected
@@ -84,13 +80,9 @@ SELECT @@innodb_lock_wait_timeout = @@GLOBAL.innodb_lock_wait_timeout;
SELECT COUNT(@@innodb_lock_wait_timeout);
--echo 1 Expected
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
SELECT COUNT(@@local.innodb_lock_wait_timeout);
---echo Expected error 'Variable is a GLOBAL variable'
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
SELECT COUNT(@@SESSION.innodb_lock_wait_timeout);
---echo Expected error 'Variable is a GLOBAL variable'
SELECT COUNT(@@GLOBAL.innodb_lock_wait_timeout);
--echo 1 Expected
diff --git a/mysql-test/suite/sys_vars/t/innodb_locks_unsafe_for_binlog_basic.test b/mysql-test/suite/sys_vars/t/innodb_locks_unsafe_for_binlog_basic.test
index 63835113770..08792d299a1 100644
--- a/mysql-test/suite/sys_vars/t/innodb_locks_unsafe_for_binlog_basic.test
+++ b/mysql-test/suite/sys_vars/t/innodb_locks_unsafe_for_binlog_basic.test
@@ -52,7 +52,7 @@ SELECT COUNT(@@GLOBAL.innodb_locks_unsafe_for_binlog);
# Check if the value in GLOBAL Table matches value in variable #
#################################################################
-SELECT @@GLOBAL.innodb_locks_unsafe_for_binlog = VARIABLE_VALUE
+SELECT IF(@@GLOBAL.innodb_locks_unsafe_for_binlog, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='innodb_locks_unsafe_for_binlog';
--echo 1 Expected
diff --git a/mysql-test/suite/sys_vars/t/innodb_max_dirty_pages_pct_basic.test b/mysql-test/suite/sys_vars/t/innodb_max_dirty_pages_pct_basic.test
index 830617866ca..38c3acd92a2 100644
--- a/mysql-test/suite/sys_vars/t/innodb_max_dirty_pages_pct_basic.test
+++ b/mysql-test/suite/sys_vars/t/innodb_max_dirty_pages_pct_basic.test
@@ -72,7 +72,7 @@ SELECT @@global.innodb_max_dirty_pages_pct;
SET @@global.innodb_max_dirty_pages_pct = 1;
SELECT @@global.innodb_max_dirty_pages_pct;
-SET @@global.innodb_max_dirty_pages_pct = 100;
+SET @@global.innodb_max_dirty_pages_pct = 99;
SELECT @@global.innodb_max_dirty_pages_pct;
--echo '#--------------------FN_DYNVARS_046_04-------------------------#'
diff --git a/mysql-test/suite/sys_vars/inc/innodb_max_purge_lag_basic.inc b/mysql-test/suite/sys_vars/t/innodb_max_purge_lag_basic.test
index 9e6b8201e3d..9e6b8201e3d 100644
--- a/mysql-test/suite/sys_vars/inc/innodb_max_purge_lag_basic.inc
+++ b/mysql-test/suite/sys_vars/t/innodb_max_purge_lag_basic.test
diff --git a/mysql-test/suite/sys_vars/t/innodb_max_purge_lag_basic_32.test b/mysql-test/suite/sys_vars/t/innodb_max_purge_lag_basic_32.test
deleted file mode 100644
index 8396755844e..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_max_purge_lag_basic_32.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 32 bit machines #
-################################################################################
-
---source include/have_32bit.inc
---source suite/sys_vars/inc/innodb_max_purge_lag_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/innodb_max_purge_lag_basic_64.test b/mysql-test/suite/sys_vars/t/innodb_max_purge_lag_basic_64.test
deleted file mode 100644
index 4744cee20d9..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_max_purge_lag_basic_64.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 64 bit machines #
-################################################################################
-
---source include/have_64bit.inc
---source suite/sys_vars/inc/innodb_max_purge_lag_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/innodb_rollback_on_timeout_basic.test b/mysql-test/suite/sys_vars/t/innodb_rollback_on_timeout_basic.test
index c33e0fa1b75..81025bb9d73 100644
--- a/mysql-test/suite/sys_vars/t/innodb_rollback_on_timeout_basic.test
+++ b/mysql-test/suite/sys_vars/t/innodb_rollback_on_timeout_basic.test
@@ -52,7 +52,7 @@ SELECT COUNT(@@GLOBAL.innodb_rollback_on_timeout);
# Check if the value in GLOBAL Table matches value in variable #
#################################################################
-SELECT @@GLOBAL.innodb_rollback_on_timeout = VARIABLE_VALUE
+SELECT IF(@@GLOBAL.innodb_rollback_on_timeout, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='innodb_rollback_on_timeout';
--echo 1 Expected
diff --git a/mysql-test/suite/sys_vars/t/innodb_support_xa_basic.test b/mysql-test/suite/sys_vars/t/innodb_support_xa_basic.test
index 6da3e68ebdf..65681c4a544 100644
--- a/mysql-test/suite/sys_vars/t/innodb_support_xa_basic.test
+++ b/mysql-test/suite/sys_vars/t/innodb_support_xa_basic.test
@@ -105,9 +105,9 @@ SELECT @@global.innodb_support_xa;
###########################################################################
# for session
---Error ER_WRONG_VALUE_FOR_VAR
+--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.innodb_support_xa = -0.6;
---Error ER_WRONG_VALUE_FOR_VAR
+--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.innodb_support_xa = 1.6;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.innodb_support_xa = "T";
@@ -121,8 +121,6 @@ SET @@session.innodb_support_xa = ÕN;
SET @@session.innodb_support_xa = OF;
SELECT @@session.innodb_support_xa;
---echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.innodb_support_xa = ÓFF;
@@ -146,8 +144,6 @@ SET @@global.innodb_support_xa = ÕN;
SET @@global.innodb_support_xa = OF;
SELECT @@global.innodb_support_xa;
---echo 'Bug# 34828 : OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.innodb_support_xa = ÓFF;
@@ -169,7 +165,7 @@ SELECT @@session.innodb_support_xa AS res_is_1;
# Check if the value in GLOBAL Table matches value in variable #
#########################################################################
-SELECT @@global.innodb_support_xa =
+SELECT IF(@@global.innodb_support_xa, "ON", "OFF") =
VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='innodb_support_xa';
SELECT @@global.innodb_support_xa;
@@ -182,7 +178,7 @@ SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
# Check if the value in SESSION Table matches value in variable #
#########################################################################
-SELECT @@session.innodb_support_xa =
+SELECT IF(@@session.innodb_support_xa, "ON", "OFF") =
VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='innodb_support_xa';
SELECT @@session.innodb_support_xa;
diff --git a/mysql-test/suite/sys_vars/inc/innodb_sync_spin_loops_basic.inc b/mysql-test/suite/sys_vars/t/innodb_sync_spin_loops_basic.test
index 35460fe47f2..35460fe47f2 100644
--- a/mysql-test/suite/sys_vars/inc/innodb_sync_spin_loops_basic.inc
+++ b/mysql-test/suite/sys_vars/t/innodb_sync_spin_loops_basic.test
diff --git a/mysql-test/suite/sys_vars/t/innodb_sync_spin_loops_basic_32.test b/mysql-test/suite/sys_vars/t/innodb_sync_spin_loops_basic_32.test
deleted file mode 100644
index 981b6c4e992..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_sync_spin_loops_basic_32.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 32 bit machines #
-################################################################################
-
---source include/have_32bit.inc
---source suite/sys_vars/inc/innodb_sync_spin_loops_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/innodb_sync_spin_loops_basic_64.test b/mysql-test/suite/sys_vars/t/innodb_sync_spin_loops_basic_64.test
deleted file mode 100644
index ab7c01c5b6d..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_sync_spin_loops_basic_64.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 64 bit machines #
-################################################################################
-
---source include/have_64bit.inc
---source suite/sys_vars/inc/innodb_sync_spin_loops_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/innodb_table_locks_basic.test b/mysql-test/suite/sys_vars/t/innodb_table_locks_basic.test
index 35961c43a7f..7af8f700f39 100644
--- a/mysql-test/suite/sys_vars/t/innodb_table_locks_basic.test
+++ b/mysql-test/suite/sys_vars/t/innodb_table_locks_basic.test
@@ -107,7 +107,7 @@ SELECT @@global.innodb_table_locks;
# for session
SET @@session.innodb_table_locks = -6;
---Error ER_WRONG_VALUE_FOR_VAR
+--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.innodb_table_locks = 1.6;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.innodb_table_locks = "T";
@@ -121,8 +121,6 @@ SET @@session.innodb_table_locks = ÕN;
SET @@session.innodb_table_locks = OF;
SELECT @@session.innodb_table_locks;
---echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.innodb_table_locks = ÓFF;
@@ -144,8 +142,6 @@ SET @@global.innodb_table_locks = QN;
SET @@global.innodb_table_locks = OF;
SELECT @@global.innodb_table_locks;
---echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_TYPE_FOR_VAR
#SET @@global.innodb_table_locks = ÓFF;
@@ -167,7 +163,7 @@ SELECT @@session.innodb_table_locks AS res_is_1;
# Check if the value in GLOBAL Table matches value in variable #
#########################################################################
-SELECT @@global.innodb_table_locks =
+SELECT IF(@@global.innodb_table_locks, "ON", "OFF") =
VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='innodb_table_locks';
SELECT @@global.innodb_table_locks;
@@ -179,7 +175,7 @@ SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
# Check if the value in SESSION Table matches value in variable #
#########################################################################
-SELECT @@session.innodb_table_locks =
+SELECT IF(@@session.innodb_table_locks, "ON", "OFF") =
VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='innodb_table_locks';
SELECT @@session.innodb_table_locks;
diff --git a/mysql-test/suite/sys_vars/t/innodb_thread_concurrency_basic.test b/mysql-test/suite/sys_vars/t/innodb_thread_concurrency_basic.test
index 40ce09ce4db..d30ec214f4a 100644
--- a/mysql-test/suite/sys_vars/t/innodb_thread_concurrency_basic.test
+++ b/mysql-test/suite/sys_vars/t/innodb_thread_concurrency_basic.test
@@ -4,7 +4,7 @@
# Scope: GLOBAL #
# Access Type: Dynamic #
# Data Type: Numeric #
-# Default Value: 8 #
+# Default Value: 0 #
# Range: 0-1000 #
# #
# #
diff --git a/mysql-test/suite/sys_vars/t/insert_id_basic.test b/mysql-test/suite/sys_vars/t/insert_id_basic.test
index cfae87095bc..c9d3e1f4e52 100644
--- a/mysql-test/suite/sys_vars/t/insert_id_basic.test
+++ b/mysql-test/suite/sys_vars/t/insert_id_basic.test
@@ -90,8 +90,6 @@ SET @@session.insert_id = -1024;
SELECT @@session.insert_id;
SET @@session.insert_id = 42949672950;
SELECT @@session.insert_id;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.insert_id = ON;
SELECT @@session.insert_id;
diff --git a/mysql-test/suite/sys_vars/t/interactive_timeout_basic.test b/mysql-test/suite/sys_vars/t/interactive_timeout_basic.test
index 0c1a6716348..5f7d0e157f8 100644
--- a/mysql-test/suite/sys_vars/t/interactive_timeout_basic.test
+++ b/mysql-test/suite/sys_vars/t/interactive_timeout_basic.test
@@ -104,8 +104,8 @@ SET @@global.interactive_timeout = -1024;
SELECT @@global.interactive_timeout;
SET @@global.interactive_timeout = 1000000000;
SELECT @@global.interactive_timeout;
---Error ER_PARSE_ERROR
-SET @@global.interactive_timeout = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.interactive_timeout = 65530.34;
SELECT @@global.interactive_timeout;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.interactive_timeout = test;
@@ -115,11 +115,10 @@ SET @@session.interactive_timeout = 0;
SELECT @@session.interactive_timeout;
SET @@session.interactive_timeout = -2;
SELECT @@session.interactive_timeout;
---Error ER_PARSE_ERROR
-SET @@session.interactive_timeout = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.interactive_timeout = 65530.34;
SET @@session.interactive_timeout = 100000000;
SELECT @@session.interactive_timeout;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.interactive_timeout = test;
diff --git a/mysql-test/suite/sys_vars/t/keep_files_on_create_basic.test b/mysql-test/suite/sys_vars/t/keep_files_on_create_basic.test
index a855f56c863..e6141af4bbe 100644
--- a/mysql-test/suite/sys_vars/t/keep_files_on_create_basic.test
+++ b/mysql-test/suite/sys_vars/t/keep_files_on_create_basic.test
@@ -122,7 +122,7 @@ SET @@global.keep_files_on_create = FELSE;
SET @@global.keep_files_on_create = -1024;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.keep_files_on_create = 65536;
---Error ER_WRONG_VALUE_FOR_VAR
+--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.keep_files_on_create = 65530.34;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.keep_files_on_create = test;
@@ -131,17 +131,14 @@ SET @@global.keep_files_on_create = test;
SET @@session.keep_files_on_create = ONN;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.keep_files_on_create = ONF;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.keep_files_on_create = OF;
-SELECT @@session.keep_files_on_create;
---echo 'Bug# 34828: FN_DYNVARS_054_05 - OF is also working as OFF and no error is coming';
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.keep_files_on_create = 'OFN';
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.keep_files_on_create = -2;
---Error ER_PARSE_ERROR
-SET @@session.keep_files_on_create = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.keep_files_on_create = 65530.34;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.keep_files_on_create = 65550;
@@ -156,7 +153,7 @@ SELECT @@session.keep_files_on_create;
####################################################################
-SELECT @@global.keep_files_on_create = VARIABLE_VALUE
+SELECT IF(@@global.keep_files_on_create, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='keep_files_on_create';
@@ -165,7 +162,7 @@ WHERE VARIABLE_NAME='keep_files_on_create';
# Check if the value in SESSION Table matches value in variable #
####################################################################
-SELECT @@session.keep_files_on_create = VARIABLE_VALUE
+SELECT IF(@@session.keep_files_on_create, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='keep_files_on_create';
diff --git a/mysql-test/suite/sys_vars/inc/key_buffer_size_basic.inc b/mysql-test/suite/sys_vars/t/key_buffer_size_basic.test
index e55673fd045..354c65490a4 100644
--- a/mysql-test/suite/sys_vars/inc/key_buffer_size_basic.inc
+++ b/mysql-test/suite/sys_vars/t/key_buffer_size_basic.test
@@ -28,12 +28,10 @@
--source include/load_sysvars.inc
-let $minimum_range= BETWEEN 8 AND 36;
########################################################################
# START OF key_buffer_size TESTS #
########################################################################
---disable_warnings
########################################################################
# Saving initial value of key_buffer_size in a temporary variable #
########################################################################
@@ -45,10 +43,8 @@ SET @start_value = @@global.key_buffer_size;
# Display the DEFAULT value of key_buffer_size #
########################################################################
-SET @@global.key_buffer_size = 99;
---Error ER_NO_DEFAULT
SET @@global.key_buffer_size = DEFAULT;
-eval SELECT @@global.key_buffer_size $minimum_range;
+SELECT @@global.key_buffer_size;
--echo '#---------------------FN_DYNVARS_055_02-------------------------#'
###############################################
@@ -63,18 +59,6 @@ SELECT @@global.key_buffer_size = @start_value;
# Change the value of key_buffer_size to a valid value #
########################################################################
-SET @@global.key_buffer_size = 8 ;
-eval SELECT @@global.key_buffer_size $minimum_range;
---disable_warnings
-# The next subtest is set to comment because it will
-# be tried to allocate the buffer instantly which
-# might lead to a message about missing resources,
-# excessive runtime etc. especially if the main memory is less than 4GB.
-#SET @@global.key_buffer_size = 4294967295;
---enable_warnings
-#SELECT @@global.key_buffer_size;
-SET @@global.key_buffer_size = 1800;
-eval SELECT @@global.key_buffer_size $minimum_range;
SET @@global.key_buffer_size = 65535;
SELECT @@global.key_buffer_size;
@@ -83,31 +67,20 @@ SELECT @@global.key_buffer_size;
# Change the value of key_buffer_size to invalid value #
###########################################################################
-# The next subtests are set to comment because they will
-# be tried to allocate the buffer instantly which
-# might lead to a message about missing resources,
-# excessive runtime etc. especially if the main memory is less than 4GB.
-# The negative values lead to very big numbers, e.g. -1 to
-# a size of 18446744073709551615 bytes with a 32bit binary.
-# See Bug #42103.
-#SET @@global.key_buffer_size = -1;
-#SELECT @@global.key_buffer_size;
-#SET @@global.key_buffer_size = 100000000000;
-#SELECT @@global.key_buffer_size;
+--Error ER_WARN_CANT_DROP_DEFAULT_KEYCACHE
+SET @@global.key_buffer_size = -1;
+--Error ER_WARN_CANT_DROP_DEFAULT_KEYCACHE
+SET @@global.key_buffer_size = 4;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.key_buffer_size = 10000.01;
SELECT @@global.key_buffer_size;
-#SET @@global.key_buffer_size = -1024;
-#SELECT @@global.key_buffer_size;
-SET @@global.key_buffer_size = 4;
-eval SELECT @@global.key_buffer_size $minimum_range;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.key_buffer_size = ON;
-eval SELECT @@global.key_buffer_size $minimum_range;
+SELECT @@global.key_buffer_size;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.key_buffer_size = 'test';
-eval SELECT @@global.key_buffer_size $minimum_range;
+SELECT @@global.key_buffer_size;
--echo '#-------------------FN_DYNVARS_055_05----------------------------#'
###########################################################################
@@ -116,7 +89,6 @@ eval SELECT @@global.key_buffer_size $minimum_range;
--Error ER_GLOBAL_VARIABLE
SET @@session.key_buffer_size = 0;
-eval SELECT @@global.key_buffer_size $minimum_range;
--echo '#----------------------FN_DYNVARS_055_06------------------------#'
##############################################################################
@@ -136,13 +108,10 @@ WHERE VARIABLE_NAME='key_buffer_size';
# Check if TRUE and FALSE values can be used on variable #
###################################################################
-# The following assignment are accepted, but should be rejected
-# like the value ON (see above).
-# See Bug #42104
+--Error ER_WARN_CANT_DROP_DEFAULT_KEYCACHE
SET @@global.key_buffer_size = TRUE;
-eval SELECT @@global.key_buffer_size $minimum_range;
+--Error ER_WARN_CANT_DROP_DEFAULT_KEYCACHE
SET @@global.key_buffer_size = FALSE;
-eval SELECT @@global.key_buffer_size $minimum_range;
--echo '#---------------------FN_DYNVARS_055_08----------------------#'
#####################################################################
@@ -150,11 +119,7 @@ eval SELECT @@global.key_buffer_size $minimum_range;
# points to same session variable #
#####################################################################
-# due to differences in contents of the warnings
---disable_warnings
-SET @@global.key_buffer_size = 8 ;
SELECT @@key_buffer_size = @@global.key_buffer_size;
---enable_warnings
--echo '#---------------------FN_DYNVARS_055_09----------------------#'
##########################################################################
@@ -163,7 +128,6 @@ SELECT @@key_buffer_size = @@global.key_buffer_size;
--Error ER_GLOBAL_VARIABLE
SET key_buffer_size = 8 ;
-eval SELECT @@global.key_buffer_size $minimum_range;
--Error ER_PARSE_ERROR
SET local.key_buffer_size = 10;
--Error ER_UNKNOWN_TABLE
@@ -181,7 +145,6 @@ SELECT key_buffer_size = @@session.key_buffer_size;
SET @@global.key_buffer_size = @start_value;
---enable_warnings
#######################################################################
# END OF key_buffer_size TESTS #
#######################################################################
diff --git a/mysql-test/suite/sys_vars/t/key_buffer_size_basic_32.test b/mysql-test/suite/sys_vars/t/key_buffer_size_basic_32.test
deleted file mode 100644
index 086e51e185c..00000000000
--- a/mysql-test/suite/sys_vars/t/key_buffer_size_basic_32.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 32 bit machines #
-################################################################################
-
---source include/have_32bit.inc
---source suite/sys_vars/inc/key_buffer_size_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/key_buffer_size_basic_64.test b/mysql-test/suite/sys_vars/t/key_buffer_size_basic_64.test
deleted file mode 100644
index 5604c56480b..00000000000
--- a/mysql-test/suite/sys_vars/t/key_buffer_size_basic_64.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 64 bit machines #
-################################################################################
-
---source include/have_64bit.inc
---source suite/sys_vars/inc/key_buffer_size_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/key_buffer_size_func.test b/mysql-test/suite/sys_vars/t/key_buffer_size_func.test
index 8ee305a3ac1..df0ce62c69c 100644
--- a/mysql-test/suite/sys_vars/t/key_buffer_size_func.test
+++ b/mysql-test/suite/sys_vars/t/key_buffer_size_func.test
@@ -86,11 +86,6 @@ connection test_con2;
--echo ## Key_reads must be zero (no disk access) ##
show status like 'Key_reads';
-CONNECTION default;
---disable_warnings
-SET @@global.key_buffer_size = 36;
---enable_warnings
-
--echo ## Connecting with connection test_con1 ##
CONNECTION test_con1;
diff --git a/mysql-test/suite/sys_vars/inc/key_cache_block_size_basic.inc b/mysql-test/suite/sys_vars/t/key_cache_block_size_basic.test
index b12ea45b762..99a3c5dc327 100644
--- a/mysql-test/suite/sys_vars/inc/key_cache_block_size_basic.inc
+++ b/mysql-test/suite/sys_vars/t/key_cache_block_size_basic.test
@@ -43,10 +43,7 @@ SELECT @start_value;
# Display the DEFAULT value of key_cache_block_size #
################################################################################
-SET @@global.key_cache_block_size = 600;
---Error ER_NO_DEFAULT
SET @@global.key_cache_block_size = DEFAULT;
---echo 'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming';
SELECT @@global.key_cache_block_size;
@@ -72,8 +69,6 @@ SET @@global.key_cache_block_size = 1800;
SELECT @@global.key_cache_block_size;
SET @@global.key_cache_block_size = 16383;
SELECT @@global.key_cache_block_size;
---echo 'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming';
-
--echo '#--------------------FN_DYNVARS_057_04-------------------------#'
###########################################################################
@@ -96,8 +91,6 @@ SELECT @@global.key_cache_block_size;
SET @@global.key_cache_block_size = 16385;
SELECT @@global.key_cache_block_size;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.key_cache_block_size = ON;
SELECT @@global.key_cache_block_size;
diff --git a/mysql-test/suite/sys_vars/t/key_cache_block_size_basic_32.test b/mysql-test/suite/sys_vars/t/key_cache_block_size_basic_32.test
deleted file mode 100644
index db0c0bd67a2..00000000000
--- a/mysql-test/suite/sys_vars/t/key_cache_block_size_basic_32.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 32 bit machines #
-################################################################################
-
---source include/have_32bit.inc
---source suite/sys_vars/inc/key_cache_block_size_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/key_cache_block_size_basic_64.test b/mysql-test/suite/sys_vars/t/key_cache_block_size_basic_64.test
deleted file mode 100644
index 7403d762dc4..00000000000
--- a/mysql-test/suite/sys_vars/t/key_cache_block_size_basic_64.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 64 bit machines #
-################################################################################
-
---source include/have_64bit.inc
---source suite/sys_vars/inc/key_cache_block_size_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/inc/key_cache_division_limit_basic.inc b/mysql-test/suite/sys_vars/t/key_cache_division_limit_basic.test
index a2cc49a1f38..dd41e4d37a0 100644
--- a/mysql-test/suite/sys_vars/inc/key_cache_division_limit_basic.inc
+++ b/mysql-test/suite/sys_vars/t/key_cache_division_limit_basic.test
@@ -43,10 +43,7 @@ SELECT @start_value;
# Display the DEFAULT value of key_cache_division_limit #
################################################################################
-SET @@global.key_cache_division_limit = 50;
---Error ER_NO_DEFAULT
SET @@global.key_cache_division_limit = DEFAULT;
---echo 'Bug# 34878: This variable has default value according to documentation';
SELECT @@global.key_cache_division_limit;
@@ -95,8 +92,6 @@ SELECT @@global.key_cache_division_limit;
SET @@global.key_cache_division_limit = 65535;
SELECT @@global.key_cache_division_limit;
-echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.key_cache_division_limit = ON;
SELECT @@global.key_cache_division_limit;
diff --git a/mysql-test/suite/sys_vars/t/key_cache_division_limit_basic_32.test b/mysql-test/suite/sys_vars/t/key_cache_division_limit_basic_32.test
deleted file mode 100644
index fcc28438866..00000000000
--- a/mysql-test/suite/sys_vars/t/key_cache_division_limit_basic_32.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 32 bit machines #
-################################################################################
-
---source include/have_32bit.inc
---source suite/sys_vars/inc/key_cache_division_limit_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/key_cache_division_limit_basic_64.test b/mysql-test/suite/sys_vars/t/key_cache_division_limit_basic_64.test
deleted file mode 100644
index ac4dd1c96d3..00000000000
--- a/mysql-test/suite/sys_vars/t/key_cache_division_limit_basic_64.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 64 bit machines #
-################################################################################
-
---source include/have_64bit.inc
---source suite/sys_vars/inc/key_cache_division_limit_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/large_files_support_basic.test b/mysql-test/suite/sys_vars/t/large_files_support_basic.test
new file mode 100644
index 00000000000..690b32fce66
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/large_files_support_basic.test
@@ -0,0 +1,19 @@
+#
+# only global
+#
+select @@global.large_files_support;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.large_files_support;
+show global variables like 'large_files_support';
+show session variables like 'large_files_support';
+select * from information_schema.global_variables where variable_name='large_files_support';
+select * from information_schema.session_variables where variable_name='large_files_support';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global large_files_support=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session large_files_support=1;
+
diff --git a/mysql-test/suite/sys_vars/t/large_page_size_basic.test b/mysql-test/suite/sys_vars/t/large_page_size_basic.test
new file mode 100644
index 00000000000..cff90336fa0
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/large_page_size_basic.test
@@ -0,0 +1,23 @@
+#
+# only global
+#
+select @@global.large_page_size = 1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.large_page_size;
+--replace_column 2 #
+show global variables like 'large_page_size';
+--replace_column 2 #
+show session variables like 'large_page_size';
+--replace_column 2 #
+select * from information_schema.global_variables where variable_name='large_page_size';
+--replace_column 2 #
+select * from information_schema.session_variables where variable_name='large_page_size';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global large_page_size=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session large_page_size=1;
+
diff --git a/mysql-test/suite/sys_vars/t/large_pages_basic.test b/mysql-test/suite/sys_vars/t/large_pages_basic.test
new file mode 100644
index 00000000000..840b9176832
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/large_pages_basic.test
@@ -0,0 +1,19 @@
+#
+# show the global and session values;
+#
+select @@global.large_pages;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.large_pages;
+show global variables like 'large_pages';
+show session variables like 'large_pages';
+select * from information_schema.global_variables where variable_name='large_pages';
+select * from information_schema.session_variables where variable_name='large_pages';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global large_pages=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session large_pages=1;
+
diff --git a/mysql-test/suite/sys_vars/t/last_insert_id_basic.test b/mysql-test/suite/sys_vars/t/last_insert_id_basic.test
new file mode 100644
index 00000000000..a2e0116f11d
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/last_insert_id_basic.test
@@ -0,0 +1,30 @@
+
+#
+# exists as a session only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@global.last_insert_id;
+select @@session.last_insert_id;
+show global variables like 'last_insert_id';
+show session variables like 'last_insert_id';
+select * from information_schema.global_variables where variable_name='last_insert_id';
+select * from information_schema.session_variables where variable_name='last_insert_id';
+
+#
+# show that it's writable
+#
+set session last_insert_id=1;
+select @@session.last_insert_id;
+--error ER_LOCAL_VARIABLE
+set global last_insert_id=1;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set session last_insert_id=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set session last_insert_id=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set session last_insert_id="foo";
+
diff --git a/mysql-test/suite/sys_vars/t/lc_messages_basic.test b/mysql-test/suite/sys_vars/t/lc_messages_basic.test
new file mode 100644
index 00000000000..f8a25738285
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/lc_messages_basic.test
@@ -0,0 +1,35 @@
+SET @start_global_value = @@global.lc_messages;
+SELECT @start_global_value;
+
+#
+# exists as global and session
+#
+select @@global.lc_messages;
+select @@session.lc_messages;
+show global variables like 'lc_messages';
+show session variables like 'lc_messages';
+select * from information_schema.global_variables where variable_name='lc_messages';
+select * from information_schema.session_variables where variable_name='lc_messages';
+
+#
+# show that it's writable
+#
+set global lc_messages=1;
+select @@global.lc_messages;
+set session lc_messages=2;
+select @@session.lc_messages;
+set global lc_messages="en_US";
+select @@global.lc_messages;
+set session lc_messages="en_GB";
+select @@session.lc_messages;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global lc_messages=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global lc_messages=1e1;
+
+SET @@global.lc_messages = @start_global_value;
+SELECT @@global.lc_messages;
diff --git a/mysql-test/suite/sys_vars/t/lc_messages_dir_basic.test b/mysql-test/suite/sys_vars/t/lc_messages_dir_basic.test
new file mode 100644
index 00000000000..6d452a3655c
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/lc_messages_dir_basic.test
@@ -0,0 +1,23 @@
+#
+# only global
+#
+--replace_result $MYSQL_SHAREDIR MYSQL_SHAREDIR
+select @@global.lc_messages_dir;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.lc_messages_dir;
+--replace_result $MYSQL_SHAREDIR MYSQL_SHAREDIR
+show global variables like 'lc_messages_dir';
+--replace_result $MYSQL_SHAREDIR MYSQL_SHAREDIR
+show session variables like 'lc_messages_dir';
+--replace_result $MYSQL_SHAREDIR MYSQL_SHAREDIR
+select * from information_schema.global_variables where variable_name='lc_messages_dir';
+--replace_result $MYSQL_SHAREDIR MYSQL_SHAREDIR
+select * from information_schema.session_variables where variable_name='lc_messages_dir';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global lc_messages_dir=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session lc_messages_dir=1;
diff --git a/mysql-test/suite/sys_vars/t/lc_time_names_basic.test b/mysql-test/suite/sys_vars/t/lc_time_names_basic.test
index d0aa0c56937..68ee00b6ee0 100644
--- a/mysql-test/suite/sys_vars/t/lc_time_names_basic.test
+++ b/mysql-test/suite/sys_vars/t/lc_time_names_basic.test
@@ -178,7 +178,7 @@ SELECT @@session.lc_time_names;
SET @@session.lc_time_names=de_LU;
SELECT @@session.lc_time_names;
---Error ER_UNKNOWN_ERROR
+--error ER_UNKNOWN_LOCALE
SET @@session.lc_time_names=EE;
--echo 'Bug: The locale for Estonian - Estonia is not supported. It is present';
--echo 'in manual';
@@ -322,6 +322,8 @@ SET @@session.lc_time_names=sr_YU;
SELECT @@session.lc_time_names;
SET @@session.lc_time_names=sv_FI;
SELECT @@session.lc_time_names;
+SET @@session.lc_time_names=sr_RS;
+SELECT @@session.lc_time_names;
SET @@session.lc_time_names=sv_SE;
SELECT @@session.lc_time_names;
SET @@session.lc_time_names=ta_IN;
@@ -407,7 +409,7 @@ SELECT @@global.lc_time_names;
SET @@global.lc_time_names=de_LU;
SELECT @@global.lc_time_names;
---Error ER_UNKNOWN_ERROR
+--error ER_UNKNOWN_LOCALE
SET @@global.lc_time_names=EE;
--echo 'Bug: The locale for Estonian - Estonia is not supported. It is';
--echo 'present in manual';
@@ -553,6 +555,8 @@ SET @@global.lc_time_names=sr_YU;
SELECT @@global.lc_time_names;
SET @@global.lc_time_names=sv_FI;
SELECT @@global.lc_time_names;
+SET @@global.lc_time_names=sr_RS;
+SELECT @@global.lc_time_names;
SET @@global.lc_time_names=sv_SE;
SELECT @@global.lc_time_names;
SET @@global.lc_time_names=ta_IN;
@@ -616,27 +620,27 @@ SET @@lc_time_names = 107;
SELECT @@lc_time_names;
SET @@lc_time_names = 108;
SELECT @@lc_time_names;
-
---Error ER_UNKNOWN_ERROR
SET @@lc_time_names = 109;
-
+SELECT @@lc_time_names;
+--Error ER_UNKNOWN_LOCALE
+SET @@lc_time_names = 110;
--echo '#--------------------FN_DYNVARS_060_10-------------------------#'
#############################################################################
# Change the value of lc_time_names to an invalid value for session #
#############################################################################
---Error ER_UNKNOWN_ERROR
+--Error ER_UNKNOWN_LOCALE
SET @@lc_time_names = en_EN;
---Error ER_UNKNOWN_ERROR
+--Error ER_UNKNOWN_LOCALE
SET @@lc_time_names = US_en;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@lc_time_names = 1.1;
---Error ER_UNKNOWN_ERROR
+--Error ER_UNKNOWN_LOCALE
SET @@lc_time_names = -1;
---Error ER_UNKNOWN_ERROR
+--Error ER_UNKNOWN_LOCALE
SET @@lc_time_names = 'en US';
---Error ER_UNKNOWN_ERROR
+--Error ER_UNKNOWN_LOCALE
SET @@lc_time_names = 'enUS';
SET @@lc_time_names = true;
@@ -644,7 +648,7 @@ SELECT @@lc_time_names AS res_with_true;
SET @@lc_time_names = false;
SELECT @@lc_time_names AS res_with_false;
---Error ER_UNKNOWN_ERROR
+--Error ER_UNKNOWN_LOCALE
SET @@lc_time_names = ON;
@@ -653,17 +657,17 @@ SET @@lc_time_names = ON;
# Change the value of lc_time_names to an invalid value for global #
############################################################################
---Error ER_UNKNOWN_ERROR
+--Error ER_UNKNOWN_LOCALE
SET @@global.lc_time_names = en_EN;
---Error ER_UNKNOWN_ERROR
+--Error ER_UNKNOWN_LOCALE
SET @@global.lc_time_names = US_en;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.lc_time_names = 1.1;
---Error ER_UNKNOWN_ERROR
+--Error ER_UNKNOWN_LOCALE
SET @@global.lc_time_names = -1;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.lc_time_names = NULL;
---Error ER_UNKNOWN_ERROR
+--Error ER_UNKNOWN_LOCALE
SET @@global.lc_time_names = 'enUS';
SET @@global.lc_time_names = true;
@@ -671,7 +675,7 @@ SELECT @@global.lc_time_names;
SET @@global.lc_time_names = false;
SELECT @@global.lc_time_names;
---Error ER_UNKNOWN_ERROR
+--Error ER_UNKNOWN_LOCALE
SET @@global.lc_time_names = ON;
--echo '#--------------------FN_DYNVARS_060_12-------------------------#'
diff --git a/mysql-test/suite/sys_vars/t/local_infile_basic.test b/mysql-test/suite/sys_vars/t/local_infile_basic.test
index 63f6b0fdb91..731eac42541 100644
--- a/mysql-test/suite/sys_vars/t/local_infile_basic.test
+++ b/mysql-test/suite/sys_vars/t/local_infile_basic.test
@@ -112,7 +112,7 @@ SELECT @@session.local_infile = 1;
# Check if the value in GLOBAL Tables matches values in variable #
####################################################################
-SELECT @@global.local_infile = VARIABLE_VALUE
+SELECT IF(@@global.local_infile, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='local_infile';
diff --git a/mysql-test/suite/sys_vars/t/locked_in_memory_basic.test b/mysql-test/suite/sys_vars/t/locked_in_memory_basic.test
new file mode 100644
index 00000000000..97313b7f608
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/locked_in_memory_basic.test
@@ -0,0 +1,20 @@
+--source include/not_windows.inc
+#
+# only global
+#
+select @@global.locked_in_memory;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.locked_in_memory;
+show global variables like 'locked_in_memory';
+show session variables like 'locked_in_memory';
+select * from information_schema.global_variables where variable_name='locked_in_memory';
+select * from information_schema.session_variables where variable_name='locked_in_memory';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global locked_in_memory=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session locked_in_memory=1;
+
diff --git a/mysql-test/suite/sys_vars/t/log_basic.test b/mysql-test/suite/sys_vars/t/log_basic.test
index 98e99fa4e4f..74b344cff6d 100644
--- a/mysql-test/suite/sys_vars/t/log_basic.test
+++ b/mysql-test/suite/sys_vars/t/log_basic.test
@@ -41,13 +41,9 @@ SELECT @@global.log AS INIT_VALUE;
SELECT @@log AS INIT_VALUE;
-SET @@global.general_log = ON;
-
-SET global general_log = 0;
-
---echo 'Bug# 34832: log is a system but it is not accessible using SET @@global.log;'
---echo 'SET GLOBAL log; and SELECT @@global.log. SHOW VARIABLES shows the value of log.'
+SET @@global.log = ON;
+SET global log = 0;
--echo '#--------------------FN_DYNVARS_062_02-------------------------#'
################################################################################
diff --git a/mysql-test/suite/sys_vars/t/log_bin_basic.test b/mysql-test/suite/sys_vars/t/log_bin_basic.test
new file mode 100644
index 00000000000..0712b42a370
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/log_bin_basic.test
@@ -0,0 +1,19 @@
+#
+# only global
+#
+select @@global.log_bin;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.log_bin;
+show global variables like 'log_bin';
+show session variables like 'log_bin';
+select * from information_schema.global_variables where variable_name='log_bin';
+select * from information_schema.session_variables where variable_name='log_bin';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global log_bin=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session log_bin=1;
+
diff --git a/mysql-test/suite/sys_vars/t/log_bin_trust_function_creators_basic.test b/mysql-test/suite/sys_vars/t/log_bin_trust_function_creators_basic.test
index 3b8b43e1354..15ffad2742a 100644
--- a/mysql-test/suite/sys_vars/t/log_bin_trust_function_creators_basic.test
+++ b/mysql-test/suite/sys_vars/t/log_bin_trust_function_creators_basic.test
@@ -37,10 +37,6 @@
SET @start_global_value = @@global.log_bin_trust_function_creators;
SELECT @start_global_value;
---echo 'Bug# 34876: TRUE value is coming as Default'
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SET @start_session_value = @@session.log_bin_trust_function_creators;
---echo 'Bug# 34881: According to documentation the scope of this variable is GLOBAL as well as SESSION too';
--echo '#--------------------FN_DYNVARS_063_01-------------------------#'
########################################################################
@@ -99,10 +95,8 @@ SELECT @@session.log_bin_trust_function_creators;
SET @@global.log_bin_trust_function_creators = 'ONN';
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.log_bin_trust_function_creators = "OFFF";
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.log_bin_trust_function_creators = OF;
-
---echo 'Bug# 34828: OF is also working as OFF and no error is coming';
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.log_bin_trust_function_creators = TTRUE;
--Error ER_WRONG_VALUE_FOR_VAR
@@ -111,7 +105,7 @@ SET @@global.log_bin_trust_function_creators = FELSE;
SET @@global.log_bin_trust_function_creators = -1024;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.log_bin_trust_function_creators = 65536;
---Error ER_WRONG_VALUE_FOR_VAR
+--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.log_bin_trust_function_creators = 65530.34;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.log_bin_trust_function_creators = test;
@@ -122,12 +116,12 @@ SET @@global.log_bin_trust_function_creators = test;
###############################################################################
-SELECT @@global.log_bin_trust_function_creators = VARIABLE_VALUE
+SELECT IF(@@global.log_bin_trust_function_creators, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='log_bin_trust_function_creators';
--Error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT @@session.log_bin_trust_function_creators = VARIABLE_VALUE
+SELECT IF(@@session.log_bin_trust_function_creators, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='log_bin_trust_function_creators';
diff --git a/mysql-test/suite/sys_vars/t/log_bin_trust_routine_creators_basic.test b/mysql-test/suite/sys_vars/t/log_bin_trust_routine_creators_basic.test
deleted file mode 100644
index 1d44c77b1a7..00000000000
--- a/mysql-test/suite/sys_vars/t/log_bin_trust_routine_creators_basic.test
+++ /dev/null
@@ -1,164 +0,0 @@
-############## mysql-test\t\log_bin_trust_routine_creators_basic.test #########
-# #
-# Variable Name: log_bin_trust_routine_creators #
-# Scope: GLOBAL #
-# Access Type: Dynamic #
-# Data Type: boolean #
-# Default Value: False #
-# Range: #
-# #
-# #
-# Creation Date: 2008-02-12 #
-# Author: Salman #
-# #
-# Description: Test Cases of Dynamic System Variable #
-# log_bin_trust_routine_creators that checks the #
-# behavior of this variable in the following ways #
-# * Default Value #
-# * Valid & Invalid values #
-# * Scope & Access method #
-# * Data Integrity #
-# #
-# Reference: (Not given on website) #
-# #
-###############################################################################
-
---source include/load_sysvars.inc
-####################################################################
-# START OF log_bin_trust_routine_creators TESTS #
-####################################################################
-
-
-#############################################################
-# Save initial value #
-#############################################################
-
-SET @start_global_value = @@global.log_bin_trust_routine_creators;
-SELECT @start_global_value;
-
-
---echo '#--------------------FN_DYNVARS_064_01-------------------------#'
-########################################################################
-# Display the DEFAULT value of log_bin_trust_routine_creators #
-########################################################################
-
-SET @@global.log_bin_trust_routine_creators = TRUE;
-SET @@global.log_bin_trust_routine_creators = DEFAULT;
-SELECT @@global.log_bin_trust_routine_creators;
-
-
---echo '#--------------------FN_DYNVARS_064_02-------------------------#'
-##############################################################################
-# Check the DEFAULT value of log_bin_trust_routine_creators #
-##############################################################################
-
-SET @@global.log_bin_trust_routine_creators = DEFAULT;
-SELECT @@global.log_bin_trust_routine_creators = 'FALSE';
-
-
---echo '#--------------------FN_DYNVARS_064_03-------------------------#'
-##################################################################
-# Change the value of variable to a valid value for GLOBAL Scope #
-##################################################################
-
-SET @@global.log_bin_trust_routine_creators = ON;
-SELECT @@global.log_bin_trust_routine_creators;
-SET @@global.log_bin_trust_routine_creators = OFF;
-SELECT @@global.log_bin_trust_routine_creators;
-SET @@global.log_bin_trust_routine_creators = 0;
-SELECT @@global.log_bin_trust_routine_creators;
-SET @@global.log_bin_trust_routine_creators = 1;
-SELECT @@global.log_bin_trust_routine_creators;
-SET @@global.log_bin_trust_routine_creators = TRUE;
-SELECT @@global.log_bin_trust_routine_creators;
-SET @@global.log_bin_trust_routine_creators = FALSE;
-SELECT @@global.log_bin_trust_routine_creators;
-
-
---echo '#-------------------FN_DYNVARS_064_04----------------------------#'
-###########################################################################
-# Test if accessing session log_bin_trust_routine_creators gives error #
-###########################################################################
-
---Error ER_GLOBAL_VARIABLE
-SET @@session.log_bin_trust_routine_creators = 0;
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT @@session.log_bin_trust_routine_creators;
-
-
---echo '#------------------FN_DYNVARS_064_05-----------------------#'
-##########################################################################
-# Change the value of log_bin_trust_routine_creators to an invalid value #
-##########################################################################
-
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@global.log_bin_trust_routine_creators = 'ONN';
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@global.log_bin_trust_routine_creators = "OFFF";
-SET @@global.log_bin_trust_routine_creators = OF;
-SELECT @@global.log_bin_trust_routine_creators;
---echo 'Bug# 34828: OF is also working as OFF and no error is coming';
-
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@global.log_bin_trust_routine_creators = TTRUE;
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@global.log_bin_trust_routine_creators = FELSE;
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@global.log_bin_trust_routine_creators = -1024;
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@global.log_bin_trust_routine_creators = 65536;
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@global.log_bin_trust_routine_creators = 65530.34;
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@global.log_bin_trust_routine_creators = test;
-
-
---echo '#------------------FN_DYNVARS_064_06-----------------------#'
-###############################################################################
-# Check if the value in GLOBAL & SESSION Tables matches value in variable #
-###############################################################################
-
-
-SELECT @@global.log_bin_trust_routine_creators = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='log_bin_trust_routine_creators';
-
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT @@session.log_bin_trust_routine_creators = VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='log_bin_trust_routine_creators';
-
-
---echo '#---------------------FN_DYNVARS_064_07----------------------#'
-#################################################################################
-# Check if accessing variable with and without GLOBAL point to same variable #
-#################################################################################
-
-
-SET @@global.log_bin_trust_routine_creators = TRUE;
-SELECT @@log_bin_trust_routine_creators = @@global.log_bin_trust_routine_creators;
-
-
---echo '#---------------------FN_DYNVARS_064_08----------------------#'
-###################################################################
-# Check if variable can be accessed with and without @@ sign #
-###################################################################
-
-SET @@global.log_bin_trust_routine_creators = TRUE;
-SELECT @@log_bin_trust_routine_creators;
---Error ER_UNKNOWN_TABLE
-SELECT local.log_bin_trust_routine_creators;
---Error ER_UNKNOWN_TABLE
-SELECT session.log_bin_trust_routine_creators;
---Error ER_BAD_FIELD_ERROR
-SELECT log_bin_trust_routine_creators = @@session.log_bin_trust_routine_creators;
-
-
-####################################
-# Restore initial value #
-####################################
-
-SET @@global.log_bin_trust_routine_creators = @start_global_value;
-SELECT @@global.log_bin_trust_routine_creators;
-
-
-###################################################################
-# END OF log_bin_trust_routine_creators TESTS #
-###################################################################
-
diff --git a/mysql-test/suite/sys_vars/t/log_error_basic.test b/mysql-test/suite/sys_vars/t/log_error_basic.test
new file mode 100644
index 00000000000..67bd33cb31b
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/log_error_basic.test
@@ -0,0 +1,18 @@
+#
+# only global
+#
+select @@global.log_error;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.log_error;
+show global variables like 'log_error';
+show session variables like 'log_error';
+select * from information_schema.global_variables where variable_name='log_error';
+select * from information_schema.session_variables where variable_name='log_error';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global log_error=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session log_error=1;
diff --git a/mysql-test/suite/sys_vars/t/log_output_basic.test b/mysql-test/suite/sys_vars/t/log_output_basic.test
index 45998e85480..b45d30f16a3 100644
--- a/mysql-test/suite/sys_vars/t/log_output_basic.test
+++ b/mysql-test/suite/sys_vars/t/log_output_basic.test
@@ -46,10 +46,6 @@ SELECT @start_value;
SET @@global.log_output = FILE;
SET @@global.log_output = DEFAULT;
SELECT @@global.log_output;
---echo 'Bug# 34876: Documentation specifies a DEFAULT value of TABLE whereas';
---echo 'DEFAULT value is FILE. Also note that initial value is different';
---echo 'from DEFAULT';
-
--echo '#---------------------FN_DYNVARS_065_02-------------------------#'
##################################################
@@ -61,9 +57,6 @@ SET @@global.log_output = NULL;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.log_output = "";
-SELECT @@global.log_output;
---echo 'Bug# 34838: Empty value is allowed where as it is not specified in';
---echo 'documentation';
--echo '#--------------------FN_DYNVARS_065_03------------------------#'
########################################################################
@@ -103,9 +96,6 @@ SELECT @@global.log_output;
SET @@global.log_output = ',TABLE';
SELECT @@global.log_output;
-SET @@global.log_output = ',';
-SELECT @@global.log_output;
-
SET @@global.log_output = 'TABLE,,FILE,,,';
SELECT @@global.log_output;
@@ -117,34 +107,26 @@ SELECT @@global.log_output;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.log_output = -1;
+
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.log_output = TAB;
+
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.log_output = NIL;
+
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.log_output = 'FIL';
+
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.log_output = 'T';
# use of space in value
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.log_output = 'TABLE, FILE';
+
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.log_output = ' TABLE,FILE';
-SET @@global.log_output = ', ';
-SELECT @@global.log_output;
-SET @@global.log_output = ' ';
-SELECT @@global.log_output;
-SET @@global.log_output = ' ';
-SELECT @@global.log_output;
-
---echo 'Bug: The behavior of space in value is not consistent.';
---echo 'Some times it is trimmed and some times not.';
---echo 'The space before and after value is not accepted where as space';
---echo 'between comma is accepted.';
-
-
--echo '#-------------------FN_DYNVARS_065_05----------------------------#'
######################################################################
# Test if accessing session log_output gives error #
@@ -208,6 +190,7 @@ SET @@global.log_output = 8;
SET @@global.log_output = TRUE;
SELECT @@global.log_output;
+
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.log_output = FALSE;
SELECT @@global.log_output;
diff --git a/mysql-test/suite/sys_vars/t/log_queries_not_using_indexes_basic.test b/mysql-test/suite/sys_vars/t/log_queries_not_using_indexes_basic.test
index f1152c07176..a726bff08d7 100644
--- a/mysql-test/suite/sys_vars/t/log_queries_not_using_indexes_basic.test
+++ b/mysql-test/suite/sys_vars/t/log_queries_not_using_indexes_basic.test
@@ -56,30 +56,12 @@ SELECT @@global.log_queries_not_using_indexes;
SET GLOBAL log_queries_not_using_indexes= -0;
SELECT @@global.log_queries_not_using_indexes;
+--error ER_WRONG_TYPE_FOR_VAR
SET GLOBAL log_queries_not_using_indexes= 0.00;
-SELECT @@global.log_queries_not_using_indexes;
-
-SET GLOBAL log_queries_not_using_indexes= -0.0;
-SELECT @@global.log_queries_not_using_indexes;
-
-SET GLOBAL log_queries_not_using_indexes= 001.00;
-SELECT @@global.log_queries_not_using_indexes;
-
-SET GLOBAL log_queries_not_using_indexes= +1.0;
-SELECT @@global.log_queries_not_using_indexes;
SET GLOBAL log_queries_not_using_indexes= +0;
SELECT @@global.log_queries_not_using_indexes;
-SET GLOBAL log_queries_not_using_indexes= +0.000000;
-SELECT @@global.log_queries_not_using_indexes;
-
-SET GLOBAL log_queries_not_using_indexes= 0000.00000;
-SELECT @@global.log_queries_not_using_indexes;
-
-SET GLOBAL log_queries_not_using_indexes= .0;
-SELECT @@global.log_queries_not_using_indexes;
-
#################################################################
# Check if the value in GLOBAL Table matches value in variable #
#################################################################
@@ -97,9 +79,6 @@ SET @@global.log_queries_not_using_indexes= BLABLA;
SET @@global.log_queries_not_using_indexes= 25;
--error ER_WRONG_VALUE_FOR_VAR
-SET @@global.log_queries_not_using_indexes= 12.34;
-
---error ER_WRONG_VALUE_FOR_VAR
SET GLOBAL log_queries_not_using_indexes= -1;
SET @badvar= 'true';
@@ -127,6 +106,5 @@ SET @@global log_queries_not_using_indexes= TRUE;
--error ER_PARSE_ERROR
SET @@SESSION log_queries_not_using_indexes= TRUE;
-
SET @@global.log_queries_not_using_indexes= @start_value;
diff --git a/mysql-test/suite/sys_vars/t/log_slave_updates_basic.test b/mysql-test/suite/sys_vars/t/log_slave_updates_basic.test
new file mode 100644
index 00000000000..93212e4f1ae
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/log_slave_updates_basic.test
@@ -0,0 +1,19 @@
+--source include/not_embedded.inc
+#
+# only global
+#
+select @@global.log_slave_updates;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.log_slave_updates;
+show global variables like 'log_slave_updates';
+show session variables like 'log_slave_updates';
+select * from information_schema.global_variables where variable_name='log_slave_updates';
+select * from information_schema.session_variables where variable_name='log_slave_updates';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global log_slave_updates=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session log_slave_updates=1;
diff --git a/mysql-test/suite/sys_vars/t/log_slow_queries_basic.test b/mysql-test/suite/sys_vars/t/log_slow_queries_basic.test
new file mode 100644
index 00000000000..95dda5b73c9
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/log_slow_queries_basic.test
@@ -0,0 +1,170 @@
+##################### mysql-test\t\slow_query_log_basic.test ###################
+# #
+# Variable Name: log_slow_queries #
+# Scope: GLOBAL #
+# Access Type: Dynamic #
+# Data Type: BOOLEAN #
+# Default Value: OFF #
+# Valid Values: ON, OFF #
+# #
+# #
+# Creation Date: 2008-03-16 #
+# Author: Salman Rawala #
+# #
+# Description: Test Cases of Dynamic System Variable "log_slow_queries" #
+# that checks behavior of this variable in the following ways #
+# * Default Value #
+# * Valid & Invalid values #
+# * Scope & Access method #
+# * Data Integrity #
+# #
+# Reference: http://dev.mysql.com/doc/refman/5.1/en/ #
+# server-options.html#option_mysqld_event-scheduler #
+# #
+################################################################################
+
+--source include/load_sysvars.inc
+
+###########################################################
+# START OF log_slow_queries TESTS #
+###########################################################
+
+
+######################################################################
+# Saving initial value of log_slow_queries in a temporary variable #
+######################################################################
+
+SET @start_value = @@global.log_slow_queries;
+SELECT @start_value;
+
+
+--echo '#---------------------FN_DYNVARS_004_01-------------------------#'
+###############################################
+# Verify default value of variable #
+###############################################
+
+SET @@global.log_slow_queries = DEFAULT;
+SELECT @@global.log_slow_queries = 0;
+
+
+--echo '#--------------------FN_DYNVARS_004_02------------------------#'
+######################################################################
+# Change the value of log_slow_queries to a valid value #
+######################################################################
+
+SET @@global.log_slow_queries = ON;
+SELECT @@global.log_slow_queries;
+SET @@global.log_slow_queries = OFF;
+SELECT @@global.log_slow_queries;
+
+--echo '#--------------------FN_DYNVARS_004_03-------------------------#'
+######################################################################
+# Change the value of log_slow_queries to invalid value #
+######################################################################
+
+--Error ER_WRONG_VALUE_FOR_VAR
+SET @@global.log_slow_queries = 2;
+--Error ER_WRONG_VALUE_FOR_VAR
+SET @@global.log_slow_queries = -1;
+--Error ER_WRONG_VALUE_FOR_VAR
+SET @@global.log_slow_queries = TRUEF;
+--Error ER_WRONG_VALUE_FOR_VAR
+SET @@global.log_slow_queries = TRUE_F;
+--Error ER_WRONG_VALUE_FOR_VAR
+SET @@global.log_slow_queries = FALSE0;
+--Error ER_WRONG_VALUE_FOR_VAR
+SET @@global.log_slow_queries = OON;
+--Error ER_WRONG_VALUE_FOR_VAR
+SET @@global.log_slow_queries = ONN;
+--Error ER_WRONG_VALUE_FOR_VAR
+SET @@global.log_slow_queries = OOFF;
+--Error ER_WRONG_VALUE_FOR_VAR
+SET @@global.log_slow_queries = 0FF;
+--Error ER_WRONG_VALUE_FOR_VAR
+SET @@global.log_slow_queries = ' ';
+--Error ER_WRONG_VALUE_FOR_VAR
+SET @@global.log_slow_queries = " ";
+--Error ER_WRONG_VALUE_FOR_VAR
+SET @@global.log_slow_queries = '';
+
+
+--echo '#-------------------FN_DYNVARS_004_04----------------------------#'
+##################################################################
+# Test if accessing session log_slow_queries gives error #
+##################################################################
+
+--Error ER_GLOBAL_VARIABLE
+SET @@session.log_slow_queries = OFF;
+--Error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SELECT @@session.log_slow_queries;
+
+
+--echo '#----------------------FN_DYNVARS_004_05------------------------#'
+##############################################################################
+# Check if the value in GLOBAL Tables matches values in variable #
+##############################################################################
+
+SELECT IF(@@global.log_slow_queries, "ON", "OFF") = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='log_slow_queries';
+
+
+--echo '#---------------------FN_DYNVARS_004_06----------------------#'
+################################################################
+# Check if 0 and 1 values can be used on variable #
+################################################################
+
+SET @@global.log_slow_queries = 0;
+SELECT @@global.log_slow_queries;
+SET @@global.log_slow_queries = 1;
+SELECT @@global.log_slow_queries;
+
+--echo '#---------------------FN_DYNVARS_004_07----------------------#'
+###################################################################
+# Check if TRUE and FALSE values can be used on variable #
+###################################################################
+
+SET @@global.log_slow_queries = TRUE;
+SELECT @@global.log_slow_queries;
+SET @@global.log_slow_queries = FALSE;
+SELECT @@global.log_slow_queries;
+
+--echo '#---------------------FN_DYNVARS_004_08----------------------#'
+##############################################################################
+# Check if accessing variable with SESSION,LOCAL and without SCOPE points #
+# to same session variable #
+##############################################################################
+
+SET @@global.log_slow_queries = ON;
+SELECT @@log_slow_queries = @@global.log_slow_queries;
+
+--echo '#---------------------FN_DYNVARS_004_09----------------------#'
+######################################################################
+# Check if log_slow_queries can be accessed with and without @@ sign #
+######################################################################
+--Error ER_GLOBAL_VARIABLE
+SET log_slow_queries = ON;
+--Error ER_PARSE_ERROR
+SET local.log_slow_queries = OFF;
+--Error ER_UNKNOWN_TABLE
+SELECT local.log_slow_queries;
+--Error ER_PARSE_ERROR
+SET global.log_slow_queries = ON;
+--Error ER_UNKNOWN_TABLE
+SELECT global.log_slow_queries;
+--Error ER_BAD_FIELD_ERROR
+SELECT log_slow_queries = @@session.log_slow_queries;
+
+
+
+##############################
+# Restore initial value #
+##############################
+
+SET @@global.log_slow_queries = @start_value;
+SELECT @@global.log_slow_queries;
+
+
+####################################################
+# END OF log_slow_queries TESTS #
+####################################################
diff --git a/mysql-test/suite/sys_vars/t/long_query_time_basic.test b/mysql-test/suite/sys_vars/t/long_query_time_basic.test
index c21e0a751c1..492ccfbc617 100644
--- a/mysql-test/suite/sys_vars/t/long_query_time_basic.test
+++ b/mysql-test/suite/sys_vars/t/long_query_time_basic.test
@@ -109,8 +109,7 @@ SET @@global.long_query_time = 100000000000;
SELECT @@global.long_query_time;
SET @@global.long_query_time = -1;
SELECT @@global.long_query_time;
---Error ER_PARSE_ERROR
-SET @@global.long_query_time = 65530.34.;
+SET @@global.long_query_time = 65530.34;
SELECT @@global.long_query_time;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.long_query_time = test;
@@ -120,9 +119,8 @@ SET @@session.long_query_time = 100000000000;
SELECT @@session.long_query_time;
SET @@session.long_query_time = -2;
SELECT @@session.long_query_time;
---Error ER_PARSE_ERROR
-SET @@session.long_query_time = 65530.34.;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
+SET @@session.long_query_time = 65530.34;
+SELECT @@session.long_query_time;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.long_query_time = test;
diff --git a/mysql-test/suite/sys_vars/t/low_priority_updates_basic.test b/mysql-test/suite/sys_vars/t/low_priority_updates_basic.test
index 0ce4ee8f921..e00688ef974 100644
--- a/mysql-test/suite/sys_vars/t/low_priority_updates_basic.test
+++ b/mysql-test/suite/sys_vars/t/low_priority_updates_basic.test
@@ -122,7 +122,7 @@ SET @@global.low_priority_updates = FELSE;
SET @@global.low_priority_updates = -1024;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.low_priority_updates = 65536;
---Error ER_WRONG_VALUE_FOR_VAR
+--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.low_priority_updates = 65530.34;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.low_priority_updates = test;
@@ -131,20 +131,16 @@ SET @@global.low_priority_updates = test;
SET @@session.low_priority_updates = ONN;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.low_priority_updates = ONF;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.low_priority_updates = OF;
-SELECT @@session.low_priority_updates;
---echo 'Bug# 34828: OF is also working as OFF and no error is coming';
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.low_priority_updates = 'OFN';
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.low_priority_updates = -2;
---Error ER_PARSE_ERROR
-SET @@session.low_priority_updates = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.low_priority_updates = 65530.34;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.low_priority_updates = 65550;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.low_priority_updates = test;
@@ -156,7 +152,7 @@ SET @@session.low_priority_updates = test;
####################################################################
-SELECT @@global.low_priority_updates = VARIABLE_VALUE
+SELECT IF(@@global.low_priority_updates, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='low_priority_updates';
@@ -165,7 +161,7 @@ WHERE VARIABLE_NAME='low_priority_updates';
# Check if the value in SESSION Table matches value in variable #
####################################################################
-SELECT @@session.low_priority_updates = VARIABLE_VALUE
+SELECT IF(@@session.low_priority_updates, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='low_priority_updates';
diff --git a/mysql-test/suite/sys_vars/t/lower_case_file_system_basic.test b/mysql-test/suite/sys_vars/t/lower_case_file_system_basic.test
new file mode 100644
index 00000000000..6c15f188880
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/lower_case_file_system_basic.test
@@ -0,0 +1,23 @@
+#
+# only global
+#
+select @@global.lower_case_file_system=2;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.lower_case_file_system;
+--replace_column 2 #
+show global variables like 'lower_case_file_system';
+--replace_column 2 #
+show session variables like 'lower_case_file_system';
+--replace_column 2 #
+select * from information_schema.global_variables where variable_name='lower_case_file_system';
+--replace_column 2 #
+select * from information_schema.session_variables where variable_name='lower_case_file_system';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global lower_case_file_system=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session lower_case_file_system=1;
+
diff --git a/mysql-test/suite/sys_vars/t/lower_case_table_names_basic.test b/mysql-test/suite/sys_vars/t/lower_case_table_names_basic.test
new file mode 100644
index 00000000000..8d6a3bb5ca6
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/lower_case_table_names_basic.test
@@ -0,0 +1,23 @@
+#
+# only global
+#
+select @@global.lower_case_table_names=20;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.lower_case_table_names;
+--replace_column 2 #
+show global variables like 'lower_case_table_names';
+--replace_column 2 #
+show session variables like 'lower_case_table_names';
+--replace_column 2 #
+select * from information_schema.global_variables where variable_name='lower_case_table_names';
+--replace_column 2 #
+select * from information_schema.session_variables where variable_name='lower_case_table_names';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global lower_case_table_names=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session lower_case_table_names=1;
+
diff --git a/mysql-test/suite/sys_vars/t/max_allowed_packet_basic.test b/mysql-test/suite/sys_vars/t/max_allowed_packet_basic.test
index 8be0e5f670e..93303b78639 100644
--- a/mysql-test/suite/sys_vars/t/max_allowed_packet_basic.test
+++ b/mysql-test/suite/sys_vars/t/max_allowed_packet_basic.test
@@ -56,7 +56,7 @@ SELECT @@global.max_allowed_packet;
--Error ER_VARIABLE_IS_READONLY
SET @@session.max_allowed_packet = 20000;
---Error ER_NO_DEFAULT
+--Error ER_VARIABLE_IS_READONLY
SET @@session.max_allowed_packet = DEFAULT;
SELECT @@session.max_allowed_packet;
@@ -79,7 +79,6 @@ SET @@global.max_allowed_packet = 1024;
SELECT @@global.max_allowed_packet;
SET @@global.max_allowed_packet = 1025;
SELECT @@global.max_allowed_packet;
---echo : 'Bug# 34841: "Invalid values are coming in variable on assigning valid value';
SET @@global.max_allowed_packet = 1073741824;
SELECT @@global.max_allowed_packet;
SET @@global.max_allowed_packet = 1073741823;
@@ -120,8 +119,8 @@ SET @@global.max_allowed_packet = 1023;
SELECT @@global.max_allowed_packet;
SET @@global.max_allowed_packet = 10737418241;
SELECT @@global.max_allowed_packet;
---Error ER_PARSE_ERROR
-SET @@global.max_allowed_packet = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.max_allowed_packet = 65530.34;
SELECT @@global.max_allowed_packet;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_allowed_packet = test;
@@ -136,12 +135,11 @@ SELECT @@session.max_allowed_packet;
--Error ER_VARIABLE_IS_READONLY
SET @@session.max_allowed_packet = -2;
SELECT @@session.max_allowed_packet;
---Error ER_PARSE_ERROR
-SET @@session.max_allowed_packet = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.max_allowed_packet = 65530.34;
--Error ER_VARIABLE_IS_READONLY
SET @@session.max_allowed_packet = 10737418241;
SELECT @@session.max_allowed_packet;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.max_allowed_packet = test;
diff --git a/mysql-test/suite/sys_vars/inc/max_binlog_cache_size_basic.inc b/mysql-test/suite/sys_vars/t/max_binlog_cache_size_basic.test
index 9f3416d2e31..158c21a9489 100644
--- a/mysql-test/suite/sys_vars/inc/max_binlog_cache_size_basic.inc
+++ b/mysql-test/suite/sys_vars/t/max_binlog_cache_size_basic.test
@@ -58,7 +58,6 @@ SELECT @@global.max_binlog_cache_size;
SET @@global.max_binlog_cache_size = @start_value;
SELECT @@global.max_binlog_cache_size = 4294967295;
---echo 'Bug# 34876: Incorrect Default Value is assigned to variable';
--echo '#--------------------FN_DYNVARS_072_03------------------------#'
########################################################################
@@ -75,7 +74,6 @@ SET @@global.max_binlog_cache_size = 4097;
SELECT @@global.max_binlog_cache_size;
SET @@global.max_binlog_cache_size = 65535;
SELECT @@global.max_binlog_cache_size;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
--echo '#--------------------FN_DYNVARS_072_04-------------------------#'
@@ -99,8 +97,6 @@ SELECT @@global.max_binlog_cache_size;
SET @@global.max_binlog_cache_size = 4095;
SELECT @@global.max_binlog_cache_size;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_binlog_cache_size = ON;
SELECT @@global.max_binlog_cache_size;
diff --git a/mysql-test/suite/sys_vars/t/max_binlog_cache_size_basic_32.test b/mysql-test/suite/sys_vars/t/max_binlog_cache_size_basic_32.test
deleted file mode 100644
index 51386b1f994..00000000000
--- a/mysql-test/suite/sys_vars/t/max_binlog_cache_size_basic_32.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 32 bit machines #
-################################################################################
-
---source include/have_32bit.inc
---source suite/sys_vars/inc/max_binlog_cache_size_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/max_binlog_cache_size_basic_64.test b/mysql-test/suite/sys_vars/t/max_binlog_cache_size_basic_64.test
deleted file mode 100644
index c7c757341fa..00000000000
--- a/mysql-test/suite/sys_vars/t/max_binlog_cache_size_basic_64.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 64 bit machines #
-################################################################################
-
---source include/have_64bit.inc
---source suite/sys_vars/inc/max_binlog_cache_size_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/max_binlog_size_basic.test b/mysql-test/suite/sys_vars/t/max_binlog_size_basic.test
index 11d01b5c10f..4d2574a7890 100644
--- a/mysql-test/suite/sys_vars/t/max_binlog_size_basic.test
+++ b/mysql-test/suite/sys_vars/t/max_binlog_size_basic.test
@@ -45,7 +45,6 @@ SELECT @start_value;
SET @@global.max_binlog_size = 5000;
SET @@global.max_binlog_size = DEFAULT;
SELECT @@global.max_binlog_size;
---echo 'Bug# 34878: This variable has invalid default value as compared to documentation';
--echo '#---------------------FN_DYNVARS_072_02-------------------------#'
###############################################
@@ -70,7 +69,6 @@ SET @@global.max_binlog_size = 4097;
SELECT @@global.max_binlog_size;
SET @@global.max_binlog_size = 65535;
SELECT @@global.max_binlog_size;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
--echo '#--------------------FN_DYNVARS_072_04-------------------------#'
@@ -94,8 +92,6 @@ SELECT @@global.max_binlog_size;
SET @@global.max_binlog_size = 4095;
SELECT @@global.max_binlog_size;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_binlog_size = ON;
SELECT @@global.max_binlog_size;
diff --git a/mysql-test/suite/sys_vars/t/max_connections_basic.test b/mysql-test/suite/sys_vars/t/max_connections_basic.test
index ffc964db28f..346f7d8f460 100644
--- a/mysql-test/suite/sys_vars/t/max_connections_basic.test
+++ b/mysql-test/suite/sys_vars/t/max_connections_basic.test
@@ -46,8 +46,6 @@ SELECT @start_value;
SET @@global.max_connections = 5000;
SET @@global.max_connections = DEFAULT;
SELECT @@global.max_connections;
---echo 'Bug# 34876: This variable has invalid default value as compared to documentation';
-
--echo '#---------------------FN_DYNVARS_074_02-------------------------#'
###############################################
@@ -73,7 +71,6 @@ SET @@global.max_connections = 1;
SELECT @@global.max_connections;
SET @@global.max_connections = 2;
SELECT @@global.max_connections;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
--echo '#--------------------FN_DYNVARS_074_04-------------------------#'
@@ -95,8 +92,6 @@ SELECT @@global.max_connections;
SET @@global.max_connections = 100001;
SELECT @@global.max_connections;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_connections = ON;
SELECT @@global.max_connections;
diff --git a/mysql-test/suite/sys_vars/t/max_delayed_threads_basic.test b/mysql-test/suite/sys_vars/t/max_delayed_threads_basic.test
index dc908c8396b..43947500339 100644
--- a/mysql-test/suite/sys_vars/t/max_delayed_threads_basic.test
+++ b/mysql-test/suite/sys_vars/t/max_delayed_threads_basic.test
@@ -51,7 +51,6 @@ SELECT @@global.max_delayed_threads;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.max_delayed_threads = 1000;
---echo 'Bug# 34882: Valid values are not allowed to assign in this variable';
SET @@session.max_delayed_threads = DEFAULT;
SELECT @@session.max_delayed_threads;
@@ -77,7 +76,6 @@ SET @@global.max_delayed_threads = 1;
SELECT @@global.max_delayed_threads;
SET @@global.max_delayed_threads = 1025;
SELECT @@global.max_delayed_threads;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
SET @@global.max_delayed_threads = 0;
SELECT @@global.max_delayed_threads;
@@ -119,24 +117,20 @@ SET @@global.max_delayed_threads = -1;
SELECT @@global.max_delayed_threads;
SET @@global.max_delayed_threads = 16385;
SELECT @@global.max_delayed_threads;
---Error ER_PARSE_ERROR
-SET @@global.max_delayed_threads = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.max_delayed_threads = 65530.34;
SELECT @@global.max_delayed_threads;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_delayed_threads = test;
SELECT @@global.max_delayed_threads;
---Error ER_WRONG_VALUE_FOR_VAR
SET @@session.max_delayed_threads = 16385;
SELECT @@session.max_delayed_threads;
---Error ER_WRONG_VALUE_FOR_VAR
SET @@session.max_delayed_threads = -1;
SELECT @@session.max_delayed_threads;
---Error ER_WRONG_VALUE_FOR_VAR
SET @@session.max_delayed_threads = -2;
SELECT @@session.max_delayed_threads;
---Error ER_PARSE_ERROR
-SET @@session.max_delayed_threads = 65530.34.;
---Error ER_WRONG_VALUE_FOR_VAR
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.max_delayed_threads = 65530.34;
SET @@session.max_delayed_threads = 10737418241;
SELECT @@session.max_delayed_threads;
diff --git a/mysql-test/suite/sys_vars/t/max_error_count_basic.test b/mysql-test/suite/sys_vars/t/max_error_count_basic.test
index 2b1e12843cf..987cc1592df 100644
--- a/mysql-test/suite/sys_vars/t/max_error_count_basic.test
+++ b/mysql-test/suite/sys_vars/t/max_error_count_basic.test
@@ -75,7 +75,6 @@ SET @@global.max_error_count = 1;
SELECT @@global.max_error_count;
SET @@global.max_error_count = 0;
SELECT @@global.max_error_count;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
SET @@global.max_error_count = 65535;
SELECT @@global.max_error_count;
@@ -110,8 +109,8 @@ SET @@global.max_error_count = 65536;
SELECT @@global.max_error_count;
SET @@global.max_error_count = 10737418241;
SELECT @@global.max_error_count;
---Error ER_PARSE_ERROR
-SET @@global.max_error_count = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.max_error_count = 65530.34;
SELECT @@global.max_error_count;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_error_count = test;
@@ -123,11 +122,10 @@ SET @@session.max_error_count = 65536;
SELECT @@session.max_error_count;
SET @@session.max_error_count = -2;
SELECT @@session.max_error_count;
---Error ER_PARSE_ERROR
-SET @@session.max_error_count = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.max_error_count = 65530.34;
SET @@session.max_error_count = 10737418241;
SELECT @@session.max_error_count;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.max_error_count = test;
diff --git a/mysql-test/suite/sys_vars/inc/max_heap_table_size_basic.inc b/mysql-test/suite/sys_vars/t/max_heap_table_size_basic.test
index d07ae094cde..4b9c7cf3b8e 100644
--- a/mysql-test/suite/sys_vars/inc/max_heap_table_size_basic.inc
+++ b/mysql-test/suite/sys_vars/t/max_heap_table_size_basic.test
@@ -81,8 +81,6 @@ SET @@global.max_heap_table_size = 4294967294;
SELECT @@global.max_heap_table_size;
SET @@global.max_heap_table_size = 4294967295;
SELECT @@global.max_heap_table_size;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
-
--echo '#--------------------FN_DYNVARS_077_04-------------------------#'
#############################################################################
@@ -99,8 +97,6 @@ SET @@session.max_heap_table_size = 4294967294;
SELECT @@session.max_heap_table_size;
SET @@session.max_heap_table_size = 4294967295;
SELECT @@session.max_heap_table_size;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
-
--echo '#------------------FN_DYNVARS_077_05-----------------------#'
##############################################################
@@ -117,8 +113,8 @@ SET @@global.max_heap_table_size = 16383;
SELECT @@global.max_heap_table_size;
SET @@global.max_heap_table_size = 4294967296;
SELECT @@global.max_heap_table_size;
---Error ER_PARSE_ERROR
-SET @@global.max_heap_table_size = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.max_heap_table_size = 65530.34;
SELECT @@global.max_heap_table_size;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_heap_table_size = test;
@@ -130,11 +126,10 @@ SET @@session.max_heap_table_size = 16383;
SELECT @@session.max_heap_table_size;
SET @@session.max_heap_table_size = 4294967296;
SELECT @@session.max_heap_table_size;
---Error ER_PARSE_ERROR
-SET @@session.max_heap_table_size = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.max_heap_table_size = 65530.34;
SET @@session.max_heap_table_size = 10737418241;
SELECT @@session.max_heap_table_size;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.max_heap_table_size = test;
diff --git a/mysql-test/suite/sys_vars/t/max_heap_table_size_basic_32.test b/mysql-test/suite/sys_vars/t/max_heap_table_size_basic_32.test
deleted file mode 100644
index 180c41a5ecf..00000000000
--- a/mysql-test/suite/sys_vars/t/max_heap_table_size_basic_32.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 32 bit machines #
-################################################################################
-
---source include/have_32bit.inc
---source suite/sys_vars/inc/max_heap_table_size_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/max_heap_table_size_basic_64.test b/mysql-test/suite/sys_vars/t/max_heap_table_size_basic_64.test
deleted file mode 100644
index 89d234f5399..00000000000
--- a/mysql-test/suite/sys_vars/t/max_heap_table_size_basic_64.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 64 bit machines #
-################################################################################
-
---source include/have_64bit.inc
---source suite/sys_vars/inc/max_heap_table_size_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/max_insert_delayed_threads_basic.test b/mysql-test/suite/sys_vars/t/max_insert_delayed_threads_basic.test
index d165ddc11fe..3646743a9ae 100644
--- a/mysql-test/suite/sys_vars/t/max_insert_delayed_threads_basic.test
+++ b/mysql-test/suite/sys_vars/t/max_insert_delayed_threads_basic.test
@@ -1,17 +1,17 @@
############## mysql-test\t\max_insert_delayed_threads_basic.test ###############
# #
-# Variable Name: max_insert_delayed_threads #
+# Variable Name: max_insert_delayed_threads #
# Scope: GLOBAL | SESSION #
# Access Type: Dynamic #
-# Data Type: numeric #
-# Default Value: - #
-# Range: - #
+# Data Type: numeric #
+# Default Value: 20 #
+# Range: 0-16384 #
# #
# #
# Creation Date: 2008-02-07 #
-# Author: Salman #
+# Author: Salman #
# #
-# Description: Test Cases of Dynamic System Variable max_insert_delayed_threads #
+# Description: Test Cases of Dynamic System Variable max_insert_delayed_threads #
# that checks the behavior of this variable in the following ways#
# * Default Value #
# * Valid & Invalid values #
@@ -26,7 +26,7 @@
--source include/load_sysvars.inc
##################################################################
-# START OF max_insert_delayed_threads TESTS #
+# START OF max_insert_delayed_threads TESTS #
##################################################################
@@ -40,47 +40,42 @@ SET @start_session_value = @@session.max_insert_delayed_threads;
SELECT @start_session_value;
---echo '#--------------------FN_DYNVARS_078_01-------------------------#'
+--echo '#--------------------FN_DYNVARS_075_01-------------------------#'
##################################################################
-# Display the DEFAULT value of max_insert_delayed_threads #
+# Display the DEFAULT value of max_insert_delayed_threads #
##################################################################
SET @@global.max_insert_delayed_threads = 1000;
---Error ER_NO_DEFAULT
SET @@global.max_insert_delayed_threads = DEFAULT;
SELECT @@global.max_insert_delayed_threads;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.max_insert_delayed_threads = 1000;
SET @@session.max_insert_delayed_threads = DEFAULT;
SELECT @@session.max_insert_delayed_threads;
---echo '#--------------------FN_DYNVARS_078_02-------------------------#'
+--echo '#--------------------FN_DYNVARS_075_02-------------------------#'
##################################################################
-# Check the DEFAULT value of max_insert_delayed_threads #
+# Check the DEFAULT value of max_insert_delayed_threads #
##################################################################
---Error ER_NO_DEFAULT
SET @@global.max_insert_delayed_threads = DEFAULT;
SELECT @@global.max_insert_delayed_threads = 20;
SET @@session.max_insert_delayed_threads = DEFAULT;
SELECT @@session.max_insert_delayed_threads = 20;
---echo 'Bug# 34876: This variable has invalid default value as compared to documentation';
---echo '#--------------------FN_DYNVARS_078_03-------------------------#'
-###############################################################$$$$$$$$#############
+--echo '#--------------------FN_DYNVARS_075_03-------------------------#'
+############################################################################
# Change the value of max_insert_delayed_threads to a valid value for GLOBAL Scope #
-###############################################################$$$$$$$$#############
+############################################################################
SET @@global.max_insert_delayed_threads = 1;
SELECT @@global.max_insert_delayed_threads;
SET @@global.max_insert_delayed_threads = 1025;
SELECT @@global.max_insert_delayed_threads;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
-
SET @@global.max_insert_delayed_threads = 0;
SELECT @@global.max_insert_delayed_threads;
SET @@global.max_insert_delayed_threads = 16384;
@@ -88,10 +83,10 @@ SELECT @@global.max_insert_delayed_threads;
SET @@global.max_insert_delayed_threads = 16383;
SELECT @@global.max_insert_delayed_threads;
---echo '#--------------------FN_DYNVARS_078_04-------------------------#'
-#####################################################################################
+--echo '#--------------------FN_DYNVARS_075_04-------------------------#'
+#############################################################################
# Change the value of max_insert_delayed_threads to a valid value for SESSION Scope #
-#####################################################################################
+#############################################################################
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.max_insert_delayed_threads = 1;
@@ -99,7 +94,7 @@ SELECT @@session.max_insert_delayed_threads;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.max_insert_delayed_threads = 1025;
SELECT @@session.max_insert_delayed_threads;
-
+
SET @@session.max_insert_delayed_threads = 0;
SELECT @@session.max_insert_delayed_threads;
--Error ER_WRONG_VALUE_FOR_VAR
@@ -110,10 +105,10 @@ SET @@session.max_insert_delayed_threads = 16383;
SELECT @@session.max_insert_delayed_threads;
---echo '#------------------FN_DYNVARS_078_05-----------------------#'
-######################################################################
+--echo '#------------------FN_DYNVARS_075_05-----------------------#'
+##############################################################
# Change the value of max_insert_delayed_threads to an invalid value #
-######################################################################
+##############################################################
SET @@global.max_insert_delayed_threads = -1024;
SELECT @@global.max_insert_delayed_threads;
@@ -121,24 +116,20 @@ SET @@global.max_insert_delayed_threads = -1;
SELECT @@global.max_insert_delayed_threads;
SET @@global.max_insert_delayed_threads = 16385;
SELECT @@global.max_insert_delayed_threads;
---Error ER_PARSE_ERROR
-SET @@global.max_insert_delayed_threads = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.max_insert_delayed_threads = 65530.34;
SELECT @@global.max_insert_delayed_threads;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_insert_delayed_threads = test;
SELECT @@global.max_insert_delayed_threads;
---Error ER_WRONG_VALUE_FOR_VAR
SET @@session.max_insert_delayed_threads = 16385;
SELECT @@session.max_insert_delayed_threads;
---Error ER_WRONG_VALUE_FOR_VAR
SET @@session.max_insert_delayed_threads = -1;
SELECT @@session.max_insert_delayed_threads;
---Error ER_WRONG_VALUE_FOR_VAR
SET @@session.max_insert_delayed_threads = -2;
SELECT @@session.max_insert_delayed_threads;
---Error ER_PARSE_ERROR
-SET @@session.max_insert_delayed_threads = 65530.34.;
---Error ER_WRONG_VALUE_FOR_VAR
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.max_insert_delayed_threads = 65530.34;
SET @@session.max_insert_delayed_threads = 10737418241;
SELECT @@session.max_insert_delayed_threads;
@@ -148,7 +139,7 @@ SET @@session.max_insert_delayed_threads = test;
SELECT @@session.max_insert_delayed_threads;
---echo '#------------------FN_DYNVARS_078_06-----------------------#'
+--echo '#------------------FN_DYNVARS_075_06-----------------------#'
####################################################################
# Check if the value in GLOBAL Table matches value in variable #
####################################################################
@@ -158,7 +149,7 @@ SELECT @@global.max_insert_delayed_threads = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='max_insert_delayed_threads';
---echo '#------------------FN_DYNVARS_078_07-----------------------#'
+--echo '#------------------FN_DYNVARS_075_07-----------------------#'
####################################################################
# Check if the value in SESSION Table matches value in variable #
####################################################################
@@ -168,7 +159,7 @@ FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='max_insert_delayed_threads';
---echo '#------------------FN_DYNVARS_078_08-----------------------#'
+--echo '#------------------FN_DYNVARS_075_08-----------------------#'
####################################################################
# Check if TRUE and FALSE values can be used on variable #
####################################################################
@@ -179,7 +170,7 @@ SET @@global.max_insert_delayed_threads = FALSE;
SELECT @@global.max_insert_delayed_threads;
---echo '#---------------------FN_DYNVARS_078_09----------------------#'
+--echo '#---------------------FN_DYNVARS_001_09----------------------#'
#################################################################################
# Check if accessing variable with and without GLOBAL point to same variable #
#################################################################################
@@ -188,7 +179,7 @@ SET @@global.max_insert_delayed_threads = 2048;
SELECT @@max_insert_delayed_threads = @@global.max_insert_delayed_threads;
---echo '#---------------------FN_DYNVARS_078_10----------------------#'
+--echo '#---------------------FN_DYNVARS_001_10----------------------#'
########################################################################################################
# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable #
########################################################################################################
@@ -199,10 +190,10 @@ SELECT @@max_insert_delayed_threads = @@local.max_insert_delayed_threads;
SELECT @@local.max_insert_delayed_threads = @@session.max_insert_delayed_threads;
---echo '#---------------------FN_DYNVARS_078_11----------------------#'
-#####################################################################################
+--echo '#---------------------FN_DYNVARS_001_11----------------------#'
+#############################################################################
# Check if max_insert_delayed_threads can be accessed with and without @@ sign #
-#####################################################################################
+#############################################################################
--Error ER_WRONG_VALUE_FOR_VAR
SET max_insert_delayed_threads = 1024;
@@ -225,7 +216,7 @@ SET @@session.max_insert_delayed_threads = @start_session_value;
SELECT @@session.max_insert_delayed_threads;
-###############################################################
+#######################################################
# END OF max_insert_delayed_threads TESTS #
-###############################################################
+#######################################################
diff --git a/mysql-test/suite/sys_vars/t/max_join_size_basic.test b/mysql-test/suite/sys_vars/t/max_join_size_basic.test
new file mode 100644
index 00000000000..7566ab11520
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/max_join_size_basic.test
@@ -0,0 +1,42 @@
+SET @start_global_value = @@global.max_join_size;
+SELECT @start_global_value;
+
+#
+# exists as global and session
+#
+select @@global.max_join_size;
+select @@session.max_join_size;
+show global variables like 'max_join_size';
+show session variables like 'max_join_size';
+select * from information_schema.global_variables where variable_name='max_join_size';
+select * from information_schema.session_variables where variable_name='max_join_size';
+
+#
+# show that it's writable
+#
+set global max_join_size=10;
+select @@global.max_join_size;
+set session max_join_size=20;
+select @@session.max_join_size;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global max_join_size=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global max_join_size=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global max_join_size="foo";
+
+#
+# affects OPTION_BIG_SELECTS
+#
+select @@sql_big_selects;
+set max_join_size=cast(-1 as unsigned int);
+select @@sql_big_selects;
+set max_join_size=100;
+select @@sql_big_selects;
+
+SET @@global.max_join_size = @start_global_value;
+SELECT @@global.max_join_size;
diff --git a/mysql-test/suite/sys_vars/t/max_length_for_sort_data_basic.test b/mysql-test/suite/sys_vars/t/max_length_for_sort_data_basic.test
index 682e14146d7..167c2052d11 100644
--- a/mysql-test/suite/sys_vars/t/max_length_for_sort_data_basic.test
+++ b/mysql-test/suite/sys_vars/t/max_length_for_sort_data_basic.test
@@ -118,8 +118,8 @@ SET @@global.max_length_for_sort_data = 8388609;
SELECT @@global.max_length_for_sort_data;
SET @@global.max_length_for_sort_data = 0;
SELECT @@global.max_length_for_sort_data;
---Error ER_PARSE_ERROR
-SET @@global.max_length_for_sort_data = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.max_length_for_sort_data = 65530.34;
SELECT @@global.max_length_for_sort_data;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_length_for_sort_data = test;
@@ -133,8 +133,8 @@ SET @@session.max_length_for_sort_data = 3;
SELECT @@session.max_length_for_sort_data;
SET @@session.max_length_for_sort_data = 0;
SELECT @@session.max_length_for_sort_data;
---Error ER_PARSE_ERROR
-SET @@session.max_length_for_sort_data = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.max_length_for_sort_data = 65530.34;
SET @@session.max_length_for_sort_data = 10737418241;
SELECT @@session.max_length_for_sort_data;
--Error ER_WRONG_TYPE_FOR_VAR
diff --git a/mysql-test/suite/sys_vars/t/max_prepared_stmt_count_basic.test b/mysql-test/suite/sys_vars/t/max_prepared_stmt_count_basic.test
index 2206a388abb..5bf5d9c8834 100644
--- a/mysql-test/suite/sys_vars/t/max_prepared_stmt_count_basic.test
+++ b/mysql-test/suite/sys_vars/t/max_prepared_stmt_count_basic.test
@@ -97,8 +97,6 @@ SELECT @@global.max_prepared_stmt_count;
SET @@global.max_prepared_stmt_count = 104857612;
SELECT @@global.max_prepared_stmt_count;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_prepared_stmt_count = ON;
SELECT @@global.max_prepared_stmt_count;
diff --git a/mysql-test/suite/sys_vars/t/max_relay_log_size_basic.test b/mysql-test/suite/sys_vars/t/max_relay_log_size_basic.test
index b780aa2b444..e39778baca8 100644
--- a/mysql-test/suite/sys_vars/t/max_relay_log_size_basic.test
+++ b/mysql-test/suite/sys_vars/t/max_relay_log_size_basic.test
@@ -56,8 +56,6 @@ SELECT @@global.max_relay_log_size;
SET @@global.max_relay_log_size = @start_value;
SELECT @@global.max_relay_log_size = 1024;
---echo 'Bug# 34876: This variable has invalid default value as compared to documentation';
-
--echo '#--------------------FN_DYNVARS_082_03------------------------#'
#####################################################################
@@ -74,7 +72,6 @@ SET @@global.max_relay_log_size = 1073741823;
SELECT @@global.max_relay_log_size;
SET @@global.max_relay_log_size = 65535;
SELECT @@global.max_relay_log_size;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
--echo '#--------------------FN_DYNVARS_082_04-------------------------#'
########################################################################
@@ -95,8 +92,6 @@ SELECT @@global.max_relay_log_size;
SET @@global.max_relay_log_size = 10737418241;
SELECT @@global.max_relay_log_size;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_relay_log_size = ON;
SELECT @@global.max_relay_log_size;
diff --git a/mysql-test/suite/sys_vars/t/max_sort_length_basic.test b/mysql-test/suite/sys_vars/t/max_sort_length_basic.test
index 1198d7b1851..9c3b88d3c3c 100644
--- a/mysql-test/suite/sys_vars/t/max_sort_length_basic.test
+++ b/mysql-test/suite/sys_vars/t/max_sort_length_basic.test
@@ -119,8 +119,8 @@ SET @@global.max_sort_length = 8388609;
SELECT @@global.max_sort_length;
SET @@global.max_sort_length = 0;
SELECT @@global.max_sort_length;
---Error ER_PARSE_ERROR
-SET @@global.max_sort_length = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.max_sort_length = 65530.34;
SELECT @@global.max_sort_length;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_sort_length = test;
@@ -134,8 +134,8 @@ SET @@session.max_sort_length = 3;
SELECT @@session.max_sort_length;
SET @@session.max_sort_length = 0;
SELECT @@session.max_sort_length;
---Error ER_PARSE_ERROR
-SET @@session.max_sort_length = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.max_sort_length = 65530.34;
SET @@session.max_sort_length = 10737418241;
SELECT @@session.max_sort_length;
--Error ER_WRONG_TYPE_FOR_VAR
diff --git a/mysql-test/suite/sys_vars/t/max_sp_recursion_depth_basic.test b/mysql-test/suite/sys_vars/t/max_sp_recursion_depth_basic.test
index 8089951c8a2..1d3d69548f8 100644
--- a/mysql-test/suite/sys_vars/t/max_sp_recursion_depth_basic.test
+++ b/mysql-test/suite/sys_vars/t/max_sp_recursion_depth_basic.test
@@ -119,8 +119,8 @@ SET @@global.max_sp_recursion_depth = -1;
SELECT @@global.max_sp_recursion_depth;
SET @@global.max_sp_recursion_depth = 3000;
SELECT @@global.max_sp_recursion_depth;
---Error ER_PARSE_ERROR
-SET @@global.max_sp_recursion_depth = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.max_sp_recursion_depth = 65530.34;
SELECT @@global.max_sp_recursion_depth;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_sp_recursion_depth = test;
@@ -134,8 +134,8 @@ SET @@session.max_sp_recursion_depth = 500000;
SELECT @@session.max_sp_recursion_depth;
SET @@session.max_sp_recursion_depth = -001;
SELECT @@session.max_sp_recursion_depth;
---Error ER_PARSE_ERROR
-SET @@session.max_sp_recursion_depth = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.max_sp_recursion_depth = 65530.34;
SET @@session.max_sp_recursion_depth = 10737418241;
SELECT @@session.max_sp_recursion_depth;
--Error ER_WRONG_TYPE_FOR_VAR
diff --git a/mysql-test/suite/sys_vars/t/max_user_connections_basic.test b/mysql-test/suite/sys_vars/t/max_user_connections_basic.test
index eb231bd8076..1adcc012bc4 100644
--- a/mysql-test/suite/sys_vars/t/max_user_connections_basic.test
+++ b/mysql-test/suite/sys_vars/t/max_user_connections_basic.test
@@ -49,12 +49,8 @@ SET @@global.max_user_connections = 1000;
SET @@global.max_user_connections = DEFAULT;
SELECT @@global.max_user_connections;
---Error ER_GLOBAL_VARIABLE
+--Error ER_VARIABLE_IS_READONLY
SET @@session.max_user_connections = 1000;
---Error ER_NO_DEFAULT
-SET @@session.max_user_connections = DEFAULT;
-SELECT @@session.max_user_connections;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--echo '#--------------------FN_DYNVARS_087_02-------------------------#'
@@ -65,10 +61,9 @@ SELECT @@session.max_user_connections;
SET @@global.max_user_connections = DEFAULT;
SELECT @@global.max_user_connections = 0;
---Error ER_NO_DEFAULT
+--Error ER_VARIABLE_IS_READONLY
SET @@session.max_user_connections = DEFAULT;
-SELECT @@session.max_user_connections = 0;
-
+SELECT @@session.max_user_connections;
--echo '#--------------------FN_DYNVARS_087_03-------------------------#'
@@ -102,8 +97,8 @@ SET @@global.max_user_connections = -1;
SELECT @@global.max_user_connections;
SET @@global.max_user_connections = 429496729500;
SELECT @@global.max_user_connections;
---Error ER_PARSE_ERROR
-SET @@global.max_user_connections = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.max_user_connections = 65530.34;
SELECT @@global.max_user_connections;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_user_connections = test;
diff --git a/mysql-test/suite/sys_vars/t/maximum_basic-master.opt b/mysql-test/suite/sys_vars/t/maximum_basic-master.opt
new file mode 100644
index 00000000000..b6e5666f4fb
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/maximum_basic-master.opt
@@ -0,0 +1,3 @@
+--maximum-auto-increment-increment=8192
+--maximum-tmp-table-size=8192
+--maximum-max-join-size=8192
diff --git a/mysql-test/suite/sys_vars/t/maximum_basic.test b/mysql-test/suite/sys_vars/t/maximum_basic.test
new file mode 100644
index 00000000000..9961f65883a
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/maximum_basic.test
@@ -0,0 +1,20 @@
+#
+# test for --maximum- my_getopt prefix
+#
+
+#
+# ulong
+#
+SET @@session.auto_increment_increment=40960;
+SELECT @@session.auto_increment_increment;
+#
+# ulonglong
+#
+SET @@session.tmp_table_size=40960;
+SELECT @@session.tmp_table_size;
+#
+# ha_rows
+#
+SET @@session.max_join_size=40960;
+SELECT @@session.max_join_size;
+
diff --git a/mysql-test/suite/sys_vars/t/myisam_data_pointer_size_basic.test b/mysql-test/suite/sys_vars/t/myisam_data_pointer_size_basic.test
index d151c6000b8..bd1992500d3 100644
--- a/mysql-test/suite/sys_vars/t/myisam_data_pointer_size_basic.test
+++ b/mysql-test/suite/sys_vars/t/myisam_data_pointer_size_basic.test
@@ -101,16 +101,13 @@ SET @@global.myisam_data_pointer_size = 1;
SELECT @@global.myisam_data_pointer_size;
SET @@global.myisam_data_pointer_size = 4294967296;
SELECT @@global.myisam_data_pointer_size;
---Error ER_PARSE_ERROR
-SET @@global.myisam_data_pointer_size = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.myisam_data_pointer_size = 65530.34;
SELECT @@global.myisam_data_pointer_size;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.myisam_data_pointer_size = two;
SELECT @@global.myisam_data_pointer_size;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
-
--echo '#------------------FN_DYNVARS_093_06-----------------------#'
####################################################################
# Check if the value in GLOBAL Table matches value in variable #
diff --git a/mysql-test/suite/sys_vars/t/myisam_data_pointer_size_func.test b/mysql-test/suite/sys_vars/t/myisam_data_pointer_size_func.test
index 37dd3a5a297..6f1a50cf64e 100644
--- a/mysql-test/suite/sys_vars/t/myisam_data_pointer_size_func.test
+++ b/mysql-test/suite/sys_vars/t/myisam_data_pointer_size_func.test
@@ -19,6 +19,8 @@
# #
################################################################################
+call mtr.add_suppression("The table 't1' is full");
+
--echo '#--------------------FN_DYNVARS_093_01-------------------------#'
###############################################################################
# Check if setting myisam_data_pointer_size is changed in every new connection#
diff --git a/mysql-test/suite/sys_vars/t/myisam_mmap_size_basic.test b/mysql-test/suite/sys_vars/t/myisam_mmap_size_basic.test
new file mode 100644
index 00000000000..c5d4f8d0c59
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/myisam_mmap_size_basic.test
@@ -0,0 +1,23 @@
+#
+# only global
+#
+--replace_result 4294967295 18446744073709551615
+select @@global.myisam_mmap_size;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.myisam_mmap_size;
+--replace_result 4294967295 18446744073709551615
+show global variables like 'myisam_mmap_size';
+--replace_result 4294967295 18446744073709551615
+show session variables like 'myisam_mmap_size';
+--replace_result 4294967295 18446744073709551615
+select * from information_schema.global_variables where variable_name='myisam_mmap_size';
+--replace_result 4294967295 18446744073709551615
+select * from information_schema.session_variables where variable_name='myisam_mmap_size';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global myisam_mmap_size=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session myisam_mmap_size=1;
diff --git a/mysql-test/suite/sys_vars/t/myisam_recover_options_basic.test b/mysql-test/suite/sys_vars/t/myisam_recover_options_basic.test
new file mode 100644
index 00000000000..4d1b07844b6
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/myisam_recover_options_basic.test
@@ -0,0 +1,18 @@
+#
+# only global
+#
+select @@global.myisam_recover_options;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.myisam_recover_options;
+show global variables like 'myisam_recover_options';
+show session variables like 'myisam_recover_options';
+select * from information_schema.global_variables where variable_name='myisam_recover_options';
+select * from information_schema.session_variables where variable_name='myisam_recover_options';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global myisam_recover_options=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session myisam_recover_options=1;
diff --git a/mysql-test/suite/sys_vars/t/myisam_stats_method_basic.test b/mysql-test/suite/sys_vars/t/myisam_stats_method_basic.test
index 0045842269b..f70431b5580 100644
--- a/mysql-test/suite/sys_vars/t/myisam_stats_method_basic.test
+++ b/mysql-test/suite/sys_vars/t/myisam_stats_method_basic.test
@@ -154,30 +154,8 @@ SELECT @@global.myisam_stats_method;
# use of decimal values
+--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.myisam_stats_method = 0.4;
-SELECT @@global.myisam_stats_method;
-
-SET @@global.myisam_stats_method = 1.0;
-SELECT @@global.myisam_stats_method;
-
-SET @@global.myisam_stats_method = 1.1;
-SELECT @@global.myisam_stats_method;
-
-SET @@global.myisam_stats_method = 1.5;
-SELECT @@global.myisam_stats_method;
-
-SET @@global.myisam_stats_method = 2.49;
-SELECT @@global.myisam_stats_method;
-
-SET @@session.myisam_stats_method = 0.5;
-SELECT @@session.myisam_stats_method;
-
-SET @@session.myisam_stats_method = 1.6;
-SELECT @@session.myisam_stats_method;
-
-
---echo 'Bug# 34877: Decimal values can be used within the range [0.0-2.5). Values';
---echo 'are rounded to 0,1,2 as evident from outcome.';
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.myisam_stats_method = 3;
diff --git a/mysql-test/suite/sys_vars/t/myisam_use_mmap_basic.test b/mysql-test/suite/sys_vars/t/myisam_use_mmap_basic.test
index d2cc39cfea7..dd1f8dbeee7 100644
--- a/mysql-test/suite/sys_vars/t/myisam_use_mmap_basic.test
+++ b/mysql-test/suite/sys_vars/t/myisam_use_mmap_basic.test
@@ -54,7 +54,7 @@ SELECT COUNT(@@GLOBAL.myisam_use_mmap);
# Check if the value in GLOBAL Table matches value in variable #
#################################################################
-SELECT @@GLOBAL.myisam_use_mmap = VARIABLE_VALUE
+SELECT IF(@@GLOBAL.myisam_use_mmap, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='myisam_use_mmap';
--echo 1 Expected
diff --git a/mysql-test/suite/sys_vars/t/named_pipe_basic.test b/mysql-test/suite/sys_vars/t/named_pipe_basic.test
new file mode 100644
index 00000000000..f3b83a71974
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/named_pipe_basic.test
@@ -0,0 +1,19 @@
+--source include/windows.inc
+#
+# only global
+#
+select @@global.named_pipe;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.named_pipe;
+show global variables like 'named_pipe';
+show session variables like 'named_pipe';
+select * from information_schema.global_variables where variable_name='named_pipe';
+select * from information_schema.session_variables where variable_name='named_pipe';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global named_pipe=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session named_pipe=1;
diff --git a/mysql-test/suite/sys_vars/t/net_buffer_length_basic.test b/mysql-test/suite/sys_vars/t/net_buffer_length_basic.test
index 6e1e0559c61..b8336910021 100644
--- a/mysql-test/suite/sys_vars/t/net_buffer_length_basic.test
+++ b/mysql-test/suite/sys_vars/t/net_buffer_length_basic.test
@@ -57,7 +57,7 @@ SELECT @@global.net_buffer_length;
--Error ER_VARIABLE_IS_READONLY
SET @@session.net_buffer_length = 20000;
---Error ER_NO_DEFAULT
+--Error ER_VARIABLE_IS_READONLY
SET @@session.net_buffer_length = DEFAULT;
SELECT @@session.net_buffer_length;
@@ -86,15 +86,13 @@ SET @@global.net_buffer_length = 1048575;
SELECT @@global.net_buffer_length;
SET @@global.net_buffer_length = 65535;
SELECT @@global.net_buffer_length;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
-
--echo '#--------------------FN_DYNVARS_109_04-------------------------#'
############################################################################
# Change the value of net_buffer_length to a valid value for SESSION Scope #
############################################################################
-# Bug#22891: SESSION net_buffer_length is now read-only; assignments skipped
+# SESSION net_buffer_length is now read-only; assignments skipped
--echo '#------------------FN_DYNVARS_109_05-----------------------#'
@@ -112,16 +110,14 @@ SET @@global.net_buffer_length = 1048577;
SELECT @@global.net_buffer_length;
SET @@global.net_buffer_length = 104857633;
SELECT @@global.net_buffer_length;
---Error ER_PARSE_ERROR
-SET @@global.net_buffer_length = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.net_buffer_length = 65530.34;
SELECT @@global.net_buffer_length;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.net_buffer_length = test;
SELECT @@global.net_buffer_length;
-# Bug#22891: SESSION net_buffer_length is now read-only; assignments skipped
-
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
+# SESSION net_buffer_length is now read-only; assignments skipped
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.net_buffer_length = test;
@@ -173,7 +169,7 @@ SELECT @@net_buffer_length = @@global.net_buffer_length;
# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable #
########################################################################################################
-# Bug#22891: SESSION net_buffer_length is now read-only; assignments skipped
+# SESSION net_buffer_length is now read-only; assignments skipped
--echo '#---------------------FN_DYNVARS_109_11----------------------#'
@@ -181,7 +177,7 @@ SELECT @@net_buffer_length = @@global.net_buffer_length;
# Check if net_buffer_length can be accessed with and without @@ sign #
############################################################################
-# Bug#22891: SESSION net_buffer_length is now read-only; assignments skipped
+# SESSION net_buffer_length is now read-only; assignments skipped
SELECT @@net_buffer_length;
--Error ER_UNKNOWN_TABLE
SELECT local.net_buffer_length;
diff --git a/mysql-test/suite/sys_vars/t/net_read_timeout_basic.test b/mysql-test/suite/sys_vars/t/net_read_timeout_basic.test
index f0d32302e4f..0eb78e412e3 100644
--- a/mysql-test/suite/sys_vars/t/net_read_timeout_basic.test
+++ b/mysql-test/suite/sys_vars/t/net_read_timeout_basic.test
@@ -104,8 +104,8 @@ SET @@global.net_read_timeout = -1024;
SELECT @@global.net_read_timeout;
SET @@global.net_read_timeout = 655360354;
SELECT @@global.net_read_timeout;
---Error ER_PARSE_ERROR
-SET @@global.net_read_timeout = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.net_read_timeout = 65530.34;
SELECT @@global.net_read_timeout;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.net_read_timeout = test;
@@ -115,11 +115,10 @@ SET @@session.net_read_timeout = 0;
SELECT @@session.net_read_timeout;
SET @@session.net_read_timeout = -2;
SELECT @@session.net_read_timeout;
---Error ER_PARSE_ERROR
-SET @@session.net_read_timeout = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.net_read_timeout = 65530.34;
SET @@session.net_read_timeout = 6555015425;
SELECT @@session.net_read_timeout;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.net_read_timeout = test;
diff --git a/mysql-test/suite/sys_vars/t/net_write_timeout_basic.test b/mysql-test/suite/sys_vars/t/net_write_timeout_basic.test
index 84c682561e3..bd8a8b0530d 100644
--- a/mysql-test/suite/sys_vars/t/net_write_timeout_basic.test
+++ b/mysql-test/suite/sys_vars/t/net_write_timeout_basic.test
@@ -104,8 +104,8 @@ SET @@global.net_write_timeout = -1024;
SELECT @@global.net_write_timeout;
SET @@global.net_write_timeout = 655360354;
SELECT @@global.net_write_timeout;
---Error ER_PARSE_ERROR
-SET @@global.net_write_timeout = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.net_write_timeout = 65530.34;
SELECT @@global.net_write_timeout;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.net_write_timeout = test;
@@ -115,11 +115,10 @@ SET @@session.net_write_timeout = 0;
SELECT @@session.net_write_timeout;
SET @@session.net_write_timeout = -2;
SELECT @@session.net_write_timeout;
---Error ER_PARSE_ERROR
-SET @@session.net_write_timeout = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.net_write_timeout = 65530.34;
SET @@session.net_write_timeout = 6555015425;
SELECT @@session.net_write_timeout;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.net_write_timeout = test;
diff --git a/mysql-test/suite/sys_vars/t/new_basic.test b/mysql-test/suite/sys_vars/t/new_basic.test
index b1d12c9a4de..017ba2eb264 100644
--- a/mysql-test/suite/sys_vars/t/new_basic.test
+++ b/mysql-test/suite/sys_vars/t/new_basic.test
@@ -121,7 +121,7 @@ SET @@global.new = FELSE;
SET @@global.new = -1024;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.new = 65536;
---Error ER_WRONG_VALUE_FOR_VAR
+--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.new = 65530.34;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.new = test;
@@ -130,17 +130,14 @@ SET @@global.new = test;
SET @@session.new = ONN;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.new = ONF;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.new = OF;
-SELECT @@session.new;
---echo 'Bug# 34828: FN_DYNVARS_113_05 - OF is also working as OFF and no error is coming';
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.new = 'OFN';
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.new = -2;
---Error ER_PARSE_ERROR
-SET @@session.new = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.new = 65530.34;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.new = 65550;
@@ -154,7 +151,7 @@ SET @@session.new = test;
####################################################################
-SELECT @@global.new = VARIABLE_VALUE
+SELECT IF(@@global.new, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='new';
@@ -163,7 +160,7 @@ WHERE VARIABLE_NAME='new';
# Check if the value in SESSION Table matches value in variable #
####################################################################
-SELECT @@session.new = VARIABLE_VALUE
+SELECT IF(@@session.new, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='new';
diff --git a/mysql-test/suite/sys_vars/t/old_alter_table_basic.test b/mysql-test/suite/sys_vars/t/old_alter_table_basic.test
new file mode 100644
index 00000000000..32d0f45ad25
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/old_alter_table_basic.test
@@ -0,0 +1,33 @@
+SET @start_global_value = @@global.old_alter_table;
+SELECT @start_global_value;
+
+#
+# exists as global and session
+#
+select @@global.old_alter_table;
+select @@session.old_alter_table;
+show global variables like 'old_alter_table';
+show session variables like 'old_alter_table';
+select * from information_schema.global_variables where variable_name='old_alter_table';
+select * from information_schema.session_variables where variable_name='old_alter_table';
+
+#
+# show that it's writable
+#
+set global old_alter_table=1;
+select @@global.old_alter_table;
+set session old_alter_table=ON;
+select @@session.old_alter_table;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global old_alter_table=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global old_alter_table=1e1;
+--error ER_WRONG_VALUE_FOR_VAR
+set global old_alter_table="foo";
+
+SET @@global.old_alter_table = @start_global_value;
+SELECT @@global.old_alter_table;
diff --git a/mysql-test/suite/sys_vars/t/old_basic.test b/mysql-test/suite/sys_vars/t/old_basic.test
new file mode 100644
index 00000000000..2c123d17165
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/old_basic.test
@@ -0,0 +1,19 @@
+#
+# show the global and session values;
+#
+select @@global.old;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.old;
+show global variables like 'old';
+show session variables like 'old';
+select * from information_schema.global_variables where variable_name='old';
+select * from information_schema.session_variables where variable_name='old';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global old=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session old=1;
+
diff --git a/mysql-test/suite/sys_vars/t/old_passwords_basic.test b/mysql-test/suite/sys_vars/t/old_passwords_basic.test
index b78ac9ca9b8..f4965ad7528 100644
--- a/mysql-test/suite/sys_vars/t/old_passwords_basic.test
+++ b/mysql-test/suite/sys_vars/t/old_passwords_basic.test
@@ -121,7 +121,7 @@ SET @@global.old_passwords = FELSE;
SET @@global.old_passwords = -1024;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.old_passwords = 65536;
---Error ER_WRONG_VALUE_FOR_VAR
+--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.old_passwords = 65530.34;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.old_passwords = test;
@@ -130,17 +130,14 @@ SET @@global.old_passwords = test;
SET @@session.old_passwords = ONN;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.old_passwords = ONF;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.old_passwords = OF;
-SELECT @@session.old_passwords;
---echo 'Bug# 34828: OF is also working as OFF and no error is coming';
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.old_passwords = 'OFN';
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.old_passwords = -2;
---Error ER_PARSE_ERROR
-SET @@session.old_passwords = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.old_passwords = 65530.34;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.old_passwords = 65550;
@@ -154,7 +151,7 @@ SET @@session.old_passwords = test;
####################################################################
-SELECT @@global.old_passwords = VARIABLE_VALUE
+SELECT IF(@@global.old_passwords, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='old_passwords';
@@ -163,7 +160,7 @@ WHERE VARIABLE_NAME='old_passwords';
# Check if the value in SESSION Table matches value in variable #
####################################################################
-SELECT @@session.old_passwords = VARIABLE_VALUE
+SELECT IF(@@session.old_passwords, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='old_passwords';
diff --git a/mysql-test/suite/sys_vars/t/open_files_limit_basic.test b/mysql-test/suite/sys_vars/t/open_files_limit_basic.test
new file mode 100644
index 00000000000..bac3c8f6685
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/open_files_limit_basic.test
@@ -0,0 +1,24 @@
+#
+# show the global and session values;
+#
+--replace_column 1 #
+select @@global.open_files_limit;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.open_files_limit;
+--replace_column 2 #
+show global variables like 'open_files_limit';
+--replace_column 2 #
+show session variables like 'open_files_limit';
+--replace_column 2 #
+select * from information_schema.global_variables where variable_name='open_files_limit';
+--replace_column 2 #
+select * from information_schema.session_variables where variable_name='open_files_limit';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global open_files_limit=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session open_files_limit=1;
+
diff --git a/mysql-test/suite/sys_vars/t/optimizer_prune_level_basic.test b/mysql-test/suite/sys_vars/t/optimizer_prune_level_basic.test
index 58c074d7d5e..1e3a8bc3d7f 100644
--- a/mysql-test/suite/sys_vars/t/optimizer_prune_level_basic.test
+++ b/mysql-test/suite/sys_vars/t/optimizer_prune_level_basic.test
@@ -146,12 +146,11 @@ SET @@session.optimizer_prune_level = OF;
SET @@session.optimizer_prune_level = 'OFN';
SET @@session.optimizer_prune_level = -2;
SELECT @@session.optimizer_prune_level;
---Error ER_PARSE_ERROR
-SET @@session.optimizer_prune_level = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.optimizer_prune_level = 65530.34;
SET @@session.optimizer_prune_level = 65550;
SELECT @@session.optimizer_prune_level;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.optimizer_prune_level = test;
diff --git a/mysql-test/suite/sys_vars/t/optimizer_search_depth_basic.test b/mysql-test/suite/sys_vars/t/optimizer_search_depth_basic.test
index 42548c59d40..eda7992bbd5 100644
--- a/mysql-test/suite/sys_vars/t/optimizer_search_depth_basic.test
+++ b/mysql-test/suite/sys_vars/t/optimizer_search_depth_basic.test
@@ -107,8 +107,8 @@ SET @@global.optimizer_search_depth = -1;
SELECT @@global.optimizer_search_depth;
SET @@global.optimizer_search_depth = 65536;
SELECT @@global.optimizer_search_depth;
---Error ER_PARSE_ERROR
-SET @@global.optimizer_search_depth = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.optimizer_search_depth = 65530.34;
SELECT @@global.optimizer_search_depth;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.optimizer_search_depth = test;
@@ -118,11 +118,10 @@ SET @@session.optimizer_search_depth = 64;
SELECT @@session.optimizer_search_depth;
SET @@session.optimizer_search_depth = -2;
SELECT @@session.optimizer_search_depth;
---Error ER_PARSE_ERROR
-SET @@session.optimizer_search_depth = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.optimizer_search_depth = 65530.34;
SET @@session.optimizer_search_depth = 65550;
SELECT @@session.optimizer_search_depth;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.optimizer_search_depth = test;
diff --git a/mysql-test/suite/sys_vars/t/optimizer_switch_basic.test b/mysql-test/suite/sys_vars/t/optimizer_switch_basic.test
new file mode 100644
index 00000000000..32a77c90b34
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/optimizer_switch_basic.test
@@ -0,0 +1,41 @@
+SET @start_global_value = @@global.optimizer_switch;
+SELECT @start_global_value;
+
+#
+# exists as global and session
+#
+select @@global.optimizer_switch;
+select @@session.optimizer_switch;
+show global variables like 'optimizer_switch';
+show session variables like 'optimizer_switch';
+select * from information_schema.global_variables where variable_name='optimizer_switch';
+select * from information_schema.session_variables where variable_name='optimizer_switch';
+
+#
+# show that it's writable
+#
+set global optimizer_switch=10;
+select @@global.optimizer_switch;
+set session optimizer_switch=5;
+select @@session.optimizer_switch;
+set global optimizer_switch="index_merge_sort_union=on";
+select @@global.optimizer_switch;
+set session optimizer_switch="index_merge=off";
+select @@session.optimizer_switch;
+set session optimizer_switch="default";
+select @@session.optimizer_switch;
+
+#
+# incorrect assignments
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global optimizer_switch=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global optimizer_switch=1e1;
+--error ER_WRONG_VALUE_FOR_VAR
+set session optimizer_switch="index_merge";
+--error ER_WRONG_VALUE_FOR_VAR
+set session optimizer_switch="foobar";
+
+SET @@global.optimizer_switch = @start_global_value;
+SELECT @@global.optimizer_switch;
diff --git a/mysql-test/suite/sys_vars/t/performance_schema_basic-master.opt b/mysql-test/suite/sys_vars/t/performance_schema_basic-master.opt
new file mode 100644
index 00000000000..542720c44d7
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/performance_schema_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema
diff --git a/mysql-test/suite/sys_vars/t/performance_schema_basic.test b/mysql-test/suite/sys_vars/t/performance_schema_basic.test
new file mode 100644
index 00000000000..804e6261921
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/performance_schema_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# 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
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema;
+
+show global variables like 'performance_schema';
+
+show session variables like 'performance_schema';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_events_waits_history_long_size_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_events_waits_history_long_size_basic-master.opt
new file mode 100644
index 00000000000..ff1dd2a8c05
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_events_waits_history_long_size_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-events-waits-history-long-size=15000
diff --git a/mysql-test/suite/sys_vars/t/pfs_events_waits_history_long_size_basic.test b/mysql-test/suite/sys_vars/t/pfs_events_waits_history_long_size_basic.test
new file mode 100644
index 00000000000..bf6638803bc
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_events_waits_history_long_size_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# 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
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_events_waits_history_long_size;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_events_waits_history_long_size;
+
+show global variables like 'performance_schema_events_waits_history_long_size';
+
+show session variables like 'performance_schema_events_waits_history_long_size';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_events_waits_history_long_size';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_events_waits_history_long_size';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_events_waits_history_long_size=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_events_waits_history_long_size=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_events_waits_history_size_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_events_waits_history_size_basic-master.opt
new file mode 100644
index 00000000000..488707fc962
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_events_waits_history_size_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-events-waits-history-size=15
diff --git a/mysql-test/suite/sys_vars/t/pfs_events_waits_history_size_basic.test b/mysql-test/suite/sys_vars/t/pfs_events_waits_history_size_basic.test
new file mode 100644
index 00000000000..28338ad1ffd
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_events_waits_history_size_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# 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
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_events_waits_history_size;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_events_waits_history_size;
+
+show global variables like 'performance_schema_events_waits_history_size';
+
+show session variables like 'performance_schema_events_waits_history_size';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_events_waits_history_size';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_events_waits_history_size';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_events_waits_history_size=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_events_waits_history_size=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_cond_classes_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_cond_classes_basic-master.opt
new file mode 100644
index 00000000000..438bc463289
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_cond_classes_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-cond-classes=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_cond_classes_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_cond_classes_basic.test
new file mode 100644
index 00000000000..70a757087f8
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_cond_classes_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# 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
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_cond_classes;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_cond_classes;
+
+show global variables like 'performance_schema_max_cond_classes';
+
+show session variables like 'performance_schema_max_cond_classes';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_cond_classes';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_cond_classes';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_cond_classes=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_cond_classes=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_cond_instances_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_cond_instances_basic-master.opt
new file mode 100644
index 00000000000..47b9d629655
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_cond_instances_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-cond-instances=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_cond_instances_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_cond_instances_basic.test
new file mode 100644
index 00000000000..597ad334295
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_cond_instances_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# 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
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_cond_instances;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_cond_instances;
+
+show global variables like 'performance_schema_max_cond_instances';
+
+show session variables like 'performance_schema_max_cond_instances';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_cond_instances';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_cond_instances';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_cond_instances=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_cond_instances=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_file_classes_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_file_classes_basic-master.opt
new file mode 100644
index 00000000000..6ed54f9f99d
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_file_classes_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-file-classes=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_file_classes_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_file_classes_basic.test
new file mode 100644
index 00000000000..8536a703afa
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_file_classes_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# 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
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_file_classes;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_file_classes;
+
+show global variables like 'performance_schema_max_file_classes';
+
+show session variables like 'performance_schema_max_file_classes';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_file_classes';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_file_classes';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_file_classes=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_file_classes=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_file_handles_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_file_handles_basic-master.opt
new file mode 100644
index 00000000000..04633ae0897
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_file_handles_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-file-handles=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_file_handles_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_file_handles_basic.test
new file mode 100644
index 00000000000..ba702a030d7
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_file_handles_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# 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
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_file_handles;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_file_handles;
+
+show global variables like 'performance_schema_max_file_handles';
+
+show session variables like 'performance_schema_max_file_handles';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_file_handles';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_file_handles';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_file_handles=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_file_handles=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_file_instances_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_file_instances_basic-master.opt
new file mode 100644
index 00000000000..078a998c1e7
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_file_instances_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-file-instances=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_file_instances_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_file_instances_basic.test
new file mode 100644
index 00000000000..829df39bbe9
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_file_instances_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# 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
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_file_instances;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_file_instances;
+
+show global variables like 'performance_schema_max_file_instances';
+
+show session variables like 'performance_schema_max_file_instances';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_file_instances';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_file_instances';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_file_instances=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_file_instances=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_mutex_classes_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_mutex_classes_basic-master.opt
new file mode 100644
index 00000000000..1525916a1ef
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_mutex_classes_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-mutex-classes=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_mutex_classes_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_mutex_classes_basic.test
new file mode 100644
index 00000000000..633d1a3487c
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_mutex_classes_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# 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
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_mutex_classes;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_mutex_classes;
+
+show global variables like 'performance_schema_max_mutex_classes';
+
+show session variables like 'performance_schema_max_mutex_classes';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_mutex_classes';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_mutex_classes';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_mutex_classes=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_mutex_classes=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_mutex_instances_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_mutex_instances_basic-master.opt
new file mode 100644
index 00000000000..98ce2ff3df9
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_mutex_instances_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-mutex-instances=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_mutex_instances_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_mutex_instances_basic.test
new file mode 100644
index 00000000000..2a8f5e5ae00
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_mutex_instances_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# 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
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_mutex_instances;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_mutex_instances;
+
+show global variables like 'performance_schema_max_mutex_instances';
+
+show session variables like 'performance_schema_max_mutex_instances';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_mutex_instances';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_mutex_instances';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_mutex_instances=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_mutex_instances=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_rwlock_classes_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_rwlock_classes_basic-master.opt
new file mode 100644
index 00000000000..b5d5318635f
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_rwlock_classes_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-rwlock-classes=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_rwlock_classes_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_rwlock_classes_basic.test
new file mode 100644
index 00000000000..ce911b60049
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_rwlock_classes_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# 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
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_rwlock_classes;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_rwlock_classes;
+
+show global variables like 'performance_schema_max_rwlock_classes';
+
+show session variables like 'performance_schema_max_rwlock_classes';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_rwlock_classes';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_rwlock_classes';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_rwlock_classes=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_rwlock_classes=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_rwlock_instances_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_rwlock_instances_basic-master.opt
new file mode 100644
index 00000000000..5dcecd99c0a
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_rwlock_instances_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-rwlock-instances=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_rwlock_instances_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_rwlock_instances_basic.test
new file mode 100644
index 00000000000..d16c1c46f68
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_rwlock_instances_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# 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
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_rwlock_instances;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_rwlock_instances;
+
+show global variables like 'performance_schema_max_rwlock_instances';
+
+show session variables like 'performance_schema_max_rwlock_instances';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_rwlock_instances';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_rwlock_instances';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_rwlock_instances=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_rwlock_instances=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_table_handles_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_table_handles_basic-master.opt
new file mode 100644
index 00000000000..45e73c51f8c
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_table_handles_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-table-handles=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_table_handles_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_table_handles_basic.test
new file mode 100644
index 00000000000..3ede0985a70
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_table_handles_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# 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
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_table_handles;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_table_handles;
+
+show global variables like 'performance_schema_max_table_handles';
+
+show session variables like 'performance_schema_max_table_handles';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_table_handles';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_table_handles';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_table_handles=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_table_handles=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_table_instances_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_table_instances_basic-master.opt
new file mode 100644
index 00000000000..b8b0ba4b40b
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_table_instances_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-table-instances=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_table_instances_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_table_instances_basic.test
new file mode 100644
index 00000000000..fcd4886ca22
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_table_instances_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# 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
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_table_instances;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_table_instances;
+
+show global variables like 'performance_schema_max_table_instances';
+
+show session variables like 'performance_schema_max_table_instances';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_table_instances';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_table_instances';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_table_instances=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_table_instances=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_thread_classes_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_thread_classes_basic-master.opt
new file mode 100644
index 00000000000..c0b64e5889a
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_thread_classes_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-thread-classes=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_thread_classes_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_thread_classes_basic.test
new file mode 100644
index 00000000000..4704e87cf06
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_thread_classes_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# 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
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_thread_classes;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_thread_classes;
+
+show global variables like 'performance_schema_max_thread_classes';
+
+show session variables like 'performance_schema_max_thread_classes';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_thread_classes';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_thread_classes';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_thread_classes=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_thread_classes=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_thread_instances_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_thread_instances_basic-master.opt
new file mode 100644
index 00000000000..b70eda8acb1
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_thread_instances_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-thread-instances=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_thread_instances_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_thread_instances_basic.test
new file mode 100644
index 00000000000..d709c097f20
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_thread_instances_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# 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
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_thread_instances;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_thread_instances;
+
+show global variables like 'performance_schema_max_thread_instances';
+
+show session variables like 'performance_schema_max_thread_instances';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_thread_instances';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_thread_instances';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_thread_instances=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_thread_instances=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pid_file_basic.test b/mysql-test/suite/sys_vars/t/pid_file_basic.test
new file mode 100644
index 00000000000..f4253593bc6
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pid_file_basic.test
@@ -0,0 +1,23 @@
+#
+# only global
+#
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+select @@global.pid_file;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.pid_file;
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+show global variables like 'pid_file';
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+show session variables like 'pid_file';
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+select * from information_schema.global_variables where variable_name='pid_file';
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+select * from information_schema.session_variables where variable_name='pid_file';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global pid_file=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session pid_file=1;
diff --git a/mysql-test/suite/sys_vars/t/plugin_dir_basic.test b/mysql-test/suite/sys_vars/t/plugin_dir_basic.test
new file mode 100644
index 00000000000..d714950c807
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/plugin_dir_basic.test
@@ -0,0 +1,29 @@
+#
+# only global
+#
+
+#
+# on windows it's <basedir>/lib/plugin
+# on unix it's <basedir>/lib/mysql/plugin
+#
+--replace_result $MYSQL_LIBDIR MYSQL_LIBDIR /mysql/ /
+select @@global.plugin_dir;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.plugin_dir;
+--replace_result $MYSQL_LIBDIR MYSQL_LIBDIR /mysql/ /
+show global variables like 'plugin_dir';
+--replace_result $MYSQL_LIBDIR MYSQL_LIBDIR /mysql/ /
+show session variables like 'plugin_dir';
+--replace_result $MYSQL_LIBDIR MYSQL_LIBDIR /mysql/ /
+select * from information_schema.global_variables where variable_name='plugin_dir';
+--replace_result $MYSQL_LIBDIR MYSQL_LIBDIR /mysql/ /
+select * from information_schema.session_variables where variable_name='plugin_dir';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global plugin_dir=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session plugin_dir=1;
+
diff --git a/mysql-test/suite/sys_vars/t/port_basic.test b/mysql-test/suite/sys_vars/t/port_basic.test
new file mode 100644
index 00000000000..e20ee119f5e
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/port_basic.test
@@ -0,0 +1,23 @@
+#
+# only global
+#
+--replace_result $MASTER_MYPORT MASTER_MYPORT
+select @@global.port;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.port;
+--replace_result $MASTER_MYPORT MASTER_MYPORT
+show global variables like 'port';
+--replace_result $MASTER_MYPORT MASTER_MYPORT
+show session variables like 'port';
+--replace_result $MASTER_MYPORT MASTER_MYPORT
+select * from information_schema.global_variables where variable_name='port';
+--replace_result $MASTER_MYPORT MASTER_MYPORT
+select * from information_schema.session_variables where variable_name='port';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global port=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session port=1;
diff --git a/mysql-test/suite/sys_vars/t/preload_buffer_size_basic.test b/mysql-test/suite/sys_vars/t/preload_buffer_size_basic.test
index 48b1e32676a..8eba7bba079 100644
--- a/mysql-test/suite/sys_vars/t/preload_buffer_size_basic.test
+++ b/mysql-test/suite/sys_vars/t/preload_buffer_size_basic.test
@@ -112,8 +112,8 @@ SET @@global.preload_buffer_size = 1023;
SELECT @@global.preload_buffer_size;
SET @@global.preload_buffer_size = 1073741825;
SELECT @@global.preload_buffer_size;
---Error ER_PARSE_ERROR
-SET @@global.preload_buffer_size = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.preload_buffer_size = 65530.34;
SELECT @@global.preload_buffer_size;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.preload_buffer_size = test;
@@ -123,13 +123,12 @@ SET @@session.preload_buffer_size = 64;
SELECT @@session.preload_buffer_size;
SET @@session.preload_buffer_size = -2;
SELECT @@session.preload_buffer_size;
---Error ER_PARSE_ERROR
-SET @@session.preload_buffer_size = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.preload_buffer_size = 65530.34;
SET @@session.preload_buffer_size = 1023;
SELECT @@session.preload_buffer_size;
SET @@session.preload_buffer_size = 1073741825;
SELECT @@session.preload_buffer_size;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.preload_buffer_size = test;
diff --git a/mysql-test/suite/sys_vars/t/profiling_basic.test b/mysql-test/suite/sys_vars/t/profiling_basic.test
new file mode 100644
index 00000000000..aef56e50900
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/profiling_basic.test
@@ -0,0 +1,35 @@
+--source include/have_profiling.inc
+
+SET @start_global_value = @@global.profiling;
+SELECT @start_global_value;
+
+#
+# exists as global and session
+#
+select @@global.profiling;
+select @@session.profiling;
+show global variables like 'profiling';
+show session variables like 'profiling';
+select * from information_schema.global_variables where variable_name='profiling';
+select * from information_schema.session_variables where variable_name='profiling';
+
+#
+# show that it's writable
+#
+set global profiling=1;
+select @@global.profiling;
+set session profiling=ON;
+select @@session.profiling;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global profiling=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global profiling=1e1;
+--error ER_WRONG_VALUE_FOR_VAR
+set global profiling="foo";
+
+SET @@global.profiling = @start_global_value;
+SELECT @@global.profiling;
diff --git a/mysql-test/suite/sys_vars/t/profiling_history_size_basic.test b/mysql-test/suite/sys_vars/t/profiling_history_size_basic.test
new file mode 100644
index 00000000000..01d3533be3d
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/profiling_history_size_basic.test
@@ -0,0 +1,43 @@
+--source include/have_profiling.inc
+
+SET @start_global_value = @@global.profiling_history_size;
+SELECT @start_global_value;
+
+#
+# exists as global and session
+#
+select @@global.profiling_history_size;
+select @@session.profiling_history_size;
+show global variables like 'profiling_history_size';
+show session variables like 'profiling_history_size';
+select * from information_schema.global_variables where variable_name='profiling_history_size';
+select * from information_schema.session_variables where variable_name='profiling_history_size';
+
+#
+# show that it's writable
+#
+set global profiling_history_size=10;
+select @@global.profiling_history_size;
+set session profiling_history_size=20;
+select @@session.profiling_history_size;
+
+#
+# incorrect assignments
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global profiling_history_size=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global profiling_history_size=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global profiling_history_size="foo";
+
+#
+# min/max
+#
+set session profiling_history_size=0;
+select @@profiling_history_size;
+set session profiling_history_size=101;
+select @@profiling_history_size;
+
+SET @@global.profiling_history_size = @start_global_value;
+SELECT @@global.profiling_history_size;
diff --git a/mysql-test/suite/sys_vars/t/protocol_version_basic.test b/mysql-test/suite/sys_vars/t/protocol_version_basic.test
new file mode 100644
index 00000000000..3446932b7e1
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/protocol_version_basic.test
@@ -0,0 +1,18 @@
+#
+# only global
+#
+select @@global.protocol_version;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.protocol_version;
+show global variables like 'protocol_version';
+show session variables like 'protocol_version';
+select * from information_schema.global_variables where variable_name='protocol_version';
+select * from information_schema.session_variables where variable_name='protocol_version';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global protocol_version=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session protocol_version=1;
diff --git a/mysql-test/suite/sys_vars/t/pseudo_thread_id_basic.test b/mysql-test/suite/sys_vars/t/pseudo_thread_id_basic.test
new file mode 100644
index 00000000000..a948f2a8ff0
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pseudo_thread_id_basic.test
@@ -0,0 +1,32 @@
+
+#
+# exists as a session only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@global.pseudo_thread_id;
+select @@session.pseudo_thread_id=0;
+show global variables like 'pseudo_thread_id';
+--replace_column 2 #
+show session variables like 'pseudo_thread_id';
+select * from information_schema.global_variables where variable_name='pseudo_thread_id';
+--replace_column 2 #
+select * from information_schema.session_variables where variable_name='pseudo_thread_id';
+
+#
+# show that it's writable
+#
+set session pseudo_thread_id=1;
+select @@session.pseudo_thread_id;
+--error ER_LOCAL_VARIABLE
+set global pseudo_thread_id=1;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set session pseudo_thread_id=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set session pseudo_thread_id=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set session pseudo_thread_id="foo";
+
diff --git a/mysql-test/suite/sys_vars/t/query_cache_type_basic.test b/mysql-test/suite/sys_vars/t/query_cache_type_basic.test
index ba7e26a3065..5c395fde1e6 100644
--- a/mysql-test/suite/sys_vars/t/query_cache_type_basic.test
+++ b/mysql-test/suite/sys_vars/t/query_cache_type_basic.test
@@ -107,15 +107,10 @@ SET @@global.query_cache_type = -1;
SET @@global.query_cache_type = ONDEMAND;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.query_cache_type = 'ON,OFF';
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.query_cache_type = 'OF';
-SELECT @@global.query_cache_type;
-
---echo 'Bug# 34828: OF is taken as OFF.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.query_cache_type = YES;
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.query_cache_type = ' ';
@@ -156,30 +151,8 @@ SELECT @@global.query_cache_type;
# use of decimal values
+--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.query_cache_type = 0.4;
-SELECT @@global.query_cache_type;
-
-SET @@global.query_cache_type = 1.0;
-SELECT @@global.query_cache_type;
-
-SET @@global.query_cache_type = 1.1;
-SELECT @@global.query_cache_type;
-
-SET @@global.query_cache_type = 1.5;
-SELECT @@global.query_cache_type;
-
-SET @@global.query_cache_type = 2.49;
-SELECT @@global.query_cache_type;
-
-SET @@session.query_cache_type = 0.5;
-SELECT @@session.query_cache_type;
-
-SET @@session.query_cache_type = 1.6;
-SELECT @@session.query_cache_type;
-
-
---echo 'Bug: Decimal values can be used within the range [0.0-2.5). Values';
---echo 'are rounded to 0,1,2 as evident from outcome.';
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.query_cache_type = 3;
diff --git a/mysql-test/suite/sys_vars/t/query_cache_wlock_invalidate_basic.test b/mysql-test/suite/sys_vars/t/query_cache_wlock_invalidate_basic.test
index f253c1b4f43..055c3629d15 100644
--- a/mysql-test/suite/sys_vars/t/query_cache_wlock_invalidate_basic.test
+++ b/mysql-test/suite/sys_vars/t/query_cache_wlock_invalidate_basic.test
@@ -105,7 +105,7 @@ SELECT @@global.query_cache_wlock_invalidate;
# for session
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.query_cache_wlock_invalidate = -1;
---Error ER_WRONG_VALUE_FOR_VAR
+--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.query_cache_wlock_invalidate = 1.6;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.query_cache_wlock_invalidate = "T";
@@ -115,12 +115,8 @@ SET @@session.query_cache_wlock_invalidate = "Y";
SET @@session.query_cache_wlock_invalidate = TRÜE;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.query_cache_wlock_invalidate = ÕN;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.query_cache_wlock_invalidate = OF;
-SELECT @@session.query_cache_wlock_invalidate;
-
---echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.query_cache_wlock_invalidate = ÓFF;
@@ -138,12 +134,8 @@ SET @@global.query_cache_wlock_invalidate = "Y";
SET @@global.query_cache_wlock_invalidate = TRÜE;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.query_cache_wlock_invalidate = ÕN;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.query_cache_wlock_invalidate = OF;
-SELECT @@global.query_cache_wlock_invalidate;
-
---echo 'Bug 34828: OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.query_cache_wlock_invalidate = ÓFF;
@@ -165,7 +157,7 @@ SELECT @@session.query_cache_wlock_invalidate AS res_is_1;
# Check if the value in GLOBAL Table matches value in variable #
#########################################################################
-SELECT @@global.query_cache_wlock_invalidate = VARIABLE_VALUE
+SELECT IF(@@global.query_cache_wlock_invalidate, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='query_cache_wlock_invalidate';
SELECT @@global.query_cache_wlock_invalidate;
@@ -178,7 +170,7 @@ WHERE VARIABLE_NAME='query_cache_wlock_invalidate';
# Check if the value in SESSION Table matches value in variable #
#########################################################################
-SELECT @@session.query_cache_wlock_invalidate = VARIABLE_VALUE
+SELECT IF(@@session.query_cache_wlock_invalidate, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='query_cache_wlock_invalidate';
SELECT @@session.query_cache_wlock_invalidate;
diff --git a/mysql-test/suite/sys_vars/inc/query_prealloc_size_basic.inc b/mysql-test/suite/sys_vars/t/query_prealloc_size_basic.test
index 64eb3c4b329..3914bff4ca9 100644
--- a/mysql-test/suite/sys_vars/inc/query_prealloc_size_basic.inc
+++ b/mysql-test/suite/sys_vars/t/query_prealloc_size_basic.test
@@ -113,8 +113,8 @@ SELECT @@global.query_prealloc_size ;
#SELECT @@global.query_prealloc_size ;
---Error ER_PARSE_ERROR
-SET @@global.query_prealloc_size = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.query_prealloc_size = 65530.34;
SELECT @@global.query_prealloc_size ;
--Error ER_WRONG_TYPE_FOR_VAR
@@ -140,9 +140,8 @@ SELECT @@session.query_prealloc_size ;
#SET @@session.query_prealloc_size = -2;
#SELECT @@session.query_prealloc_size ;
---Error ER_PARSE_ERROR
-
-SET @@session.query_prealloc_size = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.query_prealloc_size = 65530.34;
SELECT @@session.query_prealloc_size ;
diff --git a/mysql-test/suite/sys_vars/t/query_prealloc_size_basic_32.test b/mysql-test/suite/sys_vars/t/query_prealloc_size_basic_32.test
deleted file mode 100644
index 34dafc71c9c..00000000000
--- a/mysql-test/suite/sys_vars/t/query_prealloc_size_basic_32.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 32 bit machines #
-################################################################################
-
---source include/have_32bit.inc
---source suite/sys_vars/inc/query_prealloc_size_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/query_prealloc_size_basic_64.test b/mysql-test/suite/sys_vars/t/query_prealloc_size_basic_64.test
deleted file mode 100644
index c1f04c0788c..00000000000
--- a/mysql-test/suite/sys_vars/t/query_prealloc_size_basic_64.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 64 bit machines #
-################################################################################
-
---source include/have_64bit.inc
---source suite/sys_vars/inc/query_prealloc_size_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/rand_seed1_basic.test b/mysql-test/suite/sys_vars/t/rand_seed1_basic.test
new file mode 100644
index 00000000000..79c946a3d2f
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/rand_seed1_basic.test
@@ -0,0 +1,30 @@
+
+#
+# exists as a session only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@global.rand_seed1;
+select @@session.rand_seed1;
+show global variables like 'rand_seed1';
+show session variables like 'rand_seed1';
+select * from information_schema.global_variables where variable_name='rand_seed1';
+select * from information_schema.session_variables where variable_name='rand_seed1';
+
+#
+# show that it's writable
+#
+set session rand_seed1=1;
+select @@session.rand_seed1;
+--error ER_LOCAL_VARIABLE
+set global rand_seed1=1;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set session rand_seed1=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set session rand_seed1=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set session rand_seed1="foo";
+
diff --git a/mysql-test/suite/sys_vars/t/rand_seed2_basic.test b/mysql-test/suite/sys_vars/t/rand_seed2_basic.test
new file mode 100644
index 00000000000..18e2a62557c
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/rand_seed2_basic.test
@@ -0,0 +1,30 @@
+
+#
+# exists as a session only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@global.rand_seed2;
+select @@session.rand_seed2;
+show global variables like 'rand_seed2';
+show session variables like 'rand_seed2';
+select * from information_schema.global_variables where variable_name='rand_seed2';
+select * from information_schema.session_variables where variable_name='rand_seed2';
+
+#
+# show that it's writable
+#
+set session rand_seed2=1;
+select @@session.rand_seed2;
+--error ER_LOCAL_VARIABLE
+set global rand_seed2=1;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set session rand_seed2=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set session rand_seed2=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set session rand_seed2="foo";
+
diff --git a/mysql-test/suite/sys_vars/t/read_buffer_size_basic.test b/mysql-test/suite/sys_vars/t/read_buffer_size_basic.test
index 405bb9da6d8..8ce826bf327 100644
--- a/mysql-test/suite/sys_vars/t/read_buffer_size_basic.test
+++ b/mysql-test/suite/sys_vars/t/read_buffer_size_basic.test
@@ -72,9 +72,9 @@ SELECT @@session.read_buffer_size = 131072;
################################################################################
SET @@global.read_buffer_size = 8201;
-SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ;
+SELECT @@global.read_buffer_size;
SET @@global.read_buffer_size = 8200;
-SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ;
+SELECT @@global.read_buffer_size;
SET @@global.read_buffer_size = 2147479552;
SELECT @@global.read_buffer_size;
SET @@global.read_buffer_size = 2147479551;
@@ -86,9 +86,9 @@ SELECT @@global.read_buffer_size;
###################################################################################
SET @@session.read_buffer_size = 8200;
-SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ;
+SELECT @@session.read_buffer_size;
SET @@session.read_buffer_size = 8201;
-SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ;
+SELECT @@session.read_buffer_size;
SET @@session.read_buffer_size = 2147479552;
SELECT @@session.read_buffer_size;
SET @@session.read_buffer_size = 2147479551;
@@ -101,27 +101,26 @@ SELECT @@session.read_buffer_size;
##################################################################
SET @@global.read_buffer_size = 8199;
-SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ;
+SELECT @@global.read_buffer_size;
SET @@global.read_buffer_size = -1024;
-SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ;
+SELECT @@global.read_buffer_size;
SET @@global.read_buffer_size = 2147479553;
SELECT @@global.read_buffer_size;
---Error ER_PARSE_ERROR
-SET @@global.read_buffer_size = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.read_buffer_size = 65530.34;
SELECT @@global.read_buffer_size;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.read_buffer_size = test;
SELECT @@global.read_buffer_size;
SET @@session.read_buffer_size = 8199;
-SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ;
+SELECT @@session.read_buffer_size;
SET @@session.read_buffer_size = -2;
-SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ;
---Error ER_PARSE_ERROR
-SET @@session.read_buffer_size = 65530.34.;
+SELECT @@session.read_buffer_size;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.read_buffer_size = 65530.34;
SET @@session.read_buffer_size = 2147479553;
SELECT @@session.read_buffer_size;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.read_buffer_size = test;
@@ -154,11 +153,9 @@ WHERE VARIABLE_NAME='read_buffer_size';
####################################################################
SET @@global.read_buffer_size = TRUE;
-SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ;
+SELECT @@global.read_buffer_size;
SET @@global.read_buffer_size = FALSE;
-SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ;
-echo 'Bug: FN_DYNVARS_138_08- Errors are not coming on assigning TRUE/FALSE to variable';
-
+SELECT @@global.read_buffer_size;
--echo '#---------------------FN_DYNVARS_138_09----------------------#'
####################################################################################
@@ -185,7 +182,7 @@ SELECT @@local.read_buffer_size = @@session.read_buffer_size;
###################################################################################
SET read_buffer_size = 9100;
-SELECT @@read_buffer_size= 8200 OR @@read_buffer_size= 8228 ;
+SELECT @@read_buffer_size;
--Error ER_UNKNOWN_TABLE
SELECT local.read_buffer_size;
--Error ER_UNKNOWN_TABLE
diff --git a/mysql-test/suite/sys_vars/t/read_only_basic.test b/mysql-test/suite/sys_vars/t/read_only_basic.test
index 917842256b1..0f77e983f92 100644
--- a/mysql-test/suite/sys_vars/t/read_only_basic.test
+++ b/mysql-test/suite/sys_vars/t/read_only_basic.test
@@ -90,7 +90,7 @@ SELECT @@global.read_only;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.read_only = 10240022115;
SELECT @@global.read_only;
---Error ER_WRONG_VALUE_FOR_VAR
+--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.read_only = 10000.01;
SELECT @@global.read_only;
--Error ER_WRONG_VALUE_FOR_VAR
@@ -99,7 +99,6 @@ SELECT @@global.read_only;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.read_only = 42949672950;
SELECT @@global.read_only;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.read_only = 'test';
@@ -121,11 +120,11 @@ SELECT @@read_only;
# Check if the value in GLOBAL & SESSION Tables matches values in variable #
##############################################################################
-SELECT @@global.read_only = VARIABLE_VALUE
+SELECT IF(@@global.read_only, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='read_only';
-SELECT @@read_only = VARIABLE_VALUE
+SELECT IF(@@read_only, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='read_only';
diff --git a/mysql-test/suite/sys_vars/t/read_rnd_buffer_size_basic.test b/mysql-test/suite/sys_vars/t/read_rnd_buffer_size_basic.test
index e3d2a4b89f7..f883a1bed3f 100644
--- a/mysql-test/suite/sys_vars/t/read_rnd_buffer_size_basic.test
+++ b/mysql-test/suite/sys_vars/t/read_rnd_buffer_size_basic.test
@@ -54,35 +54,19 @@ SET @@session.read_rnd_buffer_size = 2000;
SET @@session.read_rnd_buffer_size = DEFAULT;
SELECT @@session.read_rnd_buffer_size;
-
---echo '#--------------------FN_DYNVARS_140_02-------------------------#'
-######################################################################
-# Check the DEFAULT value of read_rnd_buffer_size #
-######################################################################
-
-SET @@global.read_rnd_buffer_size = DEFAULT;
-SELECT @@global.read_rnd_buffer_size = 262144;
-
-SET @@session.read_rnd_buffer_size = DEFAULT;
-SELECT @@session.read_rnd_buffer_size = 262144;
---echo 'Bug# 34876: This variable has invalid default value as compared to documentation';
-
-
--echo '#--------------------FN_DYNVARS_140_03-------------------------#'
################################################################################
# Change the value of read_rnd_buffer_size to a valid value for GLOBAL Scope #
################################################################################
SET @@global.read_rnd_buffer_size = 8201;
-SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228;
+SELECT @@global.read_rnd_buffer_size;
SET @@global.read_rnd_buffer_size = 8200;
-SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228;
+SELECT @@global.read_rnd_buffer_size;
SET @@global.read_rnd_buffer_size = 2147479552;
SELECT @@global.read_rnd_buffer_size;
SET @@global.read_rnd_buffer_size = 2147479551;
SELECT @@global.read_rnd_buffer_size;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
-
--echo '#--------------------FN_DYNVARS_140_04-------------------------#'
###################################################################################
@@ -90,9 +74,9 @@ SELECT @@global.read_rnd_buffer_size;
###################################################################################
SET @@session.read_rnd_buffer_size = 8200;
-SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228;
+SELECT @@session.read_rnd_buffer_size;
SET @@session.read_rnd_buffer_size = 8201;
-SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228;
+SELECT @@session.read_rnd_buffer_size;
SET @@session.read_rnd_buffer_size = 2147479552;
SELECT @@session.read_rnd_buffer_size;
SET @@session.read_rnd_buffer_size = 2147479551;
@@ -105,32 +89,24 @@ SELECT @@session.read_rnd_buffer_size;
##################################################################
SET @@global.read_rnd_buffer_size = 8199;
-SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228;
+SELECT @@global.read_rnd_buffer_size;
SET @@global.read_rnd_buffer_size = -1024;
-SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228;
-SET @@global.read_rnd_buffer_size = 2147479553;
SELECT @@global.read_rnd_buffer_size;
---Error ER_PARSE_ERROR
-SET @@global.read_rnd_buffer_size = 65530.34.;
+SET @@global.read_rnd_buffer_size = 2147479553;
SELECT @@global.read_rnd_buffer_size;
--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.read_rnd_buffer_size = 65530.34;
+--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.read_rnd_buffer_size = test;
-SELECT @@global.read_rnd_buffer_size;
SET @@session.read_rnd_buffer_size = 8199;
-SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228;
+SELECT @@session.read_rnd_buffer_size;
SET @@session.read_rnd_buffer_size = -2;
-SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228;
---Error ER_PARSE_ERROR
-SET @@session.read_rnd_buffer_size = 65530.34.;
-SET @@session.read_rnd_buffer_size = 2147479553;
SELECT @@session.read_rnd_buffer_size;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.read_rnd_buffer_size = 65530.34;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.read_rnd_buffer_size = test;
-SELECT @@session.read_rnd_buffer_size;
-
--echo '#------------------FN_DYNVARS_140_06-----------------------#'
####################################################################
@@ -155,9 +131,9 @@ VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='re
####################################################################
SET @@global.read_rnd_buffer_size = TRUE;
-SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228;
+SELECT @@global.read_rnd_buffer_size;
SET @@global.read_rnd_buffer_size = FALSE;
-SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228;
+SELECT @@global.read_rnd_buffer_size;
--echo '#---------------------FN_DYNVARS_140_09----------------------#'
@@ -185,7 +161,7 @@ SELECT @@local.read_rnd_buffer_size = @@session.read_rnd_buffer_size;
###################################################################################
SET read_rnd_buffer_size = 9100;
-SELECT @@read_rnd_buffer_size= 8200 OR @@read_rnd_buffer_size= 8228;
+SELECT @@read_rnd_buffer_size;
--Error ER_UNKNOWN_TABLE
SELECT local.read_rnd_buffer_size;
--Error ER_UNKNOWN_TABLE
diff --git a/mysql-test/suite/sys_vars/t/relay_log_basic.test b/mysql-test/suite/sys_vars/t/relay_log_basic.test
new file mode 100644
index 00000000000..1ea60577556
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/relay_log_basic.test
@@ -0,0 +1,19 @@
+--source include/not_embedded.inc
+#
+# only global
+#
+select @@global.relay_log;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.relay_log;
+show global variables like 'relay_log';
+show session variables like 'relay_log';
+select * from information_schema.global_variables where variable_name='relay_log';
+select * from information_schema.session_variables where variable_name='relay_log';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global relay_log=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session relay_log=1;
diff --git a/mysql-test/suite/sys_vars/t/relay_log_index_basic.test b/mysql-test/suite/sys_vars/t/relay_log_index_basic.test
new file mode 100644
index 00000000000..fa69d978016
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/relay_log_index_basic.test
@@ -0,0 +1,19 @@
+--source include/not_embedded.inc
+#
+# only global
+#
+select @@global.relay_log_index;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.relay_log_index;
+show global variables like 'relay_log_index';
+show session variables like 'relay_log_index';
+select * from information_schema.global_variables where variable_name='relay_log_index';
+select * from information_schema.session_variables where variable_name='relay_log_index';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global relay_log_index=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session relay_log_index=1;
diff --git a/mysql-test/suite/sys_vars/t/relay_log_info_file_basic.test b/mysql-test/suite/sys_vars/t/relay_log_info_file_basic.test
new file mode 100644
index 00000000000..4709b8e3e47
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/relay_log_info_file_basic.test
@@ -0,0 +1,19 @@
+--source include/not_embedded.inc
+#
+# only global
+#
+select @@global.relay_log_info_file;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.relay_log_info_file;
+show global variables like 'relay_log_info_file';
+show session variables like 'relay_log_info_file';
+select * from information_schema.global_variables where variable_name='relay_log_info_file';
+select * from information_schema.session_variables where variable_name='relay_log_info_file';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global relay_log_info_file=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session relay_log_info_file=1;
diff --git a/mysql-test/suite/sys_vars/t/relay_log_purge_basic.test b/mysql-test/suite/sys_vars/t/relay_log_purge_basic.test
index 7e4d6a51440..081b79ebb73 100644
--- a/mysql-test/suite/sys_vars/t/relay_log_purge_basic.test
+++ b/mysql-test/suite/sys_vars/t/relay_log_purge_basic.test
@@ -123,7 +123,7 @@ SELECT @@session.relay_log_purge;
# Check if the value in GLOBAL Tables matches values in variable #
#####################################################################
-SELECT @@global.relay_log_purge = VARIABLE_VALUE
+SELECT IF(@@global.relay_log_purge, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='relay_log_purge';
diff --git a/mysql-test/suite/sys_vars/t/relay_log_recovery_basic.test b/mysql-test/suite/sys_vars/t/relay_log_recovery_basic.test
new file mode 100644
index 00000000000..57c28468bd1
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/relay_log_recovery_basic.test
@@ -0,0 +1,39 @@
+--source include/not_embedded.inc
+
+SET @start_global_value = @@global.relay_log_recovery;
+SELECT @start_global_value;
+
+#
+# exists as global only
+#
+select @@global.relay_log_recovery;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.relay_log_recovery;
+show global variables like 'relay_log_recovery';
+show session variables like 'relay_log_recovery';
+select * from information_schema.global_variables where variable_name='relay_log_recovery';
+select * from information_schema.session_variables where variable_name='relay_log_recovery';
+
+#
+# show that it's writable
+#
+set global relay_log_recovery=1;
+select @@global.relay_log_recovery;
+set global relay_log_recovery=OFF;
+select @@global.relay_log_recovery;
+--error ER_GLOBAL_VARIABLE
+set session relay_log_recovery=1;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global relay_log_recovery=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global relay_log_recovery=1e1;
+--error ER_WRONG_VALUE_FOR_VAR
+set global relay_log_recovery="foo";
+
+SET @@global.relay_log_recovery = @start_global_value;
+SELECT @@global.relay_log_recovery;
+
diff --git a/mysql-test/suite/sys_vars/t/relay_log_space_limit_basic.test b/mysql-test/suite/sys_vars/t/relay_log_space_limit_basic.test
new file mode 100644
index 00000000000..99c9fb37493
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/relay_log_space_limit_basic.test
@@ -0,0 +1,19 @@
+--source include/not_embedded.inc
+#
+# only global
+#
+select @@global.relay_log_space_limit;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.relay_log_space_limit;
+show global variables like 'relay_log_space_limit';
+show session variables like 'relay_log_space_limit';
+select * from information_schema.global_variables where variable_name='relay_log_space_limit';
+select * from information_schema.session_variables where variable_name='relay_log_space_limit';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global relay_log_space_limit=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session relay_log_space_limit=1;
diff --git a/mysql-test/suite/sys_vars/t/report_host_basic.test b/mysql-test/suite/sys_vars/t/report_host_basic.test
new file mode 100644
index 00000000000..5565370f88c
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/report_host_basic.test
@@ -0,0 +1,19 @@
+--source include/not_embedded.inc
+#
+# only global
+#
+select @@global.report_host;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.report_host;
+show global variables like 'report_host';
+show session variables like 'report_host';
+select * from information_schema.global_variables where variable_name='report_host';
+select * from information_schema.session_variables where variable_name='report_host';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global report_host=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session report_host=1;
diff --git a/mysql-test/suite/sys_vars/t/report_password_basic.test b/mysql-test/suite/sys_vars/t/report_password_basic.test
new file mode 100644
index 00000000000..ed564cfe2ad
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/report_password_basic.test
@@ -0,0 +1,19 @@
+--source include/not_embedded.inc
+#
+# only global
+#
+select @@global.report_password;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.report_password;
+show global variables like 'report_password';
+show session variables like 'report_password';
+select * from information_schema.global_variables where variable_name='report_password';
+select * from information_schema.session_variables where variable_name='report_password';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global report_password=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session report_password=1;
diff --git a/mysql-test/suite/sys_vars/t/report_port_basic.test b/mysql-test/suite/sys_vars/t/report_port_basic.test
new file mode 100644
index 00000000000..122c92c5446
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/report_port_basic.test
@@ -0,0 +1,24 @@
+--source include/not_embedded.inc
+#
+# only global
+#
+--replace_result $DEFAULT_MASTER_PORT DEFAULT_MASTER_PORT
+select @@global.report_port;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.report_port;
+--replace_result $DEFAULT_MASTER_PORT DEFAULT_MASTER_PORT
+show global variables like 'report_port';
+--replace_result $DEFAULT_MASTER_PORT DEFAULT_MASTER_PORT
+show session variables like 'report_port';
+--replace_result $DEFAULT_MASTER_PORT DEFAULT_MASTER_PORT
+select * from information_schema.global_variables where variable_name='report_port';
+--replace_result $DEFAULT_MASTER_PORT DEFAULT_MASTER_PORT
+select * from information_schema.session_variables where variable_name='report_port';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global report_port=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session report_port=1;
diff --git a/mysql-test/suite/sys_vars/t/report_user_basic.test b/mysql-test/suite/sys_vars/t/report_user_basic.test
new file mode 100644
index 00000000000..192e6b772b8
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/report_user_basic.test
@@ -0,0 +1,19 @@
+--source include/not_embedded.inc
+#
+# only global
+#
+select @@global.report_user;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.report_user;
+show global variables like 'report_user';
+show session variables like 'report_user';
+select * from information_schema.global_variables where variable_name='report_user';
+select * from information_schema.session_variables where variable_name='report_user';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global report_user=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session report_user=1;
diff --git a/mysql-test/suite/sys_vars/t/rpl_init_slave_func.test b/mysql-test/suite/sys_vars/t/rpl_init_slave_func.test
index f2c66eb3a0a..1f5cfe795bf 100644
--- a/mysql-test/suite/sys_vars/t/rpl_init_slave_func.test
+++ b/mysql-test/suite/sys_vars/t/rpl_init_slave_func.test
@@ -31,6 +31,9 @@
source include/master-slave.inc;
--echo connection slave
connection slave;
+--disable_query_log
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+--enable_query_log
#
# save the current values
@@ -39,8 +42,9 @@ SET @start_init_slave= @@global.init_slave;
# setting of a global value with an effect on the next start of the slave server
# check that @@global.init_slave could be set
+SET NAMES utf8;
let $my_init_slave=
- 'SET @@global.max_connections = @@global.max_connections + 1';
+ 'SET @@global.max_connections = @@global.max_connections + 1 -- комментарий';
eval SET @@global.init_slave = $my_init_slave;
# show the data type of the variable
@@ -49,6 +53,7 @@ DROP TABLE IF EXISTS t1;
CREATE TEMPORARY TABLE t1 AS SELECT @@global.init_slave AS my_column;
--enable_warnings
DESCRIBE t1;
+select length(my_column) from t1;
DROP TABLE t1;
#
# check that the new setting of @@global.init_slave becomes immediately visible
diff --git a/mysql-test/suite/sys_vars/t/secure_auth_basic.test b/mysql-test/suite/sys_vars/t/secure_auth_basic.test
index b52f219097b..4e4566ce1ff 100644
--- a/mysql-test/suite/sys_vars/t/secure_auth_basic.test
+++ b/mysql-test/suite/sys_vars/t/secure_auth_basic.test
@@ -130,7 +130,7 @@ WHERE VARIABLE_NAME='secure_auth';
# Check if the value in GLOBAL Table matches value in variable #
########################################################################
-SELECT @@global.secure_auth = VARIABLE_VALUE
+SELECT IF(@@global.secure_auth, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='secure_auth';
SELECT @@global.secure_auth;
diff --git a/mysql-test/suite/sys_vars/t/secure_file_priv_basic.test b/mysql-test/suite/sys_vars/t/secure_file_priv_basic.test
new file mode 100644
index 00000000000..fee18e441d1
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/secure_file_priv_basic.test
@@ -0,0 +1,23 @@
+#
+# only global
+#
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+select @@global.secure_file_priv;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.secure_file_priv;
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+show global variables like 'secure_file_priv';
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+show session variables like 'secure_file_priv';
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+select * from information_schema.global_variables where variable_name='secure_file_priv';
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+select * from information_schema.session_variables where variable_name='secure_file_priv';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global secure_file_priv=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session secure_file_priv=1;
diff --git a/mysql-test/suite/sys_vars/inc/server_id_basic.inc b/mysql-test/suite/sys_vars/t/server_id_basic.test
index 47afadb5016..9d41823053a 100644
--- a/mysql-test/suite/sys_vars/inc/server_id_basic.inc
+++ b/mysql-test/suite/sys_vars/t/server_id_basic.test
@@ -107,8 +107,8 @@ SELECT @@global.server_id;
SET @@global.server_id = 2147483649*2;
SELECT @@global.server_id;
---Error ER_PARSE_ERROR
-SET @@global.server_id = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.server_id = 65530.34;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.server_id = '125';
--Error ER_WRONG_TYPE_FOR_VAR
@@ -116,9 +116,6 @@ SET @@global.server_id = 7483649.56;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.server_id = 1G;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
-
-
--echo '#------------------FN_DYNVARS_144_06-----------------------#'
####################################################################
# Check if the value in GLOBAL Table matches value in variable #
diff --git a/mysql-test/suite/sys_vars/t/server_id_basic_32.test b/mysql-test/suite/sys_vars/t/server_id_basic_32.test
deleted file mode 100644
index e01b271e002..00000000000
--- a/mysql-test/suite/sys_vars/t/server_id_basic_32.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 32 bit machines #
-################################################################################
-
---source include/have_32bit.inc
---source suite/sys_vars/inc/server_id_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/server_id_basic_64.test b/mysql-test/suite/sys_vars/t/server_id_basic_64.test
deleted file mode 100644
index 4ef870aa977..00000000000
--- a/mysql-test/suite/sys_vars/t/server_id_basic_64.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 64 bit machines #
-################################################################################
-
---source include/have_64bit.inc
---source suite/sys_vars/inc/server_id_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/shared_memory_base_name_basic.test b/mysql-test/suite/sys_vars/t/shared_memory_base_name_basic.test
new file mode 100644
index 00000000000..591f3cec5e5
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/shared_memory_base_name_basic.test
@@ -0,0 +1,24 @@
+--source include/windows.inc
+#
+# only global
+#
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+select @@global.shared_memory_base_name;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.shared_memory_base_name;
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+show global variables like 'shared_memory_base_name';
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+show session variables like 'shared_memory_base_name';
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+select * from information_schema.global_variables where variable_name='shared_memory_base_name';
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+select * from information_schema.session_variables where variable_name='shared_memory_base_name';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global shared_memory_base_name=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session shared_memory_base_name=1;
diff --git a/mysql-test/suite/sys_vars/t/shared_memory_basic.test b/mysql-test/suite/sys_vars/t/shared_memory_basic.test
new file mode 100644
index 00000000000..ff2c5fad81d
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/shared_memory_basic.test
@@ -0,0 +1,19 @@
+--source include/windows.inc
+#
+# only global
+#
+select @@global.shared_memory;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.shared_memory;
+show global variables like 'shared_memory';
+show session variables like 'shared_memory';
+select * from information_schema.global_variables where variable_name='shared_memory';
+select * from information_schema.session_variables where variable_name='shared_memory';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global shared_memory=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session shared_memory=1;
diff --git a/mysql-test/suite/sys_vars/t/skip_external_locking_basic.test b/mysql-test/suite/sys_vars/t/skip_external_locking_basic.test
new file mode 100644
index 00000000000..67b58ab8ff4
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/skip_external_locking_basic.test
@@ -0,0 +1,18 @@
+#
+# only global
+#
+select @@global.skip_external_locking;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.skip_external_locking;
+show global variables like 'skip_external_locking';
+show session variables like 'skip_external_locking';
+select * from information_schema.global_variables where variable_name='skip_external_locking';
+select * from information_schema.session_variables where variable_name='skip_external_locking';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global skip_external_locking=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session skip_external_locking=1;
diff --git a/mysql-test/suite/sys_vars/t/skip_networking_basic.test b/mysql-test/suite/sys_vars/t/skip_networking_basic.test
new file mode 100644
index 00000000000..09a775cc257
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/skip_networking_basic.test
@@ -0,0 +1,18 @@
+#
+# only global
+#
+select @@global.skip_networking;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.skip_networking;
+show global variables like 'skip_networking';
+show session variables like 'skip_networking';
+select * from information_schema.global_variables where variable_name='skip_networking';
+select * from information_schema.session_variables where variable_name='skip_networking';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global skip_networking=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session skip_networking=1;
diff --git a/mysql-test/suite/sys_vars/t/skip_show_database_basic.test b/mysql-test/suite/sys_vars/t/skip_show_database_basic.test
new file mode 100644
index 00000000000..9e0fddd120c
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/skip_show_database_basic.test
@@ -0,0 +1,18 @@
+#
+# only global
+#
+select @@global.skip_show_database;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.skip_show_database;
+show global variables like 'skip_show_database';
+show session variables like 'skip_show_database';
+select * from information_schema.global_variables where variable_name='skip_show_database';
+select * from information_schema.session_variables where variable_name='skip_show_database';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global skip_show_database=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session skip_show_database=1;
diff --git a/mysql-test/suite/sys_vars/t/slave_allow_batching_basic.test b/mysql-test/suite/sys_vars/t/slave_allow_batching_basic.test
index cf31917933a..e8b52259051 100644
--- a/mysql-test/suite/sys_vars/t/slave_allow_batching_basic.test
+++ b/mysql-test/suite/sys_vars/t/slave_allow_batching_basic.test
@@ -37,8 +37,6 @@
--Error ER_UNKNOWN_SYSTEM_VARIABLE
SET @global_start_value = @@global.slave_allow_batching;
---echo 'Bug: This variable is not supported in mysql version 5.1.22'
-
--echo '#--------------------FN_DYNVARS_145_01------------------------#'
########################################################################
# Display the DEFAULT value of slave_allow_batching #
@@ -130,7 +128,7 @@ SET @global_start_value = @@global.slave_allow_batching;
# Check if the value in GLOBAL Table matches value in variable #
#########################################################################
-#SELECT @@global.slave_allow_batching = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='slave_allow_batching';
+#SELECT IF(@@global.slave_allow_batching, "ON", "OFF") = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='slave_allow_batching';
#SELECT @@global.slave_allow_batching;
#SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='slave_allow_batching';
#--echo 'Bug: value in information schema does not match'
diff --git a/mysql-test/suite/sys_vars/t/slave_compressed_protocol_basic.test b/mysql-test/suite/sys_vars/t/slave_compressed_protocol_basic.test
index 29a3227a8f5..25ac8f35c5d 100644
--- a/mysql-test/suite/sys_vars/t/slave_compressed_protocol_basic.test
+++ b/mysql-test/suite/sys_vars/t/slave_compressed_protocol_basic.test
@@ -127,7 +127,7 @@ WHERE VARIABLE_NAME='slave_compressed_protocol';
# Check if the value in GLOBAL Table matches value in variable #
#########################################################################
-SELECT @@global.slave_compressed_protocol = VARIABLE_VALUE
+SELECT IF(@@global.slave_compressed_protocol, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='slave_compressed_protocol';
SELECT @@global.slave_compressed_protocol;
diff --git a/mysql-test/suite/sys_vars/t/slave_exec_mode_basic.test b/mysql-test/suite/sys_vars/t/slave_exec_mode_basic.test
index 5c5b4e7da1b..503fb382602 100644
--- a/mysql-test/suite/sys_vars/t/slave_exec_mode_basic.test
+++ b/mysql-test/suite/sys_vars/t/slave_exec_mode_basic.test
@@ -23,6 +23,7 @@
# #
################################################################################
+--source include/not_embedded.inc
--source include/load_sysvars.inc
########################################################################
diff --git a/mysql-test/suite/sys_vars/t/slave_load_tmpdir_basic.test b/mysql-test/suite/sys_vars/t/slave_load_tmpdir_basic.test
new file mode 100644
index 00000000000..4121c881ee5
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/slave_load_tmpdir_basic.test
@@ -0,0 +1,24 @@
+--source include/not_embedded.inc
+#
+# only global
+#
+--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
+select @@global.slave_load_tmpdir;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.slave_load_tmpdir;
+--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
+show global variables like 'slave_load_tmpdir';
+--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
+show session variables like 'slave_load_tmpdir';
+--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
+select * from information_schema.global_variables where variable_name='slave_load_tmpdir';
+--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
+select * from information_schema.session_variables where variable_name='slave_load_tmpdir';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global slave_load_tmpdir=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session slave_load_tmpdir=1;
diff --git a/mysql-test/suite/sys_vars/t/slave_net_timeout_basic.test b/mysql-test/suite/sys_vars/t/slave_net_timeout_basic.test
index 5662eec3957..f534bd2f28c 100644
--- a/mysql-test/suite/sys_vars/t/slave_net_timeout_basic.test
+++ b/mysql-test/suite/sys_vars/t/slave_net_timeout_basic.test
@@ -105,8 +105,8 @@ SELECT @@global.slave_net_timeout;
SET @@global.slave_net_timeout = 2147483649*2;
SELECT @@global.slave_net_timeout;
---Error ER_PARSE_ERROR
-SET @@global.slave_net_timeout = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.slave_net_timeout = 65530.34;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.slave_net_timeout = 100s;
--Error ER_WRONG_TYPE_FOR_VAR
@@ -114,9 +114,6 @@ SET @@global.slave_net_timeout = 7483649.56;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.slave_net_timeout = 0.6;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
-
-
--echo '#------------------FN_DYNVARS_146_06-----------------------#'
####################################################################
# Check if the value in GLOBAL Table matches value in variable #
diff --git a/mysql-test/suite/sys_vars/t/slave_skip_errors_basic.test b/mysql-test/suite/sys_vars/t/slave_skip_errors_basic.test
new file mode 100644
index 00000000000..c5c8aba7e3a
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/slave_skip_errors_basic.test
@@ -0,0 +1,19 @@
+--source include/not_embedded.inc
+#
+# only global
+#
+select @@global.slave_skip_errors;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.slave_skip_errors;
+show global variables like 'slave_skip_errors';
+show session variables like 'slave_skip_errors';
+select * from information_schema.global_variables where variable_name='slave_skip_errors';
+select * from information_schema.session_variables where variable_name='slave_skip_errors';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global slave_skip_errors=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session slave_skip_errors=1;
diff --git a/mysql-test/suite/sys_vars/t/slave_type_conversions_basic.test b/mysql-test/suite/sys_vars/t/slave_type_conversions_basic.test
new file mode 100644
index 00000000000..c6debb076db
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/slave_type_conversions_basic.test
@@ -0,0 +1,24 @@
+
+--source include/not_embedded.inc
+
+set @saved_slave_type_conversions = @@global.slave_type_conversions;
+
+SELECT @@global.slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='';
+SELECT @@global.slave_type_conversions;
+
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_NON_LOSSY';
+SELECT @@global.slave_type_conversions;
+
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY';
+SELECT @@global.slave_type_conversions;
+
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY,ALL_NON_LOSSY';
+SELECT @@global.slave_type_conversions;
+
+# checking that setting variable to a non existing value raises error
+--error ER_WRONG_VALUE_FOR_VAR
+SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY,ALL_NON_LOSSY,NONEXISTING_BIT';
+SELECT @@global.slave_type_conversions;
+
+set global slave_type_conversions = @saved_slave_type_conversions;
diff --git a/mysql-test/suite/sys_vars/t/slow_launch_time_basic.test b/mysql-test/suite/sys_vars/t/slow_launch_time_basic.test
index 6289a91abb3..bedcb6201b1 100644
--- a/mysql-test/suite/sys_vars/t/slow_launch_time_basic.test
+++ b/mysql-test/suite/sys_vars/t/slow_launch_time_basic.test
@@ -90,7 +90,6 @@ SET @@global.slow_launch_time = -1024;
SELECT @@global.slow_launch_time;
SET @@global.slow_launch_time = 42949672950;
SELECT @@global.slow_launch_time;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.slow_launch_time = ON;
diff --git a/mysql-test/suite/sys_vars/t/slow_query_log_basic.test b/mysql-test/suite/sys_vars/t/slow_query_log_basic.test
index 3a1b2fbd9e7..fef37b5ff4a 100644
--- a/mysql-test/suite/sys_vars/t/slow_query_log_basic.test
+++ b/mysql-test/suite/sys_vars/t/slow_query_log_basic.test
@@ -104,7 +104,7 @@ SELECT @@session.slow_query_log;
# Check if the value in GLOBAL Tables matches values in variable #
##############################################################################
-SELECT @@global.slow_query_log = VARIABLE_VALUE
+SELECT IF(@@global.slow_query_log, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='slow_query_log';
diff --git a/mysql-test/suite/sys_vars/t/slow_query_log_file_basic.test b/mysql-test/suite/sys_vars/t/slow_query_log_file_basic.test
index 9125b686cad..bac0d0c8198 100644
--- a/mysql-test/suite/sys_vars/t/slow_query_log_file_basic.test
+++ b/mysql-test/suite/sys_vars/t/slow_query_log_file_basic.test
@@ -43,7 +43,8 @@ SET @start_value = @@global.slow_query_log_file;
###############################################
SET @@global.slow_query_log_file = DEFAULT;
-SELECT RIGHT(@@global.slow_query_log_file,15);
+SET @a=concat(left(@@hostname, instr(concat(@@hostname, '.'), '.')-1), '-slow.log');
+SELECT RIGHT(@@global.slow_query_log_file, length(@a)) = @a;
--echo '#--------------------FN_DYNVARS_004_02------------------------#'
diff --git a/mysql-test/suite/sys_vars/t/socket_basic.test b/mysql-test/suite/sys_vars/t/socket_basic.test
new file mode 100644
index 00000000000..f96a863a216
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/socket_basic.test
@@ -0,0 +1,23 @@
+#
+# only global
+#
+--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
+select @@global.socket;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.socket;
+--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
+show global variables like 'socket';
+--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
+show session variables like 'socket';
+--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
+select * from information_schema.global_variables where variable_name='socket';
+--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
+select * from information_schema.session_variables where variable_name='socket';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global socket=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session socket=1;
diff --git a/mysql-test/suite/sys_vars/t/sql_auto_is_null_basic.test b/mysql-test/suite/sys_vars/t/sql_auto_is_null_basic.test
index a843b88bf85..07bf38773af 100644
--- a/mysql-test/suite/sys_vars/t/sql_auto_is_null_basic.test
+++ b/mysql-test/suite/sys_vars/t/sql_auto_is_null_basic.test
@@ -27,75 +27,36 @@
# Displaying default value #
####################################################################
-SELECT COUNT(@@SESSION.sql_auto_is_null);
---echo 1 Expected
+SELECT @@session.sql_auto_is_null;
--echo '#---------------------BS_STVARS_044_02----------------------#'
-#
-# Test case for Bug #35433
-#
####################################################################
# Check if Value can set #
####################################################################
-
-#--error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SET @@SESSION.sql_auto_is_null=1;
---ECHO "BUG:It should give error on setting this variable as it is readonly variable"
---echo Expected error 'Read only variable'
-
-SELECT COUNT(@@SESSION.sql_auto_is_null);
---echo 1 Expected
-
-
-
+SET @@session.sql_auto_is_null=1;
+SELECT @@session.sql_auto_is_null;
--echo '#---------------------BS_STVARS_044_03----------------------#'
#################################################################
-# Check if the value in SESSION Table matches value in variable #
+# Check if the value in session Table matches value in variable #
#################################################################
-SELECT @@SESSION.sql_auto_is_null = VARIABLE_VALUE
+SELECT IF(@@session.sql_auto_is_null, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_auto_is_null';
---echo 1 Expected
-
-SELECT COUNT(@@SESSION.sql_auto_is_null);
---echo 1 Expected
-SELECT COUNT(VARIABLE_VALUE)
-FROM INFORMATION_SCHEMA.SESSION_VARIABLES
+SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_auto_is_null';
---echo 1 Expected
-
-
---echo '#---------------------BS_STVARS_044_04----------------------#'
-################################################################################
-# Check if accessing variable with and without SESSION point to same variable #
-################################################################################
-SELECT @@sql_auto_is_null = @@SESSION.sql_auto_is_null;
---echo 1 Expected
-
-
--echo '#---------------------BS_STVARS_044_05----------------------#'
################################################################################
# Check if sql_auto_is_null can be accessed with and without @@ sign #
################################################################################
-SELECT COUNT(@@sql_auto_is_null);
---echo 1 Expected
-SELECT COUNT(@@local.sql_auto_is_null);
---echo 1 Expected
-SELECT COUNT(@@SESSION.sql_auto_is_null);
---echo 1 Expected
-
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT COUNT(@@GLOBAL.sql_auto_is_null);
---echo Expected error 'Variable is a SESSION variable'
-
---error ER_BAD_FIELD_ERROR
-SELECT COUNT(sql_auto_is_null = @@GLOBAL.sql_auto_is_null);
---echo Expected error 'Readonly variable'
+SELECT @@sql_auto_is_null;
+SELECT @@local.sql_auto_is_null;
+SELECT @@session.sql_auto_is_null;
+SELECT @@global.sql_auto_is_null;
diff --git a/mysql-test/suite/sys_vars/t/sql_big_selects_basic.test b/mysql-test/suite/sys_vars/t/sql_big_selects_basic.test
index dd83a19230a..42331d766be 100644
--- a/mysql-test/suite/sys_vars/t/sql_big_selects_basic.test
+++ b/mysql-test/suite/sys_vars/t/sql_big_selects_basic.test
@@ -93,12 +93,8 @@ SET @@session.sql_big_selects = "Y";
SET @@session.sql_big_selects = TRÜE;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_big_selects = ÕN;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_big_selects = OF;
-SELECT @@session.sql_big_selects;
-
---echo 'Bug # 34828: OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_big_selects = ÓFF;
--Error ER_WRONG_VALUE_FOR_VAR
@@ -112,11 +108,9 @@ SET @@session.sql_big_selects = NO;
# Test if accessing global sql_big_selects gives error #
########################################################################
---Error ER_LOCAL_VARIABLE
-SET @@global.sql_big_selects = 0;
-
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SET @@global.sql_big_selects = 1-@@global.sql_big_selects;
SELECT @@global.sql_big_selects;
+SET @@global.sql_big_selects = 1-@@global.sql_big_selects;
--echo '#----------------------FN_DYNVARS_153_06------------------------#'
#########################################################################
@@ -132,7 +126,7 @@ WHERE VARIABLE_NAME='sql_big_selects';
# Check if the value in GLOBAL Table matches value in variable #
########################################################################
-SELECT @@session.sql_big_selects = VARIABLE_VALUE
+SELECT IF(@@session.sql_big_selects, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_big_selects';
SELECT @@session.sql_big_selects;
diff --git a/mysql-test/suite/sys_vars/t/sql_big_tables_basic.test b/mysql-test/suite/sys_vars/t/sql_big_tables_basic.test
index 4e3dbdc9504..373ae06c850 100644
--- a/mysql-test/suite/sys_vars/t/sql_big_tables_basic.test
+++ b/mysql-test/suite/sys_vars/t/sql_big_tables_basic.test
@@ -96,12 +96,8 @@ SET @@session.sql_big_tables = "Y";
SET @@session.sql_big_tables = TRÜE;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_big_tables = ÕN;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_big_tables = OF;
-SELECT @@session.sql_big_tables;
-
---echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_big_tables = ÓFF;
--Error ER_WRONG_VALUE_FOR_VAR
@@ -115,10 +111,9 @@ SET @@session.sql_big_tables = NO;
# Test if accessing global sql_big_tables gives error #
###########################################################################
---Error ER_LOCAL_VARIABLE
-SET @@global.sql_big_tables = 0;
-
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SET @@global.sql_big_tables = 1-@@global.sql_big_tables;
+SELECT @@global.sql_big_tables;
+SET @@global.sql_big_tables = 1-@@global.sql_big_tables;
SELECT @@global.sql_big_tables;
--echo '#----------------------FN_DYNVARS_154_06------------------------#'
@@ -135,7 +130,7 @@ WHERE VARIABLE_NAME='sql_big_tables';
# Check if the value in GLOBAL Table matches value in variable #
#########################################################################
-SELECT @@session.sql_big_tables = VARIABLE_VALUE
+SELECT IF(@@session.sql_big_tables, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_big_tables';
SELECT @@session.sql_big_tables;
diff --git a/mysql-test/suite/sys_vars/t/sql_buffer_result_basic.test b/mysql-test/suite/sys_vars/t/sql_buffer_result_basic.test
index f5a5e323fc4..f5f99efeb0a 100644
--- a/mysql-test/suite/sys_vars/t/sql_buffer_result_basic.test
+++ b/mysql-test/suite/sys_vars/t/sql_buffer_result_basic.test
@@ -92,25 +92,15 @@ SET @@session.sql_buffer_result = 2;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_buffer_result = "TRU";
+--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.sql_buffer_result = 0.4;
-SELECT @@session.sql_buffer_result;
-
-SET @@session.sql_buffer_result = 1.4;
-SELECT @@session.sql_buffer_result;
-
---echo 'Bug: Decimal values are accepted and rounded to an integer before';
---echo 'assingment.';
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_buffer_result = TRÜE;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_buffer_result = ÕN;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_buffer_result = OF;
-SELECT @@session.sql_buffer_result;
-
---echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_buffer_result = ÓFF;
--Error ER_WRONG_VALUE_FOR_VAR
@@ -124,10 +114,9 @@ SET @@session.sql_buffer_result = NO;
# Test if accessing global sql_buffer_result gives error #
###########################################################################
---Error ER_LOCAL_VARIABLE
-SET @@global.sql_buffer_result = 0;
-
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SET @@global.sql_buffer_result = 1-@@global.sql_buffer_result;
+SELECT @@global.sql_buffer_result;
+SET @@global.sql_buffer_result = 1-@@global.sql_buffer_result;
SELECT @@global.sql_buffer_result;
--echo '#----------------------FN_DYNVARS_155_06------------------------#'
@@ -144,7 +133,7 @@ WHERE VARIABLE_NAME='sql_buffer_result';
# Check if the value in GLOBAL Table matches value in variable #
#########################################################################
-SELECT @@session.sql_buffer_result = VARIABLE_VALUE
+SELECT IF(@@session.sql_buffer_result, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_buffer_result';
SELECT @@session.sql_buffer_result;
diff --git a/mysql-test/suite/sys_vars/t/sql_log_bin_basic.test b/mysql-test/suite/sys_vars/t/sql_log_bin_basic.test
index 0f6d9e1e126..153a0be0b8f 100644
--- a/mysql-test/suite/sys_vars/t/sql_log_bin_basic.test
+++ b/mysql-test/suite/sys_vars/t/sql_log_bin_basic.test
@@ -97,12 +97,8 @@ SET @@session.sql_log_bin = "Y";
SET @@session.sql_log_bin = TRÜE;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_log_bin = ÕN;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_log_bin = OF;
-SELECT @@session.sql_log_bin;
-
---echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_log_bin = ÓFF;
--Error ER_WRONG_VALUE_FOR_VAR
@@ -116,11 +112,9 @@ SET @@session.sql_log_bin = NO;
# Test if accessing global sql_log_bin gives error #
###########################################################################
---Error ER_LOCAL_VARIABLE
SET @@global.sql_log_bin = 0;
-
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
SELECT @@global.sql_log_bin;
+SET @@global.sql_log_bin = 1;
--echo '#----------------------FN_DYNVARS_156_06------------------------#'
#########################################################################
@@ -134,7 +128,7 @@ SELECT count(VARIABLE_VALUE) FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARI
# Check if the value in GLOBAL Table matches value in variable #
#########################################################################
-SELECT @@session.sql_log_bin = VARIABLE_VALUE
+SELECT IF(@@session.sql_log_bin, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_log_bin';
SELECT @@session.sql_log_bin;
diff --git a/mysql-test/suite/sys_vars/t/sql_log_off_basic.test b/mysql-test/suite/sys_vars/t/sql_log_off_basic.test
index bcf9e87c1dd..38549ac35d2 100644
--- a/mysql-test/suite/sys_vars/t/sql_log_off_basic.test
+++ b/mysql-test/suite/sys_vars/t/sql_log_off_basic.test
@@ -96,12 +96,8 @@ SET @@session.sql_log_off = "Y";
SET @@session.sql_log_off = TRÜE;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_log_off = ÕN;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_log_off = OF;
-SELECT @@session.sql_log_off;
-
---echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_log_off = ÓFF;
--Error ER_WRONG_VALUE_FOR_VAR
@@ -115,10 +111,9 @@ SET @@session.sql_log_off = NO;
# Test if accessing global sql_log_off gives error #
###########################################################################
---Error ER_LOCAL_VARIABLE
-SET @@global.sql_log_off = 0;
-
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SET @@global.sql_log_off = 1-@@global.sql_log_off;
+SELECT @@global.sql_log_off;
+SET @@global.sql_log_off = 1-@@global.sql_log_off;
SELECT @@global.sql_log_off;
--echo '#----------------------FN_DYNVARS_157_06------------------------#'
@@ -135,7 +130,7 @@ WHERE VARIABLE_NAME='sql_log_off';
# Check if the value in GLOBAL Table matches value in variable #
#########################################################################
-SELECT @@session.sql_log_off = VARIABLE_VALUE
+SELECT IF(@@session.sql_log_off, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_log_off';
SELECT @@session.sql_log_off;
diff --git a/mysql-test/suite/sys_vars/t/sql_log_update_basic.test b/mysql-test/suite/sys_vars/t/sql_log_update_basic.test
new file mode 100644
index 00000000000..c48840d4a81
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/sql_log_update_basic.test
@@ -0,0 +1,35 @@
+--source include/have_profiling.inc
+
+SET @start_global_value = @@global.sql_log_update;
+SELECT @start_global_value;
+
+#
+# exists as global and session
+#
+select @@global.sql_log_update;
+select @@session.sql_log_update;
+show global variables like 'sql_log_update';
+show session variables like 'sql_log_update';
+select * from information_schema.global_variables where variable_name='sql_log_update';
+select * from information_schema.session_variables where variable_name='sql_log_update';
+
+#
+# show that it's writable
+#
+set global sql_log_update=1;
+select @@global.sql_log_update;
+set session sql_log_update=ON;
+select @@session.sql_log_update;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global sql_log_update=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global sql_log_update=1e1;
+--error ER_WRONG_VALUE_FOR_VAR
+set global sql_log_update="foo";
+
+SET @@global.sql_log_update = @start_global_value;
+SELECT @@global.sql_log_update;
diff --git a/mysql-test/suite/sys_vars/t/sql_low_priority_updates_basic.test b/mysql-test/suite/sys_vars/t/sql_low_priority_updates_basic.test
index 499723b636d..5b21bd4c79a 100644
--- a/mysql-test/suite/sys_vars/t/sql_low_priority_updates_basic.test
+++ b/mysql-test/suite/sys_vars/t/sql_low_priority_updates_basic.test
@@ -50,12 +50,8 @@ SET @@session.sql_low_priority_updates = DEFAULT;
SELECT @@session.sql_low_priority_updates;
SET @@global.sql_low_priority_updates = 1;
---Error ER_NO_DEFAULT
SET @@global.sql_low_priority_updates = DEFAULT;
---echo 'Bug: DEFAULT value is only associated with session'
-
-
--echo '#---------------------FN_DYNVARS_159_02-------------------------#'
####################################################################################
# Check if sql_low_priority_updates can be accessed with and without @@ sign #
@@ -106,7 +102,7 @@ SELECT @@global.sql_low_priority_updates;
# for session
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_low_priority_updates = -1;
---Error ER_WRONG_VALUE_FOR_VAR
+--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.sql_low_priority_updates = 1.6;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_low_priority_updates = "T";
@@ -116,12 +112,8 @@ SET @@session.sql_low_priority_updates = "Y";
SET @@session.sql_low_priority_updates = TRÜE;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_low_priority_updates = ÕN;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_low_priority_updates = OF;
-SELECT @@session.sql_low_priority_updates;
-
---echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_low_priority_updates = ÓFF;
@@ -139,12 +131,8 @@ SET @@global.sql_low_priority_updates = "Y";
SET @@global.sql_low_priority_updates = TRÜE;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.sql_low_priority_updates = ÕN;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.sql_low_priority_updates = OF;
-SELECT @@global.sql_low_priority_updates;
-
---echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.sql_low_priority_updates = ÓFF;
@@ -166,7 +154,7 @@ SELECT @@session.sql_low_priority_updates AS res_is_1;
# Check if the value in GLOBAL Table matches value in variable #
#########################################################################
-SELECT @@global.sql_low_priority_updates = VARIABLE_VALUE
+SELECT IF(@@global.sql_low_priority_updates, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='sql_low_priority_updates';
SELECT @@global.sql_low_priority_updates;
@@ -179,7 +167,7 @@ WHERE VARIABLE_NAME='sql_low_priority_updates';
# Check if the value in SESSION Table matches value in variable #
#########################################################################
-SELECT @@session.sql_low_priority_updates = VARIABLE_VALUE
+SELECT IF(@@session.sql_low_priority_updates, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_low_priority_updates';
SELECT @@session.sql_low_priority_updates;
diff --git a/mysql-test/suite/sys_vars/t/sql_max_join_size_basic.test b/mysql-test/suite/sys_vars/t/sql_max_join_size_basic.test
new file mode 100644
index 00000000000..bafa11379aa
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/sql_max_join_size_basic.test
@@ -0,0 +1,42 @@
+SET @start_global_value = @@global.sql_max_join_size;
+SELECT @start_global_value;
+
+#
+# exists as global and session
+#
+select @@global.sql_max_join_size;
+select @@session.sql_max_join_size;
+show global variables like 'sql_max_join_size';
+show session variables like 'sql_max_join_size';
+select * from information_schema.global_variables where variable_name='sql_max_join_size';
+select * from information_schema.session_variables where variable_name='sql_max_join_size';
+
+#
+# show that it's writable
+#
+set global sql_max_join_size=10;
+select @@global.sql_max_join_size;
+set session sql_max_join_size=20;
+select @@session.sql_max_join_size;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global sql_max_join_size=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global sql_max_join_size=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global sql_max_join_size="foo";
+
+#
+# affects OPTION_BIG_SELECTS
+#
+select @@sql_big_selects;
+set sql_max_join_size=cast(-1 as unsigned int);
+select @@sql_big_selects;
+set sql_max_join_size=100;
+select @@sql_big_selects;
+
+SET @@global.sql_max_join_size = @start_global_value;
+SELECT @@global.sql_max_join_size;
diff --git a/mysql-test/suite/sys_vars/t/sql_mode_basic.test b/mysql-test/suite/sys_vars/t/sql_mode_basic.test
index 24f1e8aefcb..83f938925d5 100644
--- a/mysql-test/suite/sys_vars/t/sql_mode_basic.test
+++ b/mysql-test/suite/sys_vars/t/sql_mode_basic.test
@@ -57,9 +57,6 @@ SET @@session.sql_mode = ANSI;
SET @@session.sql_mode = DEFAULT;
SELECT @@session.sql_mode;
---echo 'Bug# 34876: Default values for both session and global sql_mode is ""';
---echo 'and not OFF.';
-
--echo '#---------------------FN_DYNVARS_152_02-------------------------#'
#########################################################
# Check if NULL or empty value is accepeted #
@@ -92,9 +89,6 @@ SELECT @@session.sql_mode;
# sql modes ref: http://dev.mysql.com/doc/refman/5.1/en/server-sql-mode.html
---echo 'Bug: Incomplete sql modes valid values at:';
---echo 'http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html';
-
# check valid values for global
SET @@global.sql_mode = ANSI;
@@ -164,7 +158,6 @@ SELECT @@global.sql_mode;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.sql_mode = OFF;
---echo 'Bug: OFF is documented as an sql mode but infact it is not';
#check valid values for session
SET @@session.sql_mode = ANSI;
@@ -235,15 +228,10 @@ SELECT @@session.sql_mode;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_mode = OFF;
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.sql_mode = '?';
SELECT @@global.sql_mode;
-SET @@session.sql_mode = '?';
-SELECT @@session.sql_mode;
-
---echo 'Bug# 34834: ? is acceptable as a valid sql mode.'
-
-
--echo '#--------------------FN_DYNVARS_152_04-------------------------#'
###########################################################################
# Change the value of sql_mode to invalid value #
@@ -327,30 +315,8 @@ SET @@global.sql_mode = 4294967296;
# use of decimal values
+--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.sql_mode = 0.4;
-SELECT @@global.sql_mode;
-
-SET @@global.sql_mode = 1.0;
-SELECT @@global.sql_mode;
-
-SET @@global.sql_mode = 40000.1;
-SELECT @@global.sql_mode;
-
-SET @@global.sql_mode = 1.5;
-SELECT @@global.sql_mode;
-
-SET @@global.sql_mode = 124567.49;
-SELECT @@global.sql_mode;
-
-SET @@session.sql_mode = 50000000.5;
-SELECT @@session.sql_mode;
-
-SET @@session.sql_mode = 4294967295.4;
-SELECT @@session.sql_mode;
-
---echo 'Bug: Decimal values can be used within the range [0.0-4294967295.5).';
---echo 'Values are rounded to numeric values as evident from outcome.';
-
--echo '#---------------------FN_DYNVARS_152_08----------------------#'
###################################################################
@@ -394,8 +360,16 @@ SELECT @@global.sql_mode;
#try combining invalid mode with correct mode
--Error ER_WRONG_VALUE_FOR_VAR
-SET @@session.sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,HIGH_OR_PRECEDENCE,
-IGNORE_SPACE';
+SET @@session.sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,FOOBAR,IGNORE_SPACE';
+
+#zero-length values are ok
+SET @@sql_mode=',';
+SELECT @@sql_mode;
+SET @@sql_mode=',,,,ANSI_QUOTES,,,';
+SELECT @@sql_mode;
+--Error ER_WRONG_VALUE_FOR_VAR
+SET @@sql_mode=',,,,FOOBAR,,,,,';
+SELECT @@sql_mode;
##############################
# Restore initial value #
diff --git a/mysql-test/suite/sys_vars/t/sql_notes_basic.test b/mysql-test/suite/sys_vars/t/sql_notes_basic.test
index 984dca34e46..9af5fa35ea2 100644
--- a/mysql-test/suite/sys_vars/t/sql_notes_basic.test
+++ b/mysql-test/suite/sys_vars/t/sql_notes_basic.test
@@ -98,12 +98,8 @@ SET @@session.sql_notes = "Y";
SET @@session.sql_notes = TRÜE;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_notes = ÕN;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_notes = OF;
-SELECT @@session.sql_notes;
-
---echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_notes = ÓFF;
--Error ER_WRONG_VALUE_FOR_VAR
@@ -117,10 +113,9 @@ SET @@session.sql_notes = NO;
# Test if accessing global sql_notes gives error #
#########################################################################
---Error ER_LOCAL_VARIABLE
-SET @@global.sql_notes = 0;
-
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SET @@global.sql_notes = 1-@@global.sql_notes;
+SELECT @@global.sql_notes;
+SET @@global.sql_notes = 1-@@global.sql_notes;
SELECT @@global.sql_notes;
--echo '#----------------------FN_DYNVARS_161_06------------------------#'
@@ -135,7 +130,7 @@ SELECT count(VARIABLE_VALUE) FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARI
# Check if the value in GLOBAL Table matches value in variable #
#########################################################################
-SELECT @@session.sql_notes = VARIABLE_VALUE
+SELECT IF(@@session.sql_notes, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_notes';
SELECT @@session.sql_notes;
diff --git a/mysql-test/suite/sys_vars/t/sql_quote_show_create_basic.test b/mysql-test/suite/sys_vars/t/sql_quote_show_create_basic.test
index 1919b3ee642..020b5f51e9f 100644
--- a/mysql-test/suite/sys_vars/t/sql_quote_show_create_basic.test
+++ b/mysql-test/suite/sys_vars/t/sql_quote_show_create_basic.test
@@ -97,12 +97,8 @@ SET @@session.sql_quote_show_create = "Y";
SET @@session.sql_quote_show_create = TRÜE;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_quote_show_create = ÕN;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_quote_show_create = OF;
-SELECT @@session.sql_quote_show_create;
-
---echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_quote_show_create = ÓFF;
--Error ER_WRONG_VALUE_FOR_VAR
@@ -116,10 +112,9 @@ SET @@session.sql_quote_show_create = NO;
# Test if accessing global sql_quote_show_create gives error #
##########################################################################
---Error ER_LOCAL_VARIABLE
-SET @@global.sql_quote_show_create = 0;
-
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SET @@global.sql_quote_show_create = 1-@@global.sql_quote_show_create;
+SELECT @@global.sql_quote_show_create;
+SET @@global.sql_quote_show_create = 1-@@global.sql_quote_show_create;
SELECT @@global.sql_quote_show_create;
--echo '#----------------------FN_DYNVARS_162_06------------------------#'
@@ -136,7 +131,7 @@ WHERE VARIABLE_NAME='sql_quote_show_create';
# Check if the value in GLOBAL Table matches value in variable #
#########################################################################
-SELECT @@session.sql_quote_show_create = VARIABLE_VALUE
+SELECT IF(@@session.sql_quote_show_create, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_quote_show_create';
SELECT @@session.sql_quote_show_create;
diff --git a/mysql-test/suite/sys_vars/t/sql_safe_updates_basic.test b/mysql-test/suite/sys_vars/t/sql_safe_updates_basic.test
index 489b42949a0..66148b65aaf 100644
--- a/mysql-test/suite/sys_vars/t/sql_safe_updates_basic.test
+++ b/mysql-test/suite/sys_vars/t/sql_safe_updates_basic.test
@@ -96,12 +96,8 @@ SET @@session.sql_safe_updates = "Y";
SET @@session.sql_safe_updates = TRÜE;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_safe_updates = ÕN;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_safe_updates = OF;
-SELECT @@session.sql_safe_updates;
-
---echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_safe_updates = ÓFF;
--Error ER_WRONG_VALUE_FOR_VAR
@@ -115,10 +111,9 @@ SET @@session.sql_safe_updates = NO;
# Test if accessing global sql_safe_updates gives error #
###########################################################################
---Error ER_LOCAL_VARIABLE
-SET @@global.sql_safe_updates = 0;
-
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SET @@global.sql_safe_updates = 1-@@global.sql_safe_updates;
+SELECT @@global.sql_safe_updates;
+SET @@global.sql_safe_updates = 1-@@global.sql_safe_updates;
SELECT @@global.sql_safe_updates;
--echo '#----------------------FN_DYNVARS_163_06------------------------#'
@@ -135,7 +130,7 @@ WHERE VARIABLE_NAME='sql_safe_updates';
# Check if the value in GLOBAL Table matches value in variable #
#########################################################################
-SELECT @@session.sql_safe_updates = VARIABLE_VALUE
+SELECT IF(@@session.sql_safe_updates, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_safe_updates';
SELECT @@session.sql_safe_updates;
diff --git a/mysql-test/suite/sys_vars/t/sql_select_limit_basic.test b/mysql-test/suite/sys_vars/t/sql_select_limit_basic.test
new file mode 100644
index 00000000000..0b941d25f42
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/sql_select_limit_basic.test
@@ -0,0 +1,33 @@
+SET @start_global_value = @@global.sql_select_limit;
+SELECT @start_global_value;
+
+#
+# exists as global and session
+#
+select @@global.sql_select_limit;
+select @@session.sql_select_limit;
+show global variables like 'sql_select_limit';
+show session variables like 'sql_select_limit';
+select * from information_schema.global_variables where variable_name='sql_select_limit';
+select * from information_schema.session_variables where variable_name='sql_select_limit';
+
+#
+# show that it's writable
+#
+set global sql_select_limit=10;
+select @@global.sql_select_limit;
+set session sql_select_limit=20;
+select @@session.sql_select_limit;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global sql_select_limit=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global sql_select_limit=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global sql_select_limit="foo";
+
+SET @@global.sql_select_limit = @start_global_value;
+SELECT @@global.sql_select_limit;
diff --git a/mysql-test/suite/sys_vars/t/sql_slave_skip_counter_basic.test b/mysql-test/suite/sys_vars/t/sql_slave_skip_counter_basic.test
index e7d9098aee9..86cb3824d07 100644
--- a/mysql-test/suite/sys_vars/t/sql_slave_skip_counter_basic.test
+++ b/mysql-test/suite/sys_vars/t/sql_slave_skip_counter_basic.test
@@ -35,22 +35,16 @@
# Try accessing initial value #
#############################################################
---Error ER_VAR_CANT_BE_READ
SET @start_global_value = @@global.sql_slave_skip_counter;
---Error ER_VAR_CANT_BE_READ
SELECT @@global.sql_slave_skip_counter;
---echo 'Info:This value is write only. Value can not be read'
-
--echo '#--------------------FN_DYNVARS_165_02-------------------------#'
###################################################################
# Try setting DEFAULT value to variable #
###################################################################
---Error ER_NO_DEFAULT
SET @@global.sql_slave_skip_counter = DEFAULT;
-
--echo '#--------------------FN_DYNVARS_165_03-------------------------#'
###################################################################
# Try setting any valid value to variable #
@@ -64,7 +58,6 @@ SET @@global.sql_slave_skip_counter = 2147483648*2;
SET @@global.sql_slave_skip_counter = 2147483648*2-1;
SET @@global.sql_slave_skip_counter = 4294967295*4294967295;
-
--echo '#--------------------FN_DYNVARS_165_03-------------------------#'
###################################################################
# Checking invalid value for variable #
@@ -90,7 +83,6 @@ SELECT VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_slave_skip_counter';
-
--echo '#--------------------FN_DYNVARS_165_03-------------------------#'
###################################################################
# Checking if variable is accessible with session scope #
@@ -103,6 +95,7 @@ SET @@session.sql_slave_skip_counter = 12;
--Error ER_GLOBAL_VARIABLE
SET @@local.sql_slave_skip_counter = 13;
+SET @@global.sql_slave_skip_counter = 0;
########################################################
# END OF sql_slave_skip_counter TESTS #
########################################################
diff --git a/mysql-test/suite/sys_vars/t/sql_warnings_basic.test b/mysql-test/suite/sys_vars/t/sql_warnings_basic.test
index f740403ceda..ced58f96e15 100644
--- a/mysql-test/suite/sys_vars/t/sql_warnings_basic.test
+++ b/mysql-test/suite/sys_vars/t/sql_warnings_basic.test
@@ -87,10 +87,8 @@ SELECT @@session.sql_warnings;
# Change the value of sql_warnings to invalid value #
###########################################################################
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@session.sql_warnings = -0.6;
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@session.sql_warnings = 1.9;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.sql_warnings = 0.6;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_warnings = "T";
--Error ER_WRONG_VALUE_FOR_VAR
@@ -99,12 +97,8 @@ SET @@session.sql_warnings = "Y";
SET @@session.sql_warnings = TRÜE;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_warnings = ÕN;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_warnings = OF;
-SELECT @@session.sql_warnings;
-
---echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@session.sql_warnings = ÓFF;
--Error ER_WRONG_VALUE_FOR_VAR
@@ -118,10 +112,9 @@ SET @@session.sql_warnings = NO;
# Test if accessing global sql_warnings gives error #
###########################################################################
---Error ER_LOCAL_VARIABLE
-SET @@global.sql_warnings = 0;
-
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SET @@global.sql_warnings = 1-@@global.sql_warnings;
+SELECT @@global.sql_warnings;
+SET @@global.sql_warnings = 1-@@global.sql_warnings;
SELECT @@global.sql_warnings;
@@ -140,14 +133,13 @@ WHERE VARIABLE_NAME='sql_warnings';
# Check if the value in GLOBAL Table matches value in variable #
#########################################################################
-SELECT @@session.sql_warnings = VARIABLE_VALUE
+SELECT IF(@@session.sql_warnings, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_warnings';
SELECT @@session.sql_warnings;
SELECT VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='sql_warnings';
---echo 'Bug: value in information schema does not match'
--echo '#---------------------FN_DYNVARS_166_08-------------------------#'
###################################################################
diff --git a/mysql-test/suite/sys_vars/t/storage_engine_basic.test b/mysql-test/suite/sys_vars/t/storage_engine_basic.test
index 689afcd1010..e62390cb384 100644
--- a/mysql-test/suite/sys_vars/t/storage_engine_basic.test
+++ b/mysql-test/suite/sys_vars/t/storage_engine_basic.test
@@ -38,9 +38,7 @@ SELECT @start_session_value;
# Display the DEFAULT value of storage_engine #
######################################################################
-SET @@global.storage_engine = MYISAM;
-
---Error ER_NO_DEFAULT
+SET @@global.storage_engine = INNODB;
SET @@global.storage_engine = DEFAULT;
SELECT @@global.storage_engine;
@@ -87,11 +85,14 @@ SELECT @@session.storage_engine;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.storage_engine = 8199;
+--Error ER_WRONG_VALUE_FOR_VAR
+SET @@global.storage_engine = NULL;
+
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.storage_engine = -1024;
---Error ER_PARSE_ERROR
-SET @@global.storage_engine = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.storage_engine = 65530.34;
--Error ER_UNKNOWN_STORAGE_ENGINE
SET @@global.storage_engine = FILE;
@@ -99,8 +100,8 @@ SET @@global.storage_engine = FILE;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@session.storage_engine = 8199;
---Error ER_PARSE_ERROR
-SET @@session.storage_engine = 65530.34.;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@session.storage_engine = 65530.34;
--Error ER_UNKNOWN_STORAGE_ENGINE
SET @@session.storage_engine = RECORD;
@@ -163,6 +164,8 @@ SELECT session.storage_engine;
--Error ER_BAD_FIELD_ERROR
SELECT storage_engine = @@session.storage_engine;
+# check the old obsolete name
+SET @@storage_engine = @start_global_value;
####################################
# Restore initial value #
diff --git a/mysql-test/suite/sys_vars/inc/sync_binlog_basic.inc b/mysql-test/suite/sys_vars/t/sync_binlog_basic.test
index 04adab85ac8..71a35a30c58 100644
--- a/mysql-test/suite/sys_vars/inc/sync_binlog_basic.inc
+++ b/mysql-test/suite/sys_vars/t/sync_binlog_basic.test
@@ -93,7 +93,6 @@ SET @@global.sync_binlog = -1024;
SELECT @@global.sync_binlog;
SET @@global.sync_binlog = 42949672950;
SELECT @@global.sync_binlog;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.sync_binlog = ON;
diff --git a/mysql-test/suite/sys_vars/t/sync_binlog_basic_32.test b/mysql-test/suite/sys_vars/t/sync_binlog_basic_32.test
deleted file mode 100644
index 275b95cf775..00000000000
--- a/mysql-test/suite/sys_vars/t/sync_binlog_basic_32.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 32 bit machines #
-################################################################################
-
---source include/have_32bit.inc
---source suite/sys_vars/inc/sync_binlog_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/sync_binlog_basic_64.test b/mysql-test/suite/sys_vars/t/sync_binlog_basic_64.test
deleted file mode 100644
index e6f9bf668a0..00000000000
--- a/mysql-test/suite/sys_vars/t/sync_binlog_basic_64.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 64 bit machines #
-################################################################################
-
---source include/have_64bit.inc
---source suite/sys_vars/inc/sync_binlog_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/sync_frm_basic.test b/mysql-test/suite/sys_vars/t/sync_frm_basic.test
index 6c00182a805..33e6202167f 100644
--- a/mysql-test/suite/sys_vars/t/sync_frm_basic.test
+++ b/mysql-test/suite/sys_vars/t/sync_frm_basic.test
@@ -121,7 +121,7 @@ SELECT @@session.sync_frm;
# Check if the value in GLOBAL Tables matches values in variable #
####################################################################
-SELECT @@global.sync_frm = VARIABLE_VALUE
+SELECT IF(@@global.sync_frm, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='sync_frm';
diff --git a/mysql-test/suite/sys_vars/t/sync_master_info_basic.test b/mysql-test/suite/sys_vars/t/sync_master_info_basic.test
new file mode 100644
index 00000000000..a080aa4c880
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/sync_master_info_basic.test
@@ -0,0 +1,43 @@
+
+SET @start_global_value = @@global.sync_master_info;
+SELECT @start_global_value;
+
+#
+# exists as global only
+#
+select @@global.sync_master_info;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.sync_master_info;
+show global variables like 'sync_master_info';
+show session variables like 'sync_master_info';
+select * from information_schema.global_variables where variable_name='sync_master_info';
+select * from information_schema.session_variables where variable_name='sync_master_info';
+
+#
+# show that it's writable
+#
+set global sync_master_info=1;
+select @@global.sync_master_info;
+--error ER_GLOBAL_VARIABLE
+set session sync_master_info=1;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global sync_master_info=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global sync_master_info=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global sync_master_info="foo";
+
+#
+# min/max values
+#
+set global sync_master_info=0;
+select @@global.sync_master_info;
+set global sync_master_info=cast(-1 as unsigned int);
+select @@global.sync_master_info;
+
+SET @@global.sync_master_info = @start_global_value;
+SELECT @@global.sync_master_info;
diff --git a/mysql-test/suite/sys_vars/t/sync_relay_log_basic.test b/mysql-test/suite/sys_vars/t/sync_relay_log_basic.test
new file mode 100644
index 00000000000..112eaca7538
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/sync_relay_log_basic.test
@@ -0,0 +1,44 @@
+--source include/not_embedded.inc
+
+SET @start_global_value = @@global.sync_relay_log;
+SELECT @start_global_value;
+
+#
+# exists as global only
+#
+select @@global.sync_relay_log;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.sync_relay_log;
+show global variables like 'sync_relay_log';
+show session variables like 'sync_relay_log';
+select * from information_schema.global_variables where variable_name='sync_relay_log';
+select * from information_schema.session_variables where variable_name='sync_relay_log';
+
+#
+# show that it's writable
+#
+set global sync_relay_log=1;
+select @@global.sync_relay_log;
+--error ER_GLOBAL_VARIABLE
+set session sync_relay_log=1;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global sync_relay_log=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global sync_relay_log=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global sync_relay_log="foo";
+
+#
+# min/max values
+#
+set global sync_relay_log=0;
+select @@global.sync_relay_log;
+set global sync_relay_log=cast(-1 as unsigned int);
+select @@global.sync_relay_log;
+
+SET @@global.sync_relay_log = @start_global_value;
+SELECT @@global.sync_relay_log;
diff --git a/mysql-test/suite/sys_vars/t/sync_relay_log_info_basic.test b/mysql-test/suite/sys_vars/t/sync_relay_log_info_basic.test
new file mode 100644
index 00000000000..2ef4b3c0880
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/sync_relay_log_info_basic.test
@@ -0,0 +1,44 @@
+--source include/not_embedded.inc
+
+SET @start_global_value = @@global.sync_relay_log_info;
+SELECT @start_global_value;
+
+#
+# exists as global only
+#
+select @@global.sync_relay_log_info;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.sync_relay_log_info;
+show global variables like 'sync_relay_log_info';
+show session variables like 'sync_relay_log_info';
+select * from information_schema.global_variables where variable_name='sync_relay_log_info';
+select * from information_schema.session_variables where variable_name='sync_relay_log_info';
+
+#
+# show that it's writable
+#
+set global sync_relay_log_info=1;
+select @@global.sync_relay_log_info;
+--error ER_GLOBAL_VARIABLE
+set session sync_relay_log_info=1;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global sync_relay_log_info=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global sync_relay_log_info=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global sync_relay_log_info="foo";
+
+#
+# min/max values
+#
+set global sync_relay_log_info=0;
+select @@global.sync_relay_log_info;
+set global sync_relay_log_info=cast(-1 as unsigned int);
+select @@global.sync_relay_log_info;
+
+SET @@global.sync_relay_log_info = @start_global_value;
+SELECT @@global.sync_relay_log_info;
diff --git a/mysql-test/suite/sys_vars/t/table_definition_cache_basic.test b/mysql-test/suite/sys_vars/t/table_definition_cache_basic.test
index 63296590511..69f29108645 100644
--- a/mysql-test/suite/sys_vars/t/table_definition_cache_basic.test
+++ b/mysql-test/suite/sys_vars/t/table_definition_cache_basic.test
@@ -4,7 +4,7 @@
# Scope: GLOBAL #
# Access Type: Dynamic #
# Data Type: Numeric #
-# Default Value: 128 #
+# Default Value: 400 #
# Range: 1 - 524288 #
# #
# #
@@ -52,7 +52,7 @@ SELECT @@global.table_definition_cache;
###############################################
SET @@global.table_definition_cache = DEFAULT;
-SELECT @@global.table_definition_cache = 128;
+SELECT @@global.table_definition_cache = 400;
--echo '#--------------------FN_DYNVARS_019_03------------------------#'
@@ -83,7 +83,6 @@ SET @@global.table_definition_cache = 524289;
SELECT @@global.table_definition_cache;
SET @@global.table_definition_cache = 42949672950;
SELECT @@global.table_definition_cache;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.table_definition_cache = 21221204.10;
diff --git a/mysql-test/suite/sys_vars/t/table_lock_wait_timeout_basic.test b/mysql-test/suite/sys_vars/t/table_lock_wait_timeout_basic.test
index 43186c70874..f33e5660c5d 100644
--- a/mysql-test/suite/sys_vars/t/table_lock_wait_timeout_basic.test
+++ b/mysql-test/suite/sys_vars/t/table_lock_wait_timeout_basic.test
@@ -87,7 +87,6 @@ SET @@global.table_lock_wait_timeout= 100000000000;
SET @@global.table_lock_wait_timeout= -1024;
SET @@global.table_lock_wait_timeout= 0;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.table_lock_wait_timeout= 10000.01;
diff --git a/mysql-test/suite/sys_vars/t/table_open_cache_basic.test b/mysql-test/suite/sys_vars/t/table_open_cache_basic.test
index 23f60bde00a..7d2549cd87f 100644
--- a/mysql-test/suite/sys_vars/t/table_open_cache_basic.test
+++ b/mysql-test/suite/sys_vars/t/table_open_cache_basic.test
@@ -4,8 +4,8 @@
# Scope: GLOBAL #
# Access Type: Dynamic #
# Data Type: numeric #
-# Default Value: 64 #
-# Range: 1-524288 #
+# Default Value: 400 #
+# Range: 64-524288 #
# #
# #
# Creation Date: 2008-02-13 #
@@ -54,7 +54,7 @@ SELECT @@global.table_open_cache;
###############################################
SET @@global.table_open_cache = Default;
-SELECT @@global.table_open_cache = 64;
+SELECT @@global.table_open_cache = 400;
--echo '#--------------------FN_DYNVARS_001_03------------------------#'
########################################################################
@@ -95,9 +95,6 @@ SELECT @@global.table_open_cache ;
SET @@global.table_open_cache = 0;
SELECT @@global.table_open_cache ;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
-
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.table_open_cache = 10000.01;
diff --git a/mysql-test/suite/sys_vars/t/thread_cache_size_basic.test b/mysql-test/suite/sys_vars/t/thread_cache_size_basic.test
new file mode 100644
index 00000000000..48a4c0797e5
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/thread_cache_size_basic.test
@@ -0,0 +1,43 @@
+
+SET @start_global_value = @@global.thread_cache_size;
+SELECT @start_global_value;
+
+#
+# exists as global only
+#
+select @@global.thread_cache_size;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.thread_cache_size;
+show global variables like 'thread_cache_size';
+show session variables like 'thread_cache_size';
+select * from information_schema.global_variables where variable_name='thread_cache_size';
+select * from information_schema.session_variables where variable_name='thread_cache_size';
+
+#
+# show that it's writable
+#
+set global thread_cache_size=1;
+select @@global.thread_cache_size;
+--error ER_GLOBAL_VARIABLE
+set session thread_cache_size=1;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global thread_cache_size=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global thread_cache_size=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global thread_cache_size="foo";
+
+#
+# min/max values
+#
+set global thread_cache_size=0;
+select @@global.thread_cache_size;
+set global thread_cache_size=cast(-1 as unsigned int);
+select @@global.thread_cache_size;
+
+SET @@global.thread_cache_size = @start_global_value;
+SELECT @@global.thread_cache_size;
diff --git a/mysql-test/suite/sys_vars/t/thread_concurrency_basic.test b/mysql-test/suite/sys_vars/t/thread_concurrency_basic.test
new file mode 100644
index 00000000000..d4acc961752
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/thread_concurrency_basic.test
@@ -0,0 +1,19 @@
+--source include/have_thread_concurrency.inc
+#
+# only global
+#
+select @@global.thread_concurrency;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.thread_concurrency;
+show global variables like 'thread_concurrency';
+show session variables like 'thread_concurrency';
+select * from information_schema.global_variables where variable_name='thread_concurrency';
+select * from information_schema.session_variables where variable_name='thread_concurrency';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global thread_concurrency=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session thread_concurrency=1;
diff --git a/mysql-test/suite/sys_vars/t/thread_stack_basic.test b/mysql-test/suite/sys_vars/t/thread_stack_basic.test
new file mode 100644
index 00000000000..2d4d144572d
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/thread_stack_basic.test
@@ -0,0 +1,23 @@
+#
+# only global
+#
+--replace_result 196608 262144
+select @@global.thread_stack;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.thread_stack;
+--replace_result 196608 262144
+show global variables like 'thread_stack';
+--replace_result 196608 262144
+show session variables like 'thread_stack';
+--replace_result 196608 262144
+select * from information_schema.global_variables where variable_name='thread_stack';
+--replace_result 196608 262144
+select * from information_schema.session_variables where variable_name='thread_stack';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global thread_stack=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session thread_stack=1;
diff --git a/mysql-test/suite/sys_vars/t/time_format_basic.test b/mysql-test/suite/sys_vars/t/time_format_basic.test
new file mode 100644
index 00000000000..ec737b8c621
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/time_format_basic.test
@@ -0,0 +1,18 @@
+#
+# only global
+#
+select @@global.time_format;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.time_format;
+show global variables like 'time_format';
+show session variables like 'time_format';
+select * from information_schema.global_variables where variable_name='time_format';
+select * from information_schema.session_variables where variable_name='time_format';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global time_format=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session time_format=1;
diff --git a/mysql-test/suite/sys_vars/t/timed_mutexes_basic.test b/mysql-test/suite/sys_vars/t/timed_mutexes_basic.test
index b0eb41afb49..9422ecdabf9 100644
--- a/mysql-test/suite/sys_vars/t/timed_mutexes_basic.test
+++ b/mysql-test/suite/sys_vars/t/timed_mutexes_basic.test
@@ -128,7 +128,7 @@ WHERE VARIABLE_NAME='timed_mutexes';
# Check if the value in GLOBAL Table matches value in variable #
#########################################################################
-SELECT @@global.timed_mutexes = VARIABLE_VALUE
+SELECT IF(@@global.timed_mutexes, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='timed_mutexes';
SELECT @@global.timed_mutexes;
diff --git a/mysql-test/suite/sys_vars/inc/timestamp_basic.inc b/mysql-test/suite/sys_vars/t/timestamp_basic.test
index 9ef57c97043..a5baf304bf3 100644
--- a/mysql-test/suite/sys_vars/inc/timestamp_basic.inc
+++ b/mysql-test/suite/sys_vars/t/timestamp_basic.test
@@ -1,4 +1,4 @@
-################## mysql-test\t\timestamp_basic.test ##########################
+################## mysql-test/t/timestamp_basic.test ##########################
# #
# Variable Name: timestamp #
# Scope: SESSION #
@@ -43,9 +43,7 @@ SET @session_start_value = @@session.timestamp;
SET @@timestamp = DEFAULT;
-#SELECT @@timestamp;
-
---echo 'timestamp does not have any DEFAULT value'
+SELECT @@timestamp = UNIX_TIMESTAMP();
--echo '#---------------------FN_DYNVARS_001_02-------------------------#'
##############################################################
@@ -55,23 +53,18 @@ SET @@timestamp = DEFAULT;
--Error ER_LOCAL_VARIABLE
SET @@global.timestamp = "1000";
-
--echo '#--------------------FN_DYNVARS_001_03------------------------#'
########################################################################
# Change the value of timestamp to a valid value #
########################################################################
SET @@timestamp = 0;
-#SELECT @@timestamp;
+SELECT @@timestamp = UNIX_TIMESTAMP();
--echo 'Setting 0 resets timestamp to session default timestamp'
-SET @@timestamp = 123456789123456;
-SELECT @@timestamp;
-SET @@timestamp = 60*60*60*60*365;
-SELECT @@timestamp;
SET @@timestamp = -1000000000;
-SELECT @@timestamp;
+SELECT @@timestamp = UNIX_TIMESTAMP();
SET @temp_ts = @@timestamp - @@timestamp;
SELECT @temp_ts;
@@ -84,7 +77,6 @@ SELECT @temp_ts;
# for session scope
--Error ER_WRONG_TYPE_FOR_VAR
SET @@timestamp = "100";
---echo 'Bug# 34836: Documentation says its a string variable but infact its numeric'
--Error ER_WRONG_TYPE_FOR_VAR
SET @@timestamp = " ";
diff --git a/mysql-test/suite/sys_vars/t/timestamp_basic_32.test b/mysql-test/suite/sys_vars/t/timestamp_basic_32.test
deleted file mode 100644
index a2b6139aef9..00000000000
--- a/mysql-test/suite/sys_vars/t/timestamp_basic_32.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 32 bit machines #
-################################################################################
-
---source include/have_32bit.inc
---source suite/sys_vars/inc/timestamp_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/timestamp_basic_64.test b/mysql-test/suite/sys_vars/t/timestamp_basic_64.test
deleted file mode 100644
index fbc86316ed9..00000000000
--- a/mysql-test/suite/sys_vars/t/timestamp_basic_64.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 64 bit machines #
-################################################################################
-
---source include/have_64bit.inc
---source suite/sys_vars/inc/timestamp_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/tx_isolation_basic.test b/mysql-test/suite/sys_vars/t/tx_isolation_basic.test
index 136a9b4331e..0a15aa08b6b 100644
--- a/mysql-test/suite/sys_vars/t/tx_isolation_basic.test
+++ b/mysql-test/suite/sys_vars/t/tx_isolation_basic.test
@@ -46,16 +46,11 @@ SELECT @session_start_value;
####################################################################
SET @@global.tx_isolation = 'READ-UNCOMMITTED';
---Error ER_NO_DEFAULT
SET @@global.tx_isolation = DEFAULT;
---echo 'Bug# 34878: Documentation specifies a DEFAULT value of REPEATABLE-READ';
---echo 'where as DEFAULT is not supported here.';
+SELECT @@global.tx_isolation;
-SET @@session.tx_isolation = 'SERIALIZABLE';
SET @@session.tx_isolation = DEFAULT;
SELECT @@session.tx_isolation;
---echo 'Bug# 34876: Documentation specifies a DEFAULT value of REPEATABLE-READ';
---echo 'where as DEFAULT here as no effect.';
--echo '#---------------------FN_DYNVARS_183_02-------------------------#'
#########################################################
@@ -115,18 +110,12 @@ SELECT @@session.tx_isolation;
SET @@global.tx_isolation = -1;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.tx_isolation = READUNCOMMITTED;
-
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.tx_isolation = 'REPEATABLE';
-SELECT @@global.tx_isolation;
---echo 'Bug# 34833: REPEATABLE is not documented as as valid tx_isolation level'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.tx_isolation = OFF;
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.tx_isolation = ON;
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@global.tx_isolation = 'NON-SERIALIZABLE';
@@ -136,11 +125,8 @@ SET @@global.tx_isolation = 'NON-SERIALIZABLE';
SET @@tx_isolation = -1;
--Error ER_WRONG_VALUE_FOR_VAR
SET @@tx_isolation = READUNCOMMITTED;
-
+--Error ER_WRONG_VALUE_FOR_VAR
SET @@tx_isolation = 'REPEATABLE';
-SELECT @@tx_isolation;
---echo 'Bug# 34833: REPEATABLE is not documented as as valid tx_isolation level'
-
--Error ER_WRONG_VALUE_FOR_VAR
SET @@tx_isolation = 'NONE';
--Error ER_WRONG_VALUE_FOR_VAR
@@ -183,29 +169,8 @@ SELECT @@global.tx_isolation;
SET @@global.tx_isolation = 3;
SELECT @@global.tx_isolation;
-# use of decimal values
-
+--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.tx_isolation = 0.4;
-SELECT @@global.tx_isolation;
-
-SET @@global.tx_isolation = 1.1;
-SELECT @@global.tx_isolation;
-
-SET @@global.tx_isolation = 1.5;
-SELECT @@global.tx_isolation;
-
-SET @@global.tx_isolation = 2.9;
-SELECT @@global.tx_isolation;
-
-SET @@session.tx_isolation = 3.49;
-SELECT @@session.tx_isolation;
-
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@session.tx_isolation = 3.6;
-
---echo 'Bug: Decimal values can be used within the range [0.0-3.5).';
---echo 'Values are rounded to 0,1,2,3 as evident from outcome.';
-
--echo '#---------------------FN_DYNVARS_183_08----------------------#'
###################################################################
diff --git a/mysql-test/suite/sys_vars/t/unique_checks_basic.test b/mysql-test/suite/sys_vars/t/unique_checks_basic.test
index 55308adcc82..af2ab6e58bd 100644
--- a/mysql-test/suite/sys_vars/t/unique_checks_basic.test
+++ b/mysql-test/suite/sys_vars/t/unique_checks_basic.test
@@ -46,16 +46,6 @@ SET @@session.unique_checks= 1;
SET @@session.unique_checks= DEFAULT;
SELECT @@session.unique_checks;
---echo '#--------------------FN_DYNVARS_005_02-------------------------#'
-#############################################################
-# Check the DEFAULT value of unique_checks #
-#############################################################
-
-
-SET @@session.unique_checks = DEFAULT;
-SELECT @@session.unique_checks =1;
-
-
--echo '#--------------------FN_DYNVARS_005_04-------------------------#'
########################################################################
# Change the value of unique_checks to a valid value for SESSION Scope #
@@ -121,7 +111,7 @@ SET @@session.unique_checks = 123456789031;
# Check if the value in SESSION Table matches value in variable #
####################################################################
-SELECT @@session.unique_checks = VARIABLE_VALUE
+SELECT IF(@@session.unique_checks, "ON", "OFF") = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='unique_checks';
diff --git a/mysql-test/suite/sys_vars/t/updatable_views_with_limit_basic.test b/mysql-test/suite/sys_vars/t/updatable_views_with_limit_basic.test
index 61a45793d39..941eb1db61a 100644
--- a/mysql-test/suite/sys_vars/t/updatable_views_with_limit_basic.test
+++ b/mysql-test/suite/sys_vars/t/updatable_views_with_limit_basic.test
@@ -166,7 +166,7 @@ SET @@global.updatable_views_with_limit = 2345;
SET @@global.updatable_views_with_limit = "FALSE";
---Error ER_WRONG_VALUE_FOR_VAR
+--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.updatable_views_with_limit = 65530.34;
--Error ER_WRONG_VALUE_FOR_VAR
diff --git a/mysql-test/suite/sys_vars/inc/wait_timeout_basic.inc b/mysql-test/suite/sys_vars/t/wait_timeout_basic.test
index b6e19e235ba..e92a3294b86 100644
--- a/mysql-test/suite/sys_vars/inc/wait_timeout_basic.inc
+++ b/mysql-test/suite/sys_vars/t/wait_timeout_basic.test
@@ -104,8 +104,6 @@ SELECT @@session.wait_timeout;
SET @@global.wait_timeout = 0;
SET @@global.wait_timeout = -1024;
---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
-
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.wait_timeout = ON;
diff --git a/mysql-test/suite/sys_vars/t/wait_timeout_basic_32.test b/mysql-test/suite/sys_vars/t/wait_timeout_basic_32.test
deleted file mode 100644
index 613a5543b14..00000000000
--- a/mysql-test/suite/sys_vars/t/wait_timeout_basic_32.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 32 bit machines #
-################################################################################
-
---source include/have_32bit.inc
---source suite/sys_vars/inc/wait_timeout_basic.inc
-
diff --git a/mysql-test/suite/sys_vars/t/wait_timeout_basic_64.test b/mysql-test/suite/sys_vars/t/wait_timeout_basic_64.test
deleted file mode 100644
index d1138cbc105..00000000000
--- a/mysql-test/suite/sys_vars/t/wait_timeout_basic_64.test
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Created by Horst Hunger 2008-05-07 #
-# #
-# Wrapper for 64 bit machines #
-################################################################################
-
---source include/have_64bit.inc
---source suite/sys_vars/inc/wait_timeout_basic.inc
-
diff --git a/mysql-test/t/alias.test b/mysql-test/t/alias.test
index 6546581eef2..0e2d57598e2 100644
--- a/mysql-test/t/alias.test
+++ b/mysql-test/t/alias.test
@@ -86,3 +86,132 @@ ASC LIMIT 1;
drop table t1;
# End of 4.1 tests
+
+#
+# Bug#27249 table_wild with alias: select t1.* as something
+#
+
+--disable_warnings
+drop table if exists t1,t2,t3;
+--enable_warnings
+
+create table t1 (a int, b int, c int);
+create table t2 (d int);
+create table t3 (a1 int, b1 int, c1 int);
+insert into t1 values(1,2,3);
+insert into t1 values(11,22,33);
+insert into t2 values(99);
+
+# Invalid queries with alias on wild
+--error ER_PARSE_ERROR
+select t1.* as 'with_alias' from t1;
+--error ER_PARSE_ERROR
+select t2.* as 'with_alias' from t2;
+--error ER_PARSE_ERROR
+select t1.*, t1.* as 'with_alias' from t1;
+--error ER_PARSE_ERROR
+select t1.* as 'with_alias', t1.* from t1;
+--error ER_PARSE_ERROR
+select t1.* as 'with_alias', t1.* as 'alias2' from t1;
+--error ER_PARSE_ERROR
+select t1.* as 'with_alias', a, t1.* as 'alias2' from t1;
+
+# other fields without alias
+--error ER_PARSE_ERROR
+select a, t1.* as 'with_alias' from t1;
+--error ER_PARSE_ERROR
+select t1.* as 'with_alias', a from t1;
+--error ER_PARSE_ERROR
+select a, t1.* as 'with_alias', b from t1;
+--error ER_PARSE_ERROR
+select (select d from t2 where d > a), t1.* as 'with_alias' from t1;
+--error ER_PARSE_ERROR
+select t1.* as 'with_alias', (select a from t2 where d > a) from t1;
+
+# other fields with alias
+--error ER_PARSE_ERROR
+select a as 'x', t1.* as 'with_alias' from t1;
+--error ER_PARSE_ERROR
+select t1.* as 'with_alias', a as 'x' from t1;
+--error ER_PARSE_ERROR
+select a as 'x', t1.* as 'with_alias', b as 'x' from t1;
+--error ER_PARSE_ERROR
+select (select d from t2 where d > a) as 'x', t1.* as 'with_alias' from t1;
+--error ER_PARSE_ERROR
+select t1.* as 'with_alias', (select a from t2 where d > a) as 'x' from t1;
+
+# some more subquery
+--error ER_PARSE_ERROR
+select (select t2.* as 'x' from t2) from t1;
+--error ER_PARSE_ERROR
+select a, (select t2.* as 'x' from t2) from t1;
+--error ER_PARSE_ERROR
+select t1.*, (select t2.* as 'x' from t2) from t1;
+
+# insert
+--error ER_PARSE_ERROR
+insert into t3 select t1.* as 'with_alias' from t1;
+--error ER_PARSE_ERROR
+insert into t3 select t2.* as 'with_alias', 1, 2 from t2;
+--error ER_PARSE_ERROR
+insert into t3 select t2.* as 'with_alias', d as 'x', d as 'z' from t2;
+--error ER_PARSE_ERROR
+insert into t3 select t2.*, t2.* as 'with_alias', 3 from t2;
+
+# create
+--error ER_PARSE_ERROR
+create table t3 select t1.* as 'with_alias' from t1;
+--error ER_PARSE_ERROR
+create table t3 select t2.* as 'with_alias', 1, 2 from t2;
+--error ER_PARSE_ERROR
+create table t3 select t2.* as 'with_alias', d as 'x', d as 'z' from t2;
+--error ER_PARSE_ERROR
+create table t3 select t2.*, t2.* as 'with_alias', 3 from t2;
+
+#
+# Valid queries without alias on wild
+# (proof the above fail due to invalid aliasing)
+#
+
+select t1.* from t1;
+select t2.* from t2;
+select t1.*, t1.* from t1;
+select t1.*, a, t1.* from t1;
+
+# other fields without alias
+select a, t1.* from t1;
+select t1.*, a from t1;
+select a, t1.*, b from t1;
+select (select d from t2 where d > a), t1.* from t1;
+select t1.*, (select a from t2 where d > a) from t1;
+
+# other fields with alias
+select a as 'x', t1.* from t1;
+select t1.*, a as 'x' from t1;
+select a as 'x', t1.*, b as 'x' from t1;
+select (select d from t2 where d > a) as 'x', t1.* from t1;
+select t1.*, (select a from t2 where d > a) as 'x' from t1;
+
+# some more subquery
+select (select t2.* from t2) from t1;
+select a, (select t2.* from t2) from t1;
+select t1.*, (select t2.* from t2) from t1;
+
+# insert
+insert into t3 select t1.* from t1;
+insert into t3 select t2.*, 1, 2 from t2;
+insert into t3 select t2.*, d as 'x', d as 'z' from t2;
+insert into t3 select t2.*, t2.*, 3 from t2;
+
+# create
+create table t4 select t1.* from t1;
+drop table t4;
+create table t4 select t2.*, 1, 2 from t2;
+drop table t4;
+create table t4 select t2.*, d as 'x', d as 'z' from t2;
+drop table t4;
+
+# end
+drop table t1,t2,t3;
+
+# End of 5.2 tests
diff --git a/mysql-test/t/alter_table.test b/mysql-test/t/alter_table.test
index 4989a6c380c..2bfe6dbaa62 100644
--- a/mysql-test/t/alter_table.test
+++ b/mysql-test/t/alter_table.test
@@ -1074,3 +1074,18 @@ DROP TABLE t1;
--echo End of 5.1 tests
+
+#
+# Bug #31031 ALTER TABLE regression in 5.0
+#
+# The ALTER TABLE operation failed with
+# ERROR 1089 (HY000): Incorrect sub part key; ...
+#
+CREATE TABLE t1(c CHAR(10),
+ i INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY);
+INSERT INTO t1 VALUES('a',2),('b',4),('c',6);
+ALTER TABLE t1
+ DROP i,
+ ADD i INT UNSIGNED NOT NULL AUTO_INCREMENT,
+ AUTO_INCREMENT = 1;
+DROP TABLE t1;
diff --git a/mysql-test/t/archive.test b/mysql-test/t/archive.test
index 90f5b1b0b53..5de34ec6db8 100644
--- a/mysql-test/t/archive.test
+++ b/mysql-test/t/archive.test
@@ -5,6 +5,8 @@
-- source include/have_archive.inc
-- source include/have_binlog_format_mixed_or_statement.inc
+CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
--disable_warnings
DROP TABLE if exists t1,t2,t3,t4,t5,t6;
--enable_warnings
@@ -1615,7 +1617,7 @@ DROP TABLE t1;
# BUG#46961 - archive engine loses rows during self joining select!
#
SET @save_join_buffer_size= @@join_buffer_size;
-SET @@join_buffer_size= 8228;
+SET @@join_buffer_size= 8192;
CREATE TABLE t1(a CHAR(255)) ENGINE=archive;
INSERT INTO t1 VALUES('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),
('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),
@@ -1624,6 +1626,18 @@ SELECT COUNT(t1.a) FROM t1, t1 a, t1 b, t1 c, t1 d, t1 e;
DROP TABLE t1;
SET @@join_buffer_size= @save_join_buffer_size;
+--echo End of 5.1 tests
+
+#
+# BUG#40677 - Archive tables joined on primary return no result
+#
+CREATE TABLE t1(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(128) NOT NULL, PRIMARY KEY(id)) ENGINE=archive;
+INSERT INTO t1 VALUES(NULL,'a'),(NULL,'a');
+CREATE TABLE t2(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(128) NOT NULL, PRIMARY KEY(id)) ENGINE=archive;
+INSERT INTO t2 VALUES(NULL,'b'),(NULL,'b');
+SELECT t1.id, t2.id, t1.name, t2.name FROM t1,t2 WHERE t1.id = t2.id;
+DROP TABLE t1,t2;
+
#
# BUG#47012 archive tables are not upgradeable, and server crashes on any access
#
diff --git a/mysql-test/t/backup-master.sh b/mysql-test/t/backup-master.sh
deleted file mode 100755
index c099064f6b7..00000000000
--- a/mysql-test/t/backup-master.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-if [ "$MYSQL_TEST_DIR" ]
-then
- rm -f $MYSQLTEST_VARDIR/tmp/*.frm $MYSQLTEST_VARDIR/tmp/*.MY?
-fi
diff --git a/mysql-test/t/backup.test b/mysql-test/t/backup.test
deleted file mode 100644
index c761f48cbcb..00000000000
--- a/mysql-test/t/backup.test
+++ /dev/null
@@ -1,104 +0,0 @@
-
-# The server need to be started in $MYSQLTEST_VARDIR since it
-# uses ../../std_data/
---source include/uses_vardir.inc
-
-# Save the initial number of concurrent sessions
---source include/count_sessions.inc
-
-#
-# This test is a bit tricky as we can't use backup table to overwrite an old
-# table
-#
-connect (con1,localhost,root,,);
-connect (con2,localhost,root,,);
-connection con1;
-set SQL_LOG_BIN=0;
---disable_warnings
-drop table if exists t1, t2, t3, t4;
---enable_warnings
-create table t4(n int);
---replace_result ": 1" ": X" ": 2" ": X" ": 22" ": X" ": 23" ": X" $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
-backup table t4 to '../../bogus';
-backup table t4 to '../../tmp';
---replace_result ": 7" ": X" ": 17" ": X" $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
-backup table t4 to '../../tmp';
-drop table t4;
-restore table t4 from '../../tmp';
-select count(*) from t4;
-
-create table t1(n int);
-insert into t1 values (23),(45),(67);
-backup table t1 to '../../tmp';
-drop table t1;
---replace_result ": 1" ": X" ": 2" ": X" ": 22" ": X" ": 23" ": X" $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
-restore table t1 from '../../bogus';
-restore table t1 from '../../tmp';
-select n from t1;
-create table t2(m int not null primary key);
-create table t3(k int not null primary key);
-insert into t2 values (123),(145),(167);
-insert into t3 values (223),(245),(267);
-backup table t2,t3 to '../../tmp';
-drop table t1,t2,t3;
-restore table t1,t2,t3 from '../../tmp';
-select n from t1;
-select m from t2;
-select k from t3;
-drop table t1,t2,t3,t4;
-restore table t1 from '../../tmp';
-connection con2;
-rename table t1 to t5;
---send
-lock tables t5 write;
-connection con1;
---send
-backup table t5 to '../../tmp';
-connection con2;
-reap;
-unlock tables;
-connection con1;
-reap;
-drop table t5;
-connection default;
-disconnect con1;
-disconnect con2;
-remove_file $MYSQLTEST_VARDIR/tmp/t1.MYD;
-remove_file $MYSQLTEST_VARDIR/tmp/t2.MYD;
-remove_file $MYSQLTEST_VARDIR/tmp/t3.MYD;
-remove_file $MYSQLTEST_VARDIR/tmp/t4.MYD;
-remove_file $MYSQLTEST_VARDIR/tmp/t5.MYD;
-remove_file $MYSQLTEST_VARDIR/tmp/t1.frm;
-remove_file $MYSQLTEST_VARDIR/tmp/t2.frm;
-remove_file $MYSQLTEST_VARDIR/tmp/t3.frm;
-remove_file $MYSQLTEST_VARDIR/tmp/t4.frm;
-remove_file $MYSQLTEST_VARDIR/tmp/t5.frm;
-
-
-# End of 4.1 tests
-# End of 5.0 tests
-
-#
-# Bug#18775 - Temporary table from alter table visible to other threads
-#
-# Backup did not encode table names.
---disable_warnings
-DROP TABLE IF EXISTS `t+1`;
---enable_warnings
-CREATE TABLE `t+1` (c1 INT);
-INSERT INTO `t+1` VALUES (1), (2), (3);
-BACKUP TABLE `t+1` TO '../../tmp';
-DROP TABLE `t+1`;
-#
-# Same for restore.
-RESTORE TABLE `t+1` FROM '../../tmp';
-SELECT * FROM `t+1`;
-DROP TABLE `t+1`;
-#
-remove_file $MYSQLTEST_VARDIR/tmp/t@002b1.frm;
-remove_file $MYSQLTEST_VARDIR/tmp/t@002b1.MYD;
-
-
-# Wait till all disconnects are completed
---source include/wait_until_count_sessions.inc
-
diff --git a/mysql-test/t/bug46080-master.opt b/mysql-test/t/bug46080-master.opt
index f59740afe60..71024d39356 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=4000000
+--loose-performance-schema=0 --skip-grant-tables --skip-name-resolve --loose-safemalloc-mem-limit=4000000
diff --git a/mysql-test/t/bug46080.test b/mysql-test/t/bug46080.test
index 8b4cee4d8b0..6daf12cf1c5 100644
--- a/mysql-test/t/bug46080.test
+++ b/mysql-test/t/bug46080.test
@@ -3,6 +3,8 @@
--echo # sort_buffer_size cannot allocate
--echo #
+--source include/have_debug.inc
+
call mtr.add_suppression("Out of memory at line .*, 'my_alloc.c'");
call mtr.add_suppression("needed .* byte .*k., memory in use: .* bytes .*k");
diff --git a/mysql-test/t/cast.test b/mysql-test/t/cast.test
index 8e60d548c2f..f5426f8d631 100644
--- a/mysql-test/t/cast.test
+++ b/mysql-test/t/cast.test
@@ -177,8 +177,6 @@ select cast(1.0e+300 as signed int);
CREATE TABLE t1 (f1 double);
INSERT INTO t1 SET f1 = -1.0e+30 ;
INSERT INTO t1 SET f1 = +1.0e+30 ;
-# Expected result is +-1e+30, but Windows returns +-1e+030.
---replace_result 1e+030 1e+30
SELECT f1 AS double_val, CAST(f1 AS SIGNED INT) AS cast_val FROM t1;
DROP TABLE t1;
diff --git a/mysql-test/t/change_user.test b/mysql-test/t/change_user.test
index 89f35116a2c..3ed798e8d36 100644
--- a/mysql-test/t/change_user.test
+++ b/mysql-test/t/change_user.test
@@ -20,7 +20,7 @@ SET @@session.max_join_size = default;
SELECT @@session.sql_big_selects;
# On some machines the following will result into a warning
--disable_warnings
-SET @@global.max_join_size = -1;
+SET @@global.max_join_size = 18446744073709551615;
--enable_warnings
SET @@session.max_join_size = default;
--echo change_user
diff --git a/mysql-test/t/commit_1innodb.test b/mysql-test/t/commit_1innodb.test
index c4a29acdddd..5e2159c808b 100644
--- a/mysql-test/t/commit_1innodb.test
+++ b/mysql-test/t/commit_1innodb.test
@@ -1,6 +1,8 @@
-- source include/have_log_bin.inc
-- source include/have_innodb.inc
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+
let $engine_type = InnoDB;
-- source include/commit.inc
diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test
index 692721b5955..6c4048a7739 100644
--- a/mysql-test/t/create.test
+++ b/mysql-test/t/create.test
@@ -1581,3 +1581,56 @@ create table t3 (a int) row_format=page;
--echo
--echo End of 5.1 tests
+
+
+###########################################################################
+
+--echo
+--echo # --
+--echo # -- Bug #43054 Assertion `!table->auto_increment_field_not_null'
+--echo # -- failed when redefining trigger
+--echo
+
+#--disable_abort_on_error
+
+CREATE TABLE B (
+ pk INTEGER AUTO_INCREMENT,
+ int_key INTEGER NOT NULL,
+ PRIMARY KEY (pk),
+ KEY (int_key)
+);
+
+INSERT IGNORE INTO B VALUES ('9', '9');
+
+CREATE TABLE IF NOT EXISTS t1 (
+ `pk` INTEGER NOT NULL AUTO_INCREMENT ,
+ `int` INTEGER ,
+ PRIMARY KEY ( `pk` )
+) SELECT `pk` , `int_key` FROM B ;
+
+--delimiter |
+
+CREATE TRIGGER f BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+ INSERT INTO t1 ( `int` ) VALUES (4 ),( 8 ),( 2 ) ;
+END ; |
+
+--delimiter ;
+--error ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG
+CREATE TABLE IF NOT EXISTS t1 (
+ `pk` INTEGER NOT NULL AUTO_INCREMENT ,
+ `int` INTEGER ,
+ PRIMARY KEY ( `pk` )
+) SELECT `pk` , `int_key` FROM B ;
+
+--delimiter |
+--error ER_NOT_SUPPORTED_YET
+CREATE TRIGGER f BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+ UPDATE A SET `pk`=1 WHERE `pk`=0 ;
+END ;|
+
+--delimiter ;
+
+DROP TABLE t1;
+DROP TABLE B;
diff --git a/mysql-test/t/csv.test b/mysql-test/t/csv.test
index cdf274190dd..ea949f463c9 100644
--- a/mysql-test/t/csv.test
+++ b/mysql-test/t/csv.test
@@ -1819,4 +1819,84 @@ repair table t1;
select * from t1 limit 1;
drop table t1;
+#
+# Bug #40814 CSV engine does not parse \X characters when they occur in unquoted fields
+#
+
+--echo #
+--echo # Test for the following cases
+--echo # 1) integers and strings enclosed in quotes
+--echo # 2) integers and strings not enclosed in quotes
+--echo # 3) \X characters with quotes
+--echo # 4) \X characters outside quotes
+--echo #
+
+CREATE TABLE t1(c1 INT NOT NULL, c2 VARCHAR(50) NOT NULL) ENGINE=csv;
+
+--echo # remove the already existing .CSV file if any
+--remove_file $MYSQLD_DATADIR/test/t1.CSV
+
+--echo # create the .CSV file that contains the hard-coded data used in
+--echo # testing
+--write_file $MYSQLD_DATADIR/test/t1.CSV
+1,"integer sans quotes"
+1,string sans quotes
+1,quotes"in between" strings
+"1",Integer with quote and string with no quote
+1,"escape sequence \n \" \\ \r \a within quotes"
+1,escape sequence \n \" \\ \r \a without quotes
+EOF
+--cat_file $MYSQLD_DATADIR/test/t1.CSV
+
+--echo # select from the table in which the data has been filled in using
+--echo # the hard-coded .CSV file
+SELECT * FROM t1;
+
+DROP TABLE t1;
+
+--echo # Test for the case when a field begins with a quote, but does not end in a
+--echo # quote.
+--echo # Note: This results in an error.
+
+CREATE TABLE t1(c1 INT NOT NULL, c2 VARCHAR(50) NOT NULL) ENGINE=csv;
+
+--echo # remove the already existing .CSV file if any
+--remove_file $MYSQLD_DATADIR/test/t1.CSV
+
+--echo # create the .CSV file that contains the hard-coded data used in
+--echo # testing
+--write_file $MYSQLD_DATADIR/test/t1.CSV
+1,"string only at the beginning quotes
+EOF
+--cat_file $MYSQLD_DATADIR/test/t1.CSV
+
+--echo # select from the table in which the data has been filled in using
+--echo # the hard-coded .CSV file
+--error ER_CRASHED_ON_USAGE
+SELECT * FROM t1;
+
+DROP TABLE t1;
+
+--echo # Test for the case when a field ends with a quote, but does not begin in a
+--echo # quote.
+--echo # Note: This results in an error.
+
+CREATE TABLE t1(c1 INT NOT NULL, c2 VARCHAR(50) NOT NULL) ENGINE=csv;
+
+--echo # remove the already existing .CSV file if any
+--remove_file $MYSQLD_DATADIR/test/t1.CSV
+
+--echo # create the .CSV file that contains the hard-coded data used in
+--echo # testing
+--write_file $MYSQLD_DATADIR/test/t1.CSV
+1,string with only ending quotes"
+EOF
+--cat_file $MYSQLD_DATADIR/test/t1.CSV
+
+--echo # select from the table in which the data has been filled in using
+--echo # the hard-coded .CSV file
+--error ER_CRASHED_ON_USAGE
+SELECT * FROM t1;
+
+DROP TABLE t1;
--echo End of 5.1 tests
diff --git a/mysql-test/t/ctype_big5.test b/mysql-test/t/ctype_big5.test
index a75fd917052..b024420dee3 100644
--- a/mysql-test/t/ctype_big5.test
+++ b/mysql-test/t/ctype_big5.test
@@ -84,3 +84,64 @@ select hex(a) from t1;
drop table t1;
--echo End of 5.0 tests
+
+
+--echo #
+--echo # Start of 5.5 tests
+--echo #
+
+--echo #
+--echo # Testing WL#4583 Case conversion in Asian character sets
+--echo #
+#
+# Populate t1 with all hex digits
+#
+SET NAMES utf8;
+SET collation_connection=big5_chinese_ci;
+CREATE TABLE t1 (b VARCHAR(2));
+INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
+INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
+#
+# Populate tables head and tail with values '00'-'FF'
+#
+CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
+CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
+DROP TABLE t1;
+#
+# Populate table t1 with all values [80..FF][20..FF]
+# Expected valid big5 codes: [A1..F9][40..7E,A1..FE] (89x157=13973)
+#
+CREATE TABLE t1 AS
+SELECT concat(head, tail) AS code, ' ' AS a
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF')
+ORDER BY head, tail;
+DROP TEMPORARY TABLE head, tail;
+SHOW CREATE TABLE t1;
+SELECT COUNT(*) FROM t1;
+UPDATE t1 SET a=unhex(code) ORDER BY code;
+SELECT COUNT(*) FROM t1 WHERE a<>'';
+#
+# Display all characters that have upper or lower case mapping.
+#
+SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a));
+#
+# Make sure all possible conversion happened
+#
+# Expect U+2160 to U+2169 ROMAN NUMERAL ONE to ROMAN NUMERAL TEN
+#
+SELECT * FROM t1
+WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
+ HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+#
+# Expect U+0430 to U+0433 CYRILLIC SMALL LETTER A, BE, VE, GHE
+# Expect U+043D to U+0442 CYRILLIC SMALL LETTER EN, O, PE, ER, ES, TE
+#
+SELECT * FROM t1
+WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
+ HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+DROP TABLE t1;
+
+--echo #
+--echo # End of 5.5 tests
+--echo #
diff --git a/mysql-test/t/ctype_collate.test b/mysql-test/t/ctype_collate.test
index 6b6abbcfbcc..cb2113277b9 100644
--- a/mysql-test/t/ctype_collate.test
+++ b/mysql-test/t/ctype_collate.test
@@ -172,6 +172,18 @@ DROP TABLE t1;
#
# Test that optimizer doesn't use indexes with wrong collation
#
+#
+# BUG#48447, Delivering too few records with indexes using collate syntax
+#
+create table t1 (a varchar(1) character set latin1 collate latin1_general_ci);
+insert into t1 values ('A'),('a'),('B'),('b'),('C'),('c');
+select * from t1 where a > 'B' collate latin1_bin;
+select * from t1 where a <> 'B' collate latin1_bin;
+create index i on t1 (a);
+select * from t1 where a > 'B' collate latin1_bin;
+select * from t1 where a <> 'B' collate latin1_bin;
+drop table t1;
+
SET NAMES latin1;
CREATE TABLE t1
(s1 char(10) COLLATE latin1_german1_ci,
diff --git a/mysql-test/t/ctype_cp1251.test b/mysql-test/t/ctype_cp1251.test
index 463a9cea4bc..b6a1cfc3f98 100644
--- a/mysql-test/t/ctype_cp1251.test
+++ b/mysql-test/t/ctype_cp1251.test
@@ -47,4 +47,14 @@ insert into t1 (a) values ('air'),
select * from t1 where a like 'we_%';
drop table t1;
+#
+# Bug#158 ENUM and SET types does not accept valid cp1251 character
+#
+CREATE TABLE t1 (
+ e1 enum('ÿáúëêà'),
+ e2 enum('ìëÿêî')
+) ENGINE=MYISAM character set cp1251;
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
# End of 4.1 tests
diff --git a/mysql-test/t/ctype_cp932_binlog_stm.test b/mysql-test/t/ctype_cp932_binlog_stm.test
index 89df33a6df5..ba329f3127a 100644
--- a/mysql-test/t/ctype_cp932_binlog_stm.test
+++ b/mysql-test/t/ctype_cp932_binlog_stm.test
@@ -4,6 +4,8 @@
-- source include/have_binlog_format_mixed_or_statement.inc
-- source extra/binlog_tests/ctype_cp932_binlog.test
+call mtr.add_suppression('Error in Log_event::read_log_event()');
+
#
# Bug#18293: Values in stored procedure written to binlog unescaped
#
@@ -22,18 +24,15 @@ 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|
+SHOW BINLOG EVENTS FROM 514|
delimiter ;|
--echo End of 5.0 tests
#
# #28436: Incorrect position in SHOW BINLOG EVENTS causes server coredump
-# Note: 364 is a magic position (found experimentally, depends on
-# the log's contents) that caused the server crash.
-
--error 1220
-SHOW BINLOG EVENTS FROM 365;
+SHOW BINLOG EVENTS FROM 490;
--echo Bug#44352 UPPER/LOWER function doesn't work correctly on cp932 and sjis environment.
CREATE TABLE t1 (a varchar(16)) character set cp932;
@@ -42,3 +41,79 @@ SELECT hex(a), hex(lower(a)), hex(upper(a)) FROM t1 ORDER BY binary(a);
DROP TABLE t1;
--echo End of 5.1 tests
+
+
+--echo #
+--echo # Start of 5.5 tests
+--echo #
+
+--echo #
+--echo # Testing WL#4583 Case conversion in Asian character sets
+--echo #
+#
+# Populate t1 with all hex digits
+#
+SET NAMES utf8;
+SET collation_connection=cp932_japanese_ci;
+CREATE TABLE t1 (b VARCHAR(2));
+INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
+INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
+#
+# Populate tables head and tail with values '00'-'FF'
+#
+CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
+CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
+DROP TABLE t1;
+#
+# Populate table t1 with all codes [80..FF][20..FF]
+# excluding Half Width Kana [A1..DF]
+# Expected valid cp932 multibyte codes:
+# [81..9F,E0..FC][40..7E,80..fC] (60x188=11280 characters)
+#
+CREATE TABLE t1 AS
+SELECT concat(head, tail) AS code, ' ' AS a
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN 'A1' AND 'DF')
+AND (tail BETWEEN '20' AND 'FF')
+ORDER BY head, tail;
+#
+# Populate t1 with Half Width Kana [A1..DF]
+#
+INSERT t1 (code) SELECT head FROM head
+WHERE (head BETWEEN 'A1' AND 'DF')
+ORDER BY head;
+DROP TEMPORARY TABLE head, tail;
+SHOW CREATE TABLE t1;
+UPDATE t1 SET a=unhex(code) ORDER BY code;
+SELECT COUNT(*) FROM t1;
+SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=1;
+SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2;
+#
+# Display all characters that have upper or lower case mapping.
+#
+SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1
+WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a))
+ORDER BY code;
+#
+# Make sure all possible conversion happened
+#
+# Expect U+212B ANGSTROM SIGN
+#
+SELECT * FROM t1
+WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
+ HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+#
+# Expect no results
+#
+SELECT * FROM t1
+WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
+ HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+
+DROP TABLE t1;
+
+
+
+
+--echo #
+--echo # End of 5.5 tests
+--echo #
diff --git a/mysql-test/t/ctype_errors.test b/mysql-test/t/ctype_errors.test
new file mode 100644
index 00000000000..3c73fdae264
--- /dev/null
+++ b/mysql-test/t/ctype_errors.test
@@ -0,0 +1,47 @@
+--echo Start of 5.4 tests
+
+#
+# ls_messages
+#
+CREATE TABLE t1(f1 INT);
+connect (con1,localhost,root,,test);
+connection con1;
+SET lc_messages=ru_RU;
+SHOW VARIABLES LIKE 'lc_messages';
+--error ER_TABLE_EXISTS_ERROR
+CREATE TABLE t1(f1 INT);
+SET NAMES utf8;
+--error ER_TABLE_EXISTS_ERROR
+CREATE TABLE t1(f1 INT);
+connection default;
+SHOW VARIABLES LIKE 'lc_messages';
+--error ER_TABLE_EXISTS_ERROR
+CREATE TABLE t1(f1 INT);
+
+SHOW GLOBAL VARIABLES LIKE 'lc_messages';
+SET GLOBAL lc_messages=ru_RU;
+SHOW GLOBAL VARIABLES LIKE 'lc_messages';
+SET GLOBAL lc_messages=en_US;
+
+disconnect con1;
+DROP TABLE t1;
+
+#
+# Bug#1406 Tablename in Errormessage not in default characterset
+#
+--error ER_BAD_TABLE_ERROR
+drop table `×§`;
+
+#
+# Bug#14602 Error messages not returned in character_set_results
+#
+connect (con1,localhost,root,,test);
+connection con1;
+SET lc_messages=cs_CZ;
+SET NAMES UTF8;
+--error ER_BAD_DB_ERROR
+USE nonexistant;
+disconnect con1;
+connection default;
+
+--echo End of 5.4 tests
diff --git a/mysql-test/t/ctype_eucjpms.test b/mysql-test/t/ctype_eucjpms.test
index ec358d94900..799c8c1796f 100644
--- a/mysql-test/t/ctype_eucjpms.test
+++ b/mysql-test/t/ctype_eucjpms.test
@@ -381,3 +381,89 @@ select hex(convert(_eucjpms 0xA5FE41 using ucs2));
# the next character, which is a single byte character 0x41.
select hex(convert(_eucjpms 0x8FABF841 using ucs2));
+
+--echo #
+--echo # Start of 5.5 tests
+--echo #
+
+--echo #
+--echo # Testing WL#4583 Case conversion in Asian character sets
+--echo #
+#
+# Populate t1 with all hex digits
+#
+SET NAMES utf8;
+SET collation_connection=eucjpms_japanese_ci;
+CREATE TABLE t1 (b VARCHAR(2));
+INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
+INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
+#
+# Populate tables head and tail with values '00'-'FF'
+#
+CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
+CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
+DROP TABLE t1;
+#
+# Populate table t1 with all eucjpms codes.
+#
+CREATE TABLE t1 AS SELECT 'XXXXXX' AS code, ' ' AS a LIMIT 0;
+#
+# Pupulate JIS-X-0201 range (Half Width Kana)
+# Expected valid code range: [8E][A1..DF] (1x63 characters)
+#
+INSERT INTO t1 (code) SELECT concat('8E', head) FROM head
+WHERE (head BETWEEN 'A1' AND 'DF') ORDER BY head;
+#
+# Populate JIS-X-0208 range
+# Expected valid codes: [A1..FE][A1..FE] (94x94=8836 characters)
+#
+INSERT INTO t1 (code) SELECT concat(head, tail)
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN '8E' AND '8F')
+AND (tail BETWEEN '20' AND 'FF')
+ORDER BY head, tail;
+#
+# Populate JIS-X-0212 range
+# Expected valid codes [8F][A1..FE][A1..FE] (1x94x94=8836 characters)
+#
+INSERT INTO t1 (code) SELECT concat('8F', head, tail)
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF')
+ORDER BY head, tail;
+DROP TEMPORARY TABLE head, tail;
+SHOW CREATE TABLE t1;
+
+UPDATE t1 SET a=unhex(code) ORDER BY code;
+SELECT COUNT(*) FROM t1;
+SELECT COUNT(*) FROM t1 WHERE a<>'';
+SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2;
+SELECT * FROM t1 WHERE CHAR_LENGTH(a)=2;
+SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=3;
+
+
+#
+# Display all characters that have upper or lower case mapping.
+#
+SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)) ORDER BY code;
+#
+# Make sure all possible conversion happened
+#
+# Expect U+0122 LATIN CAPITAL LETTER G WITH CEDILLA
+#
+SELECT * FROM t1
+WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
+ HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+#
+# Expect U+00F0 LATIN SMALL LETTER ETH
+# Expect U+01F5 LATIN SMALL LETTER G WITH ACUTE
+#
+SELECT * FROM t1
+WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
+ HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+
+DROP TABLE t1;
+
+
+--echo #
+--echo # End of 5.5 tests
+--echo #
diff --git a/mysql-test/t/ctype_euckr.test b/mysql-test/t/ctype_euckr.test
index fcb94e7b6d1..644ffbb96d9 100644
--- a/mysql-test/t/ctype_euckr.test
+++ b/mysql-test/t/ctype_euckr.test
@@ -107,3 +107,68 @@ SELECT s, hex(a), hex(u), hex(a2) FROM t2 ORDER BY s;
DROP TABLE t1, t2;
--echo End of 5.4 tests
+
+
+
+--echo #
+--echo # Start of 5.5 tests
+--echo #
+
+--echo #
+--echo # Testing WL#4583 Case conversion in Asian character sets
+--echo #
+#
+# Populate t1 with all hex digits
+#
+SET NAMES utf8;
+SET collation_connection=euckr_korean_ci;
+CREATE TABLE t1 (b VARCHAR(2));
+INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
+INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
+#
+# Populate tables head and tail with values '00'-'FF'
+#
+CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
+CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
+DROP TABLE t1;
+#
+# Populate table t1 with all codes [80..FF][20..FF]
+# Expected valid euckr codes: [81..FE][41..5A,61..7A,81..FE]
+#
+CREATE TABLE t1 AS
+SELECT concat(head, tail) AS code, ' ' AS a
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF')
+ORDER BY head, tail;
+DROP TEMPORARY TABLE head, tail;
+SHOW CREATE TABLE t1;
+UPDATE t1 SET a=unhex(code) ORDER BY code;
+SELECT COUNT(*) FROM t1 WHERE a<>'';
+#
+# Display all characters that have upper or lower case mapping.
+#
+SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a));
+#
+# Make sure all possible conversion happened
+#
+# Expect U+212B ANGSTROM SIGN
+#
+SELECT * FROM t1
+WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
+ HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+#
+# Expect U+0111 LATIN SMALL LETTER D WITH STROKE
+# Expect U+24D0 to U+24E9 CIRCLED LATIN SMALL LETTER A to Z
+#
+SELECT * FROM t1
+WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
+ HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+
+DROP TABLE t1;
+
+
+
+
+--echo #
+--echo # End of 5.5 tests
+--echo #
diff --git a/mysql-test/t/ctype_gb2312.test b/mysql-test/t/ctype_gb2312.test
index 86d1c7f72c9..f092a0a501f 100644
--- a/mysql-test/t/ctype_gb2312.test
+++ b/mysql-test/t/ctype_gb2312.test
@@ -33,3 +33,94 @@ SELECT hex(a) FROM t1 ORDER BY a;
DROP TABLE t1;
# End of 4.1 tests
+
+
+--echo #
+--echo # Start of 5.5 tests
+--echo #
+
+--echo #
+--echo # Testing WL#4583 Case conversion in Asian character sets
+--echo #
+#
+# Populate t1 with all hex digits
+#
+SET NAMES utf8;
+SET collation_connection=gb2312_chinese_ci;
+CREATE TABLE t1 (b VARCHAR(2));
+INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
+INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
+#
+# Populate tables head and tail with values '00'-'FF'
+#
+CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
+CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
+DROP TABLE t1;
+#
+# Populate table t1 with all codes [80..FF][20..FF]
+# Expected valid gb2312 codes [A1..F7][A1..FE]
+#
+CREATE TABLE t1 AS
+SELECT concat(head, tail) AS code, ' ' AS a
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF')
+ORDER BY head, tail;
+DROP TEMPORARY TABLE head, tail;
+SHOW CREATE TABLE t1;
+UPDATE t1 SET a=unhex(code) ORDER BY code;
+SELECT COUNT(*) FROM t1 WHERE a<>'';
+#
+# Display all characters that have upper or lower case mapping.
+#
+SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a));
+#
+# Make sure all possible conversion happened
+#
+# Expect U+2160 to U+216B ROMAN NUMERAL ONE to ROMAN NUMERAL TWELVE
+#
+SELECT * FROM t1
+WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
+ HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+#
+# Expect
+# U+00E0 LATIN SMALL LETTER A WITH GRAVE
+# U+00E1 LATIN SMALL LETTER A WITH ACUTE
+# U+00E8 LATIN SMALL LETTER E WITH GRAVE
+# U+00E9 LATIN SMALL LETTER E WITH ACUTE
+# U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX
+# U+00EC LATIN SMALL LETTER I WITH GRAVE
+# U+00ED LATIN SMALL LETTER I WITH ACUTE
+# U+00F2 LATIN SMALL LETTER O WITH GRAVE
+# U+00F3 LATIN SMALL LETTER O WITH ACUTE
+# U+00F9 LATIN SMALL LETTER U WITH GRAVE
+# U+00FA LATIN SMALL LETTER U WITH ACUTE
+# U+00FC LATIN SMALL LETTER U WITH DIAERESIS
+# U+0101 LATIN SMALL LETTER A WITH MACRON
+# U+0113 LATIN SMALL LETTER E WITH MACRON
+# U+011B LATIN SMALL LETTER E WITH CARON
+# U+012B LATIN SMALL LETTER I WITH MACRON
+# U+0144 LATIN SMALL LETTER N WITH ACUTE
+# U+0148 LATIN SMALL LETTER N WITH CARON
+# U+014D LATIN SMALL LETTER O WITH MACRON
+# U+016B LATIN SMALL LETTER U WITH MACRON
+# U+01CE LATIN SMALL LETTER A WITH CARON
+# U+01D0 LATIN SMALL LETTER I WITH CARON
+# U+01D2 LATIN SMALL LETTER O WITH CARON
+# U+01D4 LATIN SMALL LETTER U WITH CARON
+# U+01D6 LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+# U+01D8 LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+# U+01DA LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+# U+01DC LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+#
+SELECT * FROM t1
+WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
+ HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+
+DROP TABLE t1;
+
+
+
+
+--echo #
+--echo # End of 5.5 tests
+--echo #
diff --git a/mysql-test/t/ctype_gbk.test b/mysql-test/t/ctype_gbk.test
index 91fe50d89b9..b9e25e97a3c 100644
--- a/mysql-test/t/ctype_gbk.test
+++ b/mysql-test/t/ctype_gbk.test
@@ -68,3 +68,94 @@ SELECT b FROM t1 GROUP BY 1 LIMIT 1 INTO @nullll;
DROP TABLES t1;
--echo End of 5.0 tests
+
+
+--echo #
+--echo # Start of 5.5 tests
+--echo #
+
+--echo #
+--echo # Testing WL#4583 Case conversion in Asian character sets
+--echo #
+#
+# Populate t1 with all hex digits
+#
+SET NAMES utf8;
+SET collation_connection=gbk_chinese_ci;
+CREATE TABLE t1 (b VARCHAR(2));
+INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
+INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
+#
+# Populate tables head and tail with values '00'-'FF'
+#
+CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
+CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
+DROP TABLE t1;
+#
+# Populate table t1 with all codes [80..FF][20..FF]
+# Expected valid gbk codes [81..FE][40..7E,80..FE]
+#
+CREATE TABLE t1 AS
+SELECT concat(head, tail) AS code, ' ' AS a
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF')
+ORDER BY head, tail;
+DROP TEMPORARY TABLE head, tail;
+SHOW CREATE TABLE t1;
+UPDATE t1 SET a=unhex(code) ORDER BY code;
+SELECT COUNT(*) FROM t1 WHERE a<>'';
+#
+# Display all characters that have upper or lower case mapping.
+#
+SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a));
+#
+# Make sure all possible conversion happened
+#
+# Expect U+216A to U+216B ROMAN NUMERAL ELEVEN to ROMAN TWELVE
+#
+SELECT * FROM t1
+WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
+ HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+#
+# Expect
+# U+00E0 LATIN SMALL LETTER A WITH GRAVE
+# U+00E1 LATIN SMALL LETTER A WITH ACUTE
+# U+00E8 LATIN SMALL LETTER E WITH GRAVE
+# U+00E9 LATIN SMALL LETTER E WITH ACUTE
+# U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX
+# U+00EC LATIN SMALL LETTER I WITH GRAVE
+# U+00ED LATIN SMALL LETTER I WITH ACUTE
+# U+00F2 LATIN SMALL LETTER O WITH GRAVE
+# U+00F3 LATIN SMALL LETTER O WITH ACUTE
+# U+00F9 LATIN SMALL LETTER U WITH GRAVE
+# U+00FA LATIN SMALL LETTER U WITH ACUTE
+# U+00FC LATIN SMALL LETTER U WITH DIAERESIS
+# U+0101 LATIN SMALL LETTER A WITH MACRON
+# U+0113 LATIN SMALL LETTER E WITH MACRON
+# U+011B LATIN SMALL LETTER E WITH CARON
+# U+012B LATIN SMALL LETTER I WITH MACRON
+# U+0144 LATIN SMALL LETTER N WITH ACUTE
+# U+0148 LATIN SMALL LETTER N WITH CARON
+# U+014D LATIN SMALL LETTER O WITH MACRON
+# U+016B LATIN SMALL LETTER U WITH MACRON
+# U+01CE LATIN SMALL LETTER A WITH CARON
+# U+01D0 LATIN SMALL LETTER I WITH CARON
+# U+01D2 LATIN SMALL LETTER O WITH CARON
+# U+01D4 LATIN SMALL LETTER U WITH CARON
+# U+01D6 LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+# U+01D8 LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+# U+01DA LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+# U+01DC LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+#
+SELECT * FROM t1
+WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
+ HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+
+DROP TABLE t1;
+
+
+
+
+--echo #
+--echo # End of 5.5 tests
+--echo #
diff --git a/mysql-test/t/ctype_ldml.test b/mysql-test/t/ctype_ldml.test
index 0395de273de..99d9cd5a866 100644
--- a/mysql-test/t/ctype_ldml.test
+++ b/mysql-test/t/ctype_ldml.test
@@ -4,11 +4,30 @@
drop table if exists t1;
--enable_warnings
+--echo In the following tests we change the order of letter "b"
+--echo making it equal to letter "a", and check that it works
+--echo with all Unicode character sets
set names utf8;
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
show variables like 'character_sets_dir%';
+show collation like 'utf8_phone_ci';
+CREATE TABLE t1 (
+ name VARCHAR(64),
+ phone VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_phone_ci
+);
+INSERT INTO t1 VALUES ('Svoj','+7 912 800 80 02');
+INSERT INTO t1 VALUES ('Hf','+7 (912) 800 80 04');
+INSERT INTO t1 VALUES ('Bar','+7-912-800-80-01');
+INSERT INTO t1 VALUES ('Ramil','(7912) 800 80 03');
+INSERT INTO t1 VALUES ('Sanja','+380 (912) 8008005');
+SELECT * FROM t1 ORDER BY phone;
+SELECT * FROM t1 WHERE phone='+7(912)800-80-01';
+SELECT * FROM t1 WHERE phone='79128008001';
+SELECT * FROM t1 WHERE phone='7 9 1 2 8 0 0 8 0 0 1';
+DROP TABLE t1;
+
show collation like 'utf8_test_ci';
create table t1 (c1 char(1) character set utf8 collate utf8_test_ci);
insert into t1 values ('a');
@@ -57,6 +76,7 @@ DROP TABLE t1;
#
# Vietnamese experimental collation
#
+--echo Vietnamese experimental collation
show collation like 'ucs2_vn_ci';
create table t1 (c1 char(1) character set ucs2 collate ucs2_vn_ci);
@@ -99,3 +119,36 @@ drop table t1;
set names latin1;
show collation like 'latin1_test';
select "foo" = "foo " collate latin1_test;
+
+-- echo The following tests check that two-byte collation IDs work
+# The file ../std-data/Index.xml has a number of collations with high IDs.
+
+# Test that the "ID" column in I_S and SHOW queries can handle two bytes
+select * from information_schema.collations where id>256 order by id;
+show collation like '%test%';
+
+# Test that two-byte collation ID is correctly transfered to the client side.
+show collation like 'ucs2_vn_ci';
+create table t1 (c1 char(1) character set ucs2 collate ucs2_vn_ci);
+insert into t1 values (0x0061);
+--enable_metadata
+set @@character_set_results=NULL;
+select * from t1;
+--disable_metadata
+drop table t1;
+
+#
+# Check maximum collation ID (2047 as of MySQL-6.0.9)
+#
+CREATE TABLE t1 (s1 char(10) character set utf8 collate utf8_maxuserid_ci);
+INSERT INTO t1 VALUES ('a'),('b');
+SELECT * FROM t1 WHERE s1='a' ORDER BY BINARY s1;
+DROP TABLE t1;
+
+
+#
+# Bug#47756 Setting 2byte collation ID with 'set names' crashes the server
+#
+SET NAMES utf8 COLLATE utf8_phone_ci;
+SHOW COLLATION LIKE 'utf8_phone_ci';
+SET NAMES utf8;
diff --git a/mysql-test/t/ctype_sjis.test b/mysql-test/t/ctype_sjis.test
index 7de94e34dea..5f0a403c933 100644
--- a/mysql-test/t/ctype_sjis.test
+++ b/mysql-test/t/ctype_sjis.test
@@ -93,3 +93,78 @@ SELECT hex(a), hex(lower(a)), hex(upper(a)) FROM t1 ORDER BY binary(a);
DROP TABLE t1;
--echo # End of 5.1 tests
+
+
+--echo #
+--echo # Start of 5.5 tests
+--echo #
+
+--echo #
+--echo # Testing WL#4583 Case conversion in Asian character sets
+--echo #
+#
+# Populate t1 with all hex digits
+#
+SET NAMES utf8;
+SET collation_connection=sjis_japanese_ci;
+CREATE TABLE t1 (b VARCHAR(2));
+INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
+INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
+#
+# Populate tables head and tail with values '00'-'FF'
+#
+CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
+CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
+DROP TABLE t1;
+#
+# Populate table t1 with all codes [80..FF][20..FF]
+# excluding Half Width Kana [A1..DF]
+# Expected valid sjis codes:
+# [81..9F,E0..FC][40..7E,80..fC] (60x188=11280 characters)
+#
+CREATE TABLE t1 AS
+SELECT concat(head, tail) AS code, ' ' AS a
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN 'A1' AND 'DF')
+AND (tail BETWEEN '20' AND 'FF')
+ORDER BY head, tail;
+#
+# Populate Half Width Kana: [A1..DF]
+#
+INSERT t1 (code) SELECT head FROM head WHERE (head BETWEEN 'A1' AND 'DF');
+DROP TEMPORARY TABLE head, tail;
+SHOW CREATE TABLE t1;
+UPDATE t1 SET a=unhex(code) ORDER BY code;
+SELECT COUNT(*) FROM t1;
+SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=1;
+SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2;
+#
+# Display all characters that have upper or lower case mapping.
+#
+SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a)
+FROM t1
+WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a))
+ORDER BY code;
+#
+# Make sure all possible conversion happened
+#
+# Expect U+212B ANGSTROM SIGN
+#
+SELECT * FROM t1
+WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
+ HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+#
+# Expect no results
+#
+SELECT * FROM t1
+WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
+ HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+
+DROP TABLE t1;
+
+
+
+
+--echo #
+--echo # End of 5.5 tests
+--echo #
diff --git a/mysql-test/t/ctype_ujis.test b/mysql-test/t/ctype_ujis.test
index 400f1301dd3..68b56118a21 100644
--- a/mysql-test/t/ctype_ujis.test
+++ b/mysql-test/t/ctype_ujis.test
@@ -1212,3 +1212,88 @@ DROP TABLE t2;
set names default;
set character_set_database=default;
set character_set_server=default;
+
+
+--echo #
+--echo # Start of 5.5 tests
+--echo #
+
+--echo #
+--echo # Testing WL#4583 Case conversion in Asian character sets
+--echo #
+#
+# Populate t1 with all hex digits
+#
+SET NAMES utf8;
+SET collation_connection=ujis_japanese_ci;
+CREATE TABLE t1 (b VARCHAR(2));
+INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
+INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
+#
+# Populate tables head and tail with values '00'-'FF'
+#
+CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
+CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
+DROP TABLE t1;
+#
+# Populate table t1 with all ujis codes.
+#
+#
+CREATE TABLE t1 AS SELECT 'XXXXXX' AS code, ' ' AS a LIMIT 0;
+#
+# Pupulate JIS-X-0201 range (Half Width Kana)
+# Valid characters: [8E][A1-DF]
+#
+INSERT INTO t1 (code) SELECT concat('8E', head) FROM head
+WHERE (head BETWEEN 'A1' AND 'DF') ORDER BY head;
+#
+# Populate JIS-X-0208 range
+# Expected valid range: [A1..FE][A1..FE]
+#
+INSERT INTO t1 (code) SELECT concat(head, tail)
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN '8E' AND '8F')
+AND (tail BETWEEN '20' AND 'FF')
+ORDER BY head, tail;
+#
+# Populate JIS-X-0212 range
+# Expected valid range: [8F][A1..FE][A1..FE]
+#
+INSERT INTO t1 (code) SELECT concat('8F', head, tail)
+FROM head, tail
+WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '80' AND 'FF')
+ORDER BY head, tail;
+DROP TEMPORARY TABLE head, tail;
+SHOW CREATE TABLE t1;
+
+UPDATE t1 SET a=unhex(code) ORDER BY code;
+SELECT COUNT(*) FROM t1;
+SELECT COUNT(*) FROM t1 WHERE a<>'';
+SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2;
+SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=3;
+#
+# Display all characters that have upper or lower case mapping.
+#
+SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)) ORDER BY code;
+#
+# Make sure all possible conversion happened
+#
+# Expect U+0122 LATIN CAPITAL LETTER G WITH CEDILLA
+#
+SELECT * FROM t1
+WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
+ HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+#
+# U+00F0 LATIN SMALL LETTER ETH
+# U+01F5 LATIN SMALL LETTER G WITH ACUTE
+#
+SELECT * FROM t1
+WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
+ HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
+
+DROP TABLE t1;
+
+
+--echo #
+--echo # End of 5.5 tests
+--echo #
diff --git a/mysql-test/t/ctype_utf8.test b/mysql-test/t/ctype_utf8.test
index 23c83310886..1a560554d3d 100644
--- a/mysql-test/t/ctype_utf8.test
+++ b/mysql-test/t/ctype_utf8.test
@@ -2,6 +2,8 @@
# Tests with the utf8 character set
#
+--source include/have_innodb.inc
+
--disable_warnings
drop table if exists t1,t2;
--enable_warnings
@@ -256,9 +258,7 @@ drop table t1;
# Bug 4521: unique key prefix interacts poorly with utf8
# InnoDB: keys with prefix compression, case insensitive collation.
#
---disable_warnings
create table t1 (c varchar(30) character set utf8, unique(c(10))) engine=innodb;
---enable_warnings
insert into t1 values ('1'),('2'),('3'),('x'),('y'),('z');
insert into t1 values ('aaaaaaaaaa');
--error ER_DUP_ENTRY
@@ -306,9 +306,7 @@ drop table t1;
# Bug 4521: unique key prefix interacts poorly with utf8
# InnoDB: fixed length keys, case insensitive collation
#
---disable_warnings
create table t1 (c char(3) character set utf8, unique (c(2))) engine=innodb;
---enable_warnings
insert into t1 values ('1'),('2'),('3'),('4'),('x'),('y'),('z');
insert into t1 values ('a');
insert into t1 values ('aa');
@@ -383,12 +381,10 @@ drop table t1;
# Bug 4531: unique key prefix interacts poorly with utf8
# Check BDB, case insensitive collation
#
---disable_warnings
create table t1 (
c char(10) character set utf8,
unique key a (c(1))
) engine=innodb;
---enable_warnings
insert into t1 values ('a'),('b'),('c'),('d'),('e'),('f');
--error ER_DUP_ENTRY
insert into t1 values ('aa');
@@ -506,12 +502,10 @@ drop table t1;
# Bug 4531: unique key prefix interacts poorly with utf8
# Check BDB, binary collation
#
---disable_warnings
create table t1 (
c char(10) character set utf8 collate utf8_bin,
unique key a (c(1))
) engine=innodb;
---enable_warnings
insert into t1 values ('a'),('b'),('c'),('d'),('e'),('f');
--error ER_DUP_ENTRY
insert into t1 values ('aa');
@@ -543,12 +537,10 @@ drop table t1;
# Bug#4594: column index make = failed for gbk, but like works
# Check InnoDB
#
---disable_warnings
create table t1 (
str varchar(255) character set utf8 not null,
key str (str(2))
) engine=innodb;
---enable_warnings
INSERT INTO t1 VALUES ('str');
INSERT INTO t1 VALUES ('str2');
select * from t1 where str='str';
@@ -581,12 +573,10 @@ drop table t1;
# the same for BDB
#
---disable_warnings
create table t1 (
str varchar(255) character set utf8 not null,
key str (str(2))
) engine=innodb;
---enable_warnings
INSERT INTO t1 VALUES ('str');
INSERT INTO t1 VALUES ('str2');
select * from t1 where str='str';
@@ -603,14 +593,11 @@ DROP TABLE t1;
#
# Bug #5723: length(<varchar utf8 field>) returns varying results
#
---disable_warnings
SET NAMES utf8;
---disable_warnings
CREATE TABLE t1 (
subject varchar(255) character set utf8 collate utf8_unicode_ci,
p varchar(15) character set utf8
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
---enable_warnings
INSERT INTO t1 VALUES ('è°·å·ä¿ŠäºŒã¨ç”³ã—ã¾ã™ãŒã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆäºˆç´„ã®ä¼šå“¡ç™»éŒ²ã‚’ã—ã¾ã—ãŸã¨ã“ã‚ã€ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’é–“é•ãˆã¦ã—ã¾ã„会員IDãŒå—ã‘å–ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸã€‚é–“é•ãˆã‚¢ãƒ‰ãƒ¬ã‚¹ã¯tani-shun@n.vodafone.ne.jpを書ãè¾¼ã¿ã¾ã—ãŸã€‚ã©ã†ã™ã‚Œã°ã‚ˆã„ã§ã™ã‹ï¼Ÿ ãã®ä»–ã€ä½æ‰€ç­‰ã¯é–“é•ãˆã‚りã¾ã›ã‚“。連絡ãã ã•ã„。よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚m(__)m','040312-000057');
INSERT INTO t1 VALUES ('aaa','bbb');
SELECT length(subject) FROM t1;
@@ -661,18 +648,14 @@ DROP TABLE t1;
# Bug #6019 SELECT tries to use too short prefix index on utf8 data
#
set names utf8;
---disable_warnings
create table t1 (
a int primary key,
b varchar(6),
index b3(b(3))
) engine=innodb character set=utf8;
---enable_warnings
insert into t1 values(1,'foo'),(2,'foobar');
select * from t1 where b like 'foob%';
---disable_warnings
alter table t1 engine=innodb;
---enable_warnings
select * from t1 where b like 'foob%';
drop table t1;
@@ -841,14 +824,12 @@ INSERT INTO t1 VALUES
(1,'blah','464','aaa','fkc1c9ilc20x0hgae7lx6j09','ERR','ERR Имри.Ðфимим.Ðеимимримдмримрмрирор имримримримр имридм ирбднримрфмририримрфмфмим.Ðд.Д имдимримрад.Ðдимримримрмдиримримримр м.Дадимфшьмримд им.Ðдимимрн имадми','ИМРИ.ÐФИМИМ.ÐЕИМИМРИМДМРИМРМРИРОР',3,'2005-06-01 17:30:43','1234567890'),
(2,'blah','464','aaa','haxpl2ilc20x00bj4tt2m5ti','11','11 g','G',3,'2005-06-02 22:43:10','1234567890');
---disable_warnings
CREATE TABLE t2 (
`msisdn` varchar(15) NOT NULL default '',
`operator_id` int(11) NOT NULL default '0',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
UNIQUE KEY `PK_user` (`msisdn`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
---enable_warnings
INSERT INTO t2 VALUES ('1234567890',2,'2005-05-24 13:53:25');
@@ -1013,10 +994,8 @@ drop table t1;
# additional tests from duplicate bug#20744 MySQL return no result
set names utf8;
---disable_warnings
create table t1 (a varchar(30) not null primary key)
engine=innodb default character set utf8 collate utf8_general_ci;
---enable_warnings
insert into t1 values ('ã‚ã„ã†ãˆãŠã‹ããã‘ã“ã•ã—ã™ã›ã');
insert into t1 values ('ã•ã—ã™ã›ãã‹ããã‘ã“ã‚ã„ã†ãˆãŠ');
select a as gci1 from t1 where a like 'ã•ã—ã™ã›ãã‹ããã‘ã“ã‚ã„ã†ãˆãŠ%';
@@ -1024,10 +1003,8 @@ select a as gci2 from t1 where a like 'ã‚ã„ã†ãˆãŠã‹ããã‘ã“ã•ã—ã™ã
drop table t1;
set names utf8;
---disable_warnings
create table t1 (a varchar(30) not null primary key)
engine=innodb default character set utf8 collate utf8_unicode_ci;
---enable_warnings
insert into t1 values ('ã‚ã„ã†ãˆãŠã‹ããã‘ã“ã•ã—ã™ã›ã');
insert into t1 values ('ã•ã—ã™ã›ãã‹ããã‘ã“ã‚ã„ã†ãˆãŠ');
select a as uci1 from t1 where a like 'ã•ã—ã™ã›ãã‹ããã‘ã“ã‚ã„ã†ãˆãŠ%';
@@ -1035,10 +1012,8 @@ select a as uci2 from t1 where a like 'ã‚ã„ã†ãˆãŠã‹ããã‘ã“ã•ã—ã™ã
drop table t1;
set names utf8;
---disable_warnings
create table t1 (a varchar(30) not null primary key)
engine=innodb default character set utf8 collate utf8_bin;
---enable_warnings
insert into t1 values ('ã‚ã„ã†ãˆãŠã‹ããã‘ã“ã•ã—ã™ã›ã');
insert into t1 values ('ã•ã—ã™ã›ãã‹ããã‘ã“ã‚ã„ã†ãˆãŠ');
select a as bin1 from t1 where a like 'ã•ã—ã™ã›ãã‹ããã‘ã“ã‚ã„ã†ãˆãŠ%';
@@ -1363,26 +1338,22 @@ select concat(a, if(b>10, 'x' 'x', 'y' 'y')) from t1;
select concat(a, if(b>10, 'x' 'æ', 'y' 'ß')) from t1;
drop table t1;
-
#
# Bug#19960: Inconsistent results when joining
# InnoDB tables using partial UTF8 indexes
#
---disable_warnings
+
CREATE TABLE t1 (
colA int(11) NOT NULL,
colB varchar(255) character set utf8 NOT NULL,
PRIMARY KEY (colA)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
---enable_warnings
INSERT INTO t1 (colA, colB) VALUES (1, 'foo'), (2, 'foo bar');
---disable_warnings
CREATE TABLE t2 (
colA int(11) NOT NULL,
colB varchar(255) character set utf8 NOT NULL,
KEY bad (colA,colB(3))
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
---enable_warnings
INSERT INTO t2 (colA, colB) VALUES (1, 'foo'),(2, 'foo bar');
SELECT * FROM t1 JOIN t2 ON t1.colA=t2.colA AND t1.colB=t2.colB
WHERE t1.colA < 3;
@@ -1466,3 +1437,35 @@ SELECT CONVERT(a, CHAR), CONVERT(b, CHAR) from t1 GROUP BY b;
DROP TABLE t1;
--echo End of 5.0 tests
+
+
+--echo Start of 5.4 tests
+#
+# Bug#26180: Can't add columns to tables created with utf8 text indexes
+#
+CREATE TABLE t1 (
+ clipid INT NOT NULL,
+ Tape TINYTEXT,
+ PRIMARY KEY (clipid),
+ KEY tape(Tape(255))
+) CHARACTER SET=utf8;
+ALTER TABLE t1 ADD mos TINYINT DEFAULT 0 AFTER clipid;
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+#
+# Bug#26474: Add Sinhala script (Sri Lanka) collation to MySQL
+#
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+CREATE TABLE t1 (
+ predicted_order int NOT NULL,
+ utf8_encoding VARCHAR(10) NOT NULL
+) CHARACTER SET utf8;
+INSERT INTO t1 VALUES (19, x'E0B696'), (30, x'E0B69AE0B798'), (61, x'E0B6AF'), (93, x'E0B799'), (52, x'E0B6A6'), (73, x'E0B6BBE0B78AE2808D'), (3, x'E0B686'), (56, x'E0B6AA'), (55, x'E0B6A9'), (70, x'E0B6B9'), (94, x'E0B79A'), (80, x'E0B785'), (25, x'E0B69AE0B791'), (48, x'E0B6A2'), (13, x'E0B690'), (86, x'E0B793'), (91, x'E0B79F'), (81, x'E0B786'), (79, x'E0B784'), (14, x'E0B691'), (99, x'E0B78A'), (8, x'E0B68B'), (68, x'E0B6B7'), (22, x'E0B69A'), (16, x'E0B693'), (33, x'E0B69AE0B7B3'), (38, x'E0B69AE0B79D'), (21, x'E0B683'), (11, x'E0B68E'), (77, x'E0B782'), (40, x'E0B69AE0B78A'), (101, x'E0B78AE2808DE0B6BB'), (35, x'E0B69AE0B79A'), (1, x'E0B7B4'), (9, x'E0B68C'), (96, x'E0B79C'), (6, x'E0B689'), (95, x'E0B79B'), (88, x'E0B796'), (64, x'E0B6B3'), (26, x'E0B69AE0B792'), (82, x'E0B78F'), (28, x'E0B69AE0B794'), (39, x'E0B69AE0B79E'), (97, x'E0B79D'), (2, x'E0B685'), (75, x'E0B780'), (34, x'E0B69AE0B799'), (69, x'E0B6B8'), (83, x'E0B790'), (18, x'E0B695'), (90, x'E0B7B2'), (17, x'E0B694'), (72, x'E0B6BB'), (66, x'E0B6B5'), (59, x'E0B6AD'), (44, x'E0B69E'), (15, x'E0B692'), (23, x'E0B69AE0B78F'), (65, x'E0B6B4'), (42, x'E0B69C'), (63, x'E0B6B1'), (85, x'E0B792'), (47, x'E0B6A1'), (49, x'E0B6A3'), (92, x'E0B7B3'), (78, x'E0B783'), (36, x'E0B69AE0B79B'), (4, x'E0B687'), (24, x'E0B69AE0B790'), (87, x'E0B794'), (37, x'E0B69AE0B79C'), (32, x'E0B69AE0B79F'), (29, x'E0B69AE0B796'), (43, x'E0B69D'), (62, x'E0B6B0'), (100, x'E0B78AE2808DE0B6BA'), (60, x'E0B6AE'), (45, x'E0B69F'), (12, x'E0B68F'), (46, x'E0B6A0'), (50, x'E0B6A5'), (51, x'E0B6A4'), (5, x'E0B688'), (76, x'E0B781'), (89, x'E0B798'), (74, x'E0B6BD'), (10, x'E0B68D'), (57, x'E0B6AB'), (71, x'E0B6BA'), (58, x'E0B6AC'), (27, x'E0B69AE0B793'), (54, x'E0B6A8'), (84, x'E0B791'), (31, x'E0B69AE0B7B2'), (98, x'E0B79E'), (53, x'E0B6A7'), (41, x'E0B69B'), (67, x'E0B6B6'), (7, x'E0B68A'), (20, x'E0B682');
+SELECT predicted_order, hex(utf8_encoding) FROM t1 ORDER BY utf8_encoding COLLATE utf8_sinhala_ci;
+DROP TABLE t1;
+
+--echo End of 5.4 tests
+
diff --git a/mysql-test/t/date_formats.test b/mysql-test/t/date_formats.test
index e5dc7ffa53e..a83e18c44d9 100644
--- a/mysql-test/t/date_formats.test
+++ b/mysql-test/t/date_formats.test
@@ -17,82 +17,77 @@ WHERE variable_name IN ('date_format', 'datetime_format', 'time_format')
ORDER BY variable_name;
#
-# Test setting a lot of different formats to see which formats are accepted and
-# which aren't
-#
-
-SET time_format='%H%i%s';
-SET time_format='%H:%i:%s.%f';
-SET time_format='%h-%i-%s.%f%p';
-SET time_format='%h:%i:%s.%f %p';
-SET time_format='%h:%i:%s%p';
-
-SET date_format='%Y%m%d';
-SET date_format='%Y.%m.%d';
-SET date_format='%d.%m.%Y';
-SET date_format='%m-%d-%Y';
-
-set datetime_format= '%Y%m%d%H%i%s';
-set datetime_format= '%Y-%m-%d %H:%i:%s';
-set datetime_format= '%m-%d-%y %H:%i:%s.%f';
-set datetime_format= '%d-%m-%Y %h:%i:%s%p';
-set datetime_format= '%H:%i:%s %Y-%m-%d';
-set datetime_format= '%H:%i:%s.%f %m-%d-%Y';
-set datetime_format= '%h:%i:%s %p %Y-%m-%d';
-set datetime_format= '%h:%i:%s.%f %p %Y-%m-%d';
-
-SELECT variable_name, variable_value
-FROM information_schema.session_variables
-WHERE variable_name IN ('date_format', 'datetime_format', 'time_format')
-ORDER BY variable_name;
-
---error 1231
-SET time_format='%h:%i:%s';
---error 1231
-SET time_format='%H %i:%s';
---error 1231
-SET time_format='%H::%i:%s';
---error 1231
-SET time_format='%H:%i:%s%f';
---error 1231
-SET time_format='%H:%i.%f:%s';
---error 1231
-SET time_format='%H:%i:%s%p';
---error 1231
-SET time_format='%h:%i:%s.%f %p %Y-%m-%d';
---error 1231
-SET time_format='%H%i%s.%f';
---error 1231
-SET time_format='%H:%i-%s.%f';
---error 1231
-SET date_format='%d.%m.%d';
---error 1231
-SET datetime_format='%h.%m.%y %d.%i.%s';
---error 1231
-set datetime_format= '%H:%i:%s.%f %p %Y-%m-%d';
-
-#
-# Test GLOBAL values
-
-set GLOBAL datetime_format= '%H:%i:%s %Y-%m-%d';
-SET SESSION datetime_format=default;
-select @@global.datetime_format, @@session.datetime_format;
-SET GLOBAL datetime_format=default;
-SET SESSION datetime_format=default;
-select @@global.datetime_format, @@session.datetime_format;
-
-SET GLOBAL date_format=default;
-SET GLOBAL time_format=default;
-SET GLOBAL datetime_format=default;
-SET time_format=default;
-SET date_format=default;
-SET datetime_format=default;
-
-#
# The following tests will work only when we at some point will enable
# dynamic changing of formats
#
+# SET time_format='%H%i%s';
+# SET time_format='%H:%i:%s.%f';
+# SET time_format='%h-%i-%s.%f%p';
+# SET time_format='%h:%i:%s.%f %p';
+# SET time_format='%h:%i:%s%p';
+#
+# SET date_format='%Y%m%d';
+# SET date_format='%Y.%m.%d';
+# SET date_format='%d.%m.%Y';
+# SET date_format='%m-%d-%Y';
+#
+# set datetime_format= '%Y%m%d%H%i%s';
+# set datetime_format= '%Y-%m-%d %H:%i:%s';
+# set datetime_format= '%m-%d-%y %H:%i:%s.%f';
+# set datetime_format= '%d-%m-%Y %h:%i:%s%p';
+# set datetime_format= '%H:%i:%s %Y-%m-%d';
+# set datetime_format= '%H:%i:%s.%f %m-%d-%Y';
+# set datetime_format= '%h:%i:%s %p %Y-%m-%d';
+# set datetime_format= '%h:%i:%s.%f %p %Y-%m-%d';
+#
+# SELECT variable_name, variable_value
+# FROM information_schema.session_variables
+# WHERE variable_name IN ('date_format', 'datetime_format', 'time_format')
+# ORDER BY variable_name;
+#
+# --error 1231
+# SET time_format='%h:%i:%s';
+# --error 1231
+# SET time_format='%H %i:%s';
+# --error 1231
+# SET time_format='%H::%i:%s';
+# --error 1231
+# SET time_format='%H:%i:%s%f';
+# --error 1231
+# SET time_format='%H:%i.%f:%s';
+# --error 1231
+# SET time_format='%H:%i:%s%p';
+# --error 1231
+# SET time_format='%h:%i:%s.%f %p %Y-%m-%d';
+# --error 1231
+# SET time_format='%H%i%s.%f';
+# --error 1231
+# SET time_format='%H:%i-%s.%f';
+# --error 1231
+# SET date_format='%d.%m.%d';
+# --error 1231
+# SET datetime_format='%h.%m.%y %d.%i.%s';
+# --error 1231
+# set datetime_format= '%H:%i:%s.%f %p %Y-%m-%d';
+#
+# #
+# # Test GLOBAL values
+#
+# set GLOBAL datetime_format= '%H:%i:%s %Y-%m-%d';
+# SET SESSION datetime_format=default;
+# select @@global.datetime_format, @@session.datetime_format;
+# SET GLOBAL datetime_format=default;
+# SET SESSION datetime_format=default;
+# select @@global.datetime_format, @@session.datetime_format;
+#
+# SET GLOBAL date_format=default;
+# SET GLOBAL time_format=default;
+# SET GLOBAL datetime_format=default;
+# SET time_format=default;
+# SET date_format=default;
+# SET datetime_format=default;
+
# SET date_format='%d.%m.%Y';
# select CAST('01.01.2001' as DATE) as a;
# SET datetime_format='%d.%m.%Y %H.%i.%s';
diff --git a/mysql-test/t/ddl_i18n_koi8r.test b/mysql-test/t/ddl_i18n_koi8r.test
index fecef2f95d5..7ad46ae5f61 100644
--- a/mysql-test/t/ddl_i18n_koi8r.test
+++ b/mysql-test/t/ddl_i18n_koi8r.test
@@ -148,7 +148,7 @@ set names koi8r|
--echo
--echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.views.mysqltest1.sql
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $views_dump1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --databases mysqltest1 > $views_dump1
# - Clean mysqltest1;
@@ -408,22 +408,22 @@ set names koi8r|
--echo
--echo ---> Dump of mysqltest1
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --routines --databases mysqltest1
--echo
--echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.sp.mysqltest1.sql
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1 > $sp_dump1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --routines --databases mysqltest1 > $sp_dump1
--echo
--echo ---> Dump of mysqltest2
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --routines --databases mysqltest2
--echo
--echo ---> Dumping mysqltest2 to ddl_i18n_koi8r.sp.mysqltest2.sql
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2 > $sp_dump2
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --routines --databases mysqltest2 > $sp_dump2
# - Clean mysqltest1, mysqltest2;
@@ -685,22 +685,22 @@ use mysqltest1|
--echo
--echo ---> Dump of mysqltest1
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --triggers --databases mysqltest1
--echo
--echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.triggers.mysqltest1.sql
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1 > $triggers_dump1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --triggers --databases mysqltest1 > $triggers_dump1
--echo
--echo ---> Dump of mysqltest2
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --triggers --databases mysqltest2
--echo
--echo ---> Dumping mysqltest2 to ddl_i18n_koi8r.triggers.mysqltest2.sql
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2 > $triggers_dump2
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --triggers --databases mysqltest2 > $triggers_dump2
# - Clean mysqltest1, mysqltest2;
@@ -946,22 +946,22 @@ set names koi8r|
--echo
--echo ---> Dump of mysqltest1
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --events --databases mysqltest1
--echo
--echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.events.mysqltest1.sql
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1 > $events_dump1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --events --databases mysqltest1 > $events_dump1
--echo
--echo ---> Dump of mysqltest2
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --events --databases mysqltest2
--echo
--echo ---> Dumping mysqltest2 to ddl_i18n_koi8r.events.mysqltest2.sql
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2 > $events_dump2
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --events --databases mysqltest2 > $events_dump2
# - Clean mysqltest1, mysqltest2;
diff --git a/mysql-test/t/ddl_i18n_utf8.test b/mysql-test/t/ddl_i18n_utf8.test
index 8788d0604f2..6ef418fc6e7 100644
--- a/mysql-test/t/ddl_i18n_utf8.test
+++ b/mysql-test/t/ddl_i18n_utf8.test
@@ -148,7 +148,7 @@ set names utf8|
--echo
--echo ---> Dumping mysqltest1 to ddl_i18n_utf8views.mysqltest1.sql
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $views_dump1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --databases mysqltest1 > $views_dump1
# - Clean mysqltest1;
@@ -408,22 +408,22 @@ set names utf8|
--echo
--echo ---> Dump of mysqltest1
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --routines --databases mysqltest1
--echo
--echo ---> Dumping mysqltest1 to ddl_i18n_utf8sp.mysqltest1.sql
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1 > $sp_dump1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --routines --databases mysqltest1 > $sp_dump1
--echo
--echo ---> Dump of mysqltest2
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --routines --databases mysqltest2
--echo
--echo ---> Dumping mysqltest2 to ddl_i18n_utf8sp.mysqltest2.sql
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2 > $sp_dump2
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --routines --databases mysqltest2 > $sp_dump2
# - Clean mysqltest1, mysqltest2;
@@ -685,22 +685,22 @@ use mysqltest1|
--echo
--echo ---> Dump of mysqltest1
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --triggers --databases mysqltest1
--echo
--echo ---> Dumping mysqltest1 to ddl_i18n_utf8triggers.mysqltest1.sql
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1 > $triggers_dump1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --triggers --databases mysqltest1 > $triggers_dump1
--echo
--echo ---> Dump of mysqltest2
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --triggers --databases mysqltest2
--echo
--echo ---> Dumping mysqltest2 to ddl_i18n_utf8triggers.mysqltest2.sql
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2 > $triggers_dump2
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --triggers --databases mysqltest2 > $triggers_dump2
# - Clean mysqltest1, mysqltest2;
@@ -946,22 +946,22 @@ set names utf8|
--echo
--echo ---> Dump of mysqltest1
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --events --databases mysqltest1
--echo
--echo ---> Dumping mysqltest1 to ddl_i18n_utf8events.mysqltest1.sql
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1 > $events_dump1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --events --databases mysqltest1 > $events_dump1
--echo
--echo ---> Dump of mysqltest2
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --events --databases mysqltest2
--echo
--echo ---> Dumping mysqltest2 to ddl_i18n_utf8events.mysqltest2.sql
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2 > $events_dump2
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --compact --events --databases mysqltest2 > $events_dump2
# - Clean mysqltest1, mysqltest2;
diff --git a/mysql-test/t/delayed.test b/mysql-test/t/delayed.test
index 689341391c9..d1e9bc154f5 100644
--- a/mysql-test/t/delayed.test
+++ b/mysql-test/t/delayed.test
@@ -247,7 +247,7 @@ DROP TABLE t1;
# Bug #32676: insert delayed crash with wrong column and function specified
#
CREATE TABLE t1 (a INT);
---error ER_BAD_FIELD_ERROR
+--error 1305
INSERT DELAYED INTO t1 SET b= b();
DROP TABLE t1;
@@ -353,3 +353,38 @@ DROP TABLE t1, t2;
--echo End of 5.1 tests
+
+
+
+--echo #
+--echo # Bug #47274 assert in open_table on CREATE TABLE <already existing>
+--echo #
+
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+DROP TABLE IF EXISTS t2;
+--enable_warnings
+
+CREATE TABLE t1 ( f1 INTEGER AUTO_INCREMENT, PRIMARY KEY (f1));
+
+--echo # The following CREATE TABLEs before gave an assert.
+
+INSERT DELAYED t1 VALUES (4);
+--error ER_TABLE_EXISTS_ERROR
+CREATE TABLE t1 AS SELECT 1 AS f1;
+
+REPLACE DELAYED t1 VALUES (5);
+--error ER_TABLE_EXISTS_ERROR
+CREATE TABLE t1 AS SELECT 1 AS f1;
+
+INSERT DELAYED t1 VALUES (6);
+--error ER_TABLE_EXISTS_ERROR
+CREATE TABLE t1 (f1 INTEGER);
+
+CREATE TABLE t2 (f1 INTEGER);
+INSERT DELAYED t1 VALUES (7);
+--error ER_TABLE_EXISTS_ERROR
+CREATE TABLE t1 LIKE t2;
+
+DROP TABLE t2;
+DROP TABLE t1;
diff --git a/mysql-test/t/delete.test b/mysql-test/t/delete.test
index a5dff38c078..fde98ab7e97 100644
--- a/mysql-test/t/delete.test
+++ b/mysql-test/t/delete.test
@@ -265,8 +265,8 @@ DELETE FROM t1, alias USING t1, t2 alias WHERE t1.a = alias.a;
DELETE FROM t1, t2 USING t1, t2 alias WHERE t1.a = alias.a;
--error ER_PARSE_ERROR
DELETE FROM db1.t1 alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
---error ER_UNKNOWN_TABLE
DELETE FROM alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
+--error ER_UNKNOWN_TABLE
DELETE FROM db2.alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
DELETE FROM t1 USING t1 WHERE a = 1;
SELECT * FROM t1;
@@ -293,6 +293,159 @@ DROP FUNCTION f1;
--echo End of 5.0 tests
+#
+# Bug#27525: table not found when using multi-table-deletes with aliases over
+# several databas
+# Bug#21148: MULTI-DELETE fails to resolve a table by alias if it's from a
+# different database
+#
+
+--disable_warnings
+DROP DATABASE IF EXISTS db1;
+DROP DATABASE IF EXISTS db2;
+DROP DATABASE IF EXISTS db3;
+DROP DATABASE IF EXISTS db4;
+DROP TABLE IF EXISTS t1, t2;
+DROP PROCEDURE IF EXISTS count;
+--enable_warnings
+USE test;
+CREATE DATABASE db1;
+CREATE DATABASE db2;
+
+CREATE TABLE db1.t1 (a INT, b INT);
+INSERT INTO db1.t1 VALUES (1,1),(2,2),(3,3);
+CREATE TABLE db1.t2 AS SELECT * FROM db1.t1;
+CREATE TABLE db2.t1 AS SELECT * FROM db1.t2;
+CREATE TABLE db2.t2 AS SELECT * FROM db2.t1;
+CREATE TABLE t1 AS SELECT * FROM db2.t2;
+CREATE TABLE t2 AS SELECT * FROM t1;
+
+delimiter |;
+CREATE PROCEDURE count_rows()
+BEGIN
+ SELECT COUNT(*) AS "COUNT(db1.t1)" FROM db1.t1;
+ SELECT COUNT(*) AS "COUNT(db1.t2)" FROM db1.t2;
+ SELECT COUNT(*) AS "COUNT(db2.t1)" FROM db2.t1;
+ SELECT COUNT(*) AS "COUNT(db2.t2)" FROM db2.t2;
+ SELECT COUNT(*) AS "COUNT(test.t1)" FROM test.t1;
+ SELECT COUNT(*) AS "COUNT(test.t2)" FROM test.t2;
+END|
+delimiter ;|
+
+#
+# Testing without a selected database
+#
+
+CREATE DATABASE db3;
+USE db3;
+DROP DATABASE db3;
+--error ER_NO_DB_ERROR
+SELECT * FROM t1;
+
+# Detect missing table references
+
+--error ER_NO_DB_ERROR
+DELETE a1,a2 FROM db1.t1, db2.t2;
+--error ER_NO_DB_ERROR
+DELETE a1,a2 FROM db1.t1, db2.t2;
+--error ER_NO_DB_ERROR
+DELETE a1,a2 FROM db1.t1 AS a1, db2.t2;
+--error ER_NO_DB_ERROR
+DELETE a1,a2 FROM db1.t1, db2.t2 AS a2;
+--error ER_NO_DB_ERROR
+DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
+--error ER_NO_DB_ERROR
+DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
+
+--error ER_NO_DB_ERROR
+DELETE FROM a1,a2 USING db1.t1, db2.t2;
+--error ER_NO_DB_ERROR
+DELETE FROM a1,a2 USING db1.t1, db2.t2;
+--error ER_NO_DB_ERROR
+DELETE FROM a1,a2 USING db1.t1 AS a1, db2.t2;
+--error ER_NO_DB_ERROR
+DELETE FROM a1,a2 USING db1.t1, db2.t2 AS a2;
+--error ER_NO_DB_ERROR
+DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
+--error ER_NO_DB_ERROR
+DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
+
+# Ambiguous table references
+
+--error ER_NO_DB_ERROR
+DELETE a1 FROM db1.t1 AS a1, db2.t2 AS a1;
+--error ER_NO_DB_ERROR
+DELETE a1 FROM db1.a1, db2.t2 AS a1;
+--error ER_NO_DB_ERROR
+DELETE a1 FROM a1, db1.t1 AS a1;
+--error ER_NO_DB_ERROR
+DELETE t1 FROM db1.t1, db2.t1 AS a1;
+--error ER_NO_DB_ERROR
+DELETE t1 FROM db1.t1 AS a1, db2.t1 AS a2;
+--error ER_NO_DB_ERROR
+DELETE t1 FROM db1.t1, db2.t1;
+
+# Test all again, now with a selected database
+
+USE test;
+
+# Detect missing table references
+
+--error ER_UNKNOWN_TABLE
+DELETE a1,a2 FROM db1.t1, db2.t2;
+--error ER_UNKNOWN_TABLE
+DELETE a1,a2 FROM db1.t1, db2.t2;
+--error ER_UNKNOWN_TABLE
+DELETE a1,a2 FROM db1.t1 AS a1, db2.t2;
+--error ER_UNKNOWN_TABLE
+DELETE a1,a2 FROM db1.t1, db2.t2 AS a2;
+--error ER_NO_SUCH_TABLE
+DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
+--error ER_NO_SUCH_TABLE
+DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
+
+--error ER_UNKNOWN_TABLE
+DELETE FROM a1,a2 USING db1.t1, db2.t2;
+--error ER_UNKNOWN_TABLE
+DELETE FROM a1,a2 USING db1.t1, db2.t2;
+--error ER_UNKNOWN_TABLE
+DELETE FROM a1,a2 USING db1.t1 AS a1, db2.t2;
+--error ER_UNKNOWN_TABLE
+DELETE FROM a1,a2 USING db1.t1, db2.t2 AS a2;
+--error ER_NO_SUCH_TABLE
+DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
+--error ER_NO_SUCH_TABLE
+DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
+
+# Ambiguous table references
+
+--error ER_NONUNIQ_TABLE
+DELETE a1 FROM db1.t1 AS a1, db2.t2 AS a1;
+--error ER_NO_SUCH_TABLE
+DELETE a1 FROM db1.a1, db2.t2 AS a1;
+--error ER_NONUNIQ_TABLE
+DELETE a1 FROM a1, db1.t1 AS a1;
+--error ER_UNKNOWN_TABLE
+DELETE t1 FROM db1.t1, db2.t1 AS a1;
+--error ER_UNKNOWN_TABLE
+DELETE t1 FROM db1.t1 AS a1, db2.t1 AS a2;
+--error ER_UNKNOWN_TABLE
+DELETE t1 FROM db1.t1, db2.t1;
+
+# Test multiple-table cross database deletes
+
+DELETE t1 FROM db1.t2 AS t1, db2.t2 AS t2 WHERE t2.a = 1 AND t1.a = t2.a;
+SELECT ROW_COUNT();
+CALL count_rows();
+DELETE a1, a2 FROM db2.t1 AS a1, t2 AS a2 WHERE a1.a = 2 AND a2.a = 2;
+SELECT ROW_COUNT();
+CALL count_rows();
+
+DROP DATABASE db1;
+DROP DATABASE db2;
+DROP PROCEDURE count_rows;
+DROP TABLE t1, t2;
+
--echo #
--echo # Bug#46958: Assertion in Diagnostics_area::set_ok_status, trigger,
--echo # merge table
diff --git a/mysql-test/t/deprecated_features.test b/mysql-test/t/deprecated_features.test
new file mode 100644
index 00000000000..002f4ad1122
--- /dev/null
+++ b/mysql-test/t/deprecated_features.test
@@ -0,0 +1,27 @@
+--error ER_UNKNOWN_SYSTEM_VARIABLE
+set global log_bin_trust_routine_creators=1;
+--error ER_UNKNOWN_SYSTEM_VARIABLE
+set table_type='MyISAM';
+--error ER_UNKNOWN_SYSTEM_VARIABLE
+select @@table_type='MyISAM';
+--error ER_PARSE_ERROR
+backup table t1 to 'data.txt';
+--error ER_PARSE_ERROR
+restore table t1 from 'data.txt';
+--error ER_PARSE_ERROR
+show plugin;
+--error ER_PARSE_ERROR
+load table t1 from master;
+--error ER_PARSE_ERROR
+load data from master;
+--error ER_PARSE_ERROR
+SHOW INNODB STATUS;
+--error ER_PARSE_ERROR
+create table t1 (t6 timestamp(6));
+--error ER_PARSE_ERROR
+create table t1 (t6 timestamp) type=myisam;
+--error ER_PARSE_ERROR
+show table types;
+--error ER_PARSE_ERROR
+show mutex status;
+
diff --git a/mysql-test/t/derived.test b/mysql-test/t/derived.test
index d28c19bbd18..27e85ee237b 100644
--- a/mysql-test/t/derived.test
+++ b/mysql-test/t/derived.test
@@ -158,7 +158,7 @@ UPDATE `t1` AS P1 INNER JOIN (SELECT aaaa FROM `t1` GROUP BY N HAVING Count(M) >
delete P1.* from `t1` AS P1 INNER JOIN (SELECT N FROM `t1` GROUP BY N HAVING Count(M) > 1) AS P2 ON P1.N = P2.N;
select * from t1;
--replace_result P2 p2
---error ER_UNKNOWN_TABLE
+--error ER_NON_UPDATABLE_TABLE
delete P1.*,P2.* from `t1` AS P1 INNER JOIN (SELECT N FROM `t1` GROUP BY N HAVING Count(M) > 1) AS P2 ON P1.N = P2.N;
-- error 1054
delete P1.* from `t1` AS P1 INNER JOIN (SELECT aaa FROM `t1` GROUP BY N HAVING Count(M) > 1) AS P2 ON P1.N = P2.N;
diff --git a/mysql-test/t/dirty_close.test b/mysql-test/t/dirty_close.test
index 1bbd53e8c06..e49618170ab 100644
--- a/mysql-test/t/dirty_close.test
+++ b/mysql-test/t/dirty_close.test
@@ -1,3 +1,4 @@
+--source include/not_embedded.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
@@ -22,6 +23,38 @@ disconnect con2;
# End of 4.1 tests
+#
+# Bug#10374 GET_LOCK does not let connection to close on the server side if it's aborted
+#
+
+connection default;
+SELECT GET_LOCK("dangling", 0);
+connect(con1, localhost, root,,);
+connection con1;
+--send SELECT GET_LOCK('dangling', 3600);
+connection default;
+let $wait_condition=
+ SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE = "User lock"
+ AND INFO = "SELECT GET_LOCK('dangling', 3600)";
+--source include/wait_condition.inc
+dirty_close con1;
+let $wait_condition=
+ SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE = "User lock"
+ AND INFO = "SELECT GET_LOCK('dangling', 3600)";
+--source include/wait_condition.inc
+connect(con1, localhost, root,,);
+--send SELECT GET_LOCK('dangling', 3600);
+connection default;
+let $wait_condition=
+ SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE = "User lock"
+ AND INFO = "SELECT GET_LOCK('dangling', 3600)";
+--source include/wait_condition.inc
+SELECT RELEASE_LOCK('dangling');
+connection con1;
+--reap
+connection default;
+disconnect con1;
+
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def
index 5f37dbe2cb6..97237d5da73 100644
--- a/mysql-test/t/disabled.def
+++ b/mysql-test/t/disabled.def
@@ -10,5 +10,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
-innodb-autoinc-44030 : BUG#47621 2009-01-22 svoj MySQL and InnoDB dicts getting out of sync
+query_cache_28249 : Bug#43861 2009-03-25 main.query_cache_28249 fails sporadicallyr
+innodb-autoinc : Bug#49267 2009-12-02 test fails on windows because of different case mode
+innodb : Bug#49396 2009-12-03 test fails in embedded mode
+plugin_load : Bug#42144 2009-12-21 alik plugin_load fails
diff --git a/mysql-test/t/drop-no_root.test b/mysql-test/t/drop-no_root.test
new file mode 100644
index 00000000000..8fb5b3f74a8
--- /dev/null
+++ b/mysql-test/t/drop-no_root.test
@@ -0,0 +1,85 @@
+# This test uses chmod, can't be run with root permissions
+--source include/not_as_root.inc
+
+###########################################################################
+
+--echo
+--echo # --
+--echo # -- Bug#26704: Failing DROP DATABASE brings mysql-client out of sync.
+--echo # --
+
+--echo
+--disable_warnings
+DROP DATABASE IF EXISTS mysql_test;
+--enable_warnings
+
+--echo
+CREATE DATABASE mysql_test;
+CREATE TABLE mysql_test.t1(c INT);
+
+use mysql_test;
+
+let $MYSQLD_DATADIR= `select @@datadir`;
+
+--echo
+--echo chmod 000 mysql_test/t1.frm
+--chmod 0000 $MYSQLD_DATADIR/mysql_test/t1.frm
+
+# NOTE: For the DROP DATABASE below we need:
+# - disable result log because ER_DB_DROP_RMDIR contains errno, which can be
+# different on different platforms.
+# - expect different error codes, because Windows and UNIX behaves
+# differently (see below).
+#
+# NOTE: Windows and UNIX behaves differently in this test case:
+#
+# - on UNIX when t1.frm is chmoded to 000, it is perfectly deleted
+# by the first DROP DATABASE, but some other files (t1.MYI and t1.MYD) left
+# in the directory. So, we have to explicitly removes them before the
+# second DROP DATABASE.
+#
+# - on Windows when t1.frm is chmoded to 000, it is not deleted by the first
+# DROP DATABASE, but all other files in the database directory are deleted.
+# Thus, we have to change the t1.frm permissions again and delete it
+# explicitly before the second DROP DATABASE.
+#
+# All those differences do not really matter for the idea of this test case:
+# checking that if DROP DATABASE failed, the client is Ok.
+
+--echo
+--disable_result_log
+--error ER_DB_DROP_RMDIR,6
+DROP DATABASE mysql_test;
+--enable_result_log
+
+--echo
+SELECT DATABASE();
+
+# Remove t1.MYI and t1.MYD. On UNIX it should succeed. On Windows, it fails.
+--echo
+--echo rm -f mysql_test/t1.MYD mysql_test/t1.MYI
+--error 0, 1
+--remove_file $MYSQLD_DATADIR/mysql_test/t1.MYD
+--error 0, 1
+--remove_file $MYSQLD_DATADIR/mysql_test/t1.MYI
+
+# Make t1.frm removable: fail on UNIX, succeed on Windows.
+--echo chmod 666 mysql_test/t1.frm
+--error 0, 1
+--chmod 0666 $MYSQLD_DATADIR/mysql_test/t1.frm
+
+# Remove t1.frm: fail on UNIX, succeed on Windows.
+--echo rm -f mysql_test/t1.frm
+--error 0, 1
+--remove_file $MYSQLD_DATADIR/mysql_test/t1.frm
+
+--echo
+DROP DATABASE mysql_test;
+
+--echo
+use test;
+
+--echo
+--echo # -- End of Bug#26704.
+
+###########################################################################
diff --git a/mysql-test/t/drop.test b/mysql-test/t/drop.test
index bb4dd3e11f9..4aeb7165bcb 100644
--- a/mysql-test/t/drop.test
+++ b/mysql-test/t/drop.test
@@ -124,6 +124,39 @@ disconnect addconroot1;
--source include/wait_until_disconnected.inc
connection default;
+#
+# Bug#25858 Some DROP TABLE under LOCK TABLES can cause deadlocks
+#
+
+--disable_warnings
+drop table if exists t1,t2;
+--enable_warnings
+create table t1 (a int);
+create table t2 (a int);
+lock table t1 read;
+--error ER_TABLE_NOT_LOCKED
+drop table t2;
+--error ER_TABLE_NOT_LOCKED_FOR_WRITE
+drop table t1;
+unlock tables;
+drop table t1,t2;
+connect (addconroot, localhost, root,,);
+connection default;
+create table t1 (i int);
+create table t2 (i int);
+lock tables t1 read;
+connection addconroot;
+lock tables t2 read;
+--error ER_TABLE_NOT_LOCKED
+drop table t1;
+connection default;
+--error ER_TABLE_NOT_LOCKED_FOR_WRITE
+drop table t1,t2;
+disconnect addconroot;
+connection default;
+unlock tables;
+drop table t1,t2;
+
--echo End of 5.0 tests
#
@@ -202,3 +235,24 @@ use test;
drop database mysqltestbug26703;
--echo End of 5.1 tests
+
+###########################################################################
+
+--echo
+--echo # --
+--echo # -- Bug#37431 (DROP TABLE does not report errors correctly).
+--echo # --
+
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+
+--error ER_BAD_TABLE_ERROR
+DROP TABLE t1;
+
+SHOW WARNINGS;
+
+--echo
+--echo # --
+--echo # -- End of Bug#37431.
+--echo # --
diff --git a/mysql-test/t/drop_debug.test b/mysql-test/t/drop_debug.test
new file mode 100644
index 00000000000..97ee5847d0a
--- /dev/null
+++ b/mysql-test/t/drop_debug.test
@@ -0,0 +1,35 @@
+#
+# DROP-related tests which execution requires debug server.
+#
+--source include/have_debug.inc
+
+###########################################################################
+--echo
+--echo # --
+--echo # -- Bug#43138: DROP DATABASE failure does not clean up message list.
+--echo # --
+--echo
+
+--disable_warnings
+DROP DATABASE IF EXISTS mysql_test;
+--enable_warnings
+
+--echo
+CREATE DATABASE mysql_test;
+CREATE TABLE mysql_test.t1(a INT);
+
+--echo
+SET SESSION DEBUG = "+d,bug43138";
+
+--echo
+DROP DATABASE mysql_test;
+
+--echo
+SET SESSION DEBUG = "-d,bug43138";
+
+--echo
+--echo # --
+--echo # -- End of Bug#43138.
+--echo # --
+
+###########################################################################
diff --git a/mysql-test/t/errors.test b/mysql-test/t/errors.test
index 89579ec1739..5e53eaf0a52 100644
--- a/mysql-test/t/errors.test
+++ b/mysql-test/t/errors.test
@@ -67,3 +67,76 @@ SHOW ERRORS;
INSERT INTO t1 SELECT b FROM t1;
DROP TABLE t1;
# End of 5.0 tests
+
+flush status;
+--disable_warnings
+drop table if exists t1, t2;
+--enable_warnings
+create table t1 (a int unique);
+create table t2 (a int);
+drop function if exists f1;
+drop function if exists f2;
+
+delimiter |;
+
+create function f1() returns int
+begin
+ insert into t1 (a) values (1);
+ insert into t1 (a) values (1);
+ return 1;
+end|
+create function f2() returns int
+begin
+ insert into t2 (a) values (1);
+ return 2;
+end|
+delimiter ;|
+
+flush status;
+--error 1062
+select f1(), f2();
+show status like 'Com_insert';
+select * from t1;
+select * from t2;
+drop table t1;
+drop table t2;
+drop function f1;
+drop function f2;
+
+#
+# testing the value encoding in the error messages
+#
+# should be TR\xC3\x9CE, TRÜE, TRÜE
+#
+SET NAMES utf8;
+--error ER_WRONG_VALUE_FOR_VAR
+SET sql_quote_show_create= _binary x'5452C39C45';
+--error ER_WRONG_VALUE_FOR_VAR
+SET sql_quote_show_create= _utf8 x'5452C39C45';
+--error ER_WRONG_VALUE_FOR_VAR
+SET sql_quote_show_create=_latin1 x'5452DC45';
+--error ER_WRONG_VALUE_FOR_VAR
+SET sql_quote_show_create='TRÜE';
+--error ER_WRONG_VALUE_FOR_VAR
+SET sql_quote_show_create=TRÜE;
+
+SET NAMES latin1;
+--error ER_WRONG_VALUE_FOR_VAR
+SET sql_quote_show_create= _binary x'5452C39C45';
+--error ER_WRONG_VALUE_FOR_VAR
+SET sql_quote_show_create= _utf8 x'5452C39C45';
+--error ER_WRONG_VALUE_FOR_VAR
+SET sql_quote_show_create=_latin1 x'5452DC45';
+--error ER_WRONG_VALUE_FOR_VAR
+SET sql_quote_show_create='TRÜE';
+--error ER_WRONG_VALUE_FOR_VAR
+SET sql_quote_show_create=TRÜE;
+
+SET NAMES binary;
+--error ER_WRONG_VALUE_FOR_VAR
+SET sql_quote_show_create= _binary x'5452C39C45';
+--error ER_WRONG_VALUE_FOR_VAR
+SET sql_quote_show_create= _utf8 x'5452C39C45';
+--error ER_WRONG_VALUE_FOR_VAR
+SET sql_quote_show_create=_latin1 x'5452DC45';
+
diff --git a/mysql-test/t/events_2.test b/mysql-test/t/events_2.test
index a50255e9f8b..08412d2f5b0 100644
--- a/mysql-test/t/events_2.test
+++ b/mysql-test/t/events_2.test
@@ -25,15 +25,6 @@ set names utf8;
create event задачка on schedule every 123 minute starts now() ends now() + interval 1 month do select 1;
drop event задачка;
-# event_scheduler is a global var
---error ER_GLOBAL_VARIABLE
-set event_scheduler=off;
-# event_scheduler could be only either 1 or 2
---error ER_WRONG_VALUE_FOR_VAR
-set global event_scheduler=3;
---error ER_WRONG_VALUE_FOR_VAR
-set global event_scheduler=disabled;
-
--echo "DISABLE the scheduler. Testing that it does not work when the variable is 0"
set global event_scheduler=off;
select definer, name, db from mysql.event;
diff --git a/mysql-test/t/events_bugs.test b/mysql-test/t/events_bugs.test
index 81397b333f9..8d9959f1b0a 100644
--- a/mysql-test/t/events_bugs.test
+++ b/mysql-test/t/events_bugs.test
@@ -1199,14 +1199,14 @@ DROP USER mysqltest_u1@localhost;
drop procedure if exists p;
--enable_warnings
set @old_mode= @@sql_mode;
-set @@sql_mode= pow(2,32)-1;
+set @@sql_mode= cast(pow(2,32)-1 as unsigned integer);
create event e1 on schedule every 1 day do select 1;
-select @@sql_mode;
+select @@sql_mode into @full_mode;
set @@sql_mode= @old_mode;
# Rename SQL modes that differ in name between the server and the table definition.
-select replace(@full_mode, '?', 'NOT_USED') into @full_mode;
+select replace(@full_mode, ',,,', ',NOT_USED,') into @full_mode;
select replace(@full_mode, 'ALLOW_INVALID_DATES', 'INVALID_DATES') into @full_mode;
-select name from mysql.event where name = 'p' and sql_mode = @full_mode;
+select name from mysql.event where name = 'e1' and sql_mode = @full_mode;
drop event e1;
#
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/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 77b49a8b1a5..7e2a9bdc811 100644
--- a/mysql-test/t/explain.test
+++ b/mysql-test/t/explain.test
@@ -187,4 +187,16 @@ SET SESSION sql_mode=@old_sql_mode;
DROP TABLE t1;
+--echo #
+--echo # Bug#30302: Tables that were optimized away are printed in the
+--echo # EXPLAIN EXTENDED warning.
+--echo #
+create table t1(f1 int);
+create table t2(f2 int);
+insert into t1 values(1);
+insert into t2 values(1),(2);
+explain extended select * from t1 where f1=1;
+explain extended select * from t1 join t2 on f1=f2 where f1=1;
+drop table t1,t2;
+
--echo End of 5.1 tests.
diff --git a/mysql-test/t/fulltext.test b/mysql-test/t/fulltext.test
index 3853a224fd5..61fa28954cf 100644
--- a/mysql-test/t/fulltext.test
+++ b/mysql-test/t/fulltext.test
@@ -420,6 +420,15 @@ DROP TABLE t1;
# End of 4.1 tests
#
+# bug#34374 - mysql generates incorrect warning
+#
+create table t1(a text,b date,fulltext index(a))engine=myisam;
+insert into t1 set a='water',b='2008-08-04';
+select 1 from t1 where match(a) against ('water' in boolean mode) and b>='2008-08-01';
+drop table t1;
+show warnings;
+
+#
# BUG#38842 - Fix for 25951 seems incorrect
#
CREATE TABLE t1 (a VARCHAR(255), b INT, FULLTEXT(a), KEY(b));
diff --git a/mysql-test/t/func_gconcat.test b/mysql-test/t/func_gconcat.test
index e92f3e96303..71d3d5a140b 100644
--- a/mysql-test/t/func_gconcat.test
+++ b/mysql-test/t/func_gconcat.test
@@ -694,3 +694,35 @@ SELECT 1 FROM t1 WHERE t1.a NOT IN
DROP TABLE t1, t2;
--echo End of 5.0 tests
+
+#
+# Bug#36785: Wrong error message when group_concat() exceeds max length
+#
+
+--disable_warnings
+DROP TABLE IF EXISTS t1, t2;
+--enable_warnings
+
+CREATE TABLE t1 (a VARCHAR(6), b INT);
+CREATE TABLE t2 (a VARCHAR(6), b INT);
+
+INSERT INTO t1 VALUES ('111111', 1);
+INSERT INTO t1 VALUES ('222222', 2);
+INSERT INTO t1 VALUES ('333333', 3);
+INSERT INTO t1 VALUES ('444444', 4);
+INSERT INTO t1 VALUES ('555555', 5);
+
+SET group_concat_max_len = 5;
+SET @old_sql_mode = @@sql_mode, @@sql_mode = 'traditional';
+
+SELECT GROUP_CONCAT(a), b FROM t1 GROUP BY b LIMIT 3;
+--error ER_CUT_VALUE_GROUP_CONCAT
+INSERT INTO t2 SELECT GROUP_CONCAT(a), b FROM t1 GROUP BY b;
+UPDATE t1 SET a = '11111' WHERE b = 1;
+UPDATE t1 SET a = '22222' WHERE b = 2;
+--error ER_CUT_VALUE_GROUP_CONCAT
+INSERT INTO t2 SELECT GROUP_CONCAT(a), b FROM t1 GROUP BY b;
+
+SET group_concat_max_len = DEFAULT;
+SET @@sql_mode = @old_sql_mode;
+DROP TABLE t1, t2;
diff --git a/mysql-test/t/func_isnull.test b/mysql-test/t/func_isnull.test
index 6218efb882f..424f6dc6640 100644
--- a/mysql-test/t/func_isnull.test
+++ b/mysql-test/t/func_isnull.test
@@ -13,3 +13,15 @@ select * from t1 where isnull(to_days(mydate));
drop table t1;
# End of 4.1 tests
+
+#
+# Bug #41371 Select returns 1 row with condition "col is not null and col is null"
+#
+
+CREATE TABLE t1 (id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY(id));
+INSERT INTO t1( id ) VALUES ( NULL );
+SELECT t1.id FROM t1 WHERE (id is not null and id is null );
+DROP TABLE t1;
+
+# End of 5.1 tests
+
diff --git a/mysql-test/t/func_math.test b/mysql-test/t/func_math.test
index 91fdce8addb..b999b1e8c1b 100644
--- a/mysql-test/t/func_math.test
+++ b/mysql-test/t/func_math.test
@@ -309,4 +309,15 @@ DROP TABLE t1;
--echo #
+#
+# Bug #8457: Precision math:
+# DIV returns incorrect result with large decimal value
+# Bug #46606:Casting error for large numbers in 5.4 when 'div' is used
+
+--error ER_WARN_DATA_OUT_OF_RANGE
+select 123456789012345678901234567890.123456789012345678901234567890 div 1 as x;
+--error ER_WARN_DATA_OUT_OF_RANGE
+select "123456789012345678901234567890.123456789012345678901234567890" div 1 as x;
+SHOW WARNINGS;
+
--echo End of 5.1 tests
diff --git a/mysql-test/t/func_sapdb.test b/mysql-test/t/func_sapdb.test
index 1292c475732..89eae5955aa 100644
--- a/mysql-test/t/func_sapdb.test
+++ b/mysql-test/t/func_sapdb.test
@@ -169,4 +169,26 @@ SELECT TIMEDIFF(TIME('17:00:00'),TIME('17:00:00'))=TIME('00:00:00') AS 1Eq,
TIMEDIFF(TIME('17:59:00'),TIME('17:00:00')),
TIMEDIFF(TIME('17:00:00'),TIME('17:59:00'));
+#
+# Bug#42661 - sec_to_time() and signedness
+#
+
+SELECT sec_to_time(3020399)=TIME('838:59:59');
+SELECT sec_to_time(-3020399)=TIME('-838:59:59');
+SELECT sec_to_time(-3020399)='-838:59:59';
+SELECT time(sec_to_time(-3020399))=TIME('-838:59:59');
+SELECT time(sec_to_time(-3020399))=TIME('-838:59:58');
+
+#
+# Bug#42662 - maketime() and signedness
+#
+
+# TIME(...) and CAST(... AS TIME) go through the same code-path here,
+# but we'll explicitly show show that both work in case the ever changes.
+SELECT maketime(-1,0,1)='-01:00:01';
+SELECT TIME(maketime(-1,0,1))=CAST('-01:00:01' AS TIME);
+SELECT maketime(-1,0,1)=CAST('-01:00:01' AS TIME);
+SELECT maketime(1,0,1)=CAST('01:00:01' AS TIME);
+SELECT maketime(1,0,1)=CAST('01:00:02' AS TIME);
+
# End of 5.0 tests
diff --git a/mysql-test/t/func_str.test b/mysql-test/t/func_str.test
index 8942b0a2faf..a570e70d81d 100644
--- a/mysql-test/t/func_str.test
+++ b/mysql-test/t/func_str.test
@@ -1319,6 +1319,7 @@ explain select 1 as a from t1,(select decode(f1,f1) as b from t1) a;
explain select 1 as a from t1,(select encode(f1,f1) as b from t1) a;
drop table t1;
+
--echo #
--echo # Bug#49141: Encode function is significantly slower in 5.1 compared to 5.0
--echo #
@@ -1352,3 +1353,43 @@ SELECT DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP
FROM t2 WHERE t2.b = 1 GROUP BY t2.b;
DROP TABLE t1, t2;
+
+--echo Start of 5.4 tests
+#
+# WL#4584 Internationalized number format
+#
+SELECT format(12345678901234567890.123, 3);
+SELECT format(12345678901234567890.123, 3, NULL);
+SELECT format(12345678901234567890.123, 3, 'ar_AE');
+SELECT format(12345678901234567890.123, 3, 'ar_SA');
+SELECT format(12345678901234567890.123, 3, 'be_BY');
+SELECT format(12345678901234567890.123, 3, 'de_DE');
+SELECT format(12345678901234567890.123, 3, 'en_IN');
+SELECT format(12345678901234567890.123, 3, 'en_US');
+SELECT format(12345678901234567890.123, 3, 'it_CH');
+SELECT format(12345678901234567890.123, 3, 'ru_RU');
+SELECT format(12345678901234567890.123, 3, 'ta_IN');
+
+CREATE TABLE t1 (fmt CHAR(5) NOT NULL);
+INSERT INTO t1 VALUES ('ar_AE');
+INSERT INTO t1 VALUES ('ar_SA');
+INSERT INTO t1 VALUES ('be_BY');
+INSERT INTO t1 VALUES ('de_DE');
+INSERT INTO t1 VALUES ('en_IN');
+INSERT INTO t1 VALUES ('en_US');
+INSERT INTO t1 VALUES ('it_CH');
+INSERT INTO t1 VALUES ('ru_RU');
+INSERT INTO t1 VALUES ('ta_IN');
+SELECT fmt, format(12345678901234567890.123, 3, fmt) FROM t1 ORDER BY fmt;
+SELECT fmt, format(12345678901234567890.123, 0, fmt) FROM t1 ORDER BY fmt;
+SELECT fmt, format(12345678901234567890, 3, fmt) FROM t1 ORDER BY fmt;
+SELECT fmt, format(-12345678901234567890, 3, fmt) FROM t1 ORDER BY fmt;
+SELECT fmt, format(-02345678901234567890, 3, fmt) FROM t1 ORDER BY fmt;
+SELECT fmt, format(-00345678901234567890, 3, fmt) FROM t1 ORDER BY fmt;
+SELECT fmt, format(-00045678901234567890, 3, fmt) FROM t1 ORDER BY fmt;
+DROP TABLE t1;
+
+SELECT format(123, 1, 'Non-existent-locale');
+
+--echo End of 5.4 tests
+
diff --git a/mysql-test/t/func_time.test b/mysql-test/t/func_time.test
index b9da946a55f..95b8a8ec38d 100644
--- a/mysql-test/t/func_time.test
+++ b/mysql-test/t/func_time.test
@@ -819,6 +819,16 @@ SELECT '2008-02-18' + INTERVAL 1 FRAC_SECOND;
--error ER_PARSE_ERROR
SELECT '2008-02-18' - INTERVAL 1 FRAC_SECOND;
+#
+# Bug #36466:
+# Adding days to day_microsecond changes interpretation of microseconds
+#
+
+# show that we treat fractions of seconds correctly (zerofill from right to
+# six places) even if we left out fields on the left.
+select date_add('1000-01-01 00:00:00', interval '1.03:02:01.05' day_microsecond);
+select date_add('1000-01-01 00:00:00', interval '1.02' day_microsecond);
+
--echo End of 5.0 tests
#
diff --git a/mysql-test/t/gis.test b/mysql-test/t/gis.test
index bc0695aaa93..70d73234ea8 100644
--- a/mysql-test/t/gis.test
+++ b/mysql-test/t/gis.test
@@ -353,6 +353,9 @@ insert into t1 values ('85984',GeomFromText('MULTIPOLYGON(((-115.006363
36.248666,-115.263639 36.247466,-115.263839 36.252766,-115.261439
36.252666,-115.261439 36.247366,-115.247239 36.247066)))'));
+# Expected result is 115.31877315203187, but IA64 returns 115.31877315203188
+# due to fused multiply-add instructions.
+--replace_result 115.31877315203188 115.31877315203187
select object_id, geometrytype(geo), ISSIMPLE(GEO), ASTEXT(centroid(geo)) from
t1 where object_id=85998;
diff --git a/mysql-test/t/grant.test b/mysql-test/t/grant.test
index bcd393bd6ab..bda48fb9ecf 100644
--- a/mysql-test/t/grant.test
+++ b/mysql-test/t/grant.test
@@ -1525,5 +1525,357 @@ DROP USER 'user1'@'localhost';
DROP USER 'user2';
DROP DATABASE db1;
+
+--echo #
+--echo # Bug #25863 No database selected error, but documentation
+--echo # says * for global allowed
+--echo #
+
+connect(conn1,localhost,root,,*NO-ONE*);
+
+--error ER_NO_DB_ERROR
+GRANT ALL ON * TO mysqltest_1;
+
+GRANT ALL ON *.* TO mysqltest_1;
+SHOW GRANTS FOR mysqltest_1;
+DROP USER mysqltest_1;
+
+USE test;
+
+GRANT ALL ON * TO mysqltest_1;
+SHOW GRANTS FOR mysqltest_1;
+DROP USER mysqltest_1;
+
+GRANT ALL ON *.* TO mysqltest_1;
+SHOW GRANTS FOR mysqltest_1;
+DROP USER mysqltest_1;
+
+connection default;
+disconnect conn1;
+
+
# Wait till we reached the initial number of concurrent sessions
--source include/wait_until_count_sessions.inc
+
+--echo #########################################################################
+--echo #
+--echo # Bug#38347: ALTER ROUTINE privilege allows SHOW CREATE TABLE.
+--echo #
+--echo #########################################################################
+
+--echo
+--echo # --
+--echo # -- Prepare the environment.
+--echo # --
+
+DELETE FROM mysql.user WHERE User LIKE 'mysqltest_%';
+DELETE FROM mysql.db WHERE User LIKE 'mysqltest_%';
+DELETE FROM mysql.tables_priv WHERE User LIKE 'mysqltest_%';
+DELETE FROM mysql.columns_priv WHERE User LIKE 'mysqltest_%';
+FLUSH PRIVILEGES;
+
+--disable_warnings
+DROP DATABASE IF EXISTS mysqltest_db1;
+--enable_warnings
+
+CREATE DATABASE mysqltest_db1;
+
+CREATE TABLE mysqltest_db1.t1(a INT);
+
+--echo
+--echo # --
+--echo # -- Check that global privileges don't allow SHOW CREATE TABLE.
+--echo # --
+
+GRANT EVENT ON mysqltest_db1.* TO mysqltest_u1@localhost;
+GRANT CREATE TEMPORARY TABLES ON mysqltest_db1.* TO mysqltest_u1@localhost;
+GRANT LOCK TABLES ON mysqltest_db1.* TO mysqltest_u1@localhost;
+GRANT ALTER ROUTINE ON mysqltest_db1.* TO mysqltest_u1@localhost;
+GRANT CREATE ROUTINE ON mysqltest_db1.* TO mysqltest_u1@localhost;
+GRANT EXECUTE ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+GRANT FILE ON *.* TO mysqltest_u1@localhost;
+GRANT CREATE USER ON *.* TO mysqltest_u1@localhost;
+GRANT PROCESS ON *.* TO mysqltest_u1@localhost;
+GRANT RELOAD ON *.* TO mysqltest_u1@localhost;
+GRANT REPLICATION CLIENT ON *.* TO mysqltest_u1@localhost;
+GRANT REPLICATION SLAVE ON *.* TO mysqltest_u1@localhost;
+GRANT SHOW DATABASES ON *.* TO mysqltest_u1@localhost;
+GRANT SHUTDOWN ON *.* TO mysqltest_u1@localhost;
+GRANT USAGE ON *.* TO mysqltest_u1@localhost;
+
+--echo
+SHOW GRANTS FOR mysqltest_u1@localhost;
+
+--echo
+--echo # connection: con1 (mysqltest_u1@mysqltest_db1)
+--connect (con1,localhost,mysqltest_u1,,mysqltest_db1)
+--connection con1
+
+--echo
+--error ER_TABLEACCESS_DENIED_ERROR
+SHOW CREATE TABLE t1;
+
+--echo
+--echo # connection: default
+--connection default
+
+--disconnect con1
+
+--echo
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
+SHOW GRANTS FOR mysqltest_u1@localhost;
+
+--echo
+--echo # --
+--echo # -- Check that global SELECT allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT SELECT ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that global INSERT allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT INSERT ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that global UPDATE allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT UPDATE ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that global DELETE allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT DELETE ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that global CREATE allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT CREATE ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that global DROP allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT DROP ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that global ALTER allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT ALTER ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that global INDEX allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT INDEX ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that global REFERENCES allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT REFERENCES ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that global GRANT OPTION allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT GRANT OPTION ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that global CREATE VIEW allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT CREATE VIEW ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that global SHOW VIEW allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT SHOW VIEW ON mysqltest_db1.* TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that table-level SELECT allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT SELECT ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that table-level INSERT allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT INSERT ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that table-level UPDATE allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT UPDATE ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that table-level DELETE allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT DELETE ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that table-level CREATE allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT CREATE ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that table-level DROP allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT DROP ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that table-level ALTER allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT ALTER ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that table-level INDEX allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT INDEX ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that table-level REFERENCES allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT REFERENCES ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that table-level GRANT OPTION allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT GRANT OPTION ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that table-level CREATE VIEW allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT CREATE VIEW ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Check that table-level SHOW VIEW allows SHOW CREATE TABLE.
+--echo # --
+
+--echo
+GRANT SHOW VIEW ON mysqltest_db1.t1 TO mysqltest_u1@localhost;
+
+--source include/bug38347.inc
+
+--echo
+--echo # --
+--echo # -- Cleanup.
+--echo # --
+
+--echo
+DROP DATABASE mysqltest_db1;
+
+DROP USER mysqltest_u1@localhost;
+
+--echo
+--echo # End of Bug#38347.
+--echo
diff --git a/mysql-test/t/grant4.test b/mysql-test/t/grant4.test
new file mode 100644
index 00000000000..f3e551cd623
--- /dev/null
+++ b/mysql-test/t/grant4.test
@@ -0,0 +1,146 @@
+--source include/not_embedded.inc
+
+# Setup database, tables and user accounts
+--disable_warnings
+drop database if exists mysqltest_db1;
+--enable_warnings
+create database mysqltest_db1;
+use mysqltest_db1;
+create table t_column_priv_only (a int, b int);
+create table t_select_priv like t_column_priv_only;
+create table t_no_priv like t_column_priv_only;
+grant all privileges on test.* to mysqltest_u1@localhost;
+grant insert (a) on mysqltest_db1.t_column_priv_only to mysqltest_u1@localhost;
+grant select on mysqltest_db1.t_select_priv to mysqltest_u1@localhost;
+
+--echo ** Connect as restricted user mysqltest_u1.
+--echo
+connect (con1,localhost,mysqltest_u1,,);
+connection con1;
+
+########################################################################
+--echo ** Test column level privileges only. No SELECT privileges on the table.
+--echo ** INSERT INTO ... VALUES ...
+--echo ** Attempting to insert values to a table with only column privileges
+--echo ** should work.
+insert into mysqltest_db1.t_column_priv_only (a) VALUES (1);
+--echo
+
+#########################################################################
+--echo ** SHOW COLUMNS
+--echo ** Should succeed because we have privileges (any) on at least one of the columns.
+select column_name as 'Field',column_type as 'Type',is_nullable as 'Null',column_key as 'Key',column_default as 'Default',extra as 'Extra' from information_schema.columns where table_schema='mysqltest_db1' and table_name='t_column_priv_only';
+show columns from mysqltest_db1.t_column_priv_only;
+#########################################################################
+--echo ** SHOW COLUMNS
+--echo ** Should fail because there are no privileges on any column combination.
+--error 1142
+show columns from mysqltest_db1.t_no_priv;
+--echo ** However, select from I_S.COLUMNS will succeed but not show anything:
+select column_name as 'Field',column_type as 'Type',is_nullable as 'Null',column_key as 'Key',column_default as 'Default',extra as 'Extra' from information_schema.columns where table_schema='mysqltest_db1' and table_name='t_no_priv';
+--echo
+#########################################################################
+--echo ** CREATE TABLE ... LIKE ... require SELECT privleges and will fail.
+--error 1142
+create table test.t_no_priv like mysqltest_db1.column_priv_only;
+--echo
+#########################################################################
+--echo ** Just to be sure... SELECT also fails.
+--error 1142
+select * from mysqltest_db1.t_column_priv_only;
+--echo
+#########################################################################
+--echo ** SHOW CREATE TABLE ... require any privileges on all columns (the entire table).
+--echo ** First we try and fail on a table with only one column privilege.
+--error 1142
+show create table mysqltest_db1.t_column_priv_only;
+--echo
+#########################################################################
+--echo ** Now we do the same on a table with SELECT privileges.
+--echo
+#########################################################################
+--echo ** SHOW COLUMNS
+--echo ** Success because we got some privileges on the table (SELECT_ACL)
+show columns from mysqltest_db1.t_select_priv;
+--echo
+#########################################################################
+--echo ** CREATE TABLE ... LIKE ... require SELECT privleges and will SUCCEED.
+--disable_warnings
+drop table if exists test.t_duplicated;
+--enable_warnings
+create table test.t_duplicated like mysqltest_db1.t_select_priv;
+drop table test.t_duplicated;
+--echo
+#########################################################################
+--echo ** SHOW CREATE TABLE will succeed because we have a privilege on all columns in the table (table-level privilege).
+show create table mysqltest_db1.t_select_priv;
+--echo
+#########################################################################
+--echo ** SHOW CREATE TABLE will fail if there is no grants at all:
+--error 1142
+show create table mysqltest_db1.t_no_priv;
+--echo
+
+connection default;
+
+#
+# SHOW INDEX
+#
+use mysqltest_db1;
+CREATE TABLE t5 (s1 INT);
+CREATE INDEX i ON t5 (s1);
+CREATE TABLE t6 (s1 INT, s2 INT);
+CREATE VIEW v5 AS SELECT * FROM t5;
+CREATE VIEW v6 AS SELECT * FROM t6;
+CREATE VIEW v2 AS SELECT * FROM t_select_priv;
+CREATE VIEW v3 AS SELECT * FROM t_select_priv;
+CREATE INDEX i ON t6 (s1);
+GRANT UPDATE (s2) ON t6 to mysqltest_u1@localhost;
+GRANT UPDATE (s2) ON v6 to mysqltest_u1@localhost;
+GRANT SHOW VIEW ON v2 to mysqltest_u1@localhost;
+GRANT SHOW VIEW, SELECT ON v3 to mysqltest_u1@localhost;
+
+connection con1;
+use mysqltest_db1;
+--echo ** Connect as restricted user mysqltest_u1.
+--echo ** SELECT FROM INFORMATION_SCHEMA.STATISTICS will succeed because any privileges will do (authentication is enough).
+#
+# this result is wrong. reported as bug#34104
+#
+SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE table_name='t5';
+#
+# Bug27145 EXTRA_ACL trouble
+#
+--echo ** SHOW INDEX FROM t5 will fail because we don't have any privileges on any column combination.
+--error 1142
+SHOW INDEX FROM t5;
+--echo ** SHOW INDEX FROM t6 will succeed because there exist a privilege on a column combination on t6.
+SHOW INDEX FROM t6;
+
+# CHECK TABLE
+--echo ** CHECK TABLE requires any privilege on any column combination and should succeed for t6:
+CHECK TABLE t6;
+--echo ** With no privileges access is naturally denied:
+--error 1142
+CHECK TABLE t5;
+
+# CHECKSUM
+--echo ** CHECKSUM TABLE requires SELECT privileges on the table. The following should fail:
+--error 1142
+CHECKSUM TABLE t6;
+--echo ** And this should work:
+CHECKSUM TABLE t_select_priv;
+
+# SHOW CREATE VIEW
+--error 1142
+SHOW CREATE VIEW v5;
+--error 1142
+SHOW CREATE VIEW v6;
+--error 1142
+SHOW CREATE VIEW v2;
+SHOW CREATE VIEW v3;
+
+connection default;
+disconnect con1;
+drop database mysqltest_db1;
+drop user mysqltest_u1@localhost;
diff --git a/mysql-test/t/group_by.test b/mysql-test/t/group_by.test
index 5b96213034a..7ed8dfe5784 100644
--- a/mysql-test/t/group_by.test
+++ b/mysql-test/t/group_by.test
@@ -120,8 +120,9 @@ SELECT cid, CONCAT(firstname, ' ', surname), COUNT(call_id) FROM t1 LEFT JOIN t2
SELECT cid, CONCAT(firstname, ' ', surname), COUNT(call_id) FROM t1 LEFT JOIN t2 ON cid=contact_id WHERE firstname like '%foo%' GROUP BY cid ORDER BY NULL;
SELECT HIGH_PRIORITY cid, CONCAT(firstname, ' ', surname), COUNT(call_id) FROM t1 LEFT JOIN t2 ON cid=contact_id WHERE firstname like '%foo%' GROUP BY cid ORDER BY surname, firstname;
-drop table t1,t2;
+drop table t2;
unlock tables;
+drop table t1;
#
# Test of group by bug in bugzilla
diff --git a/mysql-test/t/group_min_max.test b/mysql-test/t/group_min_max.test
index f623df372fa..0e6fef9b855 100644
--- a/mysql-test/t/group_min_max.test
+++ b/mysql-test/t/group_min_max.test
@@ -570,13 +570,13 @@ explain select count(distinct a1,a2,b) from t1 where (a2 >= 'b') and (b = 'a');
explain select count(distinct a1,a2,b,c) from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
explain extended select count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c');
explain select count(distinct b) from t1 where (a2 >= 'b') and (b = 'a');
-explain extended select ord(a1) + count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a');
+explain extended select 98 + count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a');
select count(distinct a1,a2,b) from t1 where (a2 >= 'b') and (b = 'a');
select count(distinct a1,a2,b,c) from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
select count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c');
select count(distinct b) from t1 where (a2 >= 'b') and (b = 'a');
-select ord(a1) + count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a');
+select 98 + count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a');
#
# Queries with expressions in the select clause
@@ -1045,3 +1045,124 @@ SELECT a, MAX(b) FROM t WHERE b GROUP BY a;
DROP TABLE t;
--echo End of 5.1 tests
+
+
+--echo #
+--echo # WL#3220 (Loose index scan for COUNT DISTINCT)
+--echo #
+
+CREATE TABLE t1 (a INT, b INT, c INT, KEY (a,b));
+INSERT INTO t1 VALUES (1,1,1), (1,2,1), (1,3,1), (1,4,1);
+INSERT INTO t1 SELECT a, b + 4, 1 FROM t1;
+INSERT INTO t1 SELECT a + 1, b, 1 FROM t1;
+CREATE TABLE t2 (a INT, b INT, c INT, d INT, e INT, f INT, KEY (a,b,c));
+INSERT INTO t2 VALUES (1,1,1,1,1,1), (1,2,1,1,1,1), (1,3,1,1,1,1),
+ (1,4,1,1,1,1);
+INSERT INTO t2 SELECT a, b + 4, c,d,e,f FROM t2;
+INSERT INTO t2 SELECT a + 1, b, c,d,e,f FROM t2;
+
+EXPLAIN SELECT COUNT(DISTINCT a) FROM t1;
+SELECT COUNT(DISTINCT a) FROM t1;
+
+EXPLAIN SELECT COUNT(DISTINCT a,b) FROM t1;
+SELECT COUNT(DISTINCT a,b) FROM t1;
+
+EXPLAIN SELECT COUNT(DISTINCT b,a) FROM t1;
+SELECT COUNT(DISTINCT b,a) FROM t1;
+
+EXPLAIN SELECT COUNT(DISTINCT b) FROM t1;
+SELECT COUNT(DISTINCT b) FROM t1;
+
+EXPLAIN SELECT COUNT(DISTINCT a) FROM t1 GROUP BY a;
+SELECT COUNT(DISTINCT a) FROM t1 GROUP BY a;
+
+EXPLAIN SELECT COUNT(DISTINCT b) FROM t1 GROUP BY a;
+SELECT COUNT(DISTINCT b) FROM t1 GROUP BY a;
+
+EXPLAIN SELECT COUNT(DISTINCT a) FROM t1 GROUP BY b;
+SELECT COUNT(DISTINCT a) FROM t1 GROUP BY b;
+
+EXPLAIN SELECT DISTINCT COUNT(DISTINCT a) FROM t1;
+SELECT DISTINCT COUNT(DISTINCT a) FROM t1;
+
+EXPLAIN SELECT COUNT(DISTINCT a, b + 0) FROM t1;
+SELECT COUNT(DISTINCT a, b + 0) FROM t1;
+
+EXPLAIN SELECT COUNT(DISTINCT a) FROM t1 HAVING COUNT(DISTINCT b) < 10;
+SELECT COUNT(DISTINCT a) FROM t1 HAVING COUNT(DISTINCT b) < 10;
+
+EXPLAIN SELECT COUNT(DISTINCT a) FROM t1 HAVING COUNT(DISTINCT c) < 10;
+SELECT COUNT(DISTINCT a) FROM t1 HAVING COUNT(DISTINCT c) < 10;
+
+EXPLAIN SELECT 1 FROM t1 HAVING COUNT(DISTINCT a) < 10;
+SELECT 1 FROM t1 HAVING COUNT(DISTINCT a) < 10;
+
+EXPLAIN SELECT 1 FROM t1 GROUP BY a HAVING COUNT(DISTINCT b) > 1;
+SELECT 1 FROM t1 GROUP BY a HAVING COUNT(DISTINCT b) > 1;
+
+EXPLAIN SELECT COUNT(DISTINCT t1_1.a) FROM t1 t1_1, t1 t1_2 GROUP BY t1_1.a;
+SELECT COUNT(DISTINCT t1_1.a) FROM t1 t1_1, t1 t1_2 GROUP BY t1_1.a;
+
+EXPLAIN SELECT COUNT(DISTINCT a), 12 FROM t1;
+SELECT COUNT(DISTINCT a), 12 FROM t1;
+
+EXPLAIN SELECT COUNT(DISTINCT a, b, c) FROM t2;
+SELECT COUNT(DISTINCT a, b, c) FROM t2;
+
+EXPLAIN SELECT COUNT(DISTINCT a), SUM(DISTINCT a), AVG(DISTINCT a) FROM t2;
+SELECT COUNT(DISTINCT a), SUM(DISTINCT a), AVG(DISTINCT a) FROM t2;
+
+EXPLAIN SELECT COUNT(DISTINCT a), SUM(DISTINCT a), AVG(DISTINCT f) FROM t2;
+SELECT COUNT(DISTINCT a), SUM(DISTINCT a), AVG(DISTINCT f) FROM t2;
+
+EXPLAIN SELECT COUNT(DISTINCT a, b), COUNT(DISTINCT b, a) FROM t2;
+SELECT COUNT(DISTINCT a, b), COUNT(DISTINCT b, a) FROM t2;
+
+EXPLAIN SELECT COUNT(DISTINCT a, b), COUNT(DISTINCT b, f) FROM t2;
+SELECT COUNT(DISTINCT a, b), COUNT(DISTINCT b, f) FROM t2;
+
+EXPLAIN SELECT COUNT(DISTINCT a, b), COUNT(DISTINCT b, d) FROM t2;
+SELECT COUNT(DISTINCT a, b), COUNT(DISTINCT b, d) FROM t2;
+
+EXPLAIN SELECT a, c, COUNT(DISTINCT c, a, b) FROM t2 GROUP BY a, b, c;
+SELECT a, c, COUNT(DISTINCT c, a, b) FROM t2 GROUP BY a, b, c;
+
+EXPLAIN SELECT COUNT(DISTINCT c, a, b) FROM t2
+ WHERE a > 5 AND b BETWEEN 10 AND 20 GROUP BY a, b, c;
+SELECT COUNT(DISTINCT c, a, b) FROM t2
+ WHERE a > 5 AND b BETWEEN 10 AND 20 GROUP BY a, b, c;
+
+EXPLAIN SELECT COUNT(DISTINCT b), SUM(DISTINCT b) FROM t2 WHERE a = 5
+ GROUP BY b;
+SELECT COUNT(DISTINCT b), SUM(DISTINCT b) FROM t2 WHERE a = 5
+ GROUP BY b;
+
+EXPLAIN SELECT a, COUNT(DISTINCT b), SUM(DISTINCT b) FROM t2 GROUP BY a;
+SELECT a, COUNT(DISTINCT b), SUM(DISTINCT b) FROM t2 GROUP BY a;
+
+EXPLAIN SELECT COUNT(DISTINCT b), SUM(DISTINCT b) FROM t2 GROUP BY a;
+SELECT COUNT(DISTINCT b), SUM(DISTINCT b) FROM t2 GROUP BY a;
+
+EXPLAIN SELECT COUNT(DISTINCT a, b) FROM t2 WHERE c = 13 AND d = 42;
+SELECT COUNT(DISTINCT a, b) FROM t2 WHERE c = 13 AND d = 42;
+
+EXPLAIN SELECT a, COUNT(DISTINCT a), SUM(DISTINCT a) FROM t2
+ WHERE b = 13 AND c = 42 GROUP BY a;
+SELECT a, COUNT(DISTINCT a), SUM(DISTINCT a) FROM t2
+ WHERE b = 13 AND c = 42 GROUP BY a;
+
+EXPLAIN SELECT COUNT(DISTINCT a, b), SUM(DISTINCT a) FROM t2 WHERE b = 42;
+SELECT COUNT(DISTINCT a, b), SUM(DISTINCT a) FROM t2 WHERE b = 42;
+
+EXPLAIN SELECT SUM(DISTINCT a), MAX(b) FROM t2 GROUP BY a;
+SELECT SUM(DISTINCT a), MAX(b) FROM t2 GROUP BY a;
+
+EXPLAIN SELECT 42 * (a + c + COUNT(DISTINCT c, a, b)) FROM t2 GROUP BY a, b, c;
+SELECT 42 * (a + c + COUNT(DISTINCT c, a, b)) FROM t2 GROUP BY a, b, c;
+
+EXPLAIN SELECT (SUM(DISTINCT a) + MAX(b)) FROM t2 GROUP BY a;
+SELECT (SUM(DISTINCT a) + MAX(b)) FROM t2 GROUP BY a;
+
+DROP TABLE t1,t2;
+
+--echo # end of WL#3220 tests
diff --git a/mysql-test/t/index_merge_innodb.test b/mysql-test/t/index_merge_innodb.test
index a3bda0ad00c..10d772797a2 100644
--- a/mysql-test/t/index_merge_innodb.test
+++ b/mysql-test/t/index_merge_innodb.test
@@ -12,17 +12,19 @@
--source include/have_innodb.inc
let $engine_type= InnoDB;
+# According to Oracle: "InnoDB's estimate for the index cardinality
+# depends on a pseudo random number generator (it picks up random
+# pages to sample). After an optimization that was made in r2625 two
+# EXPLAINs started returning a different number of rows (3 instead of
+# 4)", so:
+let $index_merge_random_rows_in_EXPLAIN = 1;
# InnoDB does not support Merge tables (affects include/index_merge1.inc)
let $merge_table_support= 0;
-# The first two tests are disabled because of non deterministic explain output.
-# If include/index_merge1.inc can be enabled for InnoDB and all other
-# storage engines, please remove the subtest for Bug#21277 from
-# include/index_merge2.inc.
-# This test exists already in include/index_merge1.inc.
+# -- [DISABLED Bug#45727]
# --source include/index_merge1.inc
# --source include/index_merge_ror.inc
+# --source include/index_merge2.inc
---source include/index_merge2.inc
--source include/index_merge_2sweeps.inc
--source include/index_merge_ror_cpk.inc
diff --git a/mysql-test/t/index_merge_myisam.test b/mysql-test/t/index_merge_myisam.test
index dccaecef20a..86195cc3cd9 100644
--- a/mysql-test/t/index_merge_myisam.test
+++ b/mysql-test/t/index_merge_myisam.test
@@ -36,7 +36,6 @@ select @@optimizer_switch;
set optimizer_switch='default,index_merge_sort_union=off';
select @@optimizer_switch;
---error ER_WRONG_VALUE_FOR_VAR
set optimizer_switch=4;
--error ER_WRONG_VALUE_FOR_VAR
diff --git a/mysql-test/t/information_schema-big.test b/mysql-test/t/information_schema-big.test
new file mode 100644
index 00000000000..c9cd65f0851
--- /dev/null
+++ b/mysql-test/t/information_schema-big.test
@@ -0,0 +1,48 @@
+# This test uses grants, which can't get tested for embedded server
+-- source include/big_test.inc
+-- source include/not_embedded.inc
+
+# check that CSV engine was compiled in, as the result of the test depends
+# on the presence of the log tables (which are CSV-based).
+--source include/have_csv.inc
+
+--disable_warnings
+DROP TABLE IF EXISTS t0,t1,t2,t3,t4,t5;
+DROP VIEW IF EXISTS v1;
+--enable_warnings
+
+
+--echo #
+--echo # Bug#18925: subqueries with MIN/MAX functions on INFORMARTION_SCHEMA
+--echo #
+
+SELECT t.table_name, c1.column_name
+ FROM information_schema.tables t
+ INNER JOIN
+ information_schema.columns c1
+ ON t.table_schema = c1.table_schema AND
+ t.table_name = c1.table_name
+ WHERE t.table_schema = 'information_schema' AND
+ c1.ordinal_position =
+ ( SELECT COALESCE(MIN(c2.ordinal_position),1)
+ FROM information_schema.columns c2
+ WHERE c2.table_schema = t.table_schema AND
+ c2.table_name = t.table_name AND
+ c2.column_name LIKE '%SCHEMA%'
+ )
+ AND t.table_name NOT LIKE 'innodb%';
+SELECT t.table_name, c1.column_name
+ FROM information_schema.tables t
+ INNER JOIN
+ information_schema.columns c1
+ ON t.table_schema = c1.table_schema AND
+ t.table_name = c1.table_name
+ WHERE t.table_schema = 'information_schema' AND
+ c1.ordinal_position =
+ ( SELECT COALESCE(MIN(c2.ordinal_position),1)
+ FROM information_schema.columns c2
+ WHERE c2.table_schema = 'information_schema' AND
+ c2.table_name = t.table_name AND
+ c2.column_name LIKE '%SCHEMA%'
+ )
+ AND t.table_name NOT LIKE 'innodb%';
diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test
index 392d1062492..9da7cc1042d 100644
--- a/mysql-test/t/information_schema.test
+++ b/mysql-test/t/information_schema.test
@@ -44,8 +44,7 @@ insert into t5 values (10);
create view v1 (c) as
SELECT table_name 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';
+ table_name not like 'ndb_%' AND table_name not like 'innodb_%';
select * from v1;
select c,table_name from v1
@@ -367,7 +366,7 @@ show tables from information_schema like "T%";
create database information_schema;
use information_schema;
show full tables like "T%";
---error ER_UNKNOWN_TABLE
+--error ER_DBACCESS_DENIED_ERROR
create table t1(a int);
use test;
show tables;
@@ -491,7 +490,7 @@ select table_schema,table_name, column_name from
information_schema.columns
where data_type = 'longtext';
select table_name, column_name, data_type from information_schema.columns
-where data_type = 'datetime';
+where data_type = 'datetime' and table_name not like 'innodb_%';
#
# Bug#8164 subquery with INFORMATION_SCHEMA.COLUMNS, 100 % CPU
@@ -539,7 +538,10 @@ flush privileges;
# Bug#9404 information_schema: Weird error messages
# with SELECT SUM() ... GROUP BY queries
#
-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;
+SELECT table_schema, count(*) FROM information_schema.TABLES WHERE
+table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test', 'mysqltest')
+AND table_name not like 'ndb%' AND table_name not like 'innodb_%'
+GROUP BY TABLE_SCHEMA;
#
@@ -912,39 +914,6 @@ DROP PROCEDURE p1;
DROP USER mysql_bug20230@localhost;
#
-# Bug#18925 subqueries with MIN/MAX functions on INFORMARTION_SCHEMA
-#
-
-SELECT t.table_name, c1.column_name
- FROM information_schema.tables t
- INNER JOIN
- information_schema.columns c1
- ON t.table_schema = c1.table_schema AND
- t.table_name = c1.table_name
- WHERE t.table_schema = 'information_schema' AND
- c1.ordinal_position =
- ( SELECT COALESCE(MIN(c2.ordinal_position),1)
- FROM information_schema.columns c2
- WHERE c2.table_schema = t.table_schema AND
- c2.table_name = t.table_name AND
- c2.column_name LIKE '%SCHEMA%'
- );
-SELECT t.table_name, c1.column_name
- FROM information_schema.tables t
- INNER JOIN
- information_schema.columns c1
- ON t.table_schema = c1.table_schema AND
- t.table_name = c1.table_name
- WHERE t.table_schema = 'information_schema' AND
- c1.ordinal_position =
- ( SELECT COALESCE(MIN(c2.ordinal_position),1)
- FROM information_schema.columns c2
- WHERE c2.table_schema = 'information_schema' AND
- c2.table_name = t.table_name AND
- c2.column_name LIKE '%SCHEMA%'
- );
-
-#
# Bug#2123 query with a simple non-correlated subquery over
# INFORMARTION_SCHEMA.TABLES
#
@@ -1041,6 +1010,7 @@ where t.table_schema = 'information_schema' and
c2.table_schema='information_schema' and
(c2.column_type = 'varchar(7)' or c2.column_type = 'varchar(20)')
group by c2.column_type order by num limit 1)
+ and t.table_name not like 'innodb_%'
group by t.table_name order by num1, t.table_name;
#
@@ -1421,6 +1391,65 @@ SET TIMESTAMP=DEFAULT;
--echo End of 5.1 tests.
+#
+# Bug#24062 Incorrect error msg after execute DROP TABLE IF EXISTS on information_schema
+#
+--error ER_DBACCESS_DENIED_ERROR
+create table information_schema.t1 (f1 INT);
+--error ER_DBACCESS_DENIED_ERROR
+drop table information_schema.t1;
+--error ER_DBACCESS_DENIED_ERROR
+drop temporary table if exists information_schema.t1;
+--error ER_DBACCESS_DENIED_ERROR
+create temporary table information_schema.t1 (f1 INT);
+--error ER_DBACCESS_DENIED_ERROR
+drop view information_schema.v1;
+--error ER_DBACCESS_DENIED_ERROR
+create view information_schema.v1;
+--error ER_DBACCESS_DENIED_ERROR
+create trigger mysql.trg1 after insert on information_schema.t1 for each row set @a=1;
+--error 1109
+create table t1 select * from information_schema.t1;
+
+CREATE TABLE t1(f1 char(100));
+--error ER_DBACCESS_DENIED_ERROR
+REPAIR TABLE t1, information_schema.tables;
+CHECKSUM TABLE t1, information_schema.tables;
+--error ER_DBACCESS_DENIED_ERROR
+ANALYZE TABLE t1, information_schema.tables;
+CHECK TABLE t1, information_schema.tables;
+--error ER_DBACCESS_DENIED_ERROR
+OPTIMIZE TABLE t1, information_schema.tables;
+--error ER_DBACCESS_DENIED_ERROR
+RENAME TABLE v1 to v2, information_schema.tables to t2;
+--error ER_DBACCESS_DENIED_ERROR
+DROP TABLE t1, information_schema.tables;
+
+--error ER_DBACCESS_DENIED_ERROR
+LOCK TABLES t1 READ, information_schema.tables READ;
+DROP TABLE t1;
+
+#
+# Bug#39270 I_S optimization algorithm does not work properly in some cases
+#
+EXPLAIN SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE;
+EXPLAIN SELECT * FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME='t1';
+EXPLAIN SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
+ WHERE CONSTRAINT_SCHEMA='test';
+EXPLAIN SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
+ WHERE TABLE_NAME='t1' and TABLE_SCHEMA='test';
+EXPLAIN SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
+ WHERE EVENT_OBJECT_SCHEMA='test';
+
+#
+# Bug #43834 Assertion in Natural_join_column::db_name() on an I_S query
+#
+SELECT *
+FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
+LEFT JOIN INFORMATION_SCHEMA.COLUMNS
+USING (TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME)
+WHERE COLUMNS.TABLE_SCHEMA = 'test'
+AND COLUMNS.TABLE_NAME = 't1';
+
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
-
diff --git a/mysql-test/t/information_schema_db.test b/mysql-test/t/information_schema_db.test
index 2f651057e5c..7326f33b113 100644
--- a/mysql-test/t/information_schema_db.test
+++ b/mysql-test/t/information_schema_db.test
@@ -1,5 +1,5 @@
# this test mostly test privilege control (what doesn't work
-# in the embedded server by default). So disabled in embedded-server mode
+# in the embedded server by default). So skip the test in embedded-server mode.
-- source include/not_embedded.inc
-- source include/testdb_only.inc
@@ -13,7 +13,7 @@ drop function if exists f2;
use INFORMATION_SCHEMA;
--replace_result Tables_in_INFORMATION_SCHEMA Tables_in_information_schema
-show tables;
+show tables where Tables_in_INFORMATION_SCHEMA NOT LIKE 'Innodb%';
--replace_result 'Tables_in_INFORMATION_SCHEMA (T%)' 'Tables_in_information_schema (T%)'
show tables from INFORMATION_SCHEMA like 'T%';
create database `inf%`;
@@ -123,7 +123,7 @@ create view v1 as select f1 from t1;
grant insert on v1 to testdb_2@localhost;
create view v5 as select f1 from t1;
-grant show view on v5 to testdb_2@localhost;
+grant select, show view on v5 to testdb_2@localhost;
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
create definer=`no_such_user`@`no_such_host` view v6 as select f1 from t1;
@@ -131,7 +131,7 @@ create definer=`no_such_user`@`no_such_host` view v6 as select f1 from t1;
connection default;
use testdb_1;
create view v6 as select f1 from t1;
-grant show view on v6 to testdb_2@localhost;
+grant select, show view on v6 to testdb_2@localhost;
create table t2 (f1 char(4));
create definer=`no_such_user`@`no_such_host` view v7 as select * from t2;
@@ -163,10 +163,10 @@ show fields from testdb_1.v7;
show create view testdb_1.v7;
revoke insert(f1) on v3 from testdb_2@localhost;
-revoke show view on v5 from testdb_2@localhost;
+revoke select,show view on v5 from testdb_2@localhost;
connection default;
use testdb_1;
-revoke show view on v6 from testdb_2@localhost;
+revoke select,show view on v6 from testdb_2@localhost;
connection testdb_2;
--error ER_TABLEACCESS_DENIED_ERROR
diff --git a/mysql-test/t/information_schema_parameters.test b/mysql-test/t/information_schema_parameters.test
new file mode 100644
index 00000000000..ec9616926b7
--- /dev/null
+++ b/mysql-test/t/information_schema_parameters.test
@@ -0,0 +1,251 @@
+#------------------------------------------------------------------------------
+# i_s_parameters.test
+# .test file for MySQL regression suite
+# Purpose: To test the presence, structure, and behavior
+# of INFORMATION_SCHEMA.PARAMETERS
+# Author: pcrews
+# Last modified: 2007-12-03
+#------------------------------------------------------------------------------
+
+###############################################################################
+# Testcase parameters.1: Verify INFORMATION_SCHEMA.PARAMETERS view has the
+# following structure:
+# SPECIFIC_CATALOG NULL
+# SPECIFIC_SCHEMA routine's database
+# SPECIFIC_NAME routine's name
+# ORDINAL_POSITION first stored routine parameter is 1,
+# always 0 for stored function RETURN
+# PARAMETER_MODE 'IN' or 'OUT' or 'INOUT'
+# PARAMETER_NAME the parameter's name
+# DATA_TYPE same as for COLUMNS
+# CHARACTER_MAXIMUM_LENGTH same as for COLUMNS
+# CHARACTER_OCTET_LENGTH same as for COLUMNS
+# CHARACTER_SET_NAME same as for COLUMNS
+# COLLATION_NAME same as for COLUMNS
+# NUMERIC_PRECISION same as for COLUMNS
+# NUMERIC_SCALE same as for COLUMNS
+# DTD_IDENTIFIER same as for PARAMETERS
+###############################################################################
+-- echo # ========== parameters.1 ==========
+USE INFORMATION_SCHEMA;
+--replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
+SHOW CREATE TABLE INFORMATION_SCHEMA.PARAMETERS;
+
+# embedded server does not display privileges
+--replace_column 18 #
+query_vertical SELECT * FROM information_schema.columns
+WHERE table_schema = 'information_schema'
+ AND table_name = 'parameters'
+ORDER BY ordinal_position;
+
+DESCRIBE INFORMATION_SCHEMA.PARAMETERS;
+
+###############################################################################
+# Testcase parameters.2: Unsuccessful stored procedure CREATE will not populate
+# I_S.PARAMETERS view
+###############################################################################
+-- echo # ========== parameters.2 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+# Missing closing ')' character at the end of 's char(20) in func declaration
+--error ER_PARSE_ERROR
+CREATE FUNCTION test_func1 (s char(20) RETURNS CHAR(50)
+RETURN CONCAT('Hello', ,s,'!');
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+
+###############################################################################
+# Testcase parameters.3: DROP FUNCTION - Verify DROP of a stored procedure
+# removes I_S.PARAMETERS data for that
+# function / procedure
+###############################################################################
+-- echo # ========== parameters.3 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50)
+RETURN CONCAT('Hello, ',s,'!');
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+DROP FUNCTION test_func1;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+
+###############################################################################
+# Testcase parameters.4: CREATE PROCEDURE - IN
+###############################################################################
+-- echo # ========== parameters.4 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+delimiter //;
+CREATE PROCEDURE testproc (OUT param1 INT)
+ BEGIN
+ SELECT 2+2 as param1;
+ END;
+//
+delimiter ;//
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'testproc';
+
+
+###############################################################################
+# Testcase parameters.5: CREATE PROCEDURE - INOUT
+###############################################################################
+-- echo # ========== parameters.5 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+CREATE PROCEDURE test_proc(INOUT P INT) SET @x=P*2;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_proc';
+
+###############################################################################
+# Testcase parameters.6: CREATE PROCEDURE - OUT
+###############################################################################
+-- echo # ========== parameters.6 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+CREATE PROCEDURE test_proc(OUT p VARCHAR(10)) SET P='test';
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_proc';
+
+###############################################################################
+# Testcase parameters.7: CREATE FUNCTION - ORDINAL POSITION
+# Verify proper behavior for several aspects here
+# 3 rows should be created -- 1 for each IN parameter
+# 1 for the RETURNS param
+# ORDINAL POSITION values should be 0 for RETURNS
+# 1 and 2 for IN parameters
+# PARAM NAME and MODE should = NULL for RETURNS parm
+###############################################################################
+-- echo # ========== parameters.7 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+CREATE FUNCTION test_func1 (s char(20), t char(20)) RETURNS CHAR(40)
+RETURN CONCAT(s,t);
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+
+###############################################################################
+# Testcase parameters.8: CREATE FUNCTION - CHAR parameters
+# Verify CHAR related columns are populated for such a
+# parameter -- NUMERIC columns should be NULL
+###############################################################################
+-- echo # ========== parameters.8 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50)
+RETURN CONCAT('Hello, ',s,'!');
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+
+###############################################################################
+# Testcase parameters.9: CREATE FUNCTION - NUMERIC parameters
+# Verify NUMERIC related columns are populated for such
+# parameter -- CHAR columns should be NULL
+###############################################################################
+-- echo # ========== parameters.9 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+CREATE FUNCTION test_func2 (s int) RETURNS INT RETURN s*2;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func2';
+
+###############################################################################
+# Testcase parameters.10: CREATE FUNCTION - DATE
+# Verify NUMERIC and CHAR related columns are NULL
+###############################################################################
+-- echo # ========== parameters.10 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP
+RETURN CURRENT_TIMESTAMP;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5';
+
+###############################################################################
+# Testcase parameters.11: ALTER FUNCTION
+# Quick check to ensure ALTER doesn't affect this view
+# Should have no effect -- comment visible in ROUTINES
+# tested in i_s_routines.test
+###############################################################################
+-- echo # ========== parameters.11 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP
+RETURN CURRENT_TIMESTAMP;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5';
+ALTER FUNCTION test_func5 COMMENT 'new comment added';
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5';
+
+###############################################################################
+# Testcase parameters.12: MULTI-BYTE CHAR SETS
+# Verify that CHAR_MAX_LENGTH and CHAR_OCTET_LENGTH
+# differ as expected for multi-byte char sets
+# Normally both values are equal
+###############################################################################
+-- echo # ========== parameters.12 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test CHARACTER SET utf8;
+USE i_s_parameters_test;
+
+CREATE FUNCTION test_func5 (s CHAR(20)) RETURNS VARCHAR(30)
+RETURN CONCAT('XYZ, ' ,s);
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5';
+
+# Cleanup
+DROP DATABASE i_s_parameters_test;
diff --git a/mysql-test/t/information_schema_routines.test b/mysql-test/t/information_schema_routines.test
new file mode 100644
index 00000000000..c107b1dc2ce
--- /dev/null
+++ b/mysql-test/t/information_schema_routines.test
@@ -0,0 +1,247 @@
+#------------------------------------------------------------------------------
+# i_s_routines.test
+# .test file for MySQL regression suite
+# Purpose: To test the presence, structure, and behavior
+# of INFORMATION_SCHEMA.ROUTINES
+# Author: pcrews
+# Last modified: 2007-12-04
+#------------------------------------------------------------------------------
+
+################################################################################
+# Testcase routines.1: Ensure that the INFORMATION_SCHEMA.ROUTINES
+# table has the following columns, in the following order:
+#
+# SPECIFIC_NAME (shows the name of an accessible stored
+# procedure, or routine),
+# ROUTINE_CATALOG (always shows NULL),
+# ROUTINE_SCHEMA (shows the database, or schema, in which
+# the routine resides),
+# ROUTINE_NAME (shows the same stored procedure name),
+# ROUTINE_TYPE (shows whether the stored procedure is a
+# procedure or a function),
+# DATA_TYPE (new column as of 6.0)
+# CHARACTER_MAXIMUM_LENGTH (new column as of 6.0)
+# CHARACTER_OCTET_LENGTH (new column as of 6.0)
+# NUMERIC_PRECISION (new column as of 6.0)
+# NUMERIC_SCALE (new column as of 6.0)
+# CHARACTER_SET_NAME (new column as of 6.0)
+# COLLATION_NAME (new column as of 6.0)
+# DTD_IDENTIFIER (shows, for a function, the complete
+# data type definition of the value the function will
+# return; otherwise NULL),
+# ROUTINE_BODY (shows the language in which the stored
+# procedure is written; currently always SQL),
+# ROUTINE_DEFINITION (shows as much of the routine body as
+# is possible in the allotted space),
+# EXTERNAL_NAME (always shows NULL),
+# EXTERNAL_LANGUAGE (always shows NULL),
+# PARAMETER_STYLE (shows the routine's parameter style;
+# always SQL),
+# IS_DETERMINISTIC (shows whether the routine is
+# deterministic),
+# SQL_DATA_ACCESS (shows the routine's defined
+# sql-data-access clause value),
+# SQL_PATH (always shows NULL),
+# SECURITY_TYPE (shows whether the routine's defined
+# security_type is 'definer' or 'invoker'),
+# CREATED (shows the timestamp of the time the routine was
+# created),
+# LAST_ALTERED (shows the timestamp of the time the routine
+# was last altered),
+# SQL_MODE (shows the sql_mode setting at the time the
+# routine was created),
+# ROUTINE_COMMENT (shows the comment, if any, defined for
+# the routine; otherwise NULL),
+# DEFINER (shows the user who created the routine).
+################################################################################
+-- echo # ========== routines.1 ==========
+USE INFORMATION_SCHEMA;
+--replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
+SHOW CREATE TABLE INFORMATION_SCHEMA.ROUTINES;
+
+# embedded server does not display privileges
+--replace_column 18 #
+query_vertical SELECT * FROM information_schema.columns
+WHERE table_schema = 'information_schema'
+ AND table_name = 'routines'
+ORDER BY ordinal_position;
+
+DESCRIBE INFORMATION_SCHEMA.ROUTINES;
+
+###############################################################################
+# Testcase routines.2: Unsuccessful stored procedure CREATE will not populate
+# I_S.ROUTINES view
+###############################################################################
+-- echo # ========== routines.2 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_routines_test;
+--enable_warnings
+
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+
+# Missing closing ')' character at the end of 's char(20) in func declaration
+--error ER_PARSE_ERROR
+CREATE FUNCTION test_func1 (s char(20) RETURNS CHAR(50)
+RETURN CONCAT('Hello', ,s,'!');
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1';
+
+###############################################################################
+# Testcase routines.3: DROP FUNCTION - Verify DROP of a stored procedure
+# removes I_S.PARAMETERS data for that
+# function / procedure
+###############################################################################
+-- echo # ========== routines.3 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_routines_test;
+--enable_warnings
+
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+
+CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50)
+RETURN CONCAT('Hello, ',s,'!');
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1';
+DROP FUNCTION test_func1;
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1';
+
+
+################################################################################
+# Testcase routines.4: Verify that the new columns from WL#2822 are NULL for a
+# stored procedure
+################################################################################
+-- echo # ========== routines.4 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_routines_test;
+--enable_warnings
+
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+
+delimiter //;
+CREATE PROCEDURE testproc (OUT param1 INT)
+ BEGIN
+ SELECT 2+2 as param1;
+ END;
+//
+delimiter ;//
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'testproc';
+
+
+################################################################################
+# Testcase routines.5: Verify that the new columns from WL#2822 are populated
+# for a stored function, that the NUMERIC columns
+# are not populated when the function returns non-numeric
+# data, and that the CHARACTER columns are populated
+# for CHAR functions
+################################################################################
+-- echo # ========== routines.5 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_routines_test;
+--enable_warnings
+
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+
+CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50)
+RETURN CONCAT('Hello, ',s,'!');
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1';
+
+
+
+################################################################################
+# Testcase routines.6: Verify that the new columns from WL#2822 are populated
+# for a stored function, that the CHARACTER columns
+# are not populated when the function returns numeric
+# data, and that the NUMERIC columns are populated
+# for numeric functions
+################################################################################
+-- echo # ========== routines.6 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_routines_test;
+--enable_warnings
+
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+
+CREATE FUNCTION test_func2 (s int) RETURNS INT RETURN s*2;
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func2';
+
+################################################################################
+# Testcase routines.7: Verify that the new columns from WL#2822 are populated
+# for a stored function, that the CHARACTER and NUMERIC
+# columns are not populated when the function returns date
+# or time data
+################################################################################
+-- echo # ========== routines.7 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_routines_test;
+--enable_warnings
+
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+
+CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP
+RETURN CURRENT_TIMESTAMP;
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5';
+
+###############################################################################
+# Testcase routines.8: ALTER FUNCTION
+# Quick check to ensure ALTER properly updates
+# I_S.ROUTINES.COMMENT
+###############################################################################
+-- echo # ========== routines.8 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_routines_test;
+--enable_warnings
+
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+
+CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP
+RETURN CURRENT_TIMESTAMP;
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5';
+ALTER FUNCTION test_func5 COMMENT 'new comment added';
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5';
+
+###############################################################################
+# Testcase routines.9: MULTI-BYTE CHAR SETS
+# Verify that CHAR_MAX_LENGTH and CHAR_OCTET_LENGTH
+# differ as expected for multi-byte char sets
+# Normally both values are equal
+###############################################################################
+-- echo # ========== routines.9 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_routines_test;
+--enable_warnings
+
+
+CREATE DATABASE i_s_routines_test CHARACTER SET utf8;
+USE i_s_routines_test;
+
+CREATE FUNCTION test_func5 (s CHAR(20)) RETURNS VARCHAR(30)
+RETURN CONCAT('XYZ, ' ,s);
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5';
+
+# final clean up
+DROP DATABASE i_s_routines_test;
diff --git a/mysql-test/t/innodb-autoinc-44030.test b/mysql-test/t/innodb-autoinc-44030.test
deleted file mode 100644
index af2e3015280..00000000000
--- a/mysql-test/t/innodb-autoinc-44030.test
+++ /dev/null
@@ -1,34 +0,0 @@
--- source include/have_innodb.inc
-# embedded server ignores 'delayed', so skip this
--- source include/not_embedded.inc
-
---disable_warnings
-drop table if exists t1;
---enable_warnings
-
-#
-# 44030: Error: (1500) Couldn't read the MAX(ID) autoinc value from
-# the index (PRIMARY)
-# This test requires a restart of the server
-SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
-CREATE TABLE t1 (c1 INT PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (null);
-INSERT INTO t1 VALUES (null);
-ALTER TABLE t1 CHANGE c1 d1 INT NOT NULL AUTO_INCREMENT;
-SELECT * FROM t1;
-# Restart the server
--- source include/restart_mysqld.inc
-# The MySQL and InnoDB data dictionaries should now be out of sync.
-# The select should print message to the error log
-SELECT * FROM t1;
-# MySQL have made a change (http://lists.mysql.com/commits/75268) that no
-# 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
-INSERT INTO t1 VALUES(null);
-ALTER TABLE t1 AUTO_INCREMENT = 3;
-SHOW CREATE TABLE t1;
-INSERT INTO t1 VALUES(null);
-SELECT * FROM t1;
-DROP TABLE t1;
diff --git a/mysql-test/t/innodb-autoinc.test b/mysql-test/t/innodb-autoinc.test
index bb431408937..558de6a1060 100644
--- a/mysql-test/t/innodb-autoinc.test
+++ b/mysql-test/t/innodb-autoinc.test
@@ -478,6 +478,28 @@ INSERT INTO t2 SELECT c1 FROM t1;
INSERT INTO t2 SELECT NULL FROM t1;
DROP TABLE t1;
DROP TABLE t2;
+#
+# 44030: Error: (1500) Couldn't read the MAX(ID) autoinc value from
+# the index (PRIMARY)
+# This test requires a restart of the server
+SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
+CREATE TABLE t1 (c1 INT PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (null);
+INSERT INTO t1 VALUES (null);
+ALTER TABLE t1 CHANGE c1 d1 INT NOT NULL AUTO_INCREMENT;
+SELECT * FROM t1;
+# Restart the server
+-- source include/restart_mysqld.inc
+# The MySQL and InnoDB data dictionaries should now be out of sync.
+# The select should print message to the error log
+SELECT * FROM t1;
+-- error ER_AUTOINC_READ_FAILED,1467
+INSERT INTO t1 VALUES(null);
+ALTER TABLE t1 AUTO_INCREMENT = 3;
+SHOW CREATE TABLE t1;
+INSERT INTO t1 VALUES(null);
+SELECT * FROM t1;
+DROP TABLE t1;
# If the user has specified negative values for an AUTOINC column then
# InnoDB should ignore those values when setting the table's max value.
@@ -588,46 +610,9 @@ DROP TABLE t1;
# 47125: auto_increment start value is ignored if an index is created
# and engine=innodb
#
-CREATE TABLE t1 (c1 INT AUTO_INCREMENT, c2 INT, PRIMARY KEY(c1)) AUTO_INCREMENT=10 ENGINE=InnoDB;
-CREATE INDEX i1 on t1(c2);
-SHOW CREATE TABLE t1;
-INSERT INTO t1 (c2) values (0);
-SELECT * FROM t1;
-DROP TABLE t1;
-
-##
-# 49032: Use the correct function to read the AUTOINC column value
-#
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1(C1 DOUBLE AUTO_INCREMENT KEY, C2 CHAR(10)) ENGINE=InnoDB;
-INSERT INTO t1(C1, C2) VALUES (1, 'innodb'), (3, 'innodb');
-# Restart the server
--- source include/restart_mysqld.inc
-INSERT INTO t1(C2) VALUES ('innodb');
-SHOW CREATE TABLE t1;
-DROP TABLE t1;
-CREATE TABLE t1(C1 FLOAT AUTO_INCREMENT KEY, C2 CHAR(10)) ENGINE=InnoDB;
-INSERT INTO t1(C1, C2) VALUES (1, 'innodb'), (3, 'innodb');
-# Restart the server
--- source include/restart_mysqld.inc
-INSERT INTO t1(C2) VALUES ('innodb');
-SHOW CREATE TABLE t1;
-DROP TABLE t1;
-
-##
-# 47720: REPLACE INTO Autoincrement column with negative values
-#
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (c1 INT AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB;
-INSERT INTO t1 SET c1 = 1;
-SHOW CREATE TABLE t1;
-INSERT INTO t1 SET c1 = 2;
-INSERT INTO t1 SET c1 = -1;
-SELECT * FROM t1;
--- error ER_DUP_ENTRY,1062
-INSERT INTO t1 SET c1 = -1;
-SHOW CREATE TABLE t1;
-REPLACE INTO t1 VALUES (-1);
-SELECT * FROM t1;
-SHOW CREATE TABLE t1;
-DROP TABLE t1;
+CREATE TABLE T1 (c1 INT AUTO_INCREMENT, c2 INT, PRIMARY KEY(c1)) AUTO_INCREMENT=10 ENGINE=InnoDB;
+CREATE INDEX i1 on T1(c2);
+SHOW CREATE TABLE T1;
+INSERT INTO T1 (c2) values (0);
+SELECT * FROM T1;
+DROP TABLE T1;
diff --git a/mysql-test/t/innodb-consistent-master.opt b/mysql-test/t/innodb-consistent-master.opt
new file mode 100644
index 00000000000..8cca44767da
--- /dev/null
+++ b/mysql-test/t/innodb-consistent-master.opt
@@ -0,0 +1 @@
+--innodb_lock_wait_timeout=2
diff --git a/mysql-test/suite/innodb/t/innodb-consistent.test b/mysql-test/t/innodb-consistent.test
index b58d0cb0e62..791600fc8a7 100644
--- a/mysql-test/suite/innodb/t/innodb-consistent.test
+++ b/mysql-test/t/innodb-consistent.test
@@ -1,59 +1,58 @@
--- source include/not_embedded.inc
--- source include/have_innodb.inc
--- source suite/innodb/include/have_innodb_plugin.inc
-
---disable_warnings
-drop table if exists t1;
---enable_warnings
-
-# REPLACE INTO ... SELECT and INSERT INTO ... SELECT should do
-# a consistent read of the source table.
-
-connect (a,localhost,root,,);
-connect (b,localhost,root,,);
-connection a;
-set session transaction isolation level read committed;
-create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1;
-create table t2 like t1;
-insert into t2 values (1),(2),(3),(4),(5),(6),(7);
-set autocommit=0;
-
-# REPLACE INTO ... SELECT case
-begin;
-# this should not result in any locks on t2.
-replace into t1 select * from t2;
-
-connection b;
-set session transaction isolation level read committed;
-set autocommit=0;
-# should not cuase a lock wait.
-delete from t2 where a=5;
-commit;
-delete from t2;
-commit;
-connection a;
-commit;
-
-# INSERT INTO ... SELECT case
-begin;
-# this should not result in any locks on t2.
-insert into t1 select * from t2;
-
-connection b;
-set session transaction isolation level read committed;
-set autocommit=0;
-# should not cuase a lock wait.
-delete from t2 where a=5;
-commit;
-delete from t2;
-commit;
-connection a;
-commit;
-
-select * from t1;
-drop table t1;
-drop table t2;
-
-connection default;
-disconnect a;
-disconnect b;
+-- source include/not_embedded.inc
+-- source include/have_innodb.inc
+
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+
+# REPLACE INTO ... SELECT and INSERT INTO ... SELECT should do
+# a consistent read of the source table.
+
+connect (a,localhost,root,,);
+connect (b,localhost,root,,);
+connection a;
+set session transaction isolation level read committed;
+create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1;
+create table t2 like t1;
+insert into t2 values (1),(2),(3),(4),(5),(6),(7);
+set autocommit=0;
+
+# REPLACE INTO ... SELECT case
+begin;
+# this should not result in any locks on t2.
+replace into t1 select * from t2;
+
+connection b;
+set session transaction isolation level read committed;
+set autocommit=0;
+# should not cuase a lock wait.
+delete from t2 where a=5;
+commit;
+delete from t2;
+commit;
+connection a;
+commit;
+
+# INSERT INTO ... SELECT case
+begin;
+# this should not result in any locks on t2.
+insert into t1 select * from t2;
+
+connection b;
+set session transaction isolation level read committed;
+set autocommit=0;
+# should not cuase a lock wait.
+delete from t2 where a=5;
+commit;
+delete from t2;
+commit;
+connection a;
+commit;
+
+select * from t1;
+drop table t1;
+drop table t2;
+
+connection default;
+disconnect a;
+disconnect b;
diff --git a/mysql-test/t/innodb-master.opt b/mysql-test/t/innodb-master.opt
index 4901efb416c..72c88068345 100644
--- a/mysql-test/t/innodb-master.opt
+++ b/mysql-test/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/t/innodb-semi-consistent-master.opt b/mysql-test/t/innodb-semi-consistent-master.opt
index e76299453d3..cb48f1aaf60 100644
--- a/mysql-test/t/innodb-semi-consistent-master.opt
+++ b/mysql-test/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.test b/mysql-test/t/innodb.test
index 8dcf494406a..075058d42c2 100644
--- a/mysql-test/t/innodb.test
+++ b/mysql-test/t/innodb.test
@@ -15,8 +15,6 @@
-- 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
@@ -1151,7 +1149,7 @@ show create table t2;
create index id2 on t2 (id);
show create table t2;
drop index id2 on t2;
---error 1025,1025
+--error ER_DROP_INDEX_FK
drop index id on t2;
show create table t2;
drop table t2;
@@ -1188,7 +1186,7 @@ drop table t2;
# Test error handling
# Embedded server doesn't chdir to data directory
---replace_result $MYSQLTEST_VARDIR . mysqld.1/data/ ''
+--replace_result $MYSQLTEST_VARDIR . master-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;
@@ -1319,6 +1317,7 @@ drop table t1;
# Test for testable InnoDB status variables. This test
# uses previous ones(pages_created, rows_deleted, ...).
+--replace_result 511 512
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';
@@ -1333,6 +1332,7 @@ SELECT variable_value - @innodb_row_lock_time_max_orig FROM information_schema.g
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";
@@ -1340,9 +1340,9 @@ 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";
@@ -1350,7 +1350,6 @@ 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";
@@ -1383,7 +1382,7 @@ source include/varchar.inc;
#
# Embedded server doesn't chdir to data directory
---replace_result $MYSQLTEST_VARDIR . mysqld.1/data/ ''
+--replace_result $MYSQLTEST_VARDIR . master-data/ ''
create table t1 (v varchar(65530), key(v));
drop table t1;
create table t1 (v varchar(65536));
@@ -1658,7 +1657,7 @@ disconnect b;
set foreign_key_checks=0;
create table t2 (a int primary key, b int, foreign key (b) references t1(a)) engine = innodb;
# Embedded server doesn't chdir to data directory
---replace_result $MYSQLTEST_VARDIR . mysqld.1/data/ ''
+--replace_result $MYSQLTEST_VARDIR . master-data/ ''
-- error 1005
create table t1(a char(10) primary key, b varchar(20)) engine = innodb;
set foreign_key_checks=1;
@@ -1670,7 +1669,7 @@ drop table t2;
set foreign_key_checks=0;
create table t1(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=latin1;
# Embedded server doesn't chdir to data directory
---replace_result $MYSQLTEST_VARDIR . mysqld.1/data/ ''
+--replace_result $MYSQLTEST_VARDIR . master-data/ ''
-- error 1005
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=utf8;
set foreign_key_checks=1;
@@ -1701,7 +1700,7 @@ set foreign_key_checks=0;
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=latin1;
create table t3(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=utf8;
# Embedded server doesn't chdir to data directory
---replace_result $MYSQLD_DATADIR ./ master-data/ ''
+--replace_result $MYSQLTEST_VARDIR . master-data/ ''
-- error 1025
rename table t3 to t1;
set foreign_key_checks=1;
@@ -2265,7 +2264,7 @@ disconnect j;
drop table t1, t2, t3, t5, t6, t8, t9;
# bug 18934, "InnoDB crashes when table uses column names like DB_ROW_ID"
---error 1005
+--error ER_WRONG_COLUMN_NAME
CREATE TABLE t1 (DB_ROW_ID int) engine=innodb;
#
@@ -2341,7 +2340,7 @@ ALTER TABLE t2 ADD FOREIGN KEY (a) REFERENCES t1 (a) ON DELETE SET NULL;
# mysqltest first does replace_regex, then replace_result
--replace_regex /'[^']*test\/#sql-[0-9a-f_]*'/'#sql-temporary'/
# Embedded server doesn't chdir to data directory
---replace_result $MYSQLD_DATADIR ./ master-data/ ''
+--replace_result $MYSQLTEST_VARDIR . master-data/ ''
--error 1025
ALTER TABLE t2 MODIFY a INT NOT NULL;
DELETE FROM t1;
@@ -2382,6 +2381,7 @@ DROP TABLE t1,t2;
#
# Bug #21101 (Prints wrong error message if max row size is too large)
#
+set innodb_strict_mode=on;
--error 1118
CREATE TABLE t1 (
c01 CHAR(255), c02 CHAR(255), c03 CHAR(255), c04 CHAR(255),
@@ -2551,6 +2551,8 @@ CONNECTION default;
SET GLOBAL innodb_thread_concurrency = @innodb_thread_concurrency_orig;
+-- enable_query_log
+
#######################################################################
# #
# Please, DO NOT TOUCH this file as well as the innodb.result file. #
diff --git a/mysql-test/t/innodb_bug34300.test b/mysql-test/t/innodb_bug34300.test
index 432ddd03547..68c385fd72a 100644
--- a/mysql-test/t/innodb_bug34300.test
+++ b/mysql-test/t/innodb_bug34300.test
@@ -9,6 +9,7 @@
-- disable_result_log
# set packet size and reconnect
+let $max_packet=`select @@global.max_allowed_packet`;
SET @@global.max_allowed_packet=16777216;
--connect (newconn, localhost, root,,)
@@ -21,7 +22,6 @@ CREATE TABLE bug34300 (
INSERT INTO bug34300 VALUES ('xxx', repeat('a', 8459264), 'zzz');
--- enable_query_log
-- enable_result_log
SELECT f4, f8 FROM bug34300;
@@ -31,7 +31,4 @@ ALTER TABLE bug34300 ADD COLUMN (f10 INT);
SELECT f4, f8 FROM bug34300;
DROP TABLE bug34300;
-
-disconnect newconn;
-connection default;
-SET @@global.max_allowed_packet=default;
+EVAL SET @@global.max_allowed_packet=$max_packet;
diff --git a/mysql-test/t/innodb_bug42101-nonzero-master.opt b/mysql-test/t/innodb_bug42101-nonzero-master.opt
index d71dbe17d5b..455d66a06b8 100644
--- a/mysql-test/t/innodb_bug42101-nonzero-master.opt
+++ b/mysql-test/t/innodb_bug42101-nonzero-master.opt
@@ -1 +1 @@
---innodb_commit_concurrency=1
+--loose_innodb_commit_concurrency=1
diff --git a/mysql-test/t/innodb_bug42101-nonzero.test b/mysql-test/t/innodb_bug42101-nonzero.test
index 685fdf20489..2e4cf1f46dd 100644
--- a/mysql-test/t/innodb_bug42101-nonzero.test
+++ b/mysql-test/t/innodb_bug42101-nonzero.test
@@ -5,7 +5,7 @@
-- source include/have_innodb.inc
---error ER_WRONG_ARGUMENTS
+--error ER_WRONG_VALUE_FOR_VAR
set global innodb_commit_concurrency=0;
select @@innodb_commit_concurrency;
set global innodb_commit_concurrency=1;
@@ -14,7 +14,7 @@ set global innodb_commit_concurrency=42;
select @@innodb_commit_concurrency;
set global innodb_commit_concurrency=DEFAULT;
select @@innodb_commit_concurrency;
---error ER_WRONG_ARGUMENTS
+--error ER_WRONG_VALUE_FOR_VAR
set global innodb_commit_concurrency=0;
select @@innodb_commit_concurrency;
set global innodb_commit_concurrency=1;
diff --git a/mysql-test/t/innodb_bug42101.test b/mysql-test/t/innodb_bug42101.test
index b6536490d48..f0b88e034a0 100644
--- a/mysql-test/t/innodb_bug42101.test
+++ b/mysql-test/t/innodb_bug42101.test
@@ -7,10 +7,10 @@
set global innodb_commit_concurrency=0;
select @@innodb_commit_concurrency;
---error ER_WRONG_ARGUMENTS
+--error ER_WRONG_VALUE_FOR_VAR
set global innodb_commit_concurrency=1;
select @@innodb_commit_concurrency;
---error ER_WRONG_ARGUMENTS
+--error ER_WRONG_VALUE_FOR_VAR
set global innodb_commit_concurrency=42;
select @@innodb_commit_concurrency;
set global innodb_commit_concurrency=0;
diff --git a/mysql-test/t/innodb_bug44369.test b/mysql-test/t/innodb_bug44369.test
index 238dc3d8fb1..f5d85cd5815 100644
--- a/mysql-test/t/innodb_bug44369.test
+++ b/mysql-test/t/innodb_bug44369.test
@@ -6,16 +6,12 @@
--source include/have_innodb.inc
# This create table operation should fail.
---error ER_CANT_CREATE_TABLE
+--error ER_WRONG_COLUMN_NAME
create table bug44369 (DB_ROW_ID int) engine=innodb;
# This create should fail as well
---error ER_CANT_CREATE_TABLE
+--error ER_WRONG_COLUMN_NAME
create table bug44369 (db_row_id int) engine=innodb;
-show warnings;
-
---error ER_CANT_CREATE_TABLE
+--error ER_WRONG_COLUMN_NAME
create table bug44369 (db_TRX_Id int) engine=innodb;
-
-show warnings;
diff --git a/mysql-test/suite/innodb/t/innodb_bug44571.test b/mysql-test/t/innodb_bug44571.test
index 43f290cde84..685463ceff9 100644
--- a/mysql-test/suite/innodb/t/innodb_bug44571.test
+++ b/mysql-test/t/innodb_bug44571.test
@@ -3,7 +3,6 @@
# http://bugs.mysql.com/44571
#
-- source include/have_innodb.inc
--- source suite/innodb/include/have_innodb_plugin.inc
CREATE TABLE bug44571 (foo INT) ENGINE=InnoDB;
ALTER TABLE bug44571 CHANGE foo bar INT;
diff --git a/mysql-test/t/innodb_bug46000.test b/mysql-test/t/innodb_bug46000.test
index eb10d866e54..5a3c666326e 100644
--- a/mysql-test/t/innodb_bug46000.test
+++ b/mysql-test/t/innodb_bug46000.test
@@ -7,11 +7,11 @@
# This 'create table' operation should fail because of
# using the reserve name as its index name.
---error ER_CANT_CREATE_TABLE
+--error ER_WRONG_NAME_FOR_INDEX
create table bug46000(`id` int,key `GEN_CLUST_INDEX`(`id`))engine=innodb;
# Mixed upper/lower case of the reserved key words
---error ER_CANT_CREATE_TABLE
+--error ER_WRONG_NAME_FOR_INDEX
create table bug46000(`id` int, key `GEN_clust_INDEX`(`id`))engine=innodb;
show warnings;
@@ -19,11 +19,9 @@ show warnings;
create table bug46000(id int) engine=innodb;
# This 'create index' operation should fail.
---replace_regex /'[^']*test.#sql-[0-9a-f_]*'/'#sql-temporary'/
---error ER_CANT_CREATE_TABLE
+--error ER_WRONG_NAME_FOR_INDEX
create index GEN_CLUST_INDEX on bug46000(id);
---replace_regex /'[^']*test.#sql-[0-9a-f_]*'/'#sql-temporary'/
show warnings;
# This 'create index' operation should succeed, no
diff --git a/mysql-test/t/innodb_mysql.test b/mysql-test/t/innodb_mysql.test
index a2a1113598d..3cd7b40f4ab 100644
--- a/mysql-test/t/innodb_mysql.test
+++ b/mysql-test/t/innodb_mysql.test
@@ -537,3 +537,21 @@ DROP VIEW v1;
DROP TABLE t1,t2;
--echo End of 5.1 tests
+
+
+--echo #
+--echo # Test for bug #39932 "create table fails if column for FK is in different
+--echo # case than in corr index".
+--echo #
+--disable_warnings
+drop tables if exists t1, t2;
+--enable_warnings
+create table t1 (pk int primary key) engine=InnoDB;
+--echo # Even although the below statement uses uppercased field names in
+--echo # foreign key definition it still should be able to find explicitly
+--echo # created supporting index. So it should succeed and should not
+--echo # create any additional supporting indexes.
+create table t2 (fk int, key x (fk),
+ constraint x foreign key (FK) references t1 (PK)) engine=InnoDB;
+show create table t2;
+drop table t2, t1;
diff --git a/mysql-test/t/insert.test b/mysql-test/t/insert.test
index 8f9ed6c7d06..4f918504597 100644
--- a/mysql-test/t/insert.test
+++ b/mysql-test/t/insert.test
@@ -235,8 +235,10 @@ insert into t1 values (1,11), (2,22);
insert into t2 values (1,12), (2,24);
--error 1393
insert into v1 (f1) values (3) on duplicate key update f3= f3 + 10;
+--error 1393
insert into v1 (f1) values (3) on duplicate key update f1= f3 + 10;
select * from t1;
+--error 1393
insert into v1 (f1) values (3) on duplicate key update f1= f3 + 10;
select * from t1;
drop view v1;
@@ -420,9 +422,6 @@ INSERT INTO t1(a,c) VALUES (1.87e-3, 1.87e-3);
INSERT INTO t1(a,c) VALUES (-1.87e-2, -1.87e-2);
INSERT INTO t1(a,c) VALUES (5000e+0, 5000e+0);
INSERT INTO t1(a,c) VALUES (-5000e+0, -5000e+0);
-# Expected results are "12.2" and "1.2e+78", but Windows returns "12.3" and
-# "1.3e+78" due to different rounding rules
---replace_result 12.3 12.2 1.3e+78 1.2e+78
SELECT * FROM t1;
DROP TABLE t1;
@@ -457,9 +456,6 @@ INSERT INTO t1(a,c) VALUES (-1.87e-2, -1.87e-2);
INSERT INTO t1(a,c) VALUES (5000e+0, 5000e+0);
INSERT INTO t1(a,c) VALUES (-5000e+0, -5000e+0);
-# Expected results are "12.2" and "1.2e+78", but Windows returns "12.3" and
-# "1.3e+78" due to different rounding rules
---replace_result 12.3 12.2 1.3e+78 1.2e+78
SELECT * FROM t1;
DROP TABLE t1;
@@ -499,3 +495,33 @@ DROP TABLE t1, t2;
--echo End of 5.0 tests.
+--echo #
+--echo # Bug#34898 "mysql_info() reports 0 warnings while
+--echo # mysql_warning_count() reports 1"
+--echo # Check that the number of warnings reported by
+--echo # mysql_info() is correct.
+--echo #
+
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+
+create table t1 (data varchar(4) not null);
+
+set sql_mode='error_for_division_by_zero';
+--echo #
+--echo # Demonstrate that the number of warnings matches
+--echo # the information in mysql_info().
+--echo #
+--enable_info
+insert t1 (data) values ('letter'), (1/0);
+update t1 set data='envelope' where 1/0 or 1;
+insert t1 (data) values (default), (1/0), ('dead beef');
+--disable_info
+
+set sql_mode=default;
+drop table t1;
+
+--echo #
+--echo # End of 5.4 tests
+--echo #
diff --git a/mysql-test/t/insert_notembedded.test b/mysql-test/t/insert_notembedded.test
index 24040f9c310..2950acff3cc 100644
--- a/mysql-test/t/insert_notembedded.test
+++ b/mysql-test/t/insert_notembedded.test
@@ -185,5 +185,6 @@ select * from t1;
connection default;
disconnect update;
disconnect select;
+unlock tables;
drop table t1;
set low_priority_updates=default;
diff --git a/mysql-test/t/ipv4_as_ipv6-master.opt b/mysql-test/t/ipv4_as_ipv6-master.opt
new file mode 100644
index 00000000000..f55a8e9209d
--- /dev/null
+++ b/mysql-test/t/ipv4_as_ipv6-master.opt
@@ -0,0 +1 @@
+--skip-name-resolve --bind-address=0.0.0.0
diff --git a/mysql-test/t/ipv4_as_ipv6.test b/mysql-test/t/ipv4_as_ipv6.test
new file mode 100644
index 00000000000..4f4e68e8bfc
--- /dev/null
+++ b/mysql-test/t/ipv4_as_ipv6.test
@@ -0,0 +1,65 @@
+# Copyright (C) 2009 SUN Microsystems
+# All rights reserved. Use is subject to license terms.
+# Author: Horst Hunger
+# Nov. 19, 2009
+# Test of ipv4 (127.0.0.1) in ipv6 format
+# Options: --skip-name-resolve, --bind-address=0.0.0.0 (see corresponding opt file).
+#
+# Can't be tested with windows due to mixed format like 0::0000:FFFF:127.0.0.1
+--source include/not_windows.inc
+# Can't be tested with embedded server
+--source include/not_embedded.inc
+
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
+echo =============Test of '127.0.0.1' (IPv4) ===========================;
+let $IPv6= 127.0.0.1;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+
+echo =============Test of '0:0:0:0:0:FFFF:127.0.0.1' ===================;
+let $IPv6= 0:0:0:0:0:FFFF:127.0.0.1;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+
+echo =============Test of '0000:0000:0000:0000:0000:FFFF:127.0.0.1' ====;
+let $IPv6= 0000:0000:0000:0000:0000:FFFF:127.0.0.1;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+
+echo =============Test of '0:0000:0000:0:0000:FFFF:127.0.0.1' ====;
+let $IPv6= 0:0000:0000:0:0000:FFFF:127.0.0.1;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+
+echo =============Test of '0::0000:FFFF:127.0.0.1' ====;
+let $IPv6= 0::0000:FFFF:127.0.0.1;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+
+echo =============Test of '0:0:0:0:0:FFFF:127.0.0.1/96' ================;
+let $IPv6= 0:0:0:0:0:FFFF:127.0.0.1/96;
+#--source include/ipv6_clients.inc
+#--source include/ipv6.inc
+
+echo =============Test of '::FFFF:127.0.0.1' ===========================;
+let $IPv6= ::FFFF:127.0.0.1;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+
+echo =============Test of '::FFFF:127.0.0.1/96' ========================;
+let $IPv6= ::FFFF:127.0.0.1/96;
+#--source include/ipv6_clients.inc
+#--source include/ipv6.inc
+
+echo =============Test of '::1' ========================;
+let $IPv6= ::1;
+--echo connect (con1, $IPv6, root, , test, MASTER_MYPORT,);
+--disable_query_log
+--error 2003,2006
+connect (con1, $IPv6, root, , test, $MASTER_MYPORT,);
+--enable_query_log
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
diff --git a/mysql-test/t/ipv4_as_ipv6_win-master.opt b/mysql-test/t/ipv4_as_ipv6_win-master.opt
new file mode 100644
index 00000000000..f55a8e9209d
--- /dev/null
+++ b/mysql-test/t/ipv4_as_ipv6_win-master.opt
@@ -0,0 +1 @@
+--skip-name-resolve --bind-address=0.0.0.0
diff --git a/mysql-test/t/ipv4_as_ipv6_win.test b/mysql-test/t/ipv4_as_ipv6_win.test
new file mode 100644
index 00000000000..04f908a119d
--- /dev/null
+++ b/mysql-test/t/ipv4_as_ipv6_win.test
@@ -0,0 +1,31 @@
+# Copyright (C) 2009 SUN Microsystems
+# All rights reserved. Use is subject to license terms.
+# Author: Horst Hunger
+# Nov. 19, 2009
+# Test of ipv4 (127.0.0.1) in ipv6 format
+# Options: --skip-name-resolve, --bind-address=0.0.0.0 (see corresponding opt file).
+#
+# For windows due to missing the mixed format like 0::0000:FFFF:127.0.0.1
+--source include/windows.inc
+# Can't be tested with embedded server
+--source include/not_embedded.inc
+
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
+echo =============Test of '127.0.0.1' (IPv4) ===========================;
+let $IPv6= 127.0.0.1;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+
+echo =============Test of '::1' ========================;
+let $IPv6= ::1;
+--echo connect (con1, $IPv6, root, , test, MASTER_MYPORT);
+--disable_query_log
+--error 2003,2006
+connect (con1, $IPv6, root, , test, $MASTER_MYPORT);
+--enable_query_log
+connection default;
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
diff --git a/mysql-test/t/ipv6-master.opt b/mysql-test/t/ipv6-master.opt
new file mode 100644
index 00000000000..d705811808c
--- /dev/null
+++ b/mysql-test/t/ipv6-master.opt
@@ -0,0 +1 @@
+--skip-name-resolve --bind-address=::
diff --git a/mysql-test/t/ipv6.test b/mysql-test/t/ipv6.test
new file mode 100644
index 00000000000..a1515e9d533
--- /dev/null
+++ b/mysql-test/t/ipv6.test
@@ -0,0 +1,79 @@
+# Copyright (C) 2009 SUN Microsystems
+# All rights reserved. Use is subject to license terms.
+# Author: Horst Hunger
+# Nov. 19, 2009
+# Test of ipv6 format
+# Options: --skip-name-resolve, --bind-address=:: (see corresponding opt file).
+#
+--source include/check_ipv6.inc
+
+# Can't be tested with windows due to the mixed format like 0:0:0:0:0:FFFF:127.0.0.1
+--source include/not_windows.inc
+# Can't be tested with embedded server
+--source include/not_embedded.inc
+
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
+echo =============Test of '::1' ========================================;
+let $IPv6= ::1;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+
+echo =============Test of '::1/128' ====================================;
+let $IPv6= ::1/128;
+#--source include/ipv6_clients.inc
+#--source include/ipv6.inc
+
+echo =============Test of '0000:0000:0000:0000:0000:0000:0000:0001' ====;
+let $IPv6= 0000:0000:0000:0000:0000:0000:0000:0001;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+
+echo =============Test of '0:0:0:0:0:0:0:1' ============================;
+let $IPv6= 0:0:0:0:0:0:0:1;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+
+echo =============Test of '127.0.0.1' (IPv4) ===========================;
+let $IPv6= 127.0.0.1;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+
+echo =============Test of '0:0:0:0:0:FFFF:127.0.0.1' ===================;
+let $IPv6= 0:0:0:0:0:FFFF:127.0.0.1;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+
+echo =============Test of '0000:0000:0000:0000:0000:FFFF:127.0.0.1' ====;
+let $IPv6= 0000:0000:0000:0000:0000:FFFF:127.0.0.1;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+
+echo =============Test of '0:0000:0000:0:0000:FFFF:127.0.0.1' ====;
+let $IPv6= 0:0000:0000:0:0000:FFFF:127.0.0.1;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+
+echo =============Test of '0::0000:FFFF:127.0.0.1' ====;
+let $IPv6= 0::0000:FFFF:127.0.0.1;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+
+echo =============Test of '0:0:0:0:0:FFFF:127.0.0.1/96' ================;
+let $IPv6= 0:0:0:0:0:FFFF:127.0.0.1/96;
+#--source include/ipv6_clients.inc
+#--source include/ipv6.inc
+
+echo =============Test of '::FFFF:127.0.0.1' ===========================;
+let $IPv6= ::FFFF:127.0.0.1;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+
+echo =============Test of '::FFFF:127.0.0.1/96' ========================;
+let $IPv6= ::FFFF:127.0.0.1/96;
+#--source include/ipv6_clients.inc
+#--source include/ipv6.inc
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
diff --git a/mysql-test/t/ipv6_win-master.opt b/mysql-test/t/ipv6_win-master.opt
new file mode 100644
index 00000000000..d705811808c
--- /dev/null
+++ b/mysql-test/t/ipv6_win-master.opt
@@ -0,0 +1 @@
+--skip-name-resolve --bind-address=::
diff --git a/mysql-test/t/ipv6_win.test b/mysql-test/t/ipv6_win.test
new file mode 100644
index 00000000000..86d867cc448
--- /dev/null
+++ b/mysql-test/t/ipv6_win.test
@@ -0,0 +1,39 @@
+# Copyright (C) 2009 SUN Microsystems
+# All rights reserved. Use is subject to license terms.
+# Author: Horst Hunger
+# Nov. 19, 2009
+# Test of ipv6 format
+# Options: --skip-name-resolve, --bind-address=:: (see corresponding opt file).
+#
+--source include/check_ipv6.inc
+
+# For windows due to missing the mixed format like 0::0000:FFFF:127.0.0.1
+--source include/windows.inc
+# Can't be tested with embedded server
+--source include/not_embedded.inc
+
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
+echo =============Test of '::1' ========================================;
+let $IPv6= ::1;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+
+echo =============Test of '::1/128' ====================================;
+let $IPv6= ::1/128;
+#--source include/ipv6_clients.inc
+#--source include/ipv6.inc
+
+echo =============Test of '0000:0000:0000:0000:0000:0000:0000:0001' ====;
+let $IPv6= 0000:0000:0000:0000:0000:0000:0000:0001;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+
+echo =============Test of '0:0:0:0:0:0:0:1' ============================;
+let $IPv6= 0:0:0:0:0:0:0:1;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
diff --git a/mysql-test/t/join_optimizer.test b/mysql-test/t/join_optimizer.test
new file mode 100644
index 00000000000..3afe82113b9
--- /dev/null
+++ b/mysql-test/t/join_optimizer.test
@@ -0,0 +1,45 @@
+--disable_warnings
+drop table if exists t0,t1,t2,t3;
+--enable_warnings
+
+--echo #
+--echo # BUG#38049 incorrect rows estimations with references from preceding table
+--echo #
+
+create table t0 (a int);
+insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
+
+create table t1 (a varchar(32));
+insert into t1 values ('owner'),('requester'),('admincc'),('cc');
+
+CREATE TABLE t2 (
+ id int(11) NOT NULL,
+ type varchar(32) default NULL,
+ PRIMARY KEY (id)
+);
+insert into t2 values (1,'owner'), (2,'admincc');
+
+
+CREATE TABLE t3 (
+ id int(11) NOT NULL,
+ domain varchar(32) default NULL,
+ type varchar(32) default NULL,
+ PRIMARY KEY (id)
+);
+
+set @domain='system';
+set @pk=0;
+INSERT INTO t3 select @pk:=@pk+1, 'system', t1.a from t1;
+INSERT INTO t3 select @pk:=@pk+1, 'queue', t1.a from t1, t0 where t0.a<3;
+INSERT INTO t3 select @pk:=@pk+1, 'ticket', t1.a from t1, t0 A, t0 B, t0 C;
+
+CREATE INDEX groups_d ON t3(domain);
+CREATE INDEX groups_t ON t3(type);
+CREATE INDEX groups_td ON t3(type, domain);
+CREATE INDEX groups_dt ON t3(domain, type);
+--echo For table g this must use ref(groups_dt) and #rows should be around 15 and not 335:
+explain
+SELECT STRAIGHT_JOIN g.id FROM t2 a, t3 g USE INDEX(groups_dt)
+WHERE g.domain = 'queue' AND g.type = a.type;
+
+drop table t0,t1,t2,t3;
diff --git a/mysql-test/t/key_cache.test b/mysql-test/t/key_cache.test
index 4c14dc96aaa..a404e9bf15a 100644
--- a/mysql-test/t/key_cache.test
+++ b/mysql-test/t/key_cache.test
@@ -149,10 +149,13 @@ show status like 'key_blocks_used';
--replace_result 1812 KEY_BLOCKS_UNUSED 1793 KEY_BLOCKS_UNUSED 1674 KEY_BLOCKS_UNUSED 1818 KEY_BLOCKS_UNUSED 1824 KEY_BLOCKS_UNUSED
show status like 'key_blocks_unused';
-
-# Cleanup
-# We don't reset keycache2 as we want to ensure that mysqld will reset it
+create table t1 (a int primary key);
+cache index t1 in keycache2;
+insert t1 values (1),(2),(3),(4),(5),(6),(7),(8);
+# delete keycache2, t1 is reassigned to default
set global keycache2.key_buffer_size=0;
+select * from t1;
+drop table t1;
# Test to set up a too small size for a key cache (bug #2064)
set global keycache3.key_buffer_size=100;
@@ -216,6 +219,7 @@ set global key_cache_block_size= @my_key_cache_block_size;
# Bug#10473 - Can't set 'key_buffer_size' system variable to ZERO
# (One cannot drop the default key cache.)
#
+--error ER_WARN_CANT_DROP_DEFAULT_KEYCACHE
set @@global.key_buffer_size=0;
select @@global.key_buffer_size;
diff --git a/mysql-test/t/loadxml.test b/mysql-test/t/loadxml.test
new file mode 100644
index 00000000000..8b9c1bd1b0d
--- /dev/null
+++ b/mysql-test/t/loadxml.test
@@ -0,0 +1,108 @@
+#
+# Tests for "LOAD XML" - a contributed patch from Erik Wetterberg.
+#
+
+# Running the $MYSQL_DUMP tool against an embedded server does not work.
+--source include/not_embedded.inc
+
+--disable_warnings
+drop table if exists t1, t2;
+--enable_warnings
+
+create table t1 (a int, b varchar(64));
+
+
+--echo -- Load a static XML file
+load xml infile '../../std_data/loadxml.dat' into table t1
+rows identified by '<row>';
+select * from t1 order by a;
+delete from t1;
+
+
+--echo -- Load a static XML file with 'IGNORE num ROWS'
+load xml infile '../../std_data/loadxml.dat' into table t1
+rows identified by '<row>' ignore 4 rows;
+select * from t1 order by a;
+
+
+--echo -- Check 'mysqldump --xml' + 'LOAD XML' round trip
+--exec $MYSQL_DUMP --xml test t1 > "$MYSQLTEST_VARDIR/tmp/loadxml-dump.xml" 2>&1
+delete from t1;
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+--eval load xml infile '$MYSQLTEST_VARDIR/tmp/loadxml-dump.xml' into table t1 rows identified by '<row>';
+select * from t1 order by a;
+
+--echo --Check that default row tag is '<row>
+delete from t1;
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+--eval load xml infile '$MYSQLTEST_VARDIR/tmp/loadxml-dump.xml' into table t1;
+select * from t1 order by a;
+
+--echo -- Check that 'xml' is not a keyword
+select 1 as xml;
+
+
+#
+# Bug #42520 killing load .. infile Assertion failed: ! is_set(), file .\sql_error.cc, line 8
+#
+
+--disable_query_log
+delete from t1;
+insert into t1 values (1, '12345678900987654321'), (2, 'asdfghjkl;asdfghjkl;');
+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;
+--exec $MYSQL_DUMP --xml test t1 > "$MYSQLTEST_VARDIR/tmp/loadxml-dump.xml" 2>&1
+--enable_query_log
+
+connect (addconroot, localhost, root,,);
+connection addconroot;
+create table t2(fl text);
+--let $PSEUDO_THREAD_ID=`select @@pseudo_thread_id `
+
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+--send_eval LOAD XML LOCAL INFILE "$MYSQLTEST_VARDIR/tmp/loadxml-dump.xml" INTO TABLE t2 ROWS IDENTIFIED BY '<person>';
+
+sleep 3;
+
+
+connection default;
+sleep 1;
+
+--disable_query_log
+--eval kill $PSEUDO_THREAD_ID
+sleep 2;
+--enable_query_log
+
+disconnect addconroot;
+
+#
+# Clean up
+#
+remove_file $MYSQLTEST_VARDIR/tmp/loadxml-dump.xml;
+drop table t1;
+drop table t2;
+
+#
+# Bug #36750 LOAD XML doesn't understand new line (feed) characters in multi line text fields
+#
+
+create table t1 (
+ id int(11) not null,
+ text text,
+ primary key (id)
+) engine=MyISAM default charset=latin1;
+load xml infile '../../std_data/loadxml2.dat' into table t1;
+select * from t1;
+drop table t1;
+
diff --git a/mysql-test/t/locale.test b/mysql-test/t/locale.test
index 7ceb49fd1f4..04ac95cea06 100644
--- a/mysql-test/t/locale.test
+++ b/mysql-test/t/locale.test
@@ -3,6 +3,44 @@ DROP TABLE IF EXISTS t1;
--enable_warnings
--echo Start of 5.4 tests
+
+--echo #
+--echo # WL#4642 Greek locale for DAYNAME, MONTHNAME, DATE_FORMAT
+--echo #
+
+SET NAMES utf8;
+
+SET @@lc_time_names=109;
+SELECT @@lc_time_names;
+
+CREATE TABLE t1 (a DATE);
+INSERT INTO t1 VALUES
+('2006-01-01'),('2006-01-02'),('2006-01-03'),
+('2006-01-04'),('2006-01-05'),('2006-01-06'),('2006-01-07');
+SELECT a, date_format(a,'%a') as abday, dayname(a) as day FROM t1 ORDER BY a;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a DATE);
+INSERT INTO t1 VALUES
+('2006-01-01'),('2006-02-01'),('2006-03-01'),
+('2006-04-01'),('2006-05-01'),('2006-06-01'),
+('2006-07-01'),('2006-08-01'),('2006-09-01'),
+('2006-10-01'),('2006-11-01'),('2006-12-01');
+SELECT a, date_format(a,'%b') as abmon, monthname(a) as mon FROM t1 ORDER BY a;
+
+SELECT format(123456.789, 3, 'el_GR');
+DROP TABLE t1;
+
+--echo #
+--echo # Bug#46633 Obsolete Serbian locale name
+--echo #
+SET lc_messages=sr_YU;
+SHOW VARIABLES LIKE 'lc_messages';
+SET lc_messages=sr_RS;
+SHOW VARIABLES LIKE 'lc_messages';
+SET lc_time_names=sr_RS;
+SELECT format(123456.789, 3, 'sr_RS');
+
--echo #
--echo # Bug#43207 wrong LC_TIME names for romanian locale
--echo #
diff --git a/mysql-test/t/lock.test b/mysql-test/t/lock.test
index 30f4d4d6c61..04994e3e48f 100644
--- a/mysql-test/t/lock.test
+++ b/mysql-test/t/lock.test
@@ -58,6 +58,9 @@ insert into t1 select index1,nr from t1;
unlock tables;
lock tables t1 write, t1 as t1_alias read;
insert into t1 select index1,nr from t1 as t1_alias;
+--error ER_TABLE_NOT_LOCKED
+drop table t1,t2;
+unlock tables;
drop table t1,t2;
#
@@ -90,7 +93,10 @@ delete t1 from t1,t2 where t1.a=t2.a;
delete from t2 using t1,t2 where t1.a=t2.a;
--error 1099
delete t2 from t1,t2 where t1.a=t2.a;
+--error ER_TABLE_NOT_LOCKED_FOR_WRITE
drop table t1,t2;
+unlock tables;
+drop table t2,t1;
--echo End of 4.1 tests.
diff --git a/mysql-test/t/lock_multi.test b/mysql-test/t/lock_multi.test
index 4df1a0f3478..5670276ee2e 100644
--- a/mysql-test/t/lock_multi.test
+++ b/mysql-test/t/lock_multi.test
@@ -1,5 +1,3 @@
--- source include/not_embedded.inc
-
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
@@ -78,6 +76,7 @@ update t1,t2 set c=a where b=d;
connection reader;
select c from t2;
connection locker;
+unlock tables;
drop table t1;
drop table t2;
@@ -639,6 +638,41 @@ select @tlwa < @tlwb;
--echo End of 5.1 tests
+#
+# Test that DROP TABLES does not wait for a impending FLUSH TABLES
+# WITH READ LOCK
+#
+
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+create table t1 (i int);
+connect (flush,localhost,root,,test,,);
+connection default;
+--echo connection: default
+lock tables t1 write;
+connection flush;
+--echo connection: flush
+--send flush tables with read lock;
+connection default;
+--echo connection: default
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Flushing tables";
+--source include/wait_condition.inc
+flush tables;
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Flushing tables";
+--source include/wait_condition.inc
+drop table t1;
+let $wait_condition=
+ select count(*) = 0 from information_schema.processlist
+ where state = "Flushing tables";
+--source include/wait_condition.inc
+connection flush;
+--reap
+connection default;
+disconnect flush;
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
-
diff --git a/mysql-test/t/lock_sync.test b/mysql-test/t/lock_sync.test
new file mode 100644
index 00000000000..73289685114
--- /dev/null
+++ b/mysql-test/t/lock_sync.test
@@ -0,0 +1,118 @@
+#
+# Locking related tests which use DEBUG_SYNC facility.
+#
+--source include/have_debug_sync.inc
+# We need InnoDB to be able use TL_WRITE_ALLOW_WRITE type of locks in our tests.
+--source include/have_innodb.inc
+# Until bug#41971 'Thread state on embedded server is always "Writing to net"'
+# is fixed this test can't be run on embedded version of server.
+--source include/not_embedded.inc
+
+# Save the initial number of concurrent sessions.
+--source include/count_sessions.inc
+
+
+--echo #
+--echo # Test for bug #45143 "All connections hang on concurrent ALTER TABLE".
+--echo #
+--echo # Concurrent execution of statements which required weak write lock
+--echo # (TL_WRITE_ALLOW_WRITE) on several instances of the same table and
+--echo # statements which tried to acquire stronger write lock (TL_WRITE,
+--echo # TL_WRITE_ALLOW_READ) on this table might have led to deadlock.
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+--echo # Create auxiliary connections used through the test.
+connect (con_bug45143_1,localhost,root,,test,,);
+connect (con_bug45143_3,localhost,root,,test,,);
+connect (con_bug45143_2,localhost,root,,test,,);
+connection default;
+--echo # Reset DEBUG_SYNC facility before using it.
+set debug_sync= 'RESET';
+--echo # Turn off logging so calls to locking subsystem performed
+--echo # for general_log table won't interfere with our test.
+set @old_general_log = @@global.general_log;
+set @@global.general_log= OFF;
+
+create table t1 (i int) engine=InnoDB;
+insert into t1 values (1);
+--echo # Prepare user lock which will be used for resuming execution of
+--echo # the first statement after it acquires TL_WRITE_ALLOW_WRITE lock.
+select get_lock("lock_bug45143_wait", 0);
+
+--echo # Switch to connection 'con_bug45143_1'.
+connection con_bug45143_1;
+--echo # Sending:
+--send insert into t1 values (get_lock("lock_bug45143_wait", 100));
+
+--echo # Switch to connection 'con_bug45143_2'.
+connection con_bug45143_2;
+--echo # Wait until the above INSERT takes TL_WRITE_ALLOW_WRITE lock on 't1'
+--echo # and then gets blocked on user lock 'lock_bug45143_wait'.
+let $wait_condition= select count(*)= 1 from information_schema.processlist
+ where state= 'User lock' and
+ info='insert into t1 values (get_lock("lock_bug45143_wait", 100))';
+--source include/wait_condition.inc
+--echo # Ensure that upcoming SELECT waits after acquiring TL_WRITE_ALLOW_WRITE
+--echo # lock for the first instance of 't1'.
+set debug_sync='thr_multi_lock_after_thr_lock SIGNAL parked WAIT_FOR go';
+--echo # Sending:
+--send select count(*) > 0 from t1 as a, t1 as b for update;
+
+--echo # Switch to connection 'con_bug45143_3'.
+connection con_bug45143_3;
+--echo # Wait until the above SELECT ... FOR UPDATE is blocked after
+--echo # acquiring lock for the the first instance of 't1'.
+set debug_sync= 'now WAIT_FOR parked';
+--echo # Send LOCK TABLE statement which will try to get TL_WRITE lock on 't1':
+--send lock table t1 write;
+
+--echo # Switch to connection 'default'.
+connection default;
+--echo # Wait until this LOCK TABLES statement starts waiting for table lock.
+let $wait_condition= select count(*)= 1 from information_schema.processlist
+ where state= 'Locked' and
+ info='lock table t1 write';
+--source include/wait_condition.inc
+--echo # Allow SELECT ... FOR UPDATE to resume.
+--echo # Since it already has TL_WRITE_ALLOW_WRITE lock on the first instance
+--echo # of 't1' it should be able to get lock on the second instance without
+--echo # waiting, even although there is another thread which has such lock
+--echo # on this table and also there is a thread waiting for a TL_WRITE on it.
+set debug_sync= 'now SIGNAL go';
+
+--echo # Switch to connection 'con_bug45143_2'.
+connection con_bug45143_2;
+--echo # Reap SELECT ... FOR UPDATE
+--reap
+
+--echo # Switch to connection 'default'.
+connection default;
+--echo # Resume execution of the INSERT statement.
+select release_lock("lock_bug45143_wait");
+
+--echo # Switch to connection 'con_bug45143_1'.
+connection con_bug45143_1;
+--echo # Reap INSERT statement.
+--reap
+
+--echo # Switch to connection 'con_bug45143_3'.
+connection con_bug45143_3;
+--echo # Reap LOCK TABLES statement.
+--reap
+unlock tables;
+
+--echo # Switch to connection 'default'.
+connection default;
+--echo # Do clean-up.
+disconnect con_bug45143_1;
+disconnect con_bug45143_2;
+disconnect con_bug45143_3;
+set debug_sync= 'RESET';
+set @@global.general_log= @old_general_log;
+drop table t1;
+
+
+# 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..4d8c8fc6e74 100644
--- a/mysql-test/t/log_state.test
+++ b/mysql-test/t/log_state.test
@@ -1,16 +1,5 @@
### t/log_state.test ###
#
-# This test suffers from server
-# Bug#38124 "general_log_file" variable silently unset when using expression
-# In short:
-# SET GLOBAL general_log_file = @<whatever>
-# SET GLOBAL slow_query_log = @<whatever>
-# cause that the value of these server system variables is set to default
-# instead of the assigned values. There comes no error message or warning.
-# If this bug is fixed please
-# 1. try this test with "let $fixed_bug38124 = 0;"
-# 2. remove all workarounds if 1. was successful.
-let $fixed_bug38124 = 0;
--source include/not_embedded.inc
--source include/have_csv.inc
@@ -166,16 +155,6 @@ 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;
-if(!$fixed_bug38124)
-{
- --disable_query_log
- let $my_var = `SELECT @old_general_log_file`;
- eval SET @@global.general_log_file = '$my_var';
- let $my_var = `SELECT @old_slow_query_log_file`;
- eval SET @@global.slow_query_log_file = '$my_var';
- --enable_query_log
-}
-
###########################################################################
@@ -278,15 +257,6 @@ SET GLOBAL slow_query_log_file= NULL;
# Reset to initial values in case a setting above was successful.
SET GLOBAL general_log_file= @old_general_log_file;
SET GLOBAL slow_query_log_file= @old_slow_query_log_file;
-if(!$fixed_bug38124)
-{
- --disable_query_log
- let $my_var = `SELECT @old_general_log_file`;
- eval SET @@global.general_log_file = '$my_var';
- let $my_var = `SELECT @old_slow_query_log_file`;
- eval SET @@global.slow_query_log_file = '$my_var';
- --enable_query_log
-}
###########################################################################
@@ -307,15 +277,6 @@ SHOW VARIABLES LIKE '%log_file';
--echo
SET GLOBAL general_log_file = @old_general_log_file;
SET GLOBAL slow_query_log_file = @old_slow_query_log_file;
-if(!$fixed_bug38124)
-{
- --disable_query_log
- let $my_var = `SELECT @old_general_log_file`;
- eval SET @@global.general_log_file = '$my_var';
- let $my_var = `SELECT @old_slow_query_log_file`;
- eval SET @@global.slow_query_log_file = '$my_var';
- --enable_query_log
-}
--echo
--echo # -- End of Bug#32748.
@@ -351,19 +312,43 @@ 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;
-if(!$fixed_bug38124)
-{
- --disable_query_log
- let $my_var = `SELECT @old_general_log_file`;
- eval SET @@global.general_log_file = '$my_var';
- let $my_var = `SELECT @old_slow_query_log_file`;
- eval SET @@global.slow_query_log_file = '$my_var';
- --enable_query_log
-}
-
--echo End of 5.1 tests
+
+###########################################################################
+
+--echo
+--echo # --
+--echo # -- Bug#38124: "general_log_file" variable silently unset when
+--echo # -- using expression
+--echo # --
+
+# Store away the special DEFAULT value so we
+# can compare it later, then try to set the
+# general_log_file using different functions
+# and expressions.
+
+SET GLOBAL general_log_file = DEFAULT;
+SELECT @@general_log_file INTO @my_glf;
+
+SET GLOBAL general_log_file = 'BUG38124.LOG';
+SELECT @@general_log_file;
+
+SET GLOBAL general_log_file = concat('BUG38124-2.LOG');
+SELECT @@general_log_file;
+
+SET GLOBAL general_log_file = substr('BUG38124-2.LOG',3,6);
+SELECT @@general_log_file;
+
+SET GLOBAL general_log_file = DEFAULT;
+SELECT @@general_log_file = @my_glf;
+
+
+## Reset to initial values
+SET GLOBAL general_log_file = @old_general_log_file;
+
+
--enable_ps_protocol
#
@@ -380,17 +365,7 @@ 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;
-if(!$fixed_bug38124)
-{
- --disable_query_log
- let $my_var = `SELECT @old_general_log_file`;
- eval SET @@global.general_log_file = '$my_var';
- let $my_var = `SELECT @old_slow_query_log_file`;
- eval SET @@global.slow_query_log_file = '$my_var';
- --enable_query_log
-}
-
-# Remove the log files that was created in the "default location"
+
+# Remove the log file that was created in the "default location"
# i.e var/run
---remove_file $MYSQLTEST_VARDIR/run/mysqld.log
--remove_file $MYSQLTEST_VARDIR/tmp/log.master
diff --git a/mysql-test/t/log_state_bug33693-master.opt b/mysql-test/t/log_state_bug33693-master.opt
new file mode 100644
index 00000000000..9f4ae1a0c8f
--- /dev/null
+++ b/mysql-test/t/log_state_bug33693-master.opt
@@ -0,0 +1 @@
+--pid-file=$MYSQLTEST_VARDIR/run/mysqld.1.pid --log=
diff --git a/mysql-test/t/log_state_bug33693.test b/mysql-test/t/log_state_bug33693.test
new file mode 100644
index 00000000000..d67b28fc3e9
--- /dev/null
+++ b/mysql-test/t/log_state_bug33693.test
@@ -0,0 +1,18 @@
+### t/log_state_bug33693.test
+#
+# Regression test for bug #33693
+# "general log name and location depend on PID
+# file, not on predefined values"
+#
+# The server is started with a hard-coded
+# PID file in the $MYSQLTEST_VARDIR/run
+# directory, and an unspecified general log
+# file name.
+#
+# The correct result should show the log file to
+# rest in the database directory. Unfixed, the
+# log file will be in the same directory as the
+# PID.
+
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+--eval SELECT INSTR(@@general_log_file, '$MYSQLTEST_VARDIR/run');
diff --git a/mysql-test/t/log_tables.test b/mysql-test/t/log_tables.test
index 076f2e8bc3b..5275b8e7db3 100644
--- a/mysql-test/t/log_tables.test
+++ b/mysql-test/t/log_tables.test
@@ -258,14 +258,21 @@ set global slow_query_log='OFF';
# check that alter table doesn't work for other engines
set @save_storage_engine= @@session.storage_engine;
set storage_engine= MEMORY;
+# After fixing bug#35765 the error behaivor changed:
+# If compiled in/enabled ER_UNSUPORTED_LOG_ENGINE
+# If not (i.e. not existant) it will show a warning
+# and use the current one.
+alter table mysql.slow_log engine=NonExistentEngine;
--error ER_UNSUPORTED_LOG_ENGINE
-alter table mysql.slow_log engine=ndb;
---error ER_UNSUPORTED_LOG_ENGINE
-alter table mysql.slow_log engine=innodb;
---error ER_UNSUPORTED_LOG_ENGINE
-alter table mysql.slow_log engine=archive;
---error ER_UNSUPORTED_LOG_ENGINE
-alter table mysql.slow_log engine=blackhole;
+alter table mysql.slow_log engine=memory;
+#--error ER_UNSUPORTED_LOG_ENGINE
+#alter table mysql.slow_log engine=ndb;
+#--error ER_UNSUPORTED_LOG_ENGINE
+#alter table mysql.slow_log engine=innodb;
+#--error ER_UNSUPORTED_LOG_ENGINE
+#alter table mysql.slow_log engine=archive;
+#--error ER_UNSUPORTED_LOG_ENGINE
+#alter table mysql.slow_log engine=blackhole;
set storage_engine= @save_storage_engine;
drop table mysql.slow_log;
diff --git a/mysql-test/t/lowercase_table2.test b/mysql-test/t/lowercase_table2.test
index 521df01cc9b..92add60616a 100644
--- a/mysql-test/t/lowercase_table2.test
+++ b/mysql-test/t/lowercase_table2.test
@@ -150,3 +150,75 @@ select TABLE_SCHEMA,TABLE_NAME FROM information_schema.TABLES
where TABLE_SCHEMA ='mysqltest_LC2';
use test;
drop database mysqltest_LC2;
+
+--echo # End of 5.1 tests
+
+
+--echo #
+--echo # Test for bug #44738 "fill_schema_table_from_frm() opens tables without
+--echo # lowercasing table name". Due to not properly normalizing table names
+--echo # in lower_case_table_names modes in this function queries to I_S which
+--echo # were executed through it left entries with incorrect key in table
+--echo # definition cache. As result further queries to I_S that used this
+--echo # function produced stale results in cases when table definition was
+--echo # changed by a DDL statement. Also combination of this issue and a
+--echo # similar problem in CREATE TABLE (it also has peeked into table
+--echo # definition cache using non-normalized key) led to spurious
+--echo # ER_TABLE_EXISTS_ERROR errors when one tried to create table with the
+--echo # same name as a previously existing but dropped table.
+--echo #
+--disable_warnings
+drop database if exists mysqltest_UPPERCASE;
+drop table if exists t_bug44738_UPPERCASE;
+--enable_warnings
+create database mysqltest_UPPERCASE;
+use mysqltest_UPPERCASE;
+create table t_bug44738_UPPERCASE (i int) comment='Old comment';
+create table t_bug44738_lowercase (i int) comment='Old comment';
+select table_schema, table_name, table_comment from information_schema.tables
+ where table_schema like 'mysqltest_%' and table_name like 't_bug44738_%'
+ order by table_name;
+alter table t_bug44738_UPPERCASE comment='New comment';
+alter table t_bug44738_lowercase comment='New comment';
+--echo # There should be no stale entries in TDC for our tables after the
+--echo # above ALTER TABLE statements so new version of comments should be
+--echo # returned by the below query to I_S.
+select table_schema, table_name, table_comment from information_schema.tables
+ where table_schema like 'mysqltest_%' and table_name like 't_bug44738_%'
+ order by table_name;
+drop database mysqltest_UPPERCASE;
+use test;
+
+--echo # Let us check that the original test case which led to discovery
+--echo # of this problem also works.
+create table t_bug44738_UPPERCASE (i int);
+select table_schema, table_name, table_comment from information_schema.tables
+ where table_schema = 'test' and table_name like 't_bug44738_%';
+drop table t_bug44738_UPPERCASE;
+--echo # After the above DROP TABLE there are no entries in TDC which correspond
+--echo # to our table and therefore the below statement should succeed.
+create table t_bug44738_UPPERCASE (i int);
+drop table t_bug44738_UPPERCASE;
+
+--echo # Finally, let us check that another issue which was exposed by
+--echo # the original test case is solved. I.e. that fuse in CREATE TABLE
+--echo # which ensures that table is not created if there is an entry for
+--echo # it in TDC even though it was removed from disk uses normalized
+--echo # version of the table name.
+create table t_bug44738_UPPERCASE (i int) engine = myisam;
+--echo # Load table definition in TDC.
+select table_schema, table_name, table_comment from information_schema.tables
+ where table_schema = 'test' and table_name like 't_bug44738_%';
+--echo # Simulate manual removal of the table.
+let $MYSQLD_DATADIR= `select @@datadir`;
+--remove_file $MYSQLD_DATADIR/test/t_bug44738_UPPERCASE.frm
+--remove_file $MYSQLD_DATADIR/test/t_bug44738_UPPERCASE.MYD
+--remove_file $MYSQLD_DATADIR/test/t_bug44738_UPPERCASE.MYI
+--echo # After manual removal of table still there should be an entry for table
+--echo # in TDC so attempt to create table with the same name should fail.
+--error ER_TABLE_EXISTS_ERROR
+create table t_bug44738_UPPERCASE (i int);
+--echo # And should succeed after FLUSH TABLES.
+flush tables;
+create table t_bug44738_UPPERCASE (i int);
+drop table t_bug44738_UPPERCASE;
diff --git a/mysql-test/t/merge.test b/mysql-test/t/merge.test
index 015ae28c155..63ad5a1e97c 100644
--- a/mysql-test/t/merge.test
+++ b/mysql-test/t/merge.test
@@ -1634,3 +1634,63 @@ DROP TRIGGER tr1;
DROP TABLE t1, t2, t3;
--echo End of 5.1 tests
+
+--echo #
+--echo # An additional test case for Bug#27430 Crash in subquery code
+--echo # when in PS and table DDL changed after PREPARE
+--echo #
+--echo # Test merge table with too many merge children.
+--echo #
+--disable_warnings
+drop table if exists t_parent;
+--enable_warnings
+set @save_table_definition_cache=@@global.table_definition_cache;
+--echo #
+--echo # Set @@global.table_definition_cache to minimum
+--echo #
+set @@global.table_definition_cache=400;
+set @a=null;
+let $1 = 400;
+--echo #
+--echo # Create 400 merge children
+--echo #
+--disable_query_log
+while ($1)
+{
+--disable_warnings
+ eval drop table if exists t$1;
+--enable_warnings
+ eval create table t$1 (a int) engine=myisam;
+ eval set @a=ifnull(concat(@a, ", ", "t$1"), "t$1");
+ dec $1;
+}
+--enable_query_log
+set @a=concat("create table t_parent (a int) union(", @a,
+ ") insert_method=first engine=mrg_myisam");
+prepare stmt from @a;
+execute stmt;
+prepare stmt from "select * from t_parent";
+--error ER_NEED_REPREPARE
+execute stmt;
+--error ER_NEED_REPREPARE
+execute stmt;
+--error ER_NEED_REPREPARE
+execute stmt;
+deallocate prepare stmt;
+--echo #
+--echo # Create merge parent
+--echo #
+
+--echo #
+--echo # Cleanup
+--echo #
+let $1 = 400;
+--disable_query_log
+while ($1)
+{
+ eval drop table t$1;
+ dec $1;
+}
+--enable_query_log
+drop table t_parent;
+set @@global.table_definition_cache=@save_table_definition_cache;
diff --git a/mysql-test/t/metadata.test b/mysql-test/t/metadata.test
index a10767579fb..a42dcfd618d 100644
--- a/mysql-test/t/metadata.test
+++ b/mysql-test/t/metadata.test
@@ -130,3 +130,60 @@ SELECT COALESCE(d, d), IFNULL(d, d), IF(i, d, d),
DROP TABLE t1;
--echo End of 5.0 tests
+
+# Verify that column metadata is correct for all possible data types.
+# Originally about BUG#42980 "Client doesn't set NUM_FLAG for DECIMAL"
+
+create table t1(
+# numeric types
+bool_col bool,
+boolean_col boolean,
+bit_col bit(5),
+tiny tinyint,
+tiny_uns tinyint unsigned,
+small smallint,
+small_uns smallint unsigned,
+medium mediumint,
+medium_uns mediumint unsigned,
+int_col int,
+int_col_uns int unsigned,
+big bigint,
+big_uns bigint unsigned,
+decimal_col decimal(10,5),
+# synonyms of DECIMAL
+numeric_col numeric(10),
+fixed_col fixed(10),
+dec_col dec(10),
+decimal_col_uns decimal(10,5) unsigned,
+fcol float,
+fcol_uns float unsigned,
+dcol double,
+double_precision_col double precision,
+dcol_uns double unsigned,
+# date/time types
+date_col date,
+time_col time,
+timestamp_col timestamp,
+year_col year,
+datetime_col datetime,
+# string types
+char_col char(5),
+varchar_col varchar(10),
+binary_col binary(10),
+varbinary_col varbinary(10),
+tinyblob_col tinyblob,
+blob_col blob,
+mediumblob_col mediumblob,
+longblob_col longblob,
+text_col text,
+mediumtext_col mediumtext,
+longtext_col longtext,
+enum_col enum("A","B","C"),
+set_col set("F","E","D")
+);
+
+--enable_metadata
+select * from t1;
+--disable_metadata
+
+drop table t1;
diff --git a/mysql-test/t/myisam.test b/mysql-test/t/myisam.test
index 351027ab246..8d9e98be8ea 100644
--- a/mysql-test/t/myisam.test
+++ b/mysql-test/t/myisam.test
@@ -503,6 +503,7 @@ insert into t2 values(2,0);
disconnect root;
connection default;
select straight_join * from t1,t2 force index (primary) where t1.a=t2.a;
+unlock tables;
drop table t1,t2;
#
# Full key.
@@ -520,6 +521,7 @@ disconnect con1;
connection default;
SELECT t1.c1 AS t1c1, t2.c1 AS t2c1 FROM t1, t2
WHERE t1.c1 = t2.c1 HAVING t1c1 != t2c1;
+UNLOCK TABLES;
DROP TABLE t1,t2;
# End of 4.0 tests
diff --git a/mysql-test/t/myisam_crash_before_flush_keys.test b/mysql-test/t/myisam_crash_before_flush_keys.test
index 1860ddd27e3..0b0491098cd 100644
--- a/mysql-test/t/myisam_crash_before_flush_keys.test
+++ b/mysql-test/t/myisam_crash_before_flush_keys.test
@@ -8,6 +8,9 @@
--echo # Binary must be compiled with debug for crash to occur
--source include/have_debug.inc
+call mtr.add_suppression("Got an error from thread_id=.*ha_myisam.cc:");
+call mtr.add_suppression("MySQL thread id .*, query id .* localhost.*root Checking table");
+
let $MYSQLD_DATADIR= `select @@datadir`;
SET GLOBAL delay_key_write=ALL;
CREATE TABLE t1(a INT,
diff --git a/mysql-test/t/myisampack.test b/mysql-test/t/myisampack.test
index 9d27ed53254..463aa559de2 100644
--- a/mysql-test/t/myisampack.test
+++ b/mysql-test/t/myisampack.test
@@ -1,3 +1,6 @@
+-- disable_warnings
+DROP TABLE IF EXISTS t1,t2,t3;
+-- enable_warnings
#
# BUG#31277 - myisamchk --unpack corrupts a table
#
@@ -105,5 +108,116 @@ let $MYSQLD_DATADIR= `select @@datadir`;
--exec $MYISAMCHK -srq $MYSQLD_DATADIR/mysql_db1/t1
SELECT COUNT(*) FROM mysql_db1.t1 WHERE c2 < 5;
#
+# Bug#36573 myisampack --join does not create destination table .frm file
+#
+#############################################################################
+# Testcase myisampack.1: Positive test for myisampack --join
+# To test myisampack --join operation creates .frm file
+# If it creates .frm file, we will be able to access from mysql
+# server
+#############################################################################
+--echo # ===== myisampack.1 =====
+CREATE TABLE t1(a INT);
+INSERT INTO t1 VALUES(20);
+
+let $i=9;
+--disable_query_log
+while ($i)
+{
+ INSERT INTO t1 SELECT a from t1;
+ dec $i;
+}
+--enable_query_log
+
+CREATE TABLE t2(a INT);
+INSERT INTO t2 VALUES(40);
+
+let $i=9;
+--disable_query_log
+while ($i)
+{
+ INSERT INTO t2 SELECT a from t2;
+ dec $i;
+}
+--enable_query_log
+
+FLUSH TABLE t1,t2;
+--exec $MYISAMPACK --join=$MYSQLD_DATADIR/test/t3 $MYSQLD_DATADIR/test/t1 $MYSQLD_DATADIR/test/t2 2>&1
+
+--echo #If the myisampack --join operation is successful, we have table t3(.frm)
+--echo #so we should be able to query about the table from server.
+SELECT COUNT(a) FROM t3;
+
+#############################################################################
+# Testcase myisampack.2: 2nd Positive test for myisampack --join
+# Test myisampack join operation with an existing destination frm file.
+# It should finish the join operation successfully
+#############################################################################
+--echo # ===== myisampack.2 =====
+FLUSH TABLE t3;
+--remove_file $MYSQLD_DATADIR/test/t3.MYI
+--remove_file $MYSQLD_DATADIR/test/t3.MYD
+--exec $MYISAMPACK --join=$MYSQLD_DATADIR/test/t3 $MYSQLD_DATADIR/test/t1 $MYSQLD_DATADIR/test/t2 2>&1
+--echo #Tests the myisampack join operation with an existing destination .frm file,
+--echo #the command should return correct exit status(0) and
+--echo #we should be able to query the table.
+
+SELECT COUNT(a) FROM t3;
+
+#############################################################################
+# Testcase myisampack.3: 3rd Positive test for myisampack --join
+# Test myisampack join operation without frm file for first table and second
+# table. It should finish the join operation successfully
+#############################################################################
+--echo # ===== myisampack.3 =====
+--copy_file $MYSQLD_DATADIR/test/t1.frm $MYSQLTEST_VARDIR/tmp/bug36573.t1.frm
+--copy_file $MYSQLD_DATADIR/test/t2.frm $MYSQLTEST_VARDIR/tmp/bug36573.t2.frm
+--remove_file $MYSQLD_DATADIR/test/t1.frm
+--remove_file $MYSQLD_DATADIR/test/t2.frm
+
+DROP TABLE t3;
+--exec $MYISAMPACK --join=$MYSQLD_DATADIR/test/t3 $MYSQLD_DATADIR/test/t1 $MYSQLD_DATADIR/test/t2 2>&1
+--echo #Tests the myisampack join operation without frm file for the first and second table
+--echo #No frm file is generated in this and we shouldn't be able to access the newly
+--echo #created table
+
+--error ER_NO_SUCH_TABLE
+SELECT COUNT(a) FROM t3;
+
+--copy_file $MYSQLTEST_VARDIR/tmp/bug36573.t1.frm $MYSQLD_DATADIR/test/t1.frm
+--copy_file $MYSQLTEST_VARDIR/tmp/bug36573.t2.frm $MYSQLD_DATADIR/test/t2.frm
+--copy_file $MYSQLTEST_VARDIR/tmp/bug36573.t1.frm $MYSQLD_DATADIR/test/t3.frm
+--remove_file $MYSQLTEST_VARDIR/tmp/bug36573.t1.frm
+--remove_file $MYSQLTEST_VARDIR/tmp/bug36573.t2.frm
+
+#############################################################################
+# Testcase myisampack.4: Negative test for myisampack --join
+# Test myisampack join operation with an existing .MYI,.MDI,.frm files
+# the test should fail
+#############################################################################
+--echo # ===== myisampack.4 =====
+--echo #Tests the myisampack join operation with an existing destination .frm,.MYI,.MDI
+--echo #the command should fail with exit status 2
+#
+# Note: Use of regular expressions in this file is for output printed in result file
+# The main purpose of this regular expression is to supress the filenames for
+# error messages produced so that we can create a generic result file
+#
+#1. /.*myisampack(\.exe)?: Can't create\/write to file .*\(/myisampack: Can't create\/write to file (/
+# Replace everything before "myisampack" or "myisampack.exe" and followed by
+# ": Can't create\/write to file " until the first open paranthesis , with
+# "myisampack: Can't create\/write to file ("
+#
+#2. /Aborted: .*is/Aborted: file is/
+# Replace everything after starting with "Aborted: " until ending with "is" with
+# "Aborted: file is/
+#
+--replace_regex /.*myisampack(\.exe)?: Can't create\/write to file .*\(/myisampack: Can't create\/write to file (/ /Aborted: .*is/Aborted: file is/
+--error 2
+--exec $MYISAMPACK --join=$MYSQLD_DATADIR/test/t3 $MYSQLD_DATADIR/test/t1 $MYSQLD_DATADIR/test/t2 2>&1
+
+DROP TABLE t1,t2,t3;
+
DROP TABLE mysql_db1.t1;
DROP DATABASE mysql_db1;
+
diff --git a/mysql-test/t/mysql-bug45236-master.opt b/mysql-test/t/mysql-bug45236-master.opt
new file mode 100644
index 00000000000..fc1887bca47
--- /dev/null
+++ b/mysql-test/t/mysql-bug45236-master.opt
@@ -0,0 +1 @@
+--loose-skip-safemalloc
diff --git a/mysql-test/t/mysql.test b/mysql-test/t/mysql.test
index d32d0996490..3a2084aef08 100644
--- a/mysql-test/t/mysql.test
+++ b/mysql-test/t/mysql.test
@@ -367,6 +367,14 @@ remove_file $MYSQLTEST_VARDIR/tmp/bug31060.sql;
--enable_query_log
#
+# Bug#26780: patch to add auto vertical output option to the cli.
+#
+# Make this wide enough that it will wrap almost everywhere.
+--exec $MYSQL test --auto-vertical-output --table -e "SELECT 1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0;"
+# Too short to wrap.
+--exec $MYSQL test --auto-vertical-output --table -e "SELECT 1;"
+
+#
# Bug #25146: Some warnings/errors not shown when using --show-warnings
#
@@ -383,6 +391,11 @@ remove_file $MYSQLTEST_VARDIR/tmp/bug31060.sql;
drop tables t1, t2;
#
+# mysql client with 'init-command' option
+#
+--exec $MYSQL --init-command="SET lc_messages=ru_RU" -e "SHOW VARIABLES LIKE 'lc_messages';"
+
+#
# Bug #27884: mysql --html does not quote HTML special characters in output
#
--write_file $MYSQLTEST_VARDIR/tmp/bug27884.sql
diff --git a/mysql-test/t/mysql_locale_posix.test b/mysql-test/t/mysql_locale_posix.test
new file mode 100644
index 00000000000..c047b7b1ae9
--- /dev/null
+++ b/mysql-test/t/mysql_locale_posix.test
@@ -0,0 +1,205 @@
+--source include/not_windows.inc
+--source include/have_case_sensitive_file_system.inc
+
+
+#
+# Note, please keep this file UTF-8 compatible.
+# After editing, make sure that
+# "file mysql_locale_posix.test"
+# says
+# "UTF-8 Unicode text"
+# or
+# "UTF-8 Unicode English text"
+#
+
+
+#
+# Check if we're running on a POSIX-locale machine
+#
+
+--disable_query_log
+--exec locale -a > $MYSQLTEST_VARDIR/tmp/locale_a.output 2>/dev/null || true
+SET @file=REPLACE(LOAD_FILE('../../tmp/locale_a.output'), '-', '');
+#
+# Note, file content must be case sensitive.
+# Some platforms are case sensitive regarding to locale name.
+# For example, on HP-UX
+# LANG=cs_CZ.iso88592 - works fine
+# LANG=cs_CZ.ISO88592 - does not work
+#
+--remove_file $MYSQLTEST_VARDIR/tmp/locale_a.output
+
+if (`SELECT (IFNULL(@file,'') NOT LIKE '%\nde_DE.iso88591\n%')`)
+{
+ Skip Need POSIX locale de_DE.iso88591;
+}
+
+if (`SELECT (IFNULL(@file,'') NOT LIKE '%\nru_RU.koi8r\n%')`)
+{
+ Skip Need POSIX locale ru_RU.koi8r;
+}
+
+if (`SELECT (IFNULL(@file,'') NOT LIKE '%\ncs_CZ.iso88592\n%')`)
+{
+ Skip Need POSIX locale cs_CZ.iso88592;
+}
+
+if (`SELECT (IFNULL(@file,'') NOT LIKE '%\nen_US.utf8\n%')`)
+{
+ Skip Need POSIX locale en_US.utf8;
+}
+--enable_query_log
+
+
+
+SET NAMES utf8;
+
+--disable_warnings
+DROP DATABASE IF EXISTS `ó`;
+DROP DATABASE IF EXISTS `Ăł`;
+DROP DATABASE IF EXISTS `цÐ`;
+DROP DATABASE IF EXISTS `ó`;
+--enable_warnings
+
+#
+# Test some of the OS-to-MySQL character set mappings
+#
+
+
+# {"ANSI_X3.4-1968", "ascii", my_cs_exact},
+# {"ansi1251", "cp1251", my_cs_exact},
+# {"armscii8", "armscii8", my_cs_exact},
+# {"ASCII", "ascii", my_cs_exact},
+# {"Big5", "big5", my_cs_exact},
+# {"cp1251", "cp1251", my_cs_exact},
+# {"cp1255", "cp1255", my_cs_exact},
+# {"CP866", "cp866", my_cs_exact},
+# {"eucCN", "gb2312", my_cs_exact},
+# {"eucJP", "ujis", my_cs_exact},
+# {"eucKR", "euckr", my_cs_exact},
+#
+# {"gb18030", "gb18030", my_cs_exact},
+#
+# {"gb2312", "gb2312", my_cs_exact},
+# {"gbk", "gbk", my_cs_exact},
+# {"georgianps", "geostd8", my_cs_exact},
+# {"IBM-1252", "cp1252", my_cs_exact},
+#
+# {"iso88591", "latin1", my_cs_approx},
+# {"ISO_8859-1", "latin1", my_cs_approx},
+# {"ISO8859-1", "latin1", my_cs_approx},
+# {"ISO-8859-1", "latin1", my_cs_approx},
+
+
+#
+# _utf8 0xC3B3 = LATIN SMALL LETTER O WITH ACUTE
+# _latin1 0xC3 = LATIN CAPITAL LETTER A WITH TILDE
+# _latin1 0xB3 = SUPERSCRIPT THREE
+#
+--echo
+--echo iso88591
+--exec LC_ALL=fi_FI.iso88591 $MYSQL --default-character-set=auto test -e "SELECT @@character_set_client"
+--exec LC_ALL=fi_FI.iso88591 $MYSQLADMIN -uroot -S $MASTER_MYSOCK -P $MASTER_MYPORT --default-character-set=auto create ó
+--exec LC_ALL=fi_FI.iso88591 $MYSQL_SHOW --default-character-set=auto ó
+--exec LC_ALL=fi_FI.iso88591 $MYSQL_CHECK --default-character-set=auto "ó"
+
+
+# {"iso885913", "latin7", my_cs_exact},
+# {"ISO_8859-13", "latin7", my_cs_exact},
+# {"ISO8859-13", "latin7", my_cs_exact},
+# {"ISO-8859-13", "latin7", my_cs_exact},
+#
+# {"iso885915", "latin9", my_cs_exact},
+# {"ISO_8859-15", "latin9", my_cs_exact},
+# {"ISO8859-15", "latin9", my_cs_exact},
+# {"ISO-8859-15", "latin9", my_cs_exact},
+#
+# {"iso88592", "latin2", my_cs_exact},
+# {"ISO_8859-2", "latin2", my_cs_exact},
+# {"ISO8859-2", "latin2", my_cs_exact},
+# {"ISO-8859-2", "latin2", my_cs_exact},
+#
+
+
+#
+# _utf8 0xC3B3 = LATIN SMALL LETTER O WITH ACUTE
+# _latin2 0xC3 = LATIN CAPITAL LETTER A WITH BREVE
+# _latin2 0xB3 = LATIN SMALL LETTER L WITH STROKE
+#
+--echo
+--echo iso88592
+--exec LC_ALL=cs_CZ.iso88592 $MYSQL --character-sets-dir=$MYSQL_SHAREDIR/charsets --default-character-set=auto test -e "SELECT @@character_set_client"
+--exec LC_ALL=cs_CZ.iso88592 $MYSQLADMIN --character-sets-dir=$MYSQL_SHAREDIR/charsets -uroot -S $MASTER_MYSOCK -P $MASTER_MYPORT --default-character-set=auto create ó
+--exec LC_ALL=cs_CZ.iso88592 $MYSQL_SHOW --character-sets-dir=$MYSQL_SHAREDIR/charsets --default-character-set=auto ó
+--exec LC_ALL=cs_CZ.iso88592 $MYSQL_CHECK --character-sets-dir=$MYSQL_SHAREDIR/charsets--default-character-set=auto "ó"
+
+
+# {"iso88597", "greek", my_cs_exact},
+# {"ISO_8859-7", "greek", my_cs_exact},
+# {"ISO8859-7", "greek", my_cs_exact},
+# {"ISO-8859-7", "greek", my_cs_exact},
+#
+# {"iso88598", "hebrew", my_cs_exact},
+# {"ISO_8859-8", "hebrew", my_cs_exact},
+# {"ISO8859-8", "hebrew", my_cs_exact},
+# {"ISO-8859-8", "hebrew", my_cs_exact},
+#
+# {"iso88599", "latin5", my_cs_exact},
+# {"ISO_8859-9", "latin5", my_cs_exact},
+# {"ISO8859-9", "latin5", my_cs_exact},
+# {"ISO-8859-9", "latin5", my_cs_exact},
+#
+# {"koi8r", "koi8r", my_cs_exact},
+# {"KOI8-R", "koi8r", my_cs_exact},
+# {"koi8u", "koi8u", my_cs_exact},
+# {"KOI8-U", "koi8u", my_cs_exact},
+#
+
+#
+# _utf8 0xC3B3 = LATIN SMALL LETTER O WITH ACUTE
+# _koi8r 0xC3 = CYRILLIC SMALL LETTER TSE
+# _koi8r 0xB3 = CYRILLIC CAPITAL LETTER IO
+#
+
+--echo
+--echo koi8r
+--exec LC_ALL=ru_RU.koi8r $MYSQL --character-sets-dir=$MYSQL_SHAREDIR/charsets --default-character-set=auto test -e "SELECT @@character_set_client"
+--exec LC_ALL=ru_RU.koi8r $MYSQLADMIN --character-sets-dir=$MYSQL_SHAREDIR/charsets -uroot -S $MASTER_MYSOCK -P $MASTER_MYPORT --default-character-set=auto create ó
+--exec LC_ALL=ru_RU.koi8r $MYSQL_SHOW --character-sets-dir=$MYSQL_SHAREDIR/charsets --default-character-set=auto ó
+--exec LC_ALL=ru_RU.koi8r $MYSQL_CHECK --character-sets-dir=$MYSQL_SHAREDIR/charsets --default-character-set=auto "ó"
+
+
+# {"Shift_JIS", "sjis", my_cs_exact},
+# {"SJIS", "sjis", my_cs_exact},
+#
+# {"tis620", "tis620", my_cs_exact},
+#
+# {"ujis", "ujis", my_cs_exact},
+#
+# {"US-ASCII", "ascii", my_cs_exact},
+#
+# {"utf8", "utf8", my_cs_exact},
+# {"utf-8", "utf8", my_cs_exact},
+
+--echo
+--echo utf8
+--exec LC_ALL=en_US.utf8 $MYSQL --default-character-set=auto test -e "SELECT @@character_set_client"
+--exec LC_ALL=en_US.utf8 $MYSQLADMIN -uroot -S $MASTER_MYSOCK -P $MASTER_MYPORT --default-character-set=auto create ó
+--exec LC_ALL=en_US.utf8 $MYSQL_SHOW --default-character-set=auto ó
+--exec LC_ALL=en_US.utf8 $MYSQL_SHOW --default-character-set=auto "ó"
+--exec LC_ALL=en_US.utf8 $MYSQL_SHOW --default-character-set=auto "Ăł"
+--exec LC_ALL=en_US.utf8 $MYSQL_SHOW --default-character-set=auto "цÐ"
+--exec LC_ALL=en_US.utf8 $MYSQL_CHECK --default-character-set=auto ó
+--exec LC_ALL=en_US.utf8 $MYSQL_CHECK --default-character-set=auto "ó"
+--exec LC_ALL=en_US.utf8 $MYSQL_CHECK --default-character-set=auto "Ăł"
+--exec LC_ALL=en_US.utf8 $MYSQL_CHECK --default-character-set=auto "цÐ"
+
+SHOW DATABASES LIKE 'ó';
+SHOW DATABASES LIKE 'Ăł';
+SHOW DATABASES LIKE 'цÐ';
+SHOW DATABASES LIKE 'ó';
+
+DROP DATABASE `ó`;
+DROP DATABASE `Ăł`;
+DROP DATABASE `цÐ`;
+DROP DATABASE `ó`;
diff --git a/mysql-test/t/mysql_upgrade.test b/mysql-test/t/mysql_upgrade.test
index 24a1d2e1b5d..3ed1526f7ca 100644
--- a/mysql-test/t/mysql_upgrade.test
+++ b/mysql-test/t/mysql_upgrade.test
@@ -90,7 +90,6 @@ set GLOBAL sql_mode='STRICT_ALL_TABLES,ANSI_QUOTES,NO_ZERO_DATE';
--exec $MYSQL_UPGRADE --skip-verbose --force 2>&1
eval set GLOBAL sql_mode=default;
-
--echo #
--echo # Bug #41569 mysql_upgrade (ver 5.1) add 3 fields to mysql.proc table
--echo # but does not set values.
@@ -108,3 +107,10 @@ CALL testproc();
DROP PROCEDURE testproc;
--cat_file $MYSQLTEST_VARDIR/tmp/41569.txt
--remove_file $MYSQLTEST_VARDIR/tmp/41569.txt
+
+#
+# Test the --upgrade-system-tables option
+#
+--replace_result $MYSQLTEST_VARDIR var
+--exec $MYSQL_UPGRADE --skip-verbose --upgrade-system-tables
+
diff --git a/mysql-test/t/mysqladmin.test b/mysql-test/t/mysqladmin.test
index 839ecf00b60..eb59e60eefe 100644
--- a/mysql-test/t/mysqladmin.test
+++ b/mysql-test/t/mysqladmin.test
@@ -4,7 +4,7 @@
# Test "mysqladmin ping"
#
---exec $MYSQLADMIN --no-defaults -S $MASTER_MYSOCK -P $MASTER_MYPORT -u root --password= ping 2>&1
+--exec $MYSQLADMIN --no-defaults --default-character-set=latin1 -S $MASTER_MYSOCK -P $MASTER_MYPORT -u root --password= ping 2>&1
#
@@ -19,7 +19,7 @@ EOF
--replace_regex /.*mysqladmin.*: unknown/mysqladmin: unknown/
--error 7
---exec $MYSQLADMIN --defaults-file=$MYSQLTEST_VARDIR/tmp/bug10608.cnf -S $MASTER_MYSOCK -P $MASTER_MYPORT -u root --password= ping 2>&1
+--exec $MYSQLADMIN --defaults-file=$MYSQLTEST_VARDIR/tmp/bug10608.cnf --default-character-set=latin1 -S $MASTER_MYSOCK -P $MASTER_MYPORT -u root --password= ping 2>&1
remove_file $MYSQLTEST_VARDIR/tmp/bug10608.cnf;
# When mysqladmin finds "loose-database" in .cnf file it shall print
@@ -30,6 +30,6 @@ loose-database=db2
EOF
--replace_regex /Warning: .*mysqladmin.*: unknown/Warning: mysqladmin: unknown/
---exec $MYSQLADMIN --defaults-file=$MYSQLTEST_VARDIR/tmp/bug10608.cnf -S $MASTER_MYSOCK -P $MASTER_MYPORT -u root --password= ping 2>&1
+--exec $MYSQLADMIN --defaults-file=$MYSQLTEST_VARDIR/tmp/bug10608.cnf --default-character-set=latin1 -S $MASTER_MYSOCK -P $MASTER_MYPORT -u root --password= ping 2>&1
remove_file $MYSQLTEST_VARDIR/tmp/bug10608.cnf;
diff --git a/mysql-test/t/mysqlbinlog.test b/mysql-test/t/mysqlbinlog.test
index 687ad62b17c..55593bed124 100644
--- a/mysql-test/t/mysqlbinlog.test
+++ b/mysql-test/t/mysqlbinlog.test
@@ -71,8 +71,7 @@ select "--- --position --" as "";
--enable_query_log
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--replace_regex /SQL_LOAD_MB-[0-9]-[0-9]/SQL_LOAD_MB-#-#/
---exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --position=332 $MYSQLD_DATADIR/master-bin.000002
-
+--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --position=1074 $MYSQLD_DATADIR/master-bin.000002
# These are tests for remote binlog.
# They should return the same as previous test.
@@ -108,7 +107,8 @@ select "--- --position --" as "";
--enable_query_log
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--replace_regex /SQL_LOAD_MB-[0-9]-[0-9]/SQL_LOAD_MB-#-#/
---exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --read-from-remote-server --position=332 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000002
+--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --read-from-remote-server --position=1074 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000002
+
# Bug#7853 mysqlbinlog does not accept input from stdin
--disable_query_log
@@ -251,7 +251,7 @@ eval LOAD DATA LOCAL INFILE '$MYSQLTEST_VARDIR/tmp/mysqlbinlog_tmp.dat'
--echo The bug being tested was that 'Query' lines were not preceded by '#'
--echo If the line is in the table, it had to have been preceded by a '#'
--echo
-SELECT COUNT(*) AS `BUG#28293_expect_1` FROM patch WHERE a LIKE '%Query%';
+SELECT COUNT(*) AS `BUG#28293_expect_3` FROM patch WHERE a LIKE '%Query%';
DROP TABLE patch;
#
@@ -263,7 +263,7 @@ INSERT INTO t1 VALUES(connection_id());
let $a= `SELECT a FROM t1`;
FLUSH LOGS;
let $outfile= $MYSQLTEST_VARDIR/tmp/bug29928.sql;
---exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000014 > $outfile
+--exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000015 > $outfile
DROP TABLE t1;
connect (con1, localhost, root, , test);
connection con1;
@@ -287,8 +287,8 @@ exec $MYSQL_BINLOG $MYSQL_TEST_DIR/std_data/corrupt-relay-bin.000624 > $MYSQLTES
#
FLUSH LOGS;
--error 1
---exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000016 >/dev/null 2>/dev/null
---exec $MYSQL_BINLOG --force-if-open $MYSQLD_DATADIR/master-bin.000016 >/dev/null 2>/dev/null
+--exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000017 >/dev/null 2>/dev/null
+--exec $MYSQL_BINLOG --force-if-open $MYSQLD_DATADIR/master-bin.000017 >/dev/null 2>/dev/null
--echo Bug#31611 Security risk with BINLOG statement
@@ -303,8 +303,8 @@ CREATE TABLE t1 (a INT, b CHAR(64));
flush logs;
INSERT INTO t1 VALUES (1,USER());
flush logs;
-echo mysqlbinlog var/log/master-bin.000017 > var/tmp/bug31611.sql;
-exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000017 > $MYSQLTEST_VARDIR/tmp/bug31611.sql;
+echo mysqlbinlog var/log/master-bin.000018 > var/tmp/bug31611.sql;
+exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000018 > $MYSQLTEST_VARDIR/tmp/bug31611.sql;
connect (unsecure,localhost,untrusted,,mysqltest1);
echo mysql mysqltest1 -uuntrusted < var/tmp/bug31611.sql;
error 1;
@@ -337,8 +337,8 @@ FLUSH LOGS;
query_vertical SELECT * FROM t1;
DROP TABLE t1;
-echo >> mysqlbinlog var/log/master-bin.000019 > var/tmp/bug32580.sql;
-exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000019 > $MYSQLTEST_VARDIR/tmp/bug32580.sql;
+echo >> mysqlbinlog var/log/master-bin.000020 > var/tmp/bug32580.sql;
+exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000020 > $MYSQLTEST_VARDIR/tmp/bug32580.sql;
echo >> mysql test < var/tmp/bug32580.sql;
exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/bug32580.sql;
remove_file $MYSQLTEST_VARDIR/tmp/bug32580.sql;
@@ -443,3 +443,27 @@ FLUSH LOGS;
--echo End of 5.0 tests
--echo End of 5.1 tests
+
+#
+# BUG#38468 Memory leak detected when using mysqlbinlog utility;
+#
+disable_query_log;
+RESET MASTER;
+CREATE TABLE t1 SELECT 1;
+FLUSH LOGS;
+DROP TABLE t1;
+enable_query_log;
+
+# Write an empty file for comparison
+write_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog.warn.empty;
+EOF
+
+# Before fix of BUG#38468, this would generate some warnings
+--exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000001 >/dev/null 2> $MYSQLTEST_VARDIR/tmp/mysqlbinlog.warn
+
+# Make sure the command above does not generate any error or warnings
+diff_files $MYSQLTEST_VARDIR/tmp/mysqlbinlog.warn $MYSQLTEST_VARDIR/tmp/mysqlbinlog.warn.empty;
+
+# Cleanup for this part of test
+remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog.warn.empty;
+remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog.warn;
diff --git a/mysql-test/t/mysqlbinlog2.test b/mysql-test/t/mysqlbinlog2.test
index d6be029ea56..1f0da6bcf54 100644
--- a/mysql-test/t/mysqlbinlog2.test
+++ b/mysql-test/t/mysqlbinlog2.test
@@ -50,15 +50,15 @@ select "--- offset --" as "";
--disable_query_log
select "--- start-position --" as "";
--enable_query_log
---exec $MYSQL_BINLOG --short-form --start-position=608 $MYSQLD_DATADIR/master-bin.000001
+--exec $MYSQL_BINLOG --short-form --start-position=760 $MYSQLD_DATADIR/master-bin.000001
--disable_query_log
select "--- stop-position --" as "";
--enable_query_log
---exec $MYSQL_BINLOG --short-form --stop-position=608 $MYSQLD_DATADIR/master-bin.000001
+--exec $MYSQL_BINLOG --short-form --stop-position=760 $MYSQLD_DATADIR/master-bin.000001
--disable_query_log
select "--- start and stop positions ---" as "";
--enable_query_log
---exec $MYSQL_BINLOG --short-form --start-position=608 --stop-position 725 $MYSQLD_DATADIR/master-bin.000001
+--exec $MYSQL_BINLOG --short-form --start-position=760 --stop-position 951 $MYSQLD_DATADIR/master-bin.000001
--disable_query_log
select "--- start-datetime --" as "";
--enable_query_log
@@ -84,11 +84,11 @@ select "--- offset --" as "";
--disable_query_log
select "--- start-position --" as "";
--enable_query_log
---exec $MYSQL_BINLOG --short-form --start-position=608 $MYSQLD_DATADIR/master-bin.000001 $MYSQLD_DATADIR/master-bin.000002
+--exec $MYSQL_BINLOG --short-form --start-position=760 $MYSQLD_DATADIR/master-bin.000001 $MYSQLD_DATADIR/master-bin.000002
--disable_query_log
select "--- stop-position --" as "";
--enable_query_log
---exec $MYSQL_BINLOG --short-form --stop-position=134 $MYSQLD_DATADIR/master-bin.000001 $MYSQLD_DATADIR/master-bin.000002
+--exec $MYSQL_BINLOG --short-form --stop-position=203 $MYSQLD_DATADIR/master-bin.000001 $MYSQLD_DATADIR/master-bin.000002
--disable_query_log
select "--- start-datetime --" as "";
--enable_query_log
@@ -111,15 +111,15 @@ select "--- offset --" as "";
--disable_query_log
select "--- start-position --" as "";
--enable_query_log
---exec $MYSQL_BINLOG --short-form --start-position=608 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
+--exec $MYSQL_BINLOG --short-form --start-position=760 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
--disable_query_log
select "--- stop-position --" as "";
--enable_query_log
---exec $MYSQL_BINLOG --short-form --stop-position=608 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
+--exec $MYSQL_BINLOG --short-form --stop-position=760 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
--disable_query_log
select "--- start and stop positions ---" as "";
--enable_query_log
---exec $MYSQL_BINLOG --short-form --start-position=608 --stop-position 725 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
+--exec $MYSQL_BINLOG --short-form --start-position=760 --stop-position 951 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
--disable_query_log
select "--- start-datetime --" as "";
--enable_query_log
@@ -142,11 +142,11 @@ select "--- offset --" as "";
--disable_query_log
select "--- start-position --" as "";
--enable_query_log
---exec $MYSQL_BINLOG --short-form --start-position=608 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 master-bin.000002
+--exec $MYSQL_BINLOG --short-form --start-position=760 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 master-bin.000002
--disable_query_log
select "--- stop-position --" as "";
--enable_query_log
---exec $MYSQL_BINLOG --short-form --stop-position=134 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 master-bin.000002
+--exec $MYSQL_BINLOG --short-form --stop-position=135 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 master-bin.000002
--disable_query_log
select "--- start-datetime --" as "";
--enable_query_log
diff --git a/mysql-test/t/mysqlcheck.test b/mysql-test/t/mysqlcheck.test
index 986b5aba385..831aba72fb5 100644
--- a/mysql-test/t/mysqlcheck.test
+++ b/mysql-test/t/mysqlcheck.test
@@ -178,7 +178,7 @@ SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
WHERE TRIGGER_SCHEMA="#mysql50#a@b" ORDER BY trigger_name;
--echo mysqlcheck --fix-db-names --fix-table-names --all-databases
---exec $MYSQL_CHECK --fix-db-names --fix-table-names --all-databases
+--exec $MYSQL_CHECK --default-character-set=utf8 --fix-db-names --fix-table-names --all-databases
USE `a@b`;
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
diff --git a/mysql-test/t/mysqld--help-notwin.test b/mysql-test/t/mysqld--help-notwin.test
new file mode 100644
index 00000000000..e3d1ca97128
--- /dev/null
+++ b/mysql-test/t/mysqld--help-notwin.test
@@ -0,0 +1,24 @@
+# Copyright (C) 2009-2010 Sun Microsystems, Inc.
+#
+# 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
+
+#
+# mysqld --help
+#
+--source include/not_embedded.inc
+--source include/not_windows.inc
+--source include/have_perfschema.inc
+
+--source include/mysqld--help.inc
+
diff --git a/mysql-test/t/mysqld--help-win.test b/mysql-test/t/mysqld--help-win.test
new file mode 100644
index 00000000000..56cfec8999b
--- /dev/null
+++ b/mysql-test/t/mysqld--help-win.test
@@ -0,0 +1,24 @@
+# Copyright (C) 2009-2010 Sun Microsystems, Inc.
+#
+# 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
+
+#
+# mysqld --help
+#
+--source include/not_embedded.inc
+--source include/windows.inc
+--source include/have_perfschema.inc
+
+--source include/mysqld--help.inc
+
diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test
index 07ab9cecd28..7be8244a85b 100644
--- a/mysql-test/t/mysqldump.test
+++ b/mysql-test/t/mysqldump.test
@@ -7,6 +7,9 @@
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
+disable_query_log;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+enable_query_log;
--echo # Bug#37938 Test "mysqldump" lacks various insert statements
--echo # Turn off concurrent inserts to avoid random errors
@@ -46,9 +49,6 @@ DROP TABLE t1;
CREATE TABLE t1 (a double);
INSERT INTO t1 VALUES ('-9e999999');
-# The following replaces is here because some systems replaces the above
-# double with '-inf' and others with MAX_DOUBLE
---replace_result (-1.79769313486232e+308) (RES) (NULL) (RES)
--exec $MYSQL_DUMP --compact test t1
DROP TABLE t1;
@@ -168,7 +168,7 @@ drop database mysqldump_test_db;
CREATE TABLE t1 (a CHAR(10));
INSERT INTO t1 VALUES (_latin1 'ÄÖÜß');
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments test t1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments test t1
--echo #
--echo # Bug#8063 make test mysqldump [ fail ]
@@ -178,10 +178,10 @@ INSERT INTO t1 VALUES (_latin1 'ÄÖÜß');
--echo # checking that "mysqldump" is compiled with "latin1"
--echo #
-#--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments --compatible=mysql323 test t1
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments --compatible=mysql323 --default-character-set=cp850 test t1
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments --default-character-set=cp850 --compatible=mysql323 test t1
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments --default-character-set=utf8 --compatible=mysql323 test t1
+#--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments --compatible=mysql323 test t1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments --compatible=mysql323 --default-character-set=cp850 test t1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments --default-character-set=cp850 --compatible=mysql323 test t1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments --default-character-set=utf8 --compatible=mysql323 test t1
DROP TABLE t1;
--echo #
@@ -875,8 +875,13 @@ select * from t1;
create view v1 as
select * from v3 where b in (1, 2, 3, 4, 5, 6, 7);
+# Disable warnings since LIMIT warning for unsafe statement if
+# binlog_format = STATEMENT. Note: after BUG#45832, the warning should
+# not be issued.
+--disable_warnings
create view v2 as
select v3.a from v3, v1 where v1.a=v3.a and v3.b=3 limit 1;
+--enable_warnings
--exec $MYSQL_DUMP --skip-comments test
@@ -1673,14 +1678,14 @@ drop database db42635;
SET NAMES utf8;
CREATE TABLE `straße` ( f1 INT );
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments --default-character-set=utf8 --compatible=mysql323 test
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments --default-character-set=latin1 --compatible=mysql323 test
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments --default-character-set=utf8 --compatible=mysql323 test
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments --default-character-set=latin1 --compatible=mysql323 test
DROP TABLE `straße`;
CREATE TABLE `כדשגכחךלדגכחשךדגחכךלדגכ` ( f1 INT );
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments --default-character-set=utf8 --compatible=mysql323 test
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments --default-character-set=utf8 --compatible=mysql323 test
--error 2
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments --default-character-set=latin1 --compatible=mysql323 test
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments --default-character-set=latin1 --compatible=mysql323 test
DROP TABLE `כדשגכחךלדגכחשךדגחכךלדגכ`;
SET NAMES latin1;
@@ -1837,7 +1842,7 @@ set names latin1;
--echo
--echo # Dump mysqldump_test_db to bug30027.sql.
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --default-character-set=latin1 --databases mysqldump_test_db > $MYSQLTEST_VARDIR/tmp/bug30027.sql
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --default-character-set=latin1 --databases mysqldump_test_db > $MYSQLTEST_VARDIR/tmp/bug30027.sql
--echo
--echo # Drop mysqldump_test_db.
@@ -1923,7 +1928,7 @@ WHERE table_schema = 'mysqldump_test_db' AND table_name = 'v1';
--echo
--echo ---> Dumping mysqldump_test_db to bug30217.sql
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --databases mysqldump_test_db > $MYSQLTEST_VARDIR/tmp/bug30217.sql
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --databases mysqldump_test_db > $MYSQLTEST_VARDIR/tmp/bug30217.sql
--echo
@@ -2079,7 +2084,7 @@ INSERT INTO t1 VALUES (1, 'ABC-ÐБВ', 'DEF-ÂÃÄ'), (2, NULL, NULL);
--echo # default '--default-charset' (binary):
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --tab=$MYSQLTEST_VARDIR/tmp/ test t1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --tab=$MYSQLTEST_VARDIR/tmp/ test t1
--echo ##################################################
--cat_file $file
--echo ##################################################
@@ -2092,7 +2097,7 @@ SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a, b, c;
--echo # utf8:
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --default-character-set=utf8 --tab=$MYSQLTEST_VARDIR/tmp/ test t1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --default-character-set=utf8 --tab=$MYSQLTEST_VARDIR/tmp/ test t1
--echo ##################################################
--cat_file $file
--echo ##################################################
@@ -2105,7 +2110,7 @@ SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a, b, c;
--echo # latin1 (data corruption is expected):
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --default-character-set=latin1 --tab=$MYSQLTEST_VARDIR/tmp/ test t1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --default-character-set=latin1 --tab=$MYSQLTEST_VARDIR/tmp/ test t1
--echo ##################################################
--cat_file $file
--echo ##################################################
@@ -2118,7 +2123,7 @@ SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a, b, c;
--echo # koi8r (data corruption is expected):
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --default-character-set=koi8r --tab=$MYSQLTEST_VARDIR/tmp/ test t1
+--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --default-character-set=koi8r --tab=$MYSQLTEST_VARDIR/tmp/ test t1
--echo ##################################################
--cat_file $file
--echo ##################################################
diff --git a/mysql-test/t/mysqlshow.test b/mysql-test/t/mysqlshow.test
index 9ed93079f57..66ec8e22ab1 100644
--- a/mysql-test/t/mysqlshow.test
+++ b/mysql-test/t/mysqlshow.test
@@ -1,5 +1,7 @@
# Can't run test of external client with embedded server
-- source include/not_embedded.inc
+# Test lists tables in Information_schema, and InnoDB adds some
+-- source include/have_innodb.inc
--disable_warnings
DROP TABLE IF EXISTS t1,t2,test1,test2;
diff --git a/mysql-test/t/odbc.test b/mysql-test/t/odbc.test
index 6a754bb32a7..f1d60e15bc8 100644
--- a/mysql-test/t/odbc.test
+++ b/mysql-test/t/odbc.test
@@ -3,6 +3,8 @@
drop table if exists t1;
--enable_warnings
+set @@session.sql_auto_is_null=1;
+
#
# Test some ODBC compatibility
#
@@ -32,3 +34,5 @@ SELECT sql_no_cache a, last_insert_id() FROM t1;
DROP TABLE t1;
# End of 4.1 tests
+
+set @@session.sql_auto_is_null=default;
diff --git a/mysql-test/t/optimizer_switch_eng_cond_pushdown1-master.opt b/mysql-test/t/optimizer_switch_eng_cond_pushdown1-master.opt
new file mode 100644
index 00000000000..89aa07976ac
--- /dev/null
+++ b/mysql-test/t/optimizer_switch_eng_cond_pushdown1-master.opt
@@ -0,0 +1 @@
+--optimizer-switch=engine_condition_pushdown=off --engine-condition-pushdown=1
diff --git a/mysql-test/t/optimizer_switch_eng_cond_pushdown1.test b/mysql-test/t/optimizer_switch_eng_cond_pushdown1.test
new file mode 100644
index 00000000000..187aa145408
--- /dev/null
+++ b/mysql-test/t/optimizer_switch_eng_cond_pushdown1.test
@@ -0,0 +1,5 @@
+# check how --engine-condition-pushdown and --optimizer-switch
+# influence each other when used together (last wins).
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
diff --git a/mysql-test/t/optimizer_switch_eng_cond_pushdown2-master.opt b/mysql-test/t/optimizer_switch_eng_cond_pushdown2-master.opt
new file mode 100644
index 00000000000..f48ab5b963b
--- /dev/null
+++ b/mysql-test/t/optimizer_switch_eng_cond_pushdown2-master.opt
@@ -0,0 +1 @@
+--engine-condition-pushdown=1 --optimizer-switch=engine_condition_pushdown=off
diff --git a/mysql-test/t/optimizer_switch_eng_cond_pushdown2.test b/mysql-test/t/optimizer_switch_eng_cond_pushdown2.test
new file mode 100644
index 00000000000..187aa145408
--- /dev/null
+++ b/mysql-test/t/optimizer_switch_eng_cond_pushdown2.test
@@ -0,0 +1,5 @@
+# check how --engine-condition-pushdown and --optimizer-switch
+# influence each other when used together (last wins).
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
diff --git a/mysql-test/t/outfile.test b/mysql-test/t/outfile.test
index 45b13f141f7..9f2fc22da99 100644
--- a/mysql-test/t/outfile.test
+++ b/mysql-test/t/outfile.test
@@ -109,7 +109,7 @@ create user user_1@localhost;
grant all on mysqltest.* to user_1@localhost;
connect (con28181_1,localhost,user_1,,mysqltest);
---error ER_DBACCESS_DENIED_ERROR
+--error ER_ACCESS_DENIED_ERROR
eval select schema_name
into outfile "../../tmp/outfile-test.4"
fields terminated by ',' optionally enclosed by '"'
diff --git a/mysql-test/t/parser.test b/mysql-test/t/parser.test
index e579e371184..e6c9c8b423f 100644
--- a/mysql-test/t/parser.test
+++ b/mysql-test/t/parser.test
@@ -646,6 +646,10 @@ select conv(255 AS p1, 10 AS p2, 16 AS p3);
# Native function with a variable number of arguments
+# Bug in libm.so on Solaris:
+# atan(10) from 32-bit version returns 1.4711276743037347
+# atan(10) from 64-bit version returns 1.4711276743037345
+--replace_result 1.4711276743037345 1.4711276743037347
select atan(10);
-- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT
select atan(10 AS p1);
diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test
index 0cbe389dadd..1904b4cb805 100644
--- a/mysql-test/t/partition.test
+++ b/mysql-test/t/partition.test
@@ -118,6 +118,29 @@ SELECT * FROM t1 WHERE pk < 0 ORDER BY pk;
DROP TABLE t1;
#
+# Bug#35765: ALTER TABLE produces wrong error when non-existent storage engine
+# used
+CREATE TABLE t1 (a INT)
+ENGINE=NonExistentEngine;
+DROP TABLE t1;
+CREATE TABLE t1 (a INT)
+ENGINE=NonExistentEngine
+PARTITION BY HASH (a);
+DROP TABLE t1;
+CREATE TABLE t1 (a INT)
+ENGINE=Memory;
+ALTER TABLE t1 ENGINE=NonExistentEngine;
+# OK to only specify one partitions engine, since it is already assigned at
+# table level (after create, it is specified on all levels and all parts).
+ALTER TABLE t1
+PARTITION BY HASH (a)
+(PARTITION p0 ENGINE=Memory,
+ PARTITION p1 ENGINE=NonExistentEngine);
+ALTER TABLE t1 ENGINE=NonExistentEngine;
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+#
# Bug#40494: Crash MYSQL server crashes on range access with partitioning
# and order by
#
@@ -372,12 +395,12 @@ drop table t1;
#
# BUG 16002: Handle unsigned integer functions properly
#
---error ER_PARSE_ERROR
+--error ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR
create table t1 (a bigint)
partition by range (a)
(partition p0 values less than (0xFFFFFFFFFFFFFFFF),
partition p1 values less than (10));
---error ER_PARSE_ERROR
+--error ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR
create table t1 (a bigint)
partition by list (a)
(partition p0 values in (0xFFFFFFFFFFFFFFFF),
@@ -1410,7 +1433,7 @@ PARTITION BY LIST (a)
SHOW CREATE TABLE t1;
DROP TABLE t1;
---error ER_PARSE_ERROR
+--error ER_NULL_IN_VALUES_LESS_THAN
CREATE TABLE t1 (a int)
PARTITION BY RANGE(a)
(PARTITION p0 VALUES LESS THAN (NULL));
@@ -2062,23 +2085,24 @@ SELECT COUNT(*) FROM t1;
DROP TABLE t1;
SET SESSION SQL_MODE=DEFAULT;
-
---echo #
---echo # BUG#45816 - assertion failure with index containing double
---echo # column on partitioned table
---echo #
-
-CREATE TABLE t1 (
- a INT DEFAULT NULL,
- b DOUBLE DEFAULT NULL,
- c INT DEFAULT NULL,
- KEY idx2(b,a)
-) PARTITION BY HASH(c) PARTITIONS 3;
-
-INSERT INTO t1 VALUES (6,8,9);
-INSERT INTO t1 VALUES (6,8,10);
-
-SELECT 1 FROM t1 JOIN t1 AS t2 USING (a) FOR UPDATE;
-
-DROP TABLE t1;
+# This testcase is commented due to the Bug #46853
+# Should be uncommented after fixing Bug #46853
+#--echo #
+#--echo # BUG#45816 - assertion failure with index containing double
+#--echo # column on partitioned table
+#--echo #
+#
+#CREATE TABLE t1 (
+# a INT DEFAULT NULL,
+# b DOUBLE DEFAULT NULL,
+# c INT DEFAULT NULL,
+# KEY idx2(b,a)
+#) PARTITION BY HASH(c) PARTITIONS 3;
+#
+#INSERT INTO t1 VALUES (6,8,9);
+#INSERT INTO t1 VALUES (6,8,10);
+#
+#SELECT 1 FROM t1 JOIN t1 AS t2 USING (a) FOR UPDATE;
+#
+#DROP TABLE t1;
--echo End of 5.1 tests
diff --git a/mysql-test/t/partition_archive.test b/mysql-test/t/partition_archive.test
index fad57107b7d..39551991702 100644
--- a/mysql-test/t/partition_archive.test
+++ b/mysql-test/t/partition_archive.test
@@ -10,6 +10,27 @@
--source include/have_partition.inc
--source include/have_archive.inc
+let $MYSQLD_DATADIR= `select @@datadir`;
+
+#
+# Bug#44622: Using PARTITIONs with ARCHIVE engine reports 0 bytes in i_s.TABLES
+#
+CREATE TABLE t1 (f1 DATE NOT NULL)
+ENGINE = ARCHIVE PARTITION BY RANGE (TO_DAYS(f1))
+(partition p1 values less than (733751),
+ partition p2 values less than MAXVALUE);
+
+INSERT INTO t1 VALUES(CURRENT_DATE);
+
+SELECT DATA_LENGTH, INDEX_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+SELECT DATA_LENGTH, INDEX_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DROP TABLE t1;
+CREATE TABLE t1 (f1 DATE NOT NULL)
+ENGINE = ARCHIVE;
+INSERT INTO t1 VALUES(CURRENT_DATE);
+SELECT DATA_LENGTH, INDEX_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+SELECT DATA_LENGTH, INDEX_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DROP TABLE t1;
#
# Bug 17310 Partitions: Bugs with archived partitioned tables
diff --git a/mysql-test/t/partition_column.test b/mysql-test/t/partition_column.test
new file mode 100644
index 00000000000..a0e944ceb09
--- /dev/null
+++ b/mysql-test/t/partition_column.test
@@ -0,0 +1,443 @@
+#
+# Tests for the new column list partitioning introduced in second
+# version for partitioning.
+#
+--source include/have_partition.inc
+
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+
+#
+# BUG#49180, Possible to define empty intervals for column list partitioning
+#
+--error ER_RANGE_NOT_INCREASING_ERROR
+create table t1 (a int, b int)
+partition by range columns (a,b)
+( partition p0 values less than (maxvalue, 10),
+ partition p1 values less than (maxvalue, maxvalue));
+
+--error ER_RANGE_NOT_INCREASING_ERROR
+create table t1 (a int, b int, c int)
+partition by range columns (a,b,c)
+( partition p0 values less than (1, maxvalue, 10),
+ partition p1 values less than (1, maxvalue, maxvalue));
+
+#
+# BUG#48737, Search fails with ucs2
+#
+create table t1 (a varchar(5) character set ucs2 collate ucs2_bin)
+partition by range columns (a)
+(partition p0 values less than (0x0041));
+insert into t1 values (0x00410000);
+select hex(a) from t1 where a like 'A_';
+explain partitions select hex(a) from t1 where a like 'A_';
+alter table t1 remove partitioning;
+select hex(a) from t1 where a like 'A_';
+create index a on t1 (a);
+select hex(a) from t1 where a like 'A_';
+insert into t1 values ('A_');
+select hex(a) from t1;
+drop table t1;
+
+#
+# BUG#48161, Delivering too few records using collate syntax with partitions
+#
+# Test case from BUG#48447 with some extension
+create table t1 (a varchar(1) character set latin1 collate latin1_general_ci)
+partition by range columns(a)
+( partition p0 values less than ('a'),
+ partition p1 values less than ('b'),
+ partition p2 values less than ('c'),
+ partition p3 values less than ('d'));
+insert into t1 values ('A'),('a'),('B'),('b'),('C'),('c');
+select * from t1 where a > 'B' collate latin1_bin;
+select * from t1 where a <> 'B' collate latin1_bin;
+alter table t1 remove partitioning;
+select * from t1 where a > 'B' collate latin1_bin;
+select * from t1 where a <> 'B' collate latin1_bin;
+drop table t1;
+
+# Test case from BUG#48161
+create table t1 (a varchar(2) character set latin1,
+ b varchar(2) character set latin1)
+partition by list columns(a,b)
+(partition p0 values in (('a','a')));
+insert into t1 values ('A','A');
+select * from t1 where b <> 'a' collate latin1_bin AND
+ a = 'A' collate latin1_bin;
+alter table t1 remove partitioning;
+select * from t1 where b <> 'a' collate latin1_bin AND
+ a = 'A' collate latin1_bin;
+drop table t1;
+
+create table t1 (a varchar(5))
+partition by list columns(a)
+( partition p0 values in ('\''),
+ partition p1 values in ('\\'),
+ partition p2 values in ('\0'));
+show create table t1;
+drop table t1;
+
+#
+# BUG#48165, sql_mode gives error
+#
+set @@sql_mode=allow_invalid_dates;
+--error ER_WRONG_TYPE_COLUMN_VALUE_ERROR
+create table t1 (a char, b char, c date)
+partition by range columns (a,b,c)
+( partition p0 values less than (0,0,to_days('3000-11-31')));
+
+--error ER_WRONG_TYPE_COLUMN_VALUE_ERROR
+create table t1 (a char, b char, c date)
+partition by range columns (a,b,c)
+( partition p0 values less than (0,0,'3000-11-31'));
+set @@sql_mode='';
+
+--error ER_WRONG_TYPE_COLUMN_VALUE_ERROR
+create table t1 (a int, b char(10), c varchar(25), d datetime)
+partition by range columns(a,b,c,d)
+subpartition by hash (to_seconds(d))
+subpartitions 4
+( partition p0 values less than (1, 0, MAXVALUE, '1900-01-01'),
+ partition p1 values less than (1, 'a', MAXVALUE, '1999-01-01'),
+ partition p2 values less than (1, 'a', MAXVALUE, MAXVALUE),
+ partition p3 values less than (1, MAXVALUE, MAXVALUE, MAXVALUE));
+
+create table t1 (a int, b char(10), c varchar(25), d datetime)
+partition by range columns(a,b,c,d)
+subpartition by hash (to_seconds(d))
+subpartitions 4
+( partition p0 values less than (1, '0', MAXVALUE, '1900-01-01'),
+ partition p1 values less than (1, 'a', MAXVALUE, '1999-01-01'),
+ partition p2 values less than (1, 'b', MAXVALUE, MAXVALUE),
+ partition p3 values less than (1, MAXVALUE, MAXVALUE, MAXVALUE));
+select partition_method, partition_expression, partition_description
+ from information_schema.partitions where table_name = "t1";
+show create table t1;
+drop table t1;
+
+--error ER_NULL_IN_VALUES_LESS_THAN
+create table t1 (a int, b int)
+partition by range columns (a,b)
+(partition p0 values less than (NULL, maxvalue));
+
+--error ER_MAXVALUE_IN_VALUES_IN, ER_PARSE_ERROR
+create table t1 (a int, b int)
+partition by list columns(a,b)
+( partition p0 values in ((maxvalue, 0)));
+
+create table t1 (a int, b int)
+partition by list columns (a,b)
+( partition p0 values in ((0,0)));
+--error ER_MAXVALUE_IN_VALUES_IN, ER_PARSE_ERROR
+alter table t1 add partition
+(partition p1 values in (maxvalue, maxvalue));
+drop table t1;
+#
+# BUG#47837, Crash when two same fields in column list processing
+#
+--error ER_SAME_NAME_PARTITION_FIELD
+create table t1 (a int, b int)
+partition by key (a,a);
+--error ER_SAME_NAME_PARTITION_FIELD
+create table t1 (a int, b int)
+partition by list columns(a,a)
+( partition p values in ((1,1)));
+
+#
+# BUG#47838, List partitioning have problems with <= and >=
+#
+create table t1 (a int signed)
+partition by list (a)
+( partition p0 values in (1, 3, 5, 7, 9, NULL),
+ partition p1 values in (2, 4, 6, 8, 0));
+insert into t1 values (NULL),(0),(1),(2),(2),(4),(4),(4),(8),(8);
+select * from t1 where NULL <= a;
+select * from t1 where a is null;
+explain partitions select * from t1 where a is null;
+select * from t1 where a <= 1;
+drop table t1;
+
+create table t1 (a int signed)
+partition by list columns(a)
+( partition p0 values in (1, 3, 5, 7, 9, NULL),
+ partition p1 values in (2, 4, 6, 8, 0));
+insert into t1 values (NULL),(0),(1),(2),(2),(4),(4),(4),(8),(8);
+select * from t1 where a <= NULL;
+select * from t1 where a is null;
+explain partitions select * from t1 where a is null;
+select * from t1 where a <= 1;
+drop table t1;
+
+create table t1 (a int, b int)
+partition by list columns(a,b)
+( partition p0 values in ((1, NULL), (2, NULL), (NULL, NULL)),
+ partition p1 values in ((1,1), (2,2)),
+ partition p2 values in ((3, NULL), (NULL, 1)));
+select partition_method, partition_expression, partition_description
+ from information_schema.partitions where table_name = "t1";
+show create table t1;
+#
+# BUG#47754 Crash when selecting using NOT BETWEEN for column list partitioning
+#
+insert into t1 values (3, NULL);
+insert into t1 values (NULL, 1);
+insert into t1 values (NULL, NULL);
+insert into t1 values (1, NULL);
+insert into t1 values (2, NULL);
+insert into t1 values (1,1);
+insert into t1 values (2,2);
+select * from t1 where a = 1;
+select * from t1 where a = 2;
+select * from t1 where a > 8;
+select * from t1 where a not between 8 and 8;
+show create table t1;
+drop table t1;
+
+--error ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR
+create table t1 (a int)
+partition by list (a)
+( partition p0 values in (1),
+ partition p1 values in (1));
+
+create table t1 (a int)
+partition by list (a)
+( partition p0 values in (2, 1),
+ partition p1 values in (4, NULL, 3));
+select partition_method, partition_expression, partition_description
+ from information_schema.partitions where table_name = "t1";
+show create table t1;
+insert into t1 values (1);
+insert into t1 values (2);
+insert into t1 values (3);
+insert into t1 values (4);
+insert into t1 values (NULL);
+--error ER_NO_PARTITION_FOR_GIVEN_VALUE
+insert into t1 values (5);
+drop table t1;
+
+--error ER_PARSE_ERROR
+create table t1 (a int)
+partition by list columns(a)
+( partition p0 values in (2, 1),
+ partition p1 values in ((4), (NULL), (3)));
+
+create table t1 (a int)
+partition by list columns(a)
+( partition p0 values in (2, 1),
+ partition p1 values in (4, NULL, 3));
+select partition_method, partition_expression, partition_description
+ from information_schema.partitions where table_name = "t1";
+show create table t1;
+insert into t1 values (1);
+insert into t1 values (2);
+insert into t1 values (3);
+insert into t1 values (4);
+insert into t1 values (NULL);
+--error ER_NO_PARTITION_FOR_GIVEN_VALUE
+insert into t1 values (5);
+show create table t1;
+drop table t1;
+
+create table t1 (a int, b char(10), c varchar(5), d int)
+partition by range columns(a,b,c)
+subpartition by key (c,d)
+subpartitions 3
+( partition p0 values less than (1,'abc','abc'),
+ partition p1 values less than (2,'abc','abc'),
+ partition p2 values less than (3,'abc','abc'),
+ partition p3 values less than (4,'abc','abc'));
+select partition_method, partition_expression, partition_description
+ from information_schema.partitions where table_name = "t1";
+show create table t1;
+
+insert into t1 values (1,'a','b',1),(2,'a','b',2),(3,'a','b',3);
+insert into t1 values (1,'b','c',1),(2,'b','c',2),(3,'b','c',3);
+insert into t1 values (1,'c','d',1),(2,'c','d',2),(3,'c','d',3);
+insert into t1 values (1,'d','e',1),(2,'d','e',2),(3,'d','e',3);
+select * from t1 where (a = 1 AND b < 'd' AND (c = 'b' OR (c = 'c' AND d = 1)) OR
+ (a = 1 AND b >= 'a' AND (c = 'c' OR (c = 'd' AND d = 2))));
+drop table t1;
+
+create table t1 (a int, b varchar(2), c int)
+partition by range columns (a, b, c)
+(partition p0 values less than (1, 'A', 1),
+ partition p1 values less than (1, 'B', 1));
+select partition_method, partition_expression, partition_description
+ from information_schema.partitions where table_name = "t1";
+show create table t1;
+insert into t1 values (1, 'A', 1);
+explain partitions select * from t1 where a = 1 AND b <= 'A' and c = 1;
+select * from t1 where a = 1 AND b <= 'A' and c = 1;
+drop table t1;
+
+create table t1 (a char, b char, c char)
+partition by list columns(a)
+( partition p0 values in ('a'));
+insert into t1 (a) values ('a');
+select * from t1 where a = 'a';
+drop table t1;
+
+--error ER_WRONG_TYPE_COLUMN_VALUE_ERROR
+create table t1 (d time)
+partition by range columns(d)
+( partition p0 values less than ('2000-01-01'),
+ partition p1 values less than ('2040-01-01'));
+
+--error ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD
+create table t1 (d timestamp)
+partition by range columns(d)
+( partition p0 values less than ('2000-01-01'),
+ partition p1 values less than ('2040-01-01'));
+
+--error ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD
+create table t1 (d bit(1))
+partition by range columns(d)
+( partition p0 values less than (0),
+ partition p1 values less than (1));
+
+create table t1 (a int, b int)
+partition by range columns(a,b)
+(partition p0 values less than (maxvalue, 10));
+drop table t1;
+
+create table t1 (d date)
+partition by range columns(d)
+( partition p0 values less than ('2000-01-01'),
+ partition p1 values less than ('2009-01-01'));
+drop table t1;
+
+create table t1 (d date)
+partition by range columns(d)
+( partition p0 values less than ('1999-01-01'),
+ partition p1 values less than ('2000-01-01'));
+drop table t1;
+
+create table t1 (d date)
+partition by range columns(d)
+( partition p0 values less than ('2000-01-01'),
+ partition p1 values less than ('3000-01-01'));
+drop table t1;
+
+create table t1 (a int, b int)
+partition by range columns(a,b)
+(partition p2 values less than (99,99),
+ partition p1 values less than (99,999));
+
+insert into t1 values (99,998);
+select * from t1 where b = 998;
+drop table t1;
+
+create table t1 as select to_seconds(null) as to_seconds;
+select data_type from information_schema.columns
+where column_name='to_seconds';
+drop table t1;
+
+--error ER_PARSE_ERROR
+create table t1 (a int, b int)
+partition by list columns(a,b)
+(partition p0 values in ((maxvalue,maxvalue)));
+create table t1 (a int, b int)
+partition by range columns(a,b)
+(partition p0 values less than (maxvalue,maxvalue));
+drop table t1;
+
+create table t1 (a int)
+partition by list columns(a)
+(partition p0 values in (0));
+select partition_method from information_schema.partitions where table_name='t1';
+drop table t1;
+
+create table t1 (a char(6))
+partition by range columns(a)
+(partition p0 values less than ('H23456'),
+ partition p1 values less than ('M23456'));
+insert into t1 values ('F23456');
+select * from t1;
+drop table t1;
+
+-- error 1054
+create table t1 (a char(6))
+partition by range columns(a)
+(partition p0 values less than (H23456),
+ partition p1 values less than (M23456));
+
+-- error ER_WRONG_TYPE_COLUMN_VALUE_ERROR
+create table t1 (a char(6))
+partition by range columns(a)
+(partition p0 values less than (23456),
+ partition p1 values less than (23456));
+
+-- error 1064
+create table t1 (a int, b int)
+partition by range columns(a,b)
+(partition p0 values less than (10));
+
+-- error ER_PARTITION_COLUMN_LIST_ERROR
+create table t1 (a int, b int)
+partition by range columns(a,b)
+(partition p0 values less than (1,1,1);
+
+create table t1 (a int, b int)
+partition by range columns(a,b)
+(partition p0 values less than (1, 0),
+ partition p1 values less than (2, maxvalue),
+ partition p2 values less than (3, 3),
+ partition p3 values less than (10, maxvalue));
+
+-- error ER_NO_PARTITION_FOR_GIVEN_VALUE
+insert into t1 values (11,0);
+insert into t1 values (0,1),(1,1),(2,1),(3,1),(3,4),(4,9),(9,1);
+select * from t1;
+
+alter table t1
+partition by range columns(b,a)
+(partition p0 values less than (1,2),
+ partition p1 values less than (3,3),
+ partition p2 values less than (9,5));
+explain partitions select * from t1 where b < 2;
+select * from t1 where b < 2;
+explain partitions select * from t1 where b < 4;
+select * from t1 where b < 4;
+
+alter table t1 reorganize partition p1 into
+(partition p11 values less than (2,2),
+ partition p12 values less than (3,3));
+
+-- error ER_REORG_OUTSIDE_RANGE
+alter table t1 reorganize partition p0 into
+(partition p01 values less than (0,3),
+ partition p02 values less than (1,1));
+
+-- error ER_PARTITION_COLUMN_LIST_ERROR
+alter table t1 reorganize partition p2 into
+(partition p2 values less than(9,6,1));
+
+-- error ER_PARTITION_COLUMN_LIST_ERROR
+alter table t1 reorganize partition p2 into
+(partition p2 values less than (10));
+
+alter table t1 reorganize partition p2 into
+(partition p21 values less than (4,7),
+ partition p22 values less than (9,5));
+explain partitions select * from t1 where b < 4;
+select * from t1 where b < 4;
+drop table t1;
+
+create table t1 (a int, b int)
+partition by list columns(a,b)
+subpartition by hash (b)
+subpartitions 2
+(partition p0 values in ((0,0), (1,1)),
+ partition p1 values in ((1000,1000)));
+insert into t1 values (1000,1000);
+#select * from t1 where a = 0 and b = 0;
+drop table t1;
+
+create table t1 (a char, b char, c char)
+partition by range columns(a,b,c)
+( partition p0 values less than ('a','b','c'));
+alter table t1 add partition
+(partition p1 values less than ('b','c','d'));
+drop table t1;
diff --git a/mysql-test/t/partition_column_prune.test b/mysql-test/t/partition_column_prune.test
new file mode 100644
index 00000000000..848825ba71b
--- /dev/null
+++ b/mysql-test/t/partition_column_prune.test
@@ -0,0 +1,71 @@
+#
+# Partition pruning tests for new COLUMN LIST feature
+#
+-- source include/have_partition.inc
+
+--disable_warnings
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+--enable_warnings
+
+create table t1 (a char, b char, c char)
+partition by range columns(a,b,c)
+( partition p0 values less than ('a','b','c'));
+insert into t1 values ('a', NULL, 'd');
+explain partitions select * from t1 where a = 'a' AND c = 'd';
+select * from t1 where a = 'a' AND c = 'd';
+drop table t1;
+
+## COLUMN_LIST partition pruning tests
+create table t1 (a int not null) partition by range columns(a) (
+ partition p0 values less than (10),
+ partition p1 values less than (20),
+ partition p2 values less than (30),
+ partition p3 values less than (40),
+ partition p4 values less than (50),
+ partition p5 values less than (60),
+ partition p6 values less than (70)
+);
+insert into t1 values (5),(15),(25),(35),(45),(55),(65);
+insert into t1 values (5),(15),(25),(35),(45),(55),(65);
+
+create table t2 (a int not null) partition by range(a) (
+ partition p0 values less than (10),
+ partition p1 values less than (20),
+ partition p2 values less than (30),
+ partition p3 values less than (40),
+ partition p4 values less than (50),
+ partition p5 values less than (60),
+ partition p6 values less than (70)
+);
+insert into t2 values (5),(15),(25),(35),(45),(55),(65);
+insert into t2 values (5),(15),(25),(35),(45),(55),(65);
+
+explain partitions select * from t1 where a > 35 and a < 45;
+explain partitions select * from t2 where a > 35 and a < 45;
+
+drop table t1, t2;
+
+create table t1 (a int not null, b int not null )
+partition by range columns(a,b) (
+ partition p01 values less than (2,10),
+ partition p02 values less than (2,20),
+ partition p03 values less than (2,30),
+
+ partition p11 values less than (4,10),
+ partition p12 values less than (4,20),
+ partition p13 values less than (4,30),
+
+ partition p21 values less than (6,10),
+ partition p22 values less than (6,20),
+ partition p23 values less than (6,30)
+);
+
+insert into t1 values (2,5), (2,15), (2,25),
+ (4,5), (4,15), (4,25), (6,5), (6,15), (6,25);
+insert into t1 select * from t1;
+
+explain partitions select * from t1 where a=2;
+explain partitions select * from t1 where a=4;
+explain partitions select * from t1 where a=2 and b < 22;
+
+drop table t1;
diff --git a/mysql-test/t/partition_datatype.test b/mysql-test/t/partition_datatype.test
index 7440a9bf3a3..0a9fae15354 100644
--- a/mysql-test/t/partition_datatype.test
+++ b/mysql-test/t/partition_datatype.test
@@ -4,6 +4,7 @@
# as partition by key
# Created to verify the fix for Bug#31705
# Partitions: crash if varchar length > 65530
+# BUG#48164 limited size to 3072 bytes
#
-- source include/have_partition.inc
@@ -192,27 +193,29 @@ create table t1 (a set('y','n')) partition by key (a);
insert into t1 values ('y');
select * from t1 where a = 'y';
drop table t1;
-create table t1 (a varchar(65531)) partition by key (a);
+create table t1 (a varchar(3068)) partition by key (a);
insert into t1 values ('bbbb');
insert into t1 values ('aaaa');
select * from t1 where a = 'aaaa';
select * from t1 where a like 'aaa%';
select * from t1 where a = 'bbbb';
drop table t1;
-create table t1 (a varchar(65532)) partition by key (a);
+create table t1 (a varchar(3069)) partition by key (a);
insert into t1 values ('bbbb');
insert into t1 values ('aaaa');
select * from t1 where a = 'aaaa';
select * from t1 where a like 'aaa%';
select * from t1 where a = 'bbbb';
drop table t1;
-create table t1 (a varchar(65533) not null) partition by key (a);
+create table t1 (a varchar(3070) not null) partition by key (a);
insert into t1 values ('bbbb');
insert into t1 values ('aaaa');
select * from t1 where a = 'aaaa';
select * from t1 where a like 'aaa%';
select * from t1 where a = 'bbbb';
drop table t1;
+-- error ER_PARTITION_FIELDS_TOO_LONG
+create table t1 (a varchar(3070)) partition by key (a);
-- error ER_TOO_BIG_ROWSIZE
create table t1 (a varchar(65533)) partition by key (a);
-- error ER_TOO_BIG_ROWSIZE
diff --git a/mysql-test/t/partition_error.test b/mysql-test/t/partition_error.test
index 1f011f36257..f9712868541 100644
--- a/mysql-test/t/partition_error.test
+++ b/mysql-test/t/partition_error.test
@@ -180,7 +180,7 @@ partitions 3
(partition x1, partition x2);
#
-# Partition by key specified 3 partitions but only defined 2 => error
+# Partition by hash, random function
#
--error 1064
CREATE TABLE t1 (
@@ -193,7 +193,7 @@ partitions 2
(partition x1, partition x2);
#
-# Partition by key specified 3 partitions but only defined 2 => error
+# Partition by range, random function
#
--error 1064
CREATE TABLE t1 (
@@ -206,7 +206,7 @@ partitions 2
(partition x1 values less than (0), partition x2 values less than (2));
#
-# Partition by key specified 3 partitions but only defined 2 => error
+# Partition by list, random function
#
--error 1064
CREATE TABLE t1 (
@@ -452,7 +452,7 @@ partitions 2
#
# Partition by range, inconsistent partition function and constants
#
---error 1064
+--error ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR
CREATE TABLE t1 (
a int not null,
b int not null,
@@ -522,7 +522,7 @@ partitions 2
#
# Partition by range, missing parenthesis
#
---error 1064
+--error ER_PARTITION_WRONG_VALUES_ERROR
CREATE TABLE t1 (
a int not null,
b int not null,
@@ -536,7 +536,7 @@ partitions 2
#
# Partition by range, maxvalue in wrong place
#
---error 1064
+--error ER_PARTITION_MAXVALUE_ERROR
CREATE TABLE t1 (
a int not null,
b int not null,
@@ -550,7 +550,7 @@ partitions 2
#
# Partition by range, maxvalue in several places
#
---error 1064
+--error ER_PARTITION_MAXVALUE_ERROR
CREATE TABLE t1 (
a int not null,
b int not null,
@@ -765,7 +765,7 @@ partitions 2
#
# Partition by list, wrong constant result type (not INT)
#
---error 1064
+--error ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR
CREATE TABLE t1 (
a int not null,
b int not null,
diff --git a/mysql-test/t/partition_innodb.test b/mysql-test/t/partition_innodb.test
index b7fe4477a13..a910bbb001e 100644
--- a/mysql-test/t/partition_innodb.test
+++ b/mysql-test/t/partition_innodb.test
@@ -8,6 +8,51 @@ drop table if exists t1;
let $MYSQLD_DATADIR= `SELECT @@datadir`;
#
+# BUG#47774, Assertion failure in InnoDB using column list partitioning
+#
+create table t1 (a varchar(5), b int signed, c varchar(10), d datetime)
+partition by range columns(b,c)
+subpartition by hash(to_seconds(d))
+( partition p0 values less than (2, 'b'),
+ partition p1 values less than (4, 'd'),
+ partition p2 values less than (10, 'za'));
+insert into t1 values ('a', 3, 'w', '2001-10-27 04:34:00');
+insert into t1 values ('r', 7, 'w', '2001-10-27 05:34:00');
+insert into t1 values ('g', 10, 'w', '2001-10-27 06:34:00');
+update t1 set a = 'c' where a > 'f';
+drop table t1;
+
+#
+# BUG#47776, Failed to update for MEMORY engine, crash for InnoDB and success for MyISAM
+#
+create table t1 (a varchar(5))
+engine=memory
+partition by range columns(a)
+( partition p0 values less than ('m'),
+ partition p1 values less than ('za'));
+insert into t1 values ('j');
+update t1 set a = 'z' where (a >= 'j');
+drop table t1;
+
+create table t1 (a varchar(5))
+engine=myisam
+partition by range columns(a)
+( partition p0 values less than ('m'),
+ partition p1 values less than ('za'));
+insert into t1 values ('j');
+update t1 set a = 'z' where (a >= 'j');
+drop table t1;
+
+create table t1 (a varchar(5))
+engine=innodb
+partition by range columns(a)
+( partition p0 values less than ('m'),
+ partition p1 values less than ('za'));
+insert into t1 values ('j');
+update t1 set a = 'z' where (a >= 'j');
+drop table t1;
+
+#
# Bug#47029: Crash when reorganize partition with subpartition
#
create table t1 (a int not null,
@@ -44,17 +89,21 @@ SET autocommit = 0;
UPDATE t1 SET DATA = data*2 WHERE id = 3;
+# SHOW ENGINE InnoDB STATUS does not show transaction info in
+# PERFORMANCE-VERSION
# grouping/referencing in replace_regex is very slow on long strings,
# removing all before/after the interesting row before grouping/referencing
---replace_regex /.*---TRANSACTION [0-9]+ [0-9]+, .*, OS thread id [0-9]+// /MySQL thread id [0-9]+, query id [0-9]+ .*// /.*([0-9]+ lock struct\(s\)), heap size [0-9]+, ([0-9]+ row lock\(s\)).*/\1 \2/
-SHOW ENGINE InnoDB STATUS;
+#--replace_regex /.*---TRANSACTION [0-9]+ [0-9]+, .*, OS thread id [0-9]+// /MySQL thread id [0-9]+, query id [0-9]+ .*// /.*([0-9]+) lock struct\(s\), heap size [0-9]+, ([0-9]+) row lock\(s\).*/\1 lock struct(s) \2 row lock(s)/
+#SHOW ENGINE InnoDB STATUS;
UPDATE t1 SET data = data*2 WHERE data = 2;
+# SHOW ENGINE InnoDB STATUS does not show transaction info in
+# PERFORMANCE-VERSION
# grouping/referencing in replace_regex is very slow on long strings,
# removing all before/after the interesting row before grouping/referencing
---replace_regex /.*---TRANSACTION [0-9]+ [0-9]+, .*, OS thread id [0-9]+// /MySQL thread id [0-9]+, query id [0-9]+ .*// /.*([0-9]+ lock struct\(s\)), heap size [0-9]+, ([0-9]+ row lock\(s\)).*/\1 \2/
-SHOW ENGINE InnoDB STATUS;
+#--replace_regex /.*---TRANSACTION [0-9]+ [0-9]+, .*, OS thread id [0-9]+// /MySQL thread id [0-9]+, query id [0-9]+ .*// /.*([0-9]+ lock struct\(s\)), heap size [0-9]+, ([0-9]+ row lock\(s\)).*/\1 \2/
+#SHOW ENGINE InnoDB STATUS;
SET @@session.tx_isolation = @old_tx_isolation;
@@ -203,7 +252,6 @@ engine = innodb
partition by list (a)
(partition p0 values in (0));
--- error ER_MIX_HANDLER_ERROR
alter table t1 engine = x;
show create table t1;
drop table t1;
diff --git a/mysql-test/t/partition_innodb_builtin.test b/mysql-test/t/partition_innodb_builtin.test
deleted file mode 100644
index a9be41c7455..00000000000
--- a/mysql-test/t/partition_innodb_builtin.test
+++ /dev/null
@@ -1,67 +0,0 @@
---source include/have_partition.inc
---source include/have_innodb.inc
---source include/have_not_innodb_plugin.inc
-
-#
-# Bug#32430 - show engine innodb status causes errors
-#
-SET NAMES utf8;
-CREATE TABLE `t``\""e` (a INT, PRIMARY KEY (a))
-ENGINE=InnoDB
-PARTITION BY RANGE (a)
-SUBPARTITION BY HASH (a)
-(PARTITION `p0``\""e` VALUES LESS THAN (100)
- (SUBPARTITION `sp0``\""e`,
- SUBPARTITION `sp1``\""e`),
- PARTITION `p1``\""e` VALUES LESS THAN (MAXVALUE)
- (SUBPARTITION `sp2``\""e`,
- SUBPARTITION `sp3``\""e`));
-INSERT INTO `t``\""e` VALUES (0), (2), (6), (10), (14), (18), (22);
-START TRANSACTION;
---echo # con1
-connect(con1,localhost,root,,);
-SET NAMES utf8;
-START TRANSACTION;
---echo # default connection
-connection default;
-UPDATE `t``\""e` SET a = 16 WHERE a = 0;
---echo # con1
-connection con1;
-UPDATE `t``\""e` SET a = 8 WHERE a = 22;
-let $id_1= `SELECT CONNECTION_ID()`;
-SEND;
-UPDATE `t``\""e` SET a = 12 WHERE a = 0;
---echo # default connection
-connection default;
-let $wait_timeout= 2;
-let $wait_condition= SELECT 1 FROM INFORMATION_SCHEMA.PROCESSLIST
-WHERE ID = $id_1 AND STATE = 'Searching rows for update';
---source include/wait_condition.inc
-#--echo # tested wait condition $wait_condition_reps times
---error ER_LOCK_DEADLOCK
-UPDATE `t``\""e` SET a = 4 WHERE a = 22;
---echo # First table reported in 'SHOW ENGINE InnoDB STATUS'
-# RECORD LOCKS space id 0 page no 50 n bits 80 index `PRIMARY` in \
-# Database `test`, Table `t1`, Partition `p0`, Subpartition `sp0` \
-# trx id 0 775
-# NOTE: replace_regex is very slow on match copy/past '(.*)' regex's
-# on big texts, removing a lot of text before + after makes it much faster.
-#/.*in (.*) trx.*/\1/
---replace_regex /.*RECORD LOCKS space id [0-9]* page no [0-9]* n bits [0-9]* // / trx id .*// /.*index .* in //
-SHOW ENGINE InnoDB STATUS;
-set @old_sql_mode = @@sql_mode;
-set sql_mode = 'ANSI_QUOTES';
-# INNODB_LOCKS only exists in innodb_plugin
-#SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
---replace_regex /.*RECORD LOCKS space id [0-9]* page no [0-9]* n bits [0-9]* // / trx id .*// /.*index .* in //
-SHOW ENGINE InnoDB STATUS;
-set @@sql_mode = @old_sql_mode;
---echo # con1
-connection con1;
-REAP;
-ROLLBACK;
-disconnect con1;
---echo # default connection
-connection default;
-DROP TABLE `t``\""e`;
-SET NAMES DEFAULT;
diff --git a/mysql-test/t/partition_innodb_plugin.test b/mysql-test/t/partition_innodb_plugin.test
index fed8c96424a..04c72127394 100644
--- a/mysql-test/t/partition_innodb_plugin.test
+++ b/mysql-test/t/partition_innodb_plugin.test
@@ -1,6 +1,5 @@
--source include/have_partition.inc
--source include/have_innodb.inc
---source suite/innodb/include/have_innodb_plugin.inc
#
# Bug#32430 - show engine innodb status causes errors
diff --git a/mysql-test/t/partition_innodb_stmt.test b/mysql-test/t/partition_innodb_stmt.test
index d6181ce068e..c6f30f41969 100644
--- a/mysql-test/t/partition_innodb_stmt.test
+++ b/mysql-test/t/partition_innodb_stmt.test
@@ -50,7 +50,7 @@ connection con1;
--echo # connection con1
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
BEGIN;
---error ER_BINLOG_LOGGING_IMPOSSIBLE
+--error ER_BINLOG_STMT_MODE_AND_ROW_ENGINE
INSERT INTO t1 VALUES(9);
COMMIT;
diff --git a/mysql-test/t/partition_key_cache.test b/mysql-test/t/partition_key_cache.test
new file mode 100644
index 00000000000..4beb9506b05
--- /dev/null
+++ b/mysql-test/t/partition_key_cache.test
@@ -0,0 +1,251 @@
+# Test of key cache with partitions
+--source include/have_partition.inc
+
+--disable_warnings
+DROP TABLE IF EXISTS t1, t2, v, x;
+--enable_warnings
+
+--echo # Actual test of key caches
+--echo # Verifing that reads/writes use the key cache correctly
+SELECT @org_key_cache_buffer_size:= @@global.default.key_buffer_size;
+--echo # Minimize default key cache (almost disabled).
+SET @@global.default.key_buffer_size = 4096;
+CREATE TABLE t1 (
+ a INT,
+ b INT,
+ c INT NOT NULL,
+ PRIMARY KEY (a),
+ KEY `inx_b` (b))
+PARTITION BY RANGE (a)
+SUBPARTITION BY HASH (a)
+(PARTITION p0 VALUES LESS THAN (1167602410)
+ (SUBPARTITION sp0,
+ SUBPARTITION sp1),
+ PARTITION p1 VALUES LESS THAN MAXVALUE
+ (SUBPARTITION sp2,
+ SUBPARTITION sp3));
+CREATE TABLE t2 (
+ a INT,
+ b INT,
+ c INT NOT NULL,
+ PRIMARY KEY (a),
+ KEY `inx_b` (b));
+FLUSH TABLES;
+FLUSH STATUS;
+
+# Genereate 4096 rows. Idea from:
+# http://datacharmer.blogspot.com/2007/12/data-from-nothing-solution-to-pop-quiz.html
+SET @a:=1167602400;
+CREATE VIEW v AS SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4;
+CREATE VIEW x AS SELECT 1 FROM v,v a,v b;
+# due to I_S performance, this was substituted with include files which
+# uses SHOW STATUS
+#DELIMITER |;
+#CREATE PROCEDURE was_zero_reads()
+#BEGIN
+# SELECT IF(VARIABLE_VALUE = 0,"Yes!","No!") as 'Was zero reads?'
+# FROM INFORMATION_SCHEMA.SESSION_STATUS
+# WHERE VARIABLE_NAME = 'KEY_READS';
+# FLUSH STATUS;
+#END|
+#DELIMITER ;|
+
+FLUSH STATUS;
+INSERT t1 SELECT @a, @a * (1 - ((@a % 2) * 2)) , 1167612400 - (@a:=@a+1) FROM x, x y;
+--source include/check_key_req.inc
+--echo # row distribution:
+SELECT PARTITION_NAME, SUBPARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA='test' and TABLE_NAME='t1';
+DROP VIEW x;
+DROP VIEW v;
+FLUSH TABLES;
+FLUSH STATUS;
+SELECT COUNT(b) FROM t1 WHERE b >= 0;
+--source include/check_key_reads.inc
+INSERT t2 SELECT a,b,c FROM t1;
+--source include/check_key_req.inc
+FLUSH STATUS;
+SELECT COUNT(b) FROM t2 WHERE b >= 0;
+--source include/check_key_reads.inc
+FLUSH TABLES;
+--echo # Setting the default key cache to 1M
+SET GLOBAL key_buffer_size = 1024*1024;
+FLUSH STATUS;
+--echo # All these have to read the indexes
+LOAD INDEX INTO CACHE t1 PARTITION (p1);
+--source include/check_key_reads.inc
+SELECT COUNT(b) FROM t1 WHERE b >= 0;
+--source include/check_key_reads.inc
+SELECT COUNT(b) FROM t2 WHERE b >= 0;
+--source include/check_key_reads.inc
+--echo # All these should be able to use the key cache
+SELECT COUNT(b) FROM t1 WHERE b >= 0;
+--source include/check_key_reads.inc
+SELECT COUNT(b) FROM t2 WHERE b >= 0;
+--source include/check_key_reads.inc
+FLUSH TABLES;
+LOAD INDEX INTO CACHE t1 PARTITION (p1,p0);
+--source include/check_key_reads.inc
+--echo # should not be zero
+SELECT COUNT(b) FROM t1 WHERE b >= 0;
+--source include/check_key_reads.inc
+LOAD INDEX INTO CACHE t2;
+--source include/check_key_reads.inc
+--echo # should not be zero
+SELECT COUNT(b) FROM t2 WHERE b >= 0;
+--source include/check_key_reads.inc
+FLUSH TABLES;
+LOAD INDEX INTO CACHE t1 PARTITION (p1,p0) IGNORE LEAVES;
+--source include/check_key_reads.inc
+--echo # should not be zero
+SELECT COUNT(b) FROM t1 WHERE b >= 0;
+--source include/check_key_reads.inc
+LOAD INDEX INTO CACHE t2 IGNORE LEAVES;
+--source include/check_key_reads.inc
+--echo # should not be zero
+SELECT COUNT(b) FROM t2 WHERE b >= 0;
+--source include/check_key_reads.inc
+TRUNCATE TABLE t2;
+INSERT t2 SELECT a,b,c FROM t1;
+--source include/check_key_req.inc
+DROP TABLE t1,t2;
+
+SET GLOBAL hot_cache.key_buffer_size = 1024*1024;
+SET GLOBAL warm_cache.key_buffer_size = 1024*1024;
+SET @@global.cold_cache.key_buffer_size = 1024*1024;
+SELECT @@global.default.key_buffer_size a, @@global.default.key_cache_block_size b, @@global.default.key_cache_age_threshold c, @@global.default.key_cache_division_limit d;
+SELECT @@global.hot_cache.key_buffer_size a, @@global.hot_cache.key_cache_block_size b, @@global.hot_cache.key_cache_age_threshold c, @@global.hot_cache.key_cache_division_limit d;
+SELECT @@global.warm_cache.key_buffer_size a, @@global.warm_cache.key_cache_block_size b, @@global.warm_cache.key_cache_age_threshold c, @@global.warm_cache.key_cache_division_limit d;
+SELECT @@global.cold_cache.key_buffer_size a, @@global.cold_cache.key_cache_block_size b, @@global.cold_cache.key_cache_age_threshold c, @@global.cold_cache.key_cache_division_limit d;
+CREATE TABLE t1 (
+ a INT,
+ b VARCHAR(257),
+ c INT NOT NULL,
+ PRIMARY KEY (a),
+ KEY `inx_b` (b),
+ KEY `inx_c`(c))
+PARTITION BY RANGE (a)
+SUBPARTITION BY HASH (a)
+(PARTITION p0 VALUES LESS THAN (10)
+ (SUBPARTITION sp0,
+ SUBPARTITION sp1),
+ PARTITION p1 VALUES LESS THAN MAXVALUE
+ (SUBPARTITION sp2,
+ SUBPARTITION sp3));
+CREATE TABLE t2 (
+ a INT,
+ b VARCHAR(257),
+ c INT NOT NULL,
+ PRIMARY KEY (a),
+ KEY `inx_b` (b),
+ KEY `inx_c`(c));
+SET @a:=1167602400;
+# Genereate 4096 rows. Idea from:
+# http://datacharmer.blogspot.com/2007/12/data-from-nothing-solution-to-pop-quiz.html
+CREATE VIEW v AS SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4;
+CREATE VIEW x AS SELECT 1 FROM v,v a,v b;
+INSERT t1 SELECT @a, CONCAT('X_', @a, ' MySQL'), 1167612400 - (@a:=@a+1) FROM x, x a;
+DROP VIEW x;
+DROP VIEW v;
+INSERT t2 SELECT a, b, c FROM t1;
+SELECT COUNT(*) FROM t1;
+SELECT COUNT(*) FROM t2;
+FLUSH TABLES;
+
+--echo # Restrict partitioned commands to partitioned tables only
+--error ER_PARTITION_MGMT_ON_NONPARTITIONED
+CACHE INDEX t2 PARTITION (p0) KEY (`inx_b`) IN hot_cache;
+--error ER_PARTITION_MGMT_ON_NONPARTITIONED
+CACHE INDEX t2 PARTITION (p0,`p1`) INDEX (`PRIMARY`) IN hot_cache;
+--error ER_PARTITION_MGMT_ON_NONPARTITIONED
+CACHE INDEX t2 PARTITION (`p1`) INDEX (`PRIMARY`,`inx_b`) IN hot_cache;
+--error ER_PARTITION_MGMT_ON_NONPARTITIONED
+CACHE INDEX t2 PARTITION (ALL) KEY (`inx_b`,`PRIMARY`) IN hot_cache;
+--echo # Basic key cache testing
+--echo # The manual correctly says: "The syntax of CACHE INDEX enables you to
+--echo # specify that only particular indexes from a table should be assigned
+--echo # to the cache. The current implementation assigns all the table's
+--echo # indexes to the cache, so there is no reason to specify anything
+--echo # other than the table name."
+--echo # So the most of the test only tests the syntax
+CACHE INDEX t2 INDEX (`inx_b`) IN hot_cache;
+CACHE INDEX t2 KEY (`PRIMARY`) IN warm_cache;
+CACHE INDEX t2 KEY (`PRIMARY`,`inx_b`) IN cold_cache;
+CACHE INDEX t2 INDEX (inx_b,`PRIMARY`) IN default;
+CACHE INDEX t1 PARTITION (p0) KEY (`inx_b`) IN cold_cache;
+--error ER_PARSE_ERROR
+CACHE INDEX t1 PARTITIONS (p0) KEY (`inx_b`) IN cold_cache;
+--echo # only one table at a time if specifying partitions
+--error ER_PARSE_ERROR
+CACHE INDEX t1,t2 PARTITION (p0) KEY (`inx_b`) IN cold_cache;
+CACHE INDEX t1 PARTITION (`p0`,p1) INDEX (`PRIMARY`) IN warm_cache;
+CACHE INDEX t1 PARTITION (`p1`) INDEX (`PRIMARY`,inx_b) IN hot_cache;
+CACHE INDEX t1 PARTITION (ALL) KEY (`inx_b`,`PRIMARY`) IN default;
+CACHE INDEX t1 PARTITION (ALL) IN hot_cache;
+CACHE INDEX t1 INDEX (`inx_b`) IN default;
+CACHE INDEX t1 KEY (`PRIMARY`) IN hot_cache;
+CACHE INDEX t1 KEY (`PRIMARY`,`inx_b`) IN warm_cache;
+CACHE INDEX t1 INDEX (`inx_b`,`PRIMARY`) IN cold_cache;
+CACHE INDEX t1 IN hot_cache;
+--echo # Test of non existent key cache:
+--error ER_UNKNOWN_KEY_CACHE
+CACHE INDEX t1 IN non_existent_key_cache;
+--echo # Basic testing of LOAD INDEX
+LOAD INDEX INTO CACHE t2;
+--echo # PRIMARY and secondary keys have different block sizes
+LOAD INDEX INTO CACHE t2 ignore leaves;
+--echo # Must have INDEX or KEY before the index list
+--error ER_PARSE_ERROR
+LOAD INDEX INTO CACHE t2 (`PRIMARY`);
+
+--echo # Test of IGNORE LEAVES
+LOAD INDEX INTO CACHE t2 INDEX (`PRIMARY`);
+LOAD INDEX INTO CACHE t2 KEY (`PRIMARY`,`inx_b`) IGNORE LEAVES;
+CACHE INDEX t2 IN warm_cache;
+CACHE INDEX t1 IN cold_cache;
+LOAD INDEX INTO CACHE t2 KEY (`PRIMARY`) IGNORE LEAVES;
+CACHE INDEX t2 INDEX (`inx_b`, `inx_c`) IN hot_cache;
+LOAD INDEX INTO CACHE t2 KEY (`inx_b`, `inx_c`) IGNORE LEAVES;
+CACHE INDEX t2 IN warm_cache;
+CACHE INDEX t2 INDEX (`PRIMARY`, `inx_c`) IN hot_cache;
+LOAD INDEX INTO CACHE t2 KEY (`PRIMARY`,`inx_c`) IGNORE LEAVES;
+CACHE INDEX t2 INDEX (`inx_b`,`PRIMARY`) IN default;
+LOAD INDEX INTO CACHE t2 KEY (`PRIMARY`,`inx_b`);
+CACHE INDEX t2 IN default;
+LOAD INDEX INTO CACHE t2 IGNORE LEAVES;
+
+--error ER_PARTITION_MGMT_ON_NONPARTITIONED
+LOAD INDEX INTO CACHE t2 PARTITION (p1) INDEX (`PRIMARY`);
+LOAD INDEX INTO CACHE t1, t2;
+--echo # only one table at a time if specifying partitions
+--error ER_PARSE_ERROR
+LOAD INDEX INTO CACHE t1 PARTITION (p0), t2;
+LOAD INDEX INTO CACHE t1 IGNORE LEAVES;
+LOAD INDEX INTO CACHE t1 INDEX (`PRIMARY`);
+LOAD INDEX INTO CACHE t1 INDEX (`PRIMARY`,`inx_b`) IGNORE LEAVES;
+LOAD INDEX INTO CACHE t1 INDEX (`inx_b`) IGNORE LEAVES;
+LOAD INDEX INTO CACHE t1 INDEX (`PRIMARY`) IGNORE LEAVES;
+LOAD INDEX INTO CACHE t1 INDEX (`PRIMARY`,`inx_b`);
+LOAD INDEX INTO CACHE t1 PARTITION (p1) INDEX (`PRIMARY`);
+LOAD INDEX INTO CACHE t1 PARTITION (`p1`,p0) KEY (`PRIMARY`) IGNORE LEAVES;
+LOAD INDEX INTO CACHE t1 PARTITION (ALL);
+--error ER_PARSE_ERROR
+LOAD INDEX INTO CACHE t1 PARTITIONS ALL;
+LOAD INDEX INTO CACHE t1 PARTITION (p1,`p0`) IGNORE LEAVES;
+DROP INDEX `inx_b` on t1;
+DROP INDEX `inx_b` on t2;
+--error ER_PARTITION_MGMT_ON_NONPARTITIONED
+CACHE INDEX t2 PARTITION (p0) KEY (`inx_b`) IN hot_cache;
+CACHE INDEX t2 INDEX (`inx_b`) IN hot_cache;
+CACHE INDEX t1 PARTITION (p0) KEY (`inx_b`) IN hot_cache;
+CACHE INDEX t1 INDEX (`inx_b`) IN hot_cache;
+DROP TABLE t1,t2;
+SET GLOBAL hot_cache.key_buffer_size = 0;
+SET GLOBAL warm_cache.key_buffer_size = 0;
+SET @@global.cold_cache.key_buffer_size = 0;
+SELECT @@global.default.key_buffer_size a, @@global.default.key_cache_block_size b, @@global.default.key_cache_age_threshold c, @@global.default.key_cache_division_limit d;
+SELECT @@global.hot_cache.key_buffer_size a, @@global.hot_cache.key_cache_block_size b, @@global.hot_cache.key_cache_age_threshold c, @@global.hot_cache.key_cache_division_limit d;
+SELECT @@global.warm_cache.key_buffer_size a, @@global.warm_cache.key_cache_block_size b, @@global.warm_cache.key_cache_age_threshold c, @@global.warm_cache.key_cache_division_limit d;
+SELECT @@global.cold_cache.key_buffer_size a, @@global.cold_cache.key_cache_block_size b, @@global.cold_cache.key_cache_age_threshold c, @@global.cold_cache.key_cache_division_limit d;
+--disable_warnings
+SET @@global.default.key_buffer_size = @org_key_cache_buffer_size;
+--enable_warnings
diff --git a/mysql-test/t/partition_list.test b/mysql-test/t/partition_list.test
index 1c76de9d55a..8d2ec88e0f4 100644
--- a/mysql-test/t/partition_list.test
+++ b/mysql-test/t/partition_list.test
@@ -40,6 +40,8 @@ subpartitions 2
partition p1 values in (1),
partition pnull values in (null, 2),
partition p3 values in (3));
+select partition_method, partition_expression, partition_description
+ from information_schema.partitions where table_name = "t1";
insert into t1 values (0,0),(0,1),(1,0),(1,1),(null,0),(null,1);
insert into t1 values (2,0),(2,1),(3,0),(3,1);
diff --git a/mysql-test/t/partition_mgm_err.test b/mysql-test/t/partition_mgm_err.test
index 0f8b8d3cd90..f921fa8ebca 100644
--- a/mysql-test/t/partition_mgm_err.test
+++ b/mysql-test/t/partition_mgm_err.test
@@ -61,7 +61,7 @@ ALTER TABLE t1 REORGANIZE PARTITION x0, x1, x1 INTO
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
(PARTITION x01 VALUES LESS THAN (5));
---error ER_REORG_OUTSIDE_RANGE
+--error ER_RANGE_NOT_INCREASING_ERROR
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
(PARTITION x01 VALUES LESS THAN (4),
PARTITION x11 VALUES LESS THAN (2));
diff --git a/mysql-test/t/partition_pruning.test b/mysql-test/t/partition_pruning.test
index 315b8393d93..e1ba6025474 100644
--- a/mysql-test/t/partition_pruning.test
+++ b/mysql-test/t/partition_pruning.test
@@ -211,6 +211,26 @@ INSERT INTO t1 VALUES ('0000-00-00'), ('0000-01-02'), ('0001-01-01'),
ALTER TABLE t1 DROP KEY a;
--source include/partition_date_range.inc
DROP TABLE t1;
+--echo # TO_SECONDS, test of LIST and index
+CREATE TABLE t1 (a DATE, KEY(a))
+PARTITION BY LIST (TO_SECONDS(a))
+(PARTITION `p0001-01-01` VALUES IN (TO_SECONDS('0001-01-01')),
+ PARTITION `p2001-01-01` VALUES IN (TO_SECONDS('2001-01-01')),
+ PARTITION `pNULL` VALUES IN (NULL),
+ PARTITION `p0000-01-02` VALUES IN (TO_SECONDS('0000-01-02')),
+ PARTITION `p1001-01-01` VALUES IN (TO_SECONDS('1001-01-01')));
+if ($verify_without_partitions)
+{
+ALTER TABLE t1 REMOVE PARTITIONING;
+}
+INSERT INTO t1 VALUES ('0000-00-00'), ('0000-01-02'), ('0001-01-01'),
+ ('1001-00-00'), ('1001-01-01'), ('1002-00-00'), ('2001-01-01');
+--source include/partition_date_range.inc
+--echo # test without index
+ALTER TABLE t1 DROP KEY a;
+--source include/partition_date_range.inc
+DROP TABLE t1;
+
#
# Bug#46362: Endpoint should be set to false for TO_DAYS(DATE)
@@ -1319,3 +1339,22 @@ INSERT INTO t1 VALUES ('2006-03-01 12:00:00');
-- echo must use p0 only:
explain partitions select * from t1 where recdate < '2006-01-01 00:00:00';
drop table t1;
+
+-- echo #
+-- echo # BUG#33730 Full table scan instead selected partitions for query more than 10 partitions
+-- echo #
+create table t0 (a int);
+insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
+create table t1 (a int)
+ partition by range(a+0) (
+ partition p0 values less than (64),
+ partition p1 values less than (128),
+ partition p2 values less than (255)
+);
+insert into t1 select A.a + 10*B.a from t0 A, t0 B;
+
+# this will use interval_via_walking
+explain partitions select * from t1 where a between 10 and 13;
+explain partitions select * from t1 where a between 10 and 10+33;
+
+drop table t0, t1;
diff --git a/mysql-test/t/partition_range.test b/mysql-test/t/partition_range.test
index c02d9049f2e..6c0b5ca77d6 100644
--- a/mysql-test/t/partition_range.test
+++ b/mysql-test/t/partition_range.test
@@ -10,6 +10,91 @@ drop table if exists t1, t2;
--enable_warnings
#
+#BUG#49591, Add proper version number to SHOW CREATE TABLE
+#
+create table t1 (a int)
+partition by range (a)
+subpartition by hash(to_seconds(a))
+(partition p0 values less than (1));
+show create table t1;
+drop table t1;
+
+--error ER_NULL_IN_VALUES_LESS_THAN
+create table t1 (a int)
+partition by range (a)
+( partition p0 values less than (NULL),
+ partition p1 values less than (MAXVALUE));
+#
+# Merge fix of bug#27927 for TO_SECONDS function
+#
+create table t1 (a datetime not null)
+partition by range (TO_SECONDS(a))
+( partition p0 VALUES LESS THAN (TO_SECONDS('2007-03-08 00:00:00')),
+ partition p1 VALUES LESS THAN (TO_SECONDS('2007-04-01 00:00:00')));
+select partition_method, partition_expression, partition_description
+ from information_schema.partitions where table_name = "t1";
+INSERT INTO t1 VALUES ('2007-03-01 12:00:00'), ('2007-03-07 12:00:00');
+INSERT INTO t1 VALUES ('2007-03-08 12:00:00'), ('2007-03-15 12:00:00');
+explain partitions select * from t1 where a < '2007-03-08 00:00:00';
+explain partitions select * from t1 where a < '2007-03-08 00:00:01';
+explain partitions select * from t1 where a <= '2007-03-08 00:00:00';
+explain partitions select * from t1 where a <= '2007-03-07 23:59:59';
+explain partitions select * from t1 where a < '2007-03-07 23:59:59';
+show create table t1;
+drop table t1;
+#
+# New test cases for new function to_seconds
+#
+create table t1 (a date)
+partition by range(to_seconds(a))
+(partition p0 values less than (to_seconds('2004-01-01')),
+ partition p1 values less than (to_seconds('2005-01-01')));
+insert into t1 values ('2003-12-30'),('2004-12-31');
+select * from t1;
+explain partitions select * from t1 where a <= '2003-12-31';
+select * from t1 where a <= '2003-12-31';
+explain partitions select * from t1 where a <= '2005-01-01';
+select * from t1 where a <= '2005-01-01';
+show create table t1;
+drop table t1;
+
+create table t1 (a datetime)
+partition by range(to_seconds(a))
+(partition p0 values less than (to_seconds('2004-01-01 12:00:00')),
+ partition p1 values less than (to_seconds('2005-01-01 12:00:00')));
+insert into t1 values ('2004-01-01 11:59:29'),('2005-01-01 11:59:59');
+select * from t1;
+explain partitions select * from t1 where a <= '2004-01-01 11:59.59';
+select * from t1 where a <= '2004-01-01 11:59:59';
+explain partitions select * from t1 where a <= '2005-01-01';
+select * from t1 where a <= '2005-01-01';
+show create table t1;
+drop table t1;
+
+#
+# Adding new test cases for column list variant for partitioning
+#
+--error 1064
+create table t1 (a int, b char(20))
+partition by range columns(a,b)
+(partition p0 values less than (1));
+
+--error ER_TOO_MANY_VALUES_ERROR
+create table t1 (a int, b char(20))
+partition by range(a)
+(partition p0 values less than (1,"b"));
+
+--error ER_TOO_MANY_VALUES_ERROR
+create table t1 (a int, b char(20))
+partition by range(a)
+(partition p0 values less than (1,"b"));
+
+create table t1 (a int, b char(20))
+partition by range columns(b)
+(partition p0 values less than ("b"));
+drop table t1;
+
+#
# BUG 33429: Succeeds in adding partition when maxvalue on last partition
#
create table t1 (a int)
diff --git a/mysql-test/t/partition_sync.test b/mysql-test/t/partition_sync.test
new file mode 100644
index 00000000000..a732b35b8b9
--- /dev/null
+++ b/mysql-test/t/partition_sync.test
@@ -0,0 +1,41 @@
+--source include/have_partition.inc
+# Save the initial number of concurrent sessions.
+--source include/count_sessions.inc
+
+--echo #
+--echo # Bug #43867 ALTER TABLE on a partitioned table
+--echo # causes unnecessary deadlocks
+--echo #
+
+CREATE TABLE t1 (a int) PARTITION BY RANGE (a)
+(PARTITION p0 VALUES LESS THAN (1),
+ PARTITION p1 VALUES LESS THAN (2));
+
+INSERT INTO t1 VALUES (0),(1);
+
+connect(con1,localhost,root);
+
+--echo # Connection 2
+connection con1;
+BEGIN;
+SELECT * FROM t1;
+
+--echo # Connection 1
+connection default;
+--error ER_DROP_PARTITION_NON_EXISTENT
+ALTER TABLE t1 DROP PARTITION p3;
+
+--echo # Connection 2
+connection con1;
+--echo # This failed with deadlock and should not do so.
+SELECT * FROM t1;
+
+--echo # Connection 1
+connection default;
+disconnect con1;
+DROP TABLE t1;
+
+
+# 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/partition_truncate.test b/mysql-test/t/partition_truncate.test
new file mode 100644
index 00000000000..93b9cf62d14
--- /dev/null
+++ b/mysql-test/t/partition_truncate.test
@@ -0,0 +1,26 @@
+#
+# Simple tests to verify truncate partition syntax
+#
+--source include/have_partition.inc
+--disable_warnings
+drop table if exists t1, t2, t3, t4;
+--enable_warnings
+
+create table t1 (a int)
+partition by list (a)
+(partition p1 values in (0));
+--error ER_WRONG_PARTITION_NAME
+alter table t1 truncate partition p1,p1;
+--error ER_WRONG_PARTITION_NAME
+alter table t1 truncate partition p0;
+drop table t1;
+
+create table t1 (a int)
+partition by list (a)
+subpartition by hash (a)
+subpartitions 1
+(partition p1 values in (1)
+ (subpartition sp1));
+--error ER_WRONG_PARTITION_NAME
+alter table t1 truncate partition sp1;
+drop table t1;
diff --git a/mysql-test/t/partition_utf8.test b/mysql-test/t/partition_utf8.test
new file mode 100644
index 00000000000..d3ad7ba671e
--- /dev/null
+++ b/mysql-test/t/partition_utf8.test
@@ -0,0 +1,42 @@
+# Tests for Column list which requires utf8 output
+--source include/have_partition.inc
+set names utf8;
+create table t1 (a varchar(2) character set cp1250)
+partition by list columns (a)
+( partition p0 values in (0x81));
+show create table t1;
+drop table t1;
+create table t1 (a varchar(2) character set cp1250)
+partition by list columns (a)
+( partition p0 values in (0x80));
+show create table t1;
+drop table t1;
+
+#
+# BUG#48164, too long partition fields causes crash
+#
+--error ER_PARTITION_FIELDS_TOO_LONG
+create table t1 (a varchar(1500), b varchar(1570))
+partition by list columns(a,b)
+( partition p0 values in (('a','b')));
+
+create table t1 (a varchar(1023) character set utf8 collate utf8_spanish2_ci)
+partition by range columns(a)
+( partition p0 values less than ('CZ'),
+ partition p1 values less than ('CH'),
+ partition p2 values less than ('D'));
+insert into t1 values ('czz'),('chi'),('ci'),('cg');
+select * from t1 where a between 'cg' AND 'ci';
+drop table t1;
+
+#
+# BUG#48163, Dagger in UCS2 not working as partition value
+#
+create table t1 (a varchar(2) character set ucs2)
+partition by list columns (a)
+(partition p0 values in (0x2020),
+ partition p1 values in (''));
+show create table t1;
+insert into t1 values ('');
+insert into t1 values (_ucs2 0x2020);
+drop table t1;
diff --git a/mysql-test/t/plugin.test b/mysql-test/t/plugin.test
index 788a7b336ef..0bf86b47dd7 100644
--- a/mysql-test/t/plugin.test
+++ b/mysql-test/t/plugin.test
@@ -22,6 +22,12 @@ SELECT * FROM t1;
DROP TABLE t1;
+# a couple of tests for variables
+set global example_ulong_var=500;
+set global example_enum_var= e1;
+show status like 'example%';
+show variables like 'example%';
+
UNINSTALL PLUGIN example;
--error 1305
UNINSTALL PLUGIN EXAMPLE;
diff --git a/mysql-test/t/profiling.test b/mysql-test/t/profiling.test
index 275c2d77c4a..1e1aada7c15 100644
--- a/mysql-test/t/profiling.test
+++ b/mysql-test/t/profiling.test
@@ -1,4 +1,4 @@
---source include/have_community_features.inc
+--source include/have_profiling.inc
# Verify that the protocol isn't violated if we ask for profiling info
# before profiling has recorded anything.
@@ -9,10 +9,6 @@ show profile all;
show session variables like 'profil%';
select @@profiling;
-# setting global variable is an error
---error ER_LOCAL_VARIABLE
-set global profiling = ON;
-
# But size is okay
set @start_value= @@global.profiling_history_size;
set global profiling_history_size=100;
diff --git a/mysql-test/t/ps.test b/mysql-test/t/ps.test
index d5f7eda5032..6b12832b17b 100644
--- a/mysql-test/t/ps.test
+++ b/mysql-test/t/ps.test
@@ -3065,4 +3065,209 @@ select @plaintext;
deallocate prepare encode;
deallocate prepare decode;
+###########################################################################
+
+--echo
--echo End of 5.1 tests.
+
+###########################################################################
+
+--echo
+--echo #
+--echo # WL#4435: Support OUT-parameters in prepared statements.
+--echo #
+--echo
+
+# The idea of this test case is to check that
+# - OUT-parameters of four allowed types (string, double, int, decimal) work
+# properly;
+# - INOUT and OUT parameters work properly;
+# - A mix of IN and OUT parameters work properly;
+
+--disable_warnings
+DROP PROCEDURE IF EXISTS p_string;
+DROP PROCEDURE IF EXISTS p_double;
+DROP PROCEDURE IF EXISTS p_int;
+DROP PROCEDURE IF EXISTS p_decimal;
+--enable_warnings
+
+delimiter |;
+
+--echo
+CREATE PROCEDURE p_string(
+ IN v0 INT,
+ OUT v1 CHAR(32),
+ IN v2 CHAR(32),
+ INOUT v3 CHAR(32))
+BEGIN
+ SET v0 = -1;
+ SET v1 = 'test_v1';
+ SET v2 = 'n/a';
+ SET v3 = 'test_v3';
+END|
+
+--echo
+CREATE PROCEDURE p_double(
+ IN v0 INT,
+ OUT v1 DOUBLE(4, 2),
+ IN v2 DOUBLE(4, 2),
+ INOUT v3 DOUBLE(4, 2))
+BEGIN
+ SET v0 = -1;
+ SET v1 = 12.34;
+ SET v2 = 98.67;
+ SET v3 = 56.78;
+END|
+
+--echo
+CREATE PROCEDURE p_int(
+ IN v0 CHAR(10),
+ OUT v1 INT,
+ IN v2 INT,
+ INOUT v3 INT)
+BEGIN
+ SET v0 = 'n/a';
+ SET v1 = 1234;
+ SET v2 = 9876;
+ SET v3 = 5678;
+END|
+
+--echo
+CREATE PROCEDURE p_decimal(
+ IN v0 INT,
+ OUT v1 DECIMAL(4, 2),
+ IN v2 DECIMAL(4, 2),
+ INOUT v3 DECIMAL(4, 2))
+BEGIN
+ SET v0 = -1;
+ SET v1 = 12.34;
+ SET v2 = 98.67;
+ SET v3 = 56.78;
+END|
+
+delimiter ;|
+
+--echo
+PREPARE stmt_str FROM 'CALL p_string(?, ?, ?, ?)';
+PREPARE stmt_dbl FROM 'CALL p_double(?, ?, ?, ?)';
+PREPARE stmt_int FROM 'CALL p_int(?, ?, ?, ?)';
+PREPARE stmt_dec FROM 'CALL p_decimal(?, ?, ?, ?)';
+
+--echo
+SET @x_str_1 = NULL;
+SET @x_str_2 = NULL;
+SET @x_str_3 = NULL;
+SET @x_dbl_1 = NULL;
+SET @x_dbl_2 = NULL;
+SET @x_dbl_3 = NULL;
+SET @x_int_1 = NULL;
+SET @x_int_2 = NULL;
+SET @x_int_3 = NULL;
+SET @x_dec_1 = NULL;
+SET @x_dec_2 = NULL;
+SET @x_dec_3 = NULL;
+
+--echo
+--echo -- Testing strings...
+
+--echo
+EXECUTE stmt_str USING @x_int_1, @x_str_1, @x_str_2, @x_str_3;
+SELECT @x_int_1, @x_str_1, @x_str_2, @x_str_3;
+
+--echo
+EXECUTE stmt_str USING @x_int_1, @x_str_1, @x_str_2, @x_str_3;
+SELECT @x_int_1, @x_str_1, @x_str_2, @x_str_3;
+
+--echo
+--echo -- Testing doubles...
+
+--echo
+EXECUTE stmt_dbl USING @x_int_1, @x_dbl_1, @x_dbl_2, @x_dbl_3;
+SELECT @x_int_1, @x_dbl_1, @x_dbl_2, @x_dbl_3;
+
+--echo
+EXECUTE stmt_dbl USING @x_int_1, @x_dbl_1, @x_dbl_2, @x_dbl_3;
+SELECT @x_int_1, @x_dbl_1, @x_dbl_2, @x_dbl_3;
+
+--echo
+--echo -- Testing ints...
+
+--echo
+EXECUTE stmt_int USING @x_str_1, @x_int_1, @x_int_2, @x_int_3;
+SELECT @x_str_1, @x_int_1, @x_int_2, @x_int_3;
+
+--echo
+EXECUTE stmt_int USING @x_str_1, @x_int_1, @x_int_2, @x_int_3;
+SELECT @x_str_1, @x_int_1, @x_int_2, @x_int_3;
+
+--echo
+--echo -- Testing decs...
+
+--echo
+EXECUTE stmt_dec USING @x_int_1, @x_dec_1, @x_dec_2, @x_dec_3;
+SELECT @x_int_1, @x_dec_1, @x_dec_2, @x_dec_3;
+
+--echo
+EXECUTE stmt_dec USING @x_int_1, @x_dec_1, @x_dec_2, @x_dec_3;
+SELECT @x_int_1, @x_dec_1, @x_dec_2, @x_dec_3;
+
+--echo
+DEALLOCATE PREPARE stmt_str;
+DEALLOCATE PREPARE stmt_dbl;
+DEALLOCATE PREPARE stmt_int;
+DEALLOCATE PREPARE stmt_dec;
+
+--echo
+DROP PROCEDURE p_string;
+DROP PROCEDURE p_double;
+DROP PROCEDURE p_int;
+DROP PROCEDURE p_decimal;
+
+#
+# Another test case for WL#4435: check out parameters in Dynamic SQL.
+#
+
+--echo
+--disable_warnings
+DROP PROCEDURE IF EXISTS p1;
+DROP PROCEDURE IF EXISTS p2;
+--enable_warnings
+
+--echo
+
+CREATE PROCEDURE p1(OUT v1 CHAR(10))
+ SET v1 = 'test1';
+
+--echo
+
+delimiter |;
+CREATE PROCEDURE p2(OUT v2 CHAR(10))
+BEGIN
+ SET @query = 'CALL p1(?)';
+ PREPARE stmt1 FROM @query;
+ EXECUTE stmt1 USING @u1;
+ DEALLOCATE PREPARE stmt1;
+
+ SET v2 = @u1;
+END|
+delimiter ;|
+
+--echo
+
+CALL p2(@a);
+SELECT @a;
+
+--echo
+
+DROP PROCEDURE p1;
+DROP PROCEDURE p2;
+
+--echo
+--echo # End of WL#4435.
+
+###########################################################################
+
+--echo
+--echo End of 6.0 tests.
+
+###########################################################################
diff --git a/mysql-test/t/ps_1general.test b/mysql-test/t/ps_1general.test
index 387b3ebdd05..b9e84d8d7df 100644
--- a/mysql-test/t/ps_1general.test
+++ b/mysql-test/t/ps_1general.test
@@ -458,9 +458,6 @@ prepare stmt1 from ' analyze table t1 ' ;
prepare stmt1 from ' checksum table t1 ' ;
prepare stmt1 from ' repair table t1 ' ;
---replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
---error ER_UNSUPPORTED_PS
-eval prepare stmt1 from ' restore table t1 from ''$datafile'' ' ;
--remove_file $datafile
## handler
diff --git a/mysql-test/t/ps_not_windows.test b/mysql-test/t/ps_not_windows.test
index 0ab08b59f1e..2003251dc55 100644
--- a/mysql-test/t/ps_not_windows.test
+++ b/mysql-test/t/ps_not_windows.test
@@ -3,7 +3,9 @@
# Non-windows specific ps tests.
--source include/not_windows.inc
# requires dynamic loading
---source include/have_dynamic_loading.inc
+if (`SELECT @@have_dynamic_loading != 'YES'`) {
+ --skip ps_not_windows requires dynamic loading
+}
#
# Bug #20665: All commands supported in Stored Procedures should work in
diff --git a/mysql-test/t/query_cache.test b/mysql-test/t/query_cache.test
index 0edc9cca385..993f231759b 100644
--- a/mysql-test/t/query_cache.test
+++ b/mysql-test/t/query_cache.test
@@ -94,10 +94,6 @@ select sql_cache * from t1 union select * from t1;
set query_cache_type=2;
select sql_cache * from t1 union select * from t1;
-# all sql_cache statements, except for the first select, are ignored.
-select * from t1 union select sql_cache * from t1;
-select * from t1 where a IN (select sql_cache a from t1);
-select * from t1 where a IN (select a from t1 union select sql_cache a from t1);
show status like "Qcache_hits";
show status like "Qcache_queries_in_cache";
set query_cache_type=on;
@@ -110,15 +106,6 @@ show status like "Qcache_queries_in_cache";
# SELECT SQL_NO_CACHE
#
select sql_no_cache * from t1;
-# sql_no_cache can occur in any nested select to turn on cacheing for the whole
-# expression and it will always override a sql_cache statement.
-select * from t1 union select sql_no_cache * from t1;
-select * from t1 where a IN (select sql_no_cache a from t1);
-select * from t1 where a IN (select a from t1 union select sql_no_cache a from t1);
-select sql_cache sql_no_cache * from t1;
-select sql_cache * from t1 union select sql_no_cache * from t1;
-select sql_cache * from t1 where a IN (select sql_no_cache a from t1);
-select sql_cache * from t1 where a IN (select a from t1 union select sql_no_cache a from t1);
show status like "Qcache_queries_in_cache";
drop table t1;
#
@@ -953,9 +940,9 @@ set global query_cache_size=0;
create table t1 (a int);
insert into t1 values (1),(2),(3);
set GLOBAL query_cache_type=1;
-set GLOBAL query_cache_limit=10000;
+set GLOBAL query_cache_limit=10240;
set GLOBAL query_cache_min_res_unit=0;
-set GLOBAL query_cache_size= 100000;
+set GLOBAL query_cache_size= 102400;
# default_week_format
reset query cache;
@@ -1023,7 +1010,7 @@ set GLOBAL query_cache_size= default;
# Bug#28897 UUID() returns non-unique values when query cache is enabled
#
-set GLOBAL query_cache_size=1000000;
+set GLOBAL query_cache_size=1024000;
create table t1 (a char);
insert into t1 values ('c');
@@ -1044,22 +1031,25 @@ set GLOBAL query_cache_size= default;
# Bug #29053 SQL_CACHE in UNION causes non-deterministic functions to be cached
#
-set GLOBAL query_cache_size=1000000;
-
-create table t1 (a char);
-insert into t1 values ('c');
-
-let $q1= `select RAND() from t1 union select sql_cache 1 from t1;`;
-let $q2= `select RAND() from t1 union select sql_cache 1 from t1;`;
-
+# This syntax is no longer allowed, therefore the test case has been commented
+# out.
+# See test for Bug#35020 below.
+#set GLOBAL query_cache_size=1000000;
+#
+#create table t1 (a char);
+#insert into t1 values ('c');
+#
+#let $q1= `select RAND() from t1 union select sql_cache 1 from t1;`;
+#let $q2= `select RAND() from t1 union select sql_cache 1 from t1;`;
+#
# disabling the logging of the query because the times are different each run.
---disable_query_log
-eval select a from t1 where "$q1" = "$q2";
---enable_query_log
-
-drop table t1;
-
-set GLOBAL query_cache_size= default;
+#--disable_query_log
+#eval select a from t1 where "$q1" = "$q2";
+#--enable_query_log
+#
+#drop table t1;
+#
+#set GLOBAL query_cache_size= default;
#
# Bug#29856: Insufficient buffer space led to a server crash.
@@ -1189,7 +1179,7 @@ SET GLOBAL query_cache_size= default;
--echo #
--echo # Bug#25132 disabled query cache: Qcache_free_blocks = 1
--echo #
-set global query_cache_size=100000;
+set global query_cache_size=102400;
set global query_cache_size=0;
set global query_cache_type=0;
show status like 'Qcache_free_blocks';
@@ -1307,5 +1297,69 @@ SELECT 1 FROM t1 GROUP BY
DROP TABLE t1;
SET GLOBAL query_cache_size= default;
---echo End of 5.1 tests
+#
+# Bug#35020: illegal sql_cache select syntax
+#
+CREATE TABLE t1( a INT );
+
+--error ER_PARSE_ERROR
+SET @v = ( SELECT SQL_CACHE 1 );
+--error ER_PARSE_ERROR
+SET @v = ( SELECT SQL_NO_CACHE 1 );
+
+#
+# Keywords 'SQL_CACHE' and 'SQL_NO_CACHE' are allowed as column names.
+# Hence the error messages are not intuitive.
+#
+--error ER_BAD_FIELD_ERROR
+SELECT a FROM t1 WHERE a IN ( SELECT SQL_CACHE a FROM t1 );
+--error ER_BAD_FIELD_ERROR
+SELECT a FROM t1 WHERE a IN ( SELECT SQL_NO_CACHE a FROM t1 );
+--error ER_BAD_FIELD_ERROR
+SELECT ( SELECT SQL_CACHE a FROM t1 );
+--error ER_BAD_FIELD_ERROR
+SELECT ( SELECT SQL_NO_CACHE a FROM t1 );
+
+SELECT SQL_CACHE * FROM t1;
+SELECT SQL_NO_CACHE * FROM t1;
+
+# SQL_CACHE is only allowed once in first top-level select.
+--error ER_CANT_USE_OPTION_HERE
+SELECT * FROM t1 UNION SELECT SQL_CACHE * FROM t1;
+--error ER_CANT_USE_OPTION_HERE
+SELECT * FROM t1 UNION SELECT SQL_NO_CACHE * FROM t1;
+--error ER_BAD_FIELD_ERROR
+SELECT * FROM t1 WHERE a IN (SELECT SQL_CACHE a FROM t1);
+--error ER_BAD_FIELD_ERROR
+SELECT * FROM t1 WHERE a IN (SELECT a FROM t1 UNION SELECT SQL_CACHE a FROM t1);
+
+--error ER_CANT_USE_OPTION_HERE
+SELECT * FROM t1 UNION SELECT SQL_NO_CACHE * FROM t1;
+--error ER_BAD_FIELD_ERROR
+SELECT * FROM t1 WHERE a IN (SELECT SQL_NO_CACHE a FROM t1);
+--error ER_BAD_FIELD_ERROR
+SELECT * FROM t1 WHERE a IN
+ (SELECT a FROM t1 UNION SELECT SQL_NO_CACHE a FROM t1);
+--error ER_WRONG_USAGE
+SELECT SQL_CACHE SQL_NO_CACHE * FROM t1;
+--error ER_WRONG_USAGE
+SELECT SQL_NO_CACHE SQL_CACHE * FROM t1;
+--error ER_CANT_USE_OPTION_HERE
+SELECT SQL_CACHE * FROM t1 UNION SELECT SQL_CACHE * FROM t1;
+--error ER_CANT_USE_OPTION_HERE
+SELECT SQL_CACHE * FROM t1 UNION SELECT SQL_NO_CACHE * FROM t1;
+--error ER_CANT_USE_OPTION_HERE
+SELECT SQL_NO_CACHE * FROM t1 UNION SELECT SQL_CACHE * FROM t1;
+--error ER_CANT_USE_OPTION_HERE
+SELECT SQL_NO_CACHE * FROM t1 UNION SELECT SQL_NO_CACHE * FROM t1;
+--error ER_BAD_FIELD_ERROR
+SELECT SQL_CACHE * FROM t1 WHERE a IN
+ (SELECT SQL_NO_CACHE a FROM t1);
+--error ER_BAD_FIELD_ERROR
+SELECT SQL_CACHE * FROM t1 WHERE a IN
+ (SELECT a FROM t1 UNION SELECT SQL_NO_CACHE a FROM t1);
+
+DROP TABLE t1;
+
+--echo End of 5.1 tests
diff --git a/mysql-test/t/query_cache_disabled-master.opt b/mysql-test/t/query_cache_disabled-master.opt
new file mode 100644
index 00000000000..d7d47164883
--- /dev/null
+++ b/mysql-test/t/query_cache_disabled-master.opt
@@ -0,0 +1 @@
+--query_cache_type=0
diff --git a/mysql-test/t/query_cache_disabled.test b/mysql-test/t/query_cache_disabled.test
new file mode 100644
index 00000000000..cbc98bd94d6
--- /dev/null
+++ b/mysql-test/t/query_cache_disabled.test
@@ -0,0 +1,15 @@
+-- source include/have_query_cache.inc
+#
+# Bug#38551 query cache can still consume [very little] cpu time even when it is off.
+#
+SHOW GLOBAL VARIABLES LIKE 'query_cache_type';
+--error ER_QUERY_CACHE_DISABLED
+SET GLOBAL query_cache_type=ON;
+--error ER_QUERY_CACHE_DISABLED
+SET GLOBAL query_cache_type=DEMAND;
+--error ER_QUERY_CACHE_DISABLED
+SET GLOBAL query_cache_type=OFF;
+SET GLOBAL query_cache_size=1024*1024;
+SHOW GLOBAL VARIABLES LIKE 'query_cache_size';
+SET GLOBAL query_cache_size=0;
+
diff --git a/mysql-test/t/query_cache_notembedded.test b/mysql-test/t/query_cache_notembedded.test
index 095d47f5bdf..77033ced564 100644
--- a/mysql-test/t/query_cache_notembedded.test
+++ b/mysql-test/t/query_cache_notembedded.test
@@ -99,6 +99,7 @@ connection root2;
SELECT * FROM t1;
connection root;
SELECT * FROM t1;
+UNLOCK TABLES;
drop table t1;
connection default;
disconnect root;
diff --git a/mysql-test/t/rpl_mysqldump_slave.test b/mysql-test/t/rpl_mysqldump_slave.test
new file mode 100644
index 00000000000..5723f1282aa
--- /dev/null
+++ b/mysql-test/t/rpl_mysqldump_slave.test
@@ -0,0 +1,25 @@
+source include/master-slave.inc;
+
+--echo #
+--echo # New --dump-slave, --apply-slave-statements functionality
+--echo #
+
+# There is a gap between when START SLAVE returns and when MASTER_LOG_FILE and
+# MASTER_LOG_POS are set. Ensure that we don't call SHOW SLAVE STATUS during
+# that gap.
+--sync_slave_with_master
+
+connection master;
+use test;
+
+connection slave;
+
+# Execute mysqldump with --dump-slave
+--exec $MYSQL_DUMP_SLAVE --compact --dump-slave test
+
+# Execute mysqldump with --dump-slave and --apply-slave-statements
+--exec $MYSQL_DUMP_SLAVE --compact --dump-slave --apply-slave-statements test
+
+--replace_result $MASTER_MYPORT MASTER_MYPORT
+# Execute mysqldump with --dump-slave ,--apply-slave-statements and --include-master-host-port
+--exec $MYSQL_DUMP_SLAVE --compact --dump-slave --apply-slave-statements --include-master-host-port test
diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test
index e58cea1eef3..dad7405835b 100644
--- a/mysql-test/t/select.test
+++ b/mysql-test/t/select.test
@@ -3767,9 +3767,14 @@ INSERT INTO t1 VALUES (2),(3);
--echo # Should not crash
--error ER_SUBQUERY_NO_1_ROW
SELECT 1 FROM t1 WHERE a <> 1 AND NOT
-ROW(a,a) <=> ROW((SELECT 1 FROM t1 WHERE 1=2),(SELECT 1 FROM t1))
+ROW(1,a) <=> ROW(1,(SELECT 1 FROM t1))
INTO @var0;
+# Query correctly return 2 rows since comparison a <=> fisrt_subquery is
+# always false, thus the second query is never executed.
+SELECT 1 FROM t1 WHERE a <> 1 AND NOT
+ROW(a,a) <=> ROW((SELECT 1 FROM t1 WHERE 1=2),(SELECT 1 FROM t1));
+
DROP TABLE t1;
--echo #
@@ -3982,6 +3987,39 @@ SELECT table1 .`time_key` field2 FROM B table1 LEFT JOIN BB JOIN A table5 ON
drop table A,AA,B,BB;
--echo #end of test for bug#45266
+--echo #
+--echo # Bug#33546: Slowdown on re-evaluation of constant expressions.
+--echo #
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
+CREATE TABLE t2 (b INT);
+INSERT INTO t2 VALUES (2);
+SELECT * FROM t1 WHERE a = 1 + 1;
+EXPLAIN EXTENDED SELECT * FROM t1 WHERE a = 1 + 1;
+SELECT * FROM t1 HAVING a = 1 + 1;
+EXPLAIN EXTENDED SELECT * FROM t1 HAVING a = 1 + 1;
+SELECT * FROM t1, t2 WHERE a = b + (1 + 1);
+EXPLAIN EXTENDED SELECT * FROM t1, t2 WHERE a = b + (1 + 1);
+SELECT * FROM t2 LEFT JOIN t1 ON a = b + 1;
+EXPLAIN EXTENDED SELECT * FROM t2 LEFT JOIN t1 ON a = b + 1;
+EXPLAIN EXTENDED SELECT * FROM t1 WHERE a > UNIX_TIMESTAMP('2009-03-10 00:00:00');
+
+delimiter |;
+CREATE FUNCTION f1() RETURNS INT DETERMINISTIC
+BEGIN
+ SET @cnt := @cnt + 1;
+ RETURN 1;
+END;|
+delimiter ;|
+
+SET @cnt := 0;
+SELECT * FROM t1 WHERE a = f1();
+SELECT @cnt;
+EXPLAIN EXTENDED SELECT * FROM t1 WHERE a = f1();
+DROP TABLE t1, t2;
+DROP FUNCTION f1;
+--echo # End of bug#33546
+
--echo #
--echo # BUG#48052: Valgrind warning - uninitialized value in init_read_record()
--echo #
diff --git a/mysql-test/t/select_safe.test b/mysql-test/t/select_safe.test
index 481779e76d7..cca736d4c1d 100644
--- a/mysql-test/t/select_safe.test
+++ b/mysql-test/t/select_safe.test
@@ -6,7 +6,7 @@
drop table if exists t1;
--enable_warnings
-SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=4, SQL_MAX_JOIN_SIZE=9;
+SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=4, MAX_JOIN_SIZE=9;
create table t1 (a int auto_increment primary key, b char(20));
insert into t1 values(1,"test");
SELECT SQL_BUFFER_RESULT * from t1;
@@ -85,6 +85,6 @@ set local max_join_size=1;
select * from (select 1 union select 2 union select 3) x;
drop table t1;
-SET SQL_SAFE_UPDATES=0,SQL_SELECT_LIMIT=DEFAULT, SQL_MAX_JOIN_SIZE=DEFAULT;
+SET SQL_SAFE_UPDATES=0,SQL_SELECT_LIMIT=DEFAULT, MAX_JOIN_SIZE=DEFAULT;
# End of 4.1 tests
diff --git a/mysql-test/t/shm.test b/mysql-test/t/shm.test
index 88e96ae7b45..567caa4989a 100644
--- a/mysql-test/t/shm.test
+++ b/mysql-test/t/shm.test
@@ -7,10 +7,17 @@ let $shm= query_get_value("SHOW VARIABLES LIKE 'shared_memory'", Value, 1);
if (`SELECT '$shm' != 'ON'`){
skip No shm support;
}
+let $shm_name= query_get_value("SHOW GLOBAL VARIABLES LIKE 'shared_memory_base_name'", Value, 1);
+
+# Connect using SHM for testing
+connect(shm_con,localhost,root,,,,$shm_name,SHM);
# Source select test case
-- source include/common-tests.inc
+connection default;
+disconnect shm_con;
+
#
# Bug #24924: shared-memory-base-name that is too long causes buffer overflow
#
@@ -20,7 +27,6 @@ if (`SELECT '$shm' != 'ON'`){
# Bug #33899: Deadlock in mysql_real_query with shared memory connections
#
-let $name= query_get_value("SHOW GLOBAL VARIABLES LIKE 'shared_memory_base_name'", Value, 1);
let $stmt= `SELECT REPEAT('a', 2048)`;
SET @max_allowed_packet= @@global.max_allowed_packet;
@@ -30,7 +36,7 @@ SET GLOBAL max_allowed_packet= 1024;
SET GLOBAL net_buffer_length= 1024;
--error 1
---exec echo SELECT '$stmt'| $MYSQL --protocol=memory --shared-memory-base-name=$name 2>&1
+--exec echo SELECT '$stmt'| $MYSQL --protocol=memory --shared-memory-base-name=$shm_name 2>&1
SET GLOBAL max_allowed_packet= @max_allowed_packet;
SET GLOBAL net_buffer_length= @net_buffer_length;
diff --git a/mysql-test/t/show_check.test b/mysql-test/t/show_check.test
index d46261f38d2..4f98b8b5128 100644
--- a/mysql-test/t/show_check.test
+++ b/mysql-test/t/show_check.test
@@ -550,18 +550,14 @@ CREATE VIEW v1 AS SELECT SQL_NO_CACHE NOW();
SHOW CREATE VIEW v1;
DROP VIEW v1;
-# Check that SQL_NO_CACHE always wins.
+--error ER_WRONG_USAGE
CREATE VIEW v1 AS SELECT SQL_CACHE SQL_NO_CACHE NOW();
-SHOW CREATE VIEW v1;
-DROP VIEW v1;
+--error ER_WRONG_USAGE
CREATE VIEW v1 AS SELECT SQL_NO_CACHE SQL_CACHE NOW();
-SHOW CREATE VIEW v1;
-DROP VIEW v1;
+--error ER_WRONG_USAGE
CREATE VIEW v1 AS SELECT SQL_CACHE SQL_NO_CACHE SQL_CACHE NOW();
-SHOW CREATE VIEW v1;
-DROP VIEW v1;
# Check CREATE VIEW in a prepared statement in a procedure.
delimiter |;
@@ -629,8 +625,6 @@ show plugins;
show columns in t1;
show slave hosts;
show keys in t1;
-show column types;
-show table types;
show storage engines;
show authors;
show contributors;
@@ -909,7 +903,7 @@ CREATE TABLE t1(ËÏÌÏÎËÁ1 INT);
--echo
--echo ---> Dumping mysqltest1 to outfile1
---exec $MYSQL_DUMP --default-character-set=latin1 --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $outfile1
+--exec $MYSQL_DUMP --default-character-set=latin1 --character-sets-dir=$MYSQL_SHAREDIR/charsets --databases mysqltest1 > $outfile1
# - Clean mysqltest1;
@@ -1009,11 +1003,6 @@ disconnect con4;
#
--disable_result_log
-show full plugin;
---enable_result_log
-show warnings;
---disable_result_log
-show plugin;
show plugins;
--enable_result_log
@@ -1181,14 +1170,6 @@ DROP TABLE t1;
DROP EVENT ev1;
#
-# Bug#30036 SHOW TABLE TYPES causes the debug client to crash
-#
---disable_result_log
-SHOW TABLE TYPES;
---enable_result_log
-
-
-#
# Bug#32710 SHOW INNODB STATUS requires SUPER
#
diff --git a/mysql-test/t/signal.test b/mysql-test/t/signal.test
new file mode 100644
index 00000000000..bdb6625ba32
--- /dev/null
+++ b/mysql-test/t/signal.test
@@ -0,0 +1,2685 @@
+# Copyright (C) 2008 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for SIGNAL and RESIGNAL
+
+--echo #
+--echo # PART 1: syntax
+--echo #
+
+--echo #
+--echo # Test every new reserved and non reserved keywords
+--echo #
+
+--disable_warnings
+drop table if exists signal_non_reserved;
+--enable_warnings
+
+create table signal_non_reserved (
+ class_origin int,
+ subclass_origin int,
+ constraint_catalog int,
+ constraint_schema int,
+ constraint_name int,
+ catalog_name int,
+ schema_name int,
+ table_name int,
+ column_name int,
+ cursor_name int,
+ message_text int,
+ sqlcode int
+);
+
+drop table signal_non_reserved;
+
+--disable_warnings
+drop table if exists diag_non_reserved;
+--enable_warnings
+
+create table diag_non_reserved (
+ diagnostics int,
+ current int,
+ stacked int,
+ exception int
+);
+
+drop table diag_non_reserved;
+
+--disable_warnings
+drop table if exists diag_cond_non_reserved;
+--enable_warnings
+
+create table diag_cond_non_reserved (
+ condition_identifier int,
+ condition_number int,
+ condition_name int,
+ connection_name int,
+ message_length int,
+ message_octet_length int,
+ parameter_mode int,
+ parameter_name int,
+ parameter_ordinal_position int,
+ returned_sqlstate int,
+ routine_catalog int,
+ routine_name int,
+ routine_schema int,
+ server_name int,
+ specific_name int,
+ trigger_catalog int,
+ trigger_name int,
+ trigger_schema int
+);
+
+drop table diag_cond_non_reserved;
+
+--disable_warnings
+drop table if exists diag_stmt_non_reserved;
+--enable_warnings
+
+create table diag_stmt_non_reserved (
+ number int,
+ more int,
+ command_function int,
+ command_function_code int,
+ dynamic_function int,
+ dynamic_function_code int,
+ row_count int,
+ transactions_committed int,
+ transactions_rolled_back int,
+ transaction_active int
+);
+
+drop table diag_stmt_non_reserved;
+
+--disable_warnings
+drop table if exists test_reserved;
+--enable_warnings
+
+--error ER_PARSE_ERROR
+create table test_reserved (signal int);
+
+--error ER_PARSE_ERROR
+create table test_reserved (resignal int);
+
+--error ER_PARSE_ERROR
+create table test_reserved (condition int);
+
+--echo #
+--echo # Test the SIGNAL syntax
+--echo #
+
+--disable_warnings
+drop procedure if exists test_invalid;
+drop procedure if exists test_signal_syntax;
+drop function if exists test_signal_func;
+--enable_warnings
+
+delimiter $$;
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ SIGNAL;
+end $$
+
+--error ER_SP_COND_MISMATCH
+create procedure test_invalid()
+begin
+ SIGNAL foo;
+end $$
+
+--error ER_SIGNAL_BAD_CONDITION_TYPE
+create procedure test_invalid()
+begin
+ DECLARE foo CONDITION FOR 1234;
+ SIGNAL foo;
+end $$
+
+create procedure test_signal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo;
+end $$
+drop procedure test_signal_syntax $$
+
+create procedure test_signal_syntax()
+begin
+ SIGNAL SQLSTATE '23000';
+end $$
+drop procedure test_signal_syntax $$
+
+create procedure test_signal_syntax()
+begin
+ SIGNAL SQLSTATE VALUE '23000';
+end $$
+drop procedure test_signal_syntax $$
+
+create procedure test_signal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET CLASS_ORIGIN = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+
+create procedure test_signal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET SUBCLASS_ORIGIN = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+
+create procedure test_signal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET CONSTRAINT_CATALOG = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+
+create procedure test_signal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET CONSTRAINT_SCHEMA = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+
+create procedure test_signal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET CONSTRAINT_NAME = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+
+create procedure test_signal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET CATALOG_NAME = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+
+create procedure test_signal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET SCHEMA_NAME = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+
+create procedure test_signal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET TABLE_NAME = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+
+create procedure test_signal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET COLUMN_NAME = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+
+create procedure test_signal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET CURSOR_NAME = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+
+create procedure test_signal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET MESSAGE_TEXT = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+
+create procedure test_signal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET MYSQL_ERRNO = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+
+--error ER_DUP_SIGNAL_SET
+create procedure test_invalid()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET CLASS_ORIGIN = 'foo', CLASS_ORIGIN = 'bar';
+end $$
+
+--error ER_DUP_SIGNAL_SET
+create procedure test_invalid()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET MESSAGE_TEXT = 'foo', MESSAGE_TEXT = 'bar';
+end $$
+
+--error ER_DUP_SIGNAL_SET
+create procedure test_invalid()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET MYSQL_ERRNO = 'foo', MYSQL_ERRNO = 'bar';
+end $$
+
+create procedure test_signal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET
+ CLASS_ORIGIN = 'foo',
+ SUBCLASS_ORIGIN = 'foo',
+ CONSTRAINT_CATALOG = 'foo',
+ CONSTRAINT_SCHEMA = 'foo',
+ CONSTRAINT_NAME = 'foo',
+ CATALOG_NAME = 'foo',
+ SCHEMA_NAME = 'foo',
+ TABLE_NAME = 'foo',
+ COLUMN_NAME = 'foo',
+ CURSOR_NAME = 'foo',
+ MESSAGE_TEXT = 'foo',
+ MYSQL_ERRNO = 'foo';
+end $$
+drop procedure test_signal_syntax $$
+
+--error ER_SP_BAD_SQLSTATE
+SIGNAL SQLSTATE '00000' $$
+
+--error ER_SP_BAD_SQLSTATE
+SIGNAL SQLSTATE '00001' $$
+
+--error ER_SP_BAD_SQLSTATE
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '00000';
+end $$
+
+--error ER_SP_BAD_SQLSTATE
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '00001';
+end $$
+
+--echo #
+--echo # Test conditions information that SIGNAL can not set
+--echo #
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '12345' SET bla_bla = 'foo';
+end $$
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '12345' SET CONDITION_IDENTIFIER = 'foo';
+end $$
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '12345' SET CONDITION_NUMBER = 'foo';
+end $$
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '12345' SET CONNECTION_NAME = 'foo';
+end $$
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '12345' SET MESSAGE_LENGTH = 'foo';
+end $$
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '12345' SET MESSAGE_OCTET_LENGTH = 'foo';
+end $$
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '12345' SET PARAMETER_MODE = 'foo';
+end $$
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '12345' SET PARAMETER_NAME = 'foo';
+end $$
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '12345' SET PARAMETER_ORDINAL_POSITION = 'foo';
+end $$
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '12345' SET RETURNED_SQLSTATE = 'foo';
+end $$
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '12345' SET ROUTINE_CATALOG = 'foo';
+end $$
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '12345' SET ROUTINE_NAME = 'foo';
+end $$
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '12345' SET ROUTINE_SCHEMA = 'foo';
+end $$
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '12345' SET SERVER_NAME = 'foo';
+end $$
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '12345' SET SPECIFIC_NAME = 'foo';
+end $$
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '12345' SET TRIGGER_CATALOG = 'foo';
+end $$
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '12345' SET TRIGGER_NAME = 'foo';
+end $$
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ SIGNAL SQLSTATE '12345' SET TRIGGER_SCHEMA = 'foo';
+end $$
+
+delimiter ;$$
+
+--echo #
+--echo # Test the RESIGNAL syntax
+--echo #
+
+--disable_warnings
+drop procedure if exists test_invalid;
+drop procedure if exists test_resignal_syntax;
+--enable_warnings
+
+delimiter $$;
+
+--error ER_SP_COND_MISMATCH
+create procedure test_invalid()
+begin
+ RESIGNAL foo;
+end $$
+
+create procedure test_resignal_syntax()
+begin
+ RESIGNAL;
+end $$
+drop procedure test_resignal_syntax $$
+
+--error ER_SIGNAL_BAD_CONDITION_TYPE
+create procedure test_invalid()
+begin
+ DECLARE foo CONDITION FOR 1234;
+ RESIGNAL foo;
+end $$
+
+create procedure test_resignal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ RESIGNAL foo;
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ RESIGNAL SQLSTATE '23000';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ RESIGNAL SQLSTATE VALUE '23000';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ RESIGNAL SET CLASS_ORIGIN = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ RESIGNAL foo SET CLASS_ORIGIN = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ RESIGNAL SET SUBCLASS_ORIGIN = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ RESIGNAL foo SET SUBCLASS_ORIGIN = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ RESIGNAL SET CONSTRAINT_CATALOG = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ RESIGNAL foo SET CONSTRAINT_CATALOG = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ RESIGNAL SET CONSTRAINT_SCHEMA = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ RESIGNAL foo SET CONSTRAINT_SCHEMA = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ RESIGNAL SET CONSTRAINT_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ RESIGNAL foo SET CONSTRAINT_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ RESIGNAL SET CATALOG_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ RESIGNAL foo SET CATALOG_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ RESIGNAL SET SCHEMA_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ RESIGNAL foo SET SCHEMA_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ RESIGNAL SET TABLE_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ RESIGNAL foo SET TABLE_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ RESIGNAL SET COLUMN_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ RESIGNAL foo SET COLUMN_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ RESIGNAL SET CURSOR_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ RESIGNAL foo SET CURSOR_NAME = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ RESIGNAL SET MESSAGE_TEXT = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ RESIGNAL foo SET MESSAGE_TEXT = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ RESIGNAL SET MYSQL_ERRNO = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+create procedure test_resignal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ RESIGNAL foo SET MYSQL_ERRNO = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+--error ER_DUP_SIGNAL_SET
+create procedure test_invalid()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ RESIGNAL foo SET CLASS_ORIGIN = 'foo', CLASS_ORIGIN = 'bar';
+end $$
+
+--error ER_DUP_SIGNAL_SET
+create procedure test_invalid()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ RESIGNAL foo SET MESSAGE_TEXT = 'foo', MESSAGE_TEXT = 'bar';
+end $$
+
+--error ER_DUP_SIGNAL_SET
+create procedure test_invalid()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ RESIGNAL foo SET MYSQL_ERRNO = 'foo', MYSQL_ERRNO = 'bar';
+end $$
+
+create procedure test_resignal_syntax()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ RESIGNAL foo SET
+ CLASS_ORIGIN = 'foo',
+ SUBCLASS_ORIGIN = 'foo',
+ CONSTRAINT_CATALOG = 'foo',
+ CONSTRAINT_SCHEMA = 'foo',
+ CONSTRAINT_NAME = 'foo',
+ CATALOG_NAME = 'foo',
+ SCHEMA_NAME = 'foo',
+ TABLE_NAME = 'foo',
+ COLUMN_NAME = 'foo',
+ CURSOR_NAME = 'foo',
+ MESSAGE_TEXT = 'foo';
+end $$
+drop procedure test_resignal_syntax $$
+
+--error ER_SP_BAD_SQLSTATE
+create procedure test_invalid()
+begin
+ RESIGNAL SQLSTATE '00000';
+end $$
+
+--error ER_SP_BAD_SQLSTATE
+create procedure test_invalid()
+begin
+ RESIGNAL SQLSTATE '00001';
+end $$
+
+delimiter ;$$
+
+--echo #
+--echo # PART 2: non preparable statements
+--echo #
+
+--error ER_UNSUPPORTED_PS
+prepare stmt from 'SIGNAL SQLSTATE \'23000\'';
+
+--error ER_UNSUPPORTED_PS
+prepare stmt from 'RESIGNAL SQLSTATE \'23000\'';
+
+--echo #
+--echo # PART 3: runtime execution
+--echo #
+
+--disable_warnings
+drop procedure if exists test_signal;
+drop procedure if exists test_resignal;
+drop table if exists t_warn;
+drop table if exists t_cursor;
+--enable_warnings
+
+# Helper tables
+create table t_warn(a integer(2));
+create table t_cursor(a integer);
+
+--echo #
+--echo # SIGNAL can also appear in a query
+--echo #
+
+--error ER_SP_COND_MISMATCH
+SIGNAL foo;
+
+SIGNAL SQLSTATE '01000';
+
+--error ER_SIGNAL_NOT_FOUND
+SIGNAL SQLSTATE '02000';
+
+--error ER_SIGNAL_EXCEPTION
+SIGNAL SQLSTATE '23000';
+
+--error ER_SIGNAL_EXCEPTION
+SIGNAL SQLSTATE VALUE '23000';
+
+--error ER_WRONG_VALUE_FOR_VAR
+SIGNAL SQLSTATE 'HY000' SET MYSQL_ERRNO = 65536;
+
+--error ER_WRONG_VALUE_FOR_VAR
+SIGNAL SQLSTATE 'HY000' SET MYSQL_ERRNO = 99999;
+
+--error ER_WRONG_VALUE_FOR_VAR
+SIGNAL SQLSTATE 'HY000' SET MYSQL_ERRNO = 4294967295;
+
+--error ER_WRONG_VALUE_FOR_VAR
+SIGNAL SQLSTATE 'HY000' SET MYSQL_ERRNO = 0;
+
+--error ER_PARSE_ERROR
+SIGNAL SQLSTATE 'HY000' SET MYSQL_ERRNO = -1;
+
+--error 65535
+SIGNAL SQLSTATE 'HY000' SET MYSQL_ERRNO = 65535;
+
+--echo #
+--echo # RESIGNAL can also appear in a query
+--echo #
+
+--error ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER
+RESIGNAL;
+
+--error ER_SP_COND_MISMATCH
+RESIGNAL foo;
+
+--error ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER
+RESIGNAL SQLSTATE '12345';
+
+--error ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER
+RESIGNAL SQLSTATE VALUE '12345';
+
+--echo #
+--echo # Different kind of SIGNAL conditions
+--echo #
+
+delimiter $$;
+
+create procedure test_signal()
+begin
+ # max range
+ DECLARE foo CONDITION FOR SQLSTATE 'AABBB';
+ SIGNAL foo SET MYSQL_ERRNO = 65535;
+end $$
+
+--error 65535
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ # max range
+ DECLARE foo CONDITION FOR SQLSTATE 'AABBB';
+ SIGNAL foo SET MYSQL_ERRNO = 65536;
+end $$
+
+--error ER_WRONG_VALUE_FOR_VAR
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ # Error
+ DECLARE foo CONDITION FOR SQLSTATE '99999';
+ SIGNAL foo SET MYSQL_ERRNO = 9999;
+end $$
+
+--error 9999
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ # warning
+ DECLARE too_few_records CONDITION FOR SQLSTATE '01000';
+ SIGNAL too_few_records SET MYSQL_ERRNO = 1261;
+end $$
+
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ # Not found
+ DECLARE sp_fetch_no_data CONDITION FOR SQLSTATE '02000';
+ SIGNAL sp_fetch_no_data SET MYSQL_ERRNO = 1329;
+end $$
+
+--error ER_SP_FETCH_NO_DATA
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ # Error
+ DECLARE sp_cursor_already_open CONDITION FOR SQLSTATE '24000';
+ SIGNAL sp_cursor_already_open SET MYSQL_ERRNO = 1325;
+end $$
+
+--error ER_SP_CURSOR_ALREADY_OPEN
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ # Severe error
+ DECLARE lock_deadlock CONDITION FOR SQLSTATE '40001';
+ SIGNAL lock_deadlock SET MYSQL_ERRNO = 1213;
+end $$
+
+--error ER_LOCK_DEADLOCK
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ # Unknown -> error
+ DECLARE foo CONDITION FOR SQLSTATE "99999";
+ SIGNAL foo;
+end $$
+
+--error ER_SIGNAL_EXCEPTION
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ # warning, no subclass
+ DECLARE warn CONDITION FOR SQLSTATE "01000";
+ SIGNAL warn;
+end $$
+
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ # warning, with subclass
+ DECLARE warn CONDITION FOR SQLSTATE "01123";
+ SIGNAL warn;
+end $$
+
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ # Not found, no subclass
+ DECLARE not_found CONDITION FOR SQLSTATE "02000";
+ SIGNAL not_found;
+end $$
+
+--error ER_SIGNAL_NOT_FOUND
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ # Not found, with subclass
+ DECLARE not_found CONDITION FOR SQLSTATE "02XXX";
+ SIGNAL not_found;
+end $$
+
+--error ER_SIGNAL_NOT_FOUND
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ # Error, no subclass
+ DECLARE error CONDITION FOR SQLSTATE "12000";
+ SIGNAL error;
+end $$
+
+--error ER_SIGNAL_EXCEPTION
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ # Error, with subclass
+ DECLARE error CONDITION FOR SQLSTATE "12ABC";
+ SIGNAL error;
+end $$
+
+--error ER_SIGNAL_EXCEPTION
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ # Severe error, no subclass
+ DECLARE error CONDITION FOR SQLSTATE "40000";
+ SIGNAL error;
+end $$
+
+--error ER_SIGNAL_EXCEPTION
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ # Severe error, with subclass
+ DECLARE error CONDITION FOR SQLSTATE "40001";
+ SIGNAL error;
+end $$
+
+--error ER_SIGNAL_EXCEPTION
+call test_signal() $$
+drop procedure test_signal $$
+
+--echo #
+--echo # Test the scope of condition
+--echo #
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '99999';
+ begin
+ DECLARE foo CONDITION FOR 8888;
+ end;
+ SIGNAL foo SET MYSQL_ERRNO=9999; /* outer */
+end $$
+
+--error 9999
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR 9999;
+ begin
+ DECLARE foo CONDITION FOR SQLSTATE '88888';
+ SIGNAL foo SET MYSQL_ERRNO=8888; /* inner */
+ end;
+end $$
+
+--error 8888
+call test_signal() $$
+drop procedure test_signal $$
+
+--echo #
+--echo # Test SET MYSQL_ERRNO
+--echo #
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '99999';
+ SIGNAL foo SET MYSQL_ERRNO = 1111;
+end $$
+
+--error 1111
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE warn CONDITION FOR SQLSTATE "01000";
+ SIGNAL warn SET MYSQL_ERRNO = 1111;
+end $$
+
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE not_found CONDITION FOR SQLSTATE "02000";
+ SIGNAL not_found SET MYSQL_ERRNO = 1111;
+end $$
+
+--error 1111
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE "55000";
+ SIGNAL error SET MYSQL_ERRNO = 1111;
+end $$
+
+--error 1111
+call test_signal() $$
+drop procedure test_signal $$
+
+--echo #
+--echo # Test SET MESSAGE_TEXT
+--echo #
+
+--error ER_SIGNAL_EXCEPTION
+SIGNAL SQLSTATE '77777' SET MESSAGE_TEXT='' $$
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '77777';
+ SIGNAL foo SET
+ MESSAGE_TEXT = "",
+ MYSQL_ERRNO=5678;
+end $$
+
+--error 5678
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '99999';
+ SIGNAL foo SET
+ MESSAGE_TEXT = "Something bad happened",
+ MYSQL_ERRNO=9999;
+end $$
+
+--error 9999
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE warn CONDITION FOR SQLSTATE "01000";
+ SIGNAL warn SET MESSAGE_TEXT = "Something bad happened";
+end $$
+
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE not_found CONDITION FOR SQLSTATE "02000";
+ SIGNAL not_found SET MESSAGE_TEXT = "Something bad happened";
+end $$
+
+--error ER_SIGNAL_NOT_FOUND
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE "55000";
+ SIGNAL error SET MESSAGE_TEXT = "Something bad happened";
+end $$
+
+--error ER_SIGNAL_EXCEPTION
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE something CONDITION FOR SQLSTATE "01000";
+ SIGNAL something SET MESSAGE_TEXT = _utf8 "This is a UTF8 text";
+end $$
+
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE something CONDITION FOR SQLSTATE "01000";
+ SIGNAL something SET MESSAGE_TEXT = "";
+end $$
+
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE warn CONDITION FOR SQLSTATE "01111";
+ SIGNAL warn SET MESSAGE_TEXT = "á a";
+end $$
+
+call test_signal() $$
+show warnings $$
+drop procedure test_signal $$
+
+--echo #
+--echo # Test SET complex expressions
+--echo #
+
+create procedure test_signal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE '99999';
+ SIGNAL error SET
+ MYSQL_ERRNO = NULL;
+end $$
+
+--error ER_WRONG_VALUE_FOR_VAR
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE '99999';
+ SIGNAL error SET
+ CLASS_ORIGIN = NULL;
+end $$
+
+--error ER_WRONG_VALUE_FOR_VAR
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE '99999';
+ SIGNAL error SET
+ SUBCLASS_ORIGIN = NULL;
+end $$
+
+--error ER_WRONG_VALUE_FOR_VAR
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE '99999';
+ SIGNAL error SET
+ CONSTRAINT_CATALOG = NULL;
+end $$
+
+--error ER_WRONG_VALUE_FOR_VAR
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE '99999';
+ SIGNAL error SET
+ CONSTRAINT_SCHEMA = NULL;
+end $$
+
+--error ER_WRONG_VALUE_FOR_VAR
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE '99999';
+ SIGNAL error SET
+ CONSTRAINT_NAME = NULL;
+end $$
+
+--error ER_WRONG_VALUE_FOR_VAR
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE '99999';
+ SIGNAL error SET
+ CATALOG_NAME = NULL;
+end $$
+
+--error ER_WRONG_VALUE_FOR_VAR
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE '99999';
+ SIGNAL error SET
+ SCHEMA_NAME = NULL;
+end $$
+
+--error ER_WRONG_VALUE_FOR_VAR
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE '99999';
+ SIGNAL error SET
+ TABLE_NAME = NULL;
+end $$
+
+--error ER_WRONG_VALUE_FOR_VAR
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE '99999';
+ SIGNAL error SET
+ COLUMN_NAME = NULL;
+end $$
+
+--error ER_WRONG_VALUE_FOR_VAR
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE '99999';
+ SIGNAL error SET
+ CURSOR_NAME = NULL;
+end $$
+
+--error ER_WRONG_VALUE_FOR_VAR
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE '99999';
+ SIGNAL error SET
+ MESSAGE_TEXT = NULL;
+end $$
+
+--error ER_WRONG_VALUE_FOR_VAR
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE something CONDITION FOR SQLSTATE '99999';
+ DECLARE message_text VARCHAR(64) DEFAULT "Local string variable";
+ DECLARE sqlcode INTEGER DEFAULT 1234;
+
+ SIGNAL something SET
+ MESSAGE_TEXT = message_text,
+ MYSQL_ERRNO = sqlcode;
+end $$
+
+--error 1234
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal(message_text VARCHAR(64), sqlcode INTEGER)
+begin
+ DECLARE something CONDITION FOR SQLSTATE "12345";
+
+ SIGNAL something SET
+ MESSAGE_TEXT = message_text,
+ MYSQL_ERRNO = sqlcode;
+end $$
+
+--error ER_WRONG_VALUE_FOR_VAR
+call test_signal("Parameter string", NULL) $$
+
+--error ER_WRONG_VALUE_FOR_VAR
+call test_signal(NULL, 1234) $$
+
+--error 5678
+call test_signal("Parameter string", 5678) $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE something CONDITION FOR SQLSTATE "AABBB";
+
+ SIGNAL something SET
+ MESSAGE_TEXT = @message_text,
+ MYSQL_ERRNO = @sqlcode;
+end $$
+
+--error ER_WRONG_VALUE_FOR_VAR
+call test_signal() $$
+
+set @sqlcode= 12 $$
+
+--error ER_WRONG_VALUE_FOR_VAR
+call test_signal() $$
+
+set @message_text= "User variable" $$
+
+--error 12
+call test_signal() $$
+drop procedure test_signal $$
+
+--error ER_PARSE_ERROR
+create procedure test_invalid()
+begin
+ DECLARE something CONDITION FOR SQLSTATE "AABBB";
+
+ SIGNAL something SET
+ MESSAGE_TEXT = @message_text := 'illegal',
+ MYSQL_ERRNO = @sqlcode := 1234;
+end $$
+
+create procedure test_signal()
+begin
+ DECLARE aaa VARCHAR(64);
+ DECLARE bbb VARCHAR(64);
+ DECLARE ccc VARCHAR(64);
+ DECLARE ddd VARCHAR(64);
+ DECLARE eee VARCHAR(64);
+ DECLARE fff VARCHAR(64);
+ DECLARE ggg VARCHAR(64);
+ DECLARE hhh VARCHAR(64);
+ DECLARE iii VARCHAR(64);
+ DECLARE jjj VARCHAR(64);
+ DECLARE kkk VARCHAR(64);
+
+ DECLARE warn CONDITION FOR SQLSTATE "01234";
+
+ set aaa= repeat("A", 64);
+ set bbb= repeat("B", 64);
+ set ccc= repeat("C", 64);
+ set ddd= repeat("D", 64);
+ set eee= repeat("E", 64);
+ set fff= repeat("F", 64);
+ set ggg= repeat("G", 64);
+ set hhh= repeat("H", 64);
+ set iii= repeat("I", 64);
+ set jjj= repeat("J", 64);
+ set kkk= repeat("K", 64);
+
+ SIGNAL warn SET
+ CLASS_ORIGIN = aaa,
+ SUBCLASS_ORIGIN = bbb,
+ CONSTRAINT_CATALOG = ccc,
+ CONSTRAINT_SCHEMA = ddd,
+ CONSTRAINT_NAME = eee,
+ CATALOG_NAME = fff,
+ SCHEMA_NAME = ggg,
+ TABLE_NAME = hhh,
+ COLUMN_NAME = iii,
+ CURSOR_NAME = jjj,
+ MESSAGE_TEXT = kkk,
+ MYSQL_ERRNO = 65535;
+end $$
+
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE warn CONDITION FOR SQLSTATE "01234";
+
+ SIGNAL warn SET
+ MYSQL_ERRNO = 999999999999999999999999999999999999999999999999999;
+end $$
+
+--error ER_WRONG_VALUE_FOR_VAR
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE aaax VARCHAR(65);
+ DECLARE bbbx VARCHAR(65);
+ DECLARE cccx VARCHAR(65);
+ DECLARE dddx VARCHAR(65);
+ DECLARE eeex VARCHAR(65);
+ DECLARE fffx VARCHAR(65);
+ DECLARE gggx VARCHAR(65);
+ DECLARE hhhx VARCHAR(65);
+ DECLARE iiix VARCHAR(65);
+ DECLARE jjjx VARCHAR(65);
+ DECLARE kkkx VARCHAR(65);
+ DECLARE lllx VARCHAR(129);
+
+ DECLARE warn CONDITION FOR SQLSTATE "01234";
+
+ set aaax= concat(repeat("A", 64), "X");
+ set bbbx= concat(repeat("B", 64), "X");
+ set cccx= concat(repeat("C", 64), "X");
+ set dddx= concat(repeat("D", 64), "X");
+ set eeex= concat(repeat("E", 64), "X");
+ set fffx= concat(repeat("F", 64), "X");
+ set gggx= concat(repeat("G", 64), "X");
+ set hhhx= concat(repeat("H", 64), "X");
+ set iiix= concat(repeat("I", 64), "X");
+ set jjjx= concat(repeat("J", 64), "X");
+ set kkkx= concat(repeat("K", 64), "X");
+ set lllx= concat(repeat("1", 100),
+ repeat("2", 20),
+ repeat("8", 8),
+ "X");
+
+ SIGNAL warn SET
+ CLASS_ORIGIN = aaax,
+ SUBCLASS_ORIGIN = bbbx,
+ CONSTRAINT_CATALOG = cccx,
+ CONSTRAINT_SCHEMA = dddx,
+ CONSTRAINT_NAME = eeex,
+ CATALOG_NAME = fffx,
+ SCHEMA_NAME = gggx,
+ TABLE_NAME = hhhx,
+ COLUMN_NAME = iiix,
+ CURSOR_NAME = jjjx,
+ MESSAGE_TEXT = lllx,
+ MYSQL_ERRNO = 10000;
+end $$
+
+#NOTE: the warning text for ER_TRUNCATED_WRONG_VALUE contains
+# value: '%-.128s', so the warning printed truncates the value too,
+# which affects MESSAGE_TEXT (the X is missing)
+
+call test_signal() $$
+drop procedure test_signal $$
+
+# Test that HANDLER can catch conditions raised by SIGNAL
+
+create procedure test_signal()
+begin
+ DECLARE warn CONDITION FOR SQLSTATE "01234";
+ DECLARE CONTINUE HANDLER for SQLSTATE "01234"
+ begin
+ select "Caught by SQLSTATE";
+ end;
+
+ SIGNAL warn SET
+ MESSAGE_TEXT = "Raising a warning",
+ MYSQL_ERRNO = 1012;
+end $$
+
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE warn CONDITION FOR SQLSTATE "01234";
+ DECLARE CONTINUE HANDLER for 1012
+ begin
+ select "Caught by number";
+ end;
+
+ SIGNAL warn SET
+ MESSAGE_TEXT = "Raising a warning",
+ MYSQL_ERRNO = 1012;
+end $$
+
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE warn CONDITION FOR SQLSTATE "01234";
+ DECLARE CONTINUE HANDLER for SQLWARNING
+ begin
+ select "Caught by SQLWARNING";
+ end;
+
+ SIGNAL warn SET
+ MESSAGE_TEXT = "Raising a warning",
+ MYSQL_ERRNO = 1012;
+end $$
+
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE not_found CONDITION FOR SQLSTATE "02ABC";
+ DECLARE CONTINUE HANDLER for SQLSTATE "02ABC"
+ begin
+ select "Caught by SQLSTATE";
+ end;
+
+ SIGNAL not_found SET
+ MESSAGE_TEXT = "Raising a not found",
+ MYSQL_ERRNO = 1012;
+end $$
+
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE not_found CONDITION FOR SQLSTATE "02ABC";
+ DECLARE CONTINUE HANDLER for 1012
+ begin
+ select "Caught by number";
+ end;
+
+ SIGNAL not_found SET
+ MESSAGE_TEXT = "Raising a not found",
+ MYSQL_ERRNO = 1012;
+end $$
+
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE not_found CONDITION FOR SQLSTATE "02ABC";
+ DECLARE CONTINUE HANDLER for NOT FOUND
+ begin
+ select "Caught by NOT FOUND";
+ end;
+
+ SIGNAL not_found SET
+ MESSAGE_TEXT = "Raising a not found",
+ MYSQL_ERRNO = 1012;
+end $$
+
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE "55555";
+ DECLARE CONTINUE HANDLER for SQLSTATE "55555"
+ begin
+ select "Caught by SQLSTATE";
+ end;
+
+ SIGNAL error SET
+ MESSAGE_TEXT = "Raising an error",
+ MYSQL_ERRNO = 1012;
+end $$
+
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE "55555";
+ DECLARE CONTINUE HANDLER for 1012
+ begin
+ select "Caught by number";
+ end;
+
+ SIGNAL error SET
+ MESSAGE_TEXT = "Raising an error",
+ MYSQL_ERRNO = 1012;
+end $$
+
+call test_signal() $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE "55555";
+ DECLARE CONTINUE HANDLER for SQLEXCEPTION
+ begin
+ select "Caught by SQLEXCEPTION";
+ end;
+
+ SIGNAL error SET
+ MESSAGE_TEXT = "Raising an error",
+ MYSQL_ERRNO = 1012;
+end $$
+
+call test_signal() $$
+drop procedure test_signal $$
+
+--echo #
+--echo # Test where SIGNAL can be used
+--echo #
+
+create function test_signal_func() returns integer
+begin
+ DECLARE warn CONDITION FOR SQLSTATE "01XXX";
+
+ SIGNAL warn SET
+ MESSAGE_TEXT = "This function SIGNAL a warning",
+ MYSQL_ERRNO = 1012;
+
+ return 5;
+end $$
+
+select test_signal_func() $$
+drop function test_signal_func $$
+
+create function test_signal_func() returns integer
+begin
+ DECLARE not_found CONDITION FOR SQLSTATE "02XXX";
+
+ SIGNAL not_found SET
+ MESSAGE_TEXT = "This function SIGNAL not found",
+ MYSQL_ERRNO = 1012;
+
+ return 5;
+end $$
+
+--error 1012
+select test_signal_func() $$
+drop function test_signal_func $$
+
+create function test_signal_func() returns integer
+begin
+ DECLARE error CONDITION FOR SQLSTATE "50000";
+
+ SIGNAL error SET
+ MESSAGE_TEXT = "This function SIGNAL an error",
+ MYSQL_ERRNO = 1012;
+
+ return 5;
+end $$
+
+--error 1012
+select test_signal_func() $$
+drop function test_signal_func $$
+
+--disable_warnings
+drop table if exists t1 $$
+--enable_warnings
+
+create table t1 (a integer) $$
+
+create trigger t1_ai after insert on t1 for each row
+begin
+ DECLARE msg VARCHAR(128);
+ DECLARE warn CONDITION FOR SQLSTATE "01XXX";
+
+ set msg= concat("This trigger SIGNAL a warning, a=", NEW.a);
+ SIGNAL warn SET
+ MESSAGE_TEXT = msg,
+ MYSQL_ERRNO = 1012;
+end $$
+
+insert into t1 values (1), (2) $$
+
+drop trigger t1_ai $$
+
+create trigger t1_ai after insert on t1 for each row
+begin
+ DECLARE msg VARCHAR(128);
+ DECLARE not_found CONDITION FOR SQLSTATE "02XXX";
+
+ set msg= concat("This trigger SIGNAL a not found, a=", NEW.a);
+ SIGNAL not_found SET
+ MESSAGE_TEXT = msg,
+ MYSQL_ERRNO = 1012;
+end $$
+
+--error 1012
+insert into t1 values (3), (4) $$
+
+drop trigger t1_ai $$
+
+create trigger t1_ai after insert on t1 for each row
+begin
+ DECLARE msg VARCHAR(128);
+ DECLARE error CONDITION FOR SQLSTATE "03XXX";
+
+ set msg= concat("This trigger SIGNAL an error, a=", NEW.a);
+ SIGNAL error SET
+ MESSAGE_TEXT = msg,
+ MYSQL_ERRNO = 1012;
+end $$
+
+--error 1012
+insert into t1 values (5), (6) $$
+
+drop table t1 $$
+
+create table t1 (errno integer, msg varchar(128)) $$
+
+create trigger t1_ai after insert on t1 for each row
+begin
+ DECLARE warn CONDITION FOR SQLSTATE "01XXX";
+
+ SIGNAL warn SET
+ MESSAGE_TEXT = NEW.msg,
+ MYSQL_ERRNO = NEW.errno;
+end $$
+
+insert into t1 set errno=1012, msg='Warning message 1 in trigger' $$
+insert into t1 set errno=1013, msg='Warning message 2 in trigger' $$
+
+drop table t1 $$
+
+--disable_warnings
+drop table if exists t1 $$
+drop procedure if exists p1 $$
+drop function if exists f1 $$
+--enable_warnings
+
+create table t1 (s1 int) $$
+insert into t1 values (1) $$
+
+create procedure p1()
+begin
+ declare a int;
+ declare c cursor for select f1() from t1;
+ declare continue handler for sqlstate '03000'
+ select "caught 03000";
+ declare continue handler for 1326
+ select "caught cursor is not open";
+
+ select "Before open";
+ open c;
+ select "Before fetch";
+ fetch c into a;
+ select "Before close";
+ close c;
+end $$
+
+create function f1() returns int
+begin
+ signal sqlstate '03000';
+ return 5;
+end $$
+
+## FIXME : MEMORY plugin warning, valgrind leak, bug#36518
+## call p1() $$
+
+drop table t1 $$
+drop procedure p1 $$
+drop function f1 $$
+
+--echo #
+--echo # Test the RESIGNAL runtime
+--echo #
+
+# 6 tests:
+# {Signaled warning, Signaled Not Found, Signaled Error,
+# warning, not found, error} --> RESIGNAL
+
+create procedure test_resignal()
+begin
+ DECLARE warn CONDITION FOR SQLSTATE "01234";
+ DECLARE CONTINUE HANDLER for 1012
+ begin
+ select "before RESIGNAL";
+ RESIGNAL;
+ select "after RESIGNAL";
+ end;
+
+ SIGNAL warn SET
+ MESSAGE_TEXT = "Raising a warning",
+ MYSQL_ERRNO = 1012;
+end $$
+
+call test_resignal() $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE not_found CONDITION FOR SQLSTATE "02222";
+ DECLARE CONTINUE HANDLER for 1012
+ begin
+ select "before RESIGNAL";
+ RESIGNAL;
+ select "after RESIGNAL";
+ end;
+
+ SIGNAL not_found SET
+ MESSAGE_TEXT = "Raising a not found",
+ MYSQL_ERRNO = 1012;
+end $$
+
+--error 1012
+call test_resignal() $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE "55555";
+ DECLARE CONTINUE HANDLER for 1012
+ begin
+ select "before RESIGNAL";
+ RESIGNAL;
+ select "after RESIGNAL";
+ end;
+
+ SIGNAL error SET
+ MESSAGE_TEXT = "Raising an error",
+ MYSQL_ERRNO = 1012;
+end $$
+
+--error 1012
+call test_resignal() $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE CONTINUE HANDLER for sqlwarning
+ begin
+ select "before RESIGNAL";
+ RESIGNAL;
+ select "after RESIGNAL";
+ end;
+
+ insert into t_warn set a= 9999999999999999;
+end $$
+
+call test_resignal() $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE x integer;
+ DECLARE c cursor for select * from t_cursor;
+ DECLARE CONTINUE HANDLER for not found
+ begin
+ select "before RESIGNAL";
+ RESIGNAL;
+ select "after RESIGNAL";
+ end;
+
+ open c;
+ fetch c into x;
+ close c;
+end $$
+
+--error ER_SP_FETCH_NO_DATA
+call test_resignal() $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE CONTINUE HANDLER for sqlexception
+ begin
+ select "before RESIGNAL";
+ RESIGNAL;
+ select "after RESIGNAL";
+ end;
+
+ drop table no_such_table;
+end $$
+
+--error ER_BAD_TABLE_ERROR
+call test_resignal() $$
+drop procedure test_resignal $$
+
+# 6 tests:
+# {Signaled warning, Signaled Not Found, Signaled Error,
+# warning, not found, error} --> RESIGNAL SET ...
+
+create procedure test_resignal()
+begin
+ DECLARE warn CONDITION FOR SQLSTATE "01234";
+ DECLARE CONTINUE HANDLER for 1012
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SET
+ MESSAGE_TEXT = "RESIGNAL of a warning",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ SIGNAL warn SET
+ MESSAGE_TEXT = "Raising a warning",
+ MYSQL_ERRNO = 1012;
+end $$
+
+call test_resignal() $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE not_found CONDITION FOR SQLSTATE "02111";
+ DECLARE CONTINUE HANDLER for 1012
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SET
+ MESSAGE_TEXT = "RESIGNAL of a not found",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ SIGNAL not_found SET
+ MESSAGE_TEXT = "Raising a not found",
+ MYSQL_ERRNO = 1012;
+end $$
+
+--error 5555
+call test_resignal() $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE "33333";
+ DECLARE CONTINUE HANDLER for 1012
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SET
+ MESSAGE_TEXT = "RESIGNAL of an error",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ SIGNAL error SET
+ MESSAGE_TEXT = "Raising an error",
+ MYSQL_ERRNO = 1012;
+end $$
+
+--error 5555
+call test_resignal() $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE CONTINUE HANDLER for sqlwarning
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SET
+ MESSAGE_TEXT = "RESIGNAL of a warning",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ insert into t_warn set a= 9999999999999999;
+end $$
+
+call test_resignal() $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE x integer;
+ DECLARE c cursor for select * from t_cursor;
+ DECLARE CONTINUE HANDLER for not found
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SET
+ MESSAGE_TEXT = "RESIGNAL of not found",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ open c;
+ fetch c into x;
+ close c;
+end $$
+
+--error 5555
+call test_resignal() $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE CONTINUE HANDLER for sqlexception
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SET
+ MESSAGE_TEXT = "RESIGNAL of an error",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ drop table no_such_table;
+end $$
+
+--error 5555
+call test_resignal() $$
+drop procedure test_resignal $$
+
+#########################################################
+
+# 3 tests:
+# {Signaled warning}
+# --> RESIGNAL SQLSTATE {warning, not found, error} SET ...
+
+create procedure test_resignal()
+begin
+ DECLARE warn CONDITION FOR SQLSTATE "01111";
+ DECLARE CONTINUE HANDLER for 1012
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SQLSTATE "01222" SET
+ MESSAGE_TEXT = "RESIGNAL to warning",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ SIGNAL warn SET
+ MESSAGE_TEXT = "Raising a warning",
+ MYSQL_ERRNO = 1012;
+end $$
+
+call test_resignal() $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE warn CONDITION FOR SQLSTATE "01111";
+ DECLARE CONTINUE HANDLER for 1012
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SQLSTATE "02222" SET
+ MESSAGE_TEXT = "RESIGNAL to not found",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ SIGNAL warn SET
+ MESSAGE_TEXT = "Raising a warning",
+ MYSQL_ERRNO = 1012;
+end $$
+
+--error 5555
+call test_resignal() $$
+show warnings $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE warn CONDITION FOR SQLSTATE "01111";
+ DECLARE CONTINUE HANDLER for 1012
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SQLSTATE "33333" SET
+ MESSAGE_TEXT = "RESIGNAL to error",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ SIGNAL warn SET
+ MESSAGE_TEXT = "Raising a warning",
+ MYSQL_ERRNO = 1012;
+end $$
+
+--error 5555
+call test_resignal() $$
+show warnings $$
+drop procedure test_resignal $$
+
+# 3 tests:
+# {Signaled not found}
+# --> RESIGNAL SQLSTATE {warning, not found, error} SET ...
+
+create procedure test_resignal()
+begin
+ DECLARE not_found CONDITION FOR SQLSTATE "02ABC";
+ DECLARE CONTINUE HANDLER for 1012
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SQLSTATE "01222" SET
+ MESSAGE_TEXT = "RESIGNAL to warning",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ SIGNAL not_found SET
+ MESSAGE_TEXT = "Raising a not found",
+ MYSQL_ERRNO = 1012;
+end $$
+
+call test_resignal() $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE not_found CONDITION FOR SQLSTATE "02ABC";
+ DECLARE CONTINUE HANDLER for 1012
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SQLSTATE "02222" SET
+ MESSAGE_TEXT = "RESIGNAL to not found",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ SIGNAL not_found SET
+ MESSAGE_TEXT = "Raising a not found",
+ MYSQL_ERRNO = 1012;
+end $$
+
+--error 5555
+call test_resignal() $$
+show warnings $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE not_found CONDITION FOR SQLSTATE "02ABC";
+ DECLARE CONTINUE HANDLER for 1012
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SQLSTATE "33333" SET
+ MESSAGE_TEXT = "RESIGNAL to error",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ SIGNAL not_found SET
+ MESSAGE_TEXT = "Raising a not found",
+ MYSQL_ERRNO = 1012;
+end $$
+
+--error 5555
+call test_resignal() $$
+show warnings $$
+drop procedure test_resignal $$
+
+# 3 tests:
+# {Signaled error}
+# --> RESIGNAL SQLSTATE {warning, not found, error} SET ...
+
+create procedure test_resignal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE "AAAAA";
+ DECLARE CONTINUE HANDLER for 1012
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SQLSTATE "01222" SET
+ MESSAGE_TEXT = "RESIGNAL to warning",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ SIGNAL error SET
+ MESSAGE_TEXT = "Raising an error",
+ MYSQL_ERRNO = 1012;
+end $$
+
+call test_resignal() $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE "AAAAA";
+ DECLARE CONTINUE HANDLER for 1012
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SQLSTATE "02222" SET
+ MESSAGE_TEXT = "RESIGNAL to not found",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ SIGNAL error SET
+ MESSAGE_TEXT = "Raising an error",
+ MYSQL_ERRNO = 1012;
+end $$
+
+--error 5555
+call test_resignal() $$
+show warnings $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE error CONDITION FOR SQLSTATE "AAAAA";
+ DECLARE CONTINUE HANDLER for 1012
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SQLSTATE "33333" SET
+ MESSAGE_TEXT = "RESIGNAL to error",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ SIGNAL error SET
+ MESSAGE_TEXT = "Raising an error",
+ MYSQL_ERRNO = 1012;
+end $$
+
+--error 5555
+call test_resignal() $$
+show warnings $$
+drop procedure test_resignal $$
+
+# 3 tests:
+# {warning}
+# --> RESIGNAL SQLSTATE {warning, not found, error} SET ...
+
+create procedure test_resignal()
+begin
+ DECLARE CONTINUE HANDLER for sqlwarning
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SQLSTATE "01111" SET
+ MESSAGE_TEXT = "RESIGNAL to a warning",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ insert into t_warn set a= 9999999999999999;
+end $$
+
+call test_resignal() $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE CONTINUE HANDLER for sqlwarning
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SQLSTATE "02444" SET
+ MESSAGE_TEXT = "RESIGNAL to a not found",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ insert into t_warn set a= 9999999999999999;
+end $$
+
+--error 5555
+call test_resignal() $$
+show warnings $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE CONTINUE HANDLER for sqlwarning
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SQLSTATE "44444" SET
+ MESSAGE_TEXT = "RESIGNAL to an error",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ insert into t_warn set a= 9999999999999999;
+end $$
+
+--error 5555
+call test_resignal() $$
+show warnings $$
+drop procedure test_resignal $$
+
+# 3 tests:
+# {not found}
+# --> RESIGNAL SQLSTATE {warning, not found, error} SET ...
+
+create procedure test_resignal()
+begin
+ DECLARE x integer;
+ DECLARE c cursor for select * from t_cursor;
+ DECLARE CONTINUE HANDLER for not found
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SQLSTATE "01111" SET
+ MESSAGE_TEXT = "RESIGNAL to a warning",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ open c;
+ fetch c into x;
+ close c;
+end $$
+
+call test_resignal() $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE x integer;
+ DECLARE c cursor for select * from t_cursor;
+ DECLARE CONTINUE HANDLER for not found
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SQLSTATE "02444" SET
+ MESSAGE_TEXT = "RESIGNAL to a not found",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ open c;
+ fetch c into x;
+ close c;
+end $$
+
+--error 5555
+call test_resignal() $$
+show warnings $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE x integer;
+ DECLARE c cursor for select * from t_cursor;
+ DECLARE CONTINUE HANDLER for not found
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SQLSTATE "44444" SET
+ MESSAGE_TEXT = "RESIGNAL to an error",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ open c;
+ fetch c into x;
+ close c;
+end $$
+
+--error 5555
+call test_resignal() $$
+show warnings $$
+drop procedure test_resignal $$
+
+# 3 tests:
+# {error}
+# --> RESIGNAL SQLSTATE {warning, not found, error} SET ...
+
+create procedure test_resignal()
+begin
+ DECLARE CONTINUE HANDLER for sqlexception
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SQLSTATE "01111" SET
+ MESSAGE_TEXT = "RESIGNAL to a warning",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ drop table no_such_table;
+end $$
+
+call test_resignal() $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE CONTINUE HANDLER for sqlexception
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SQLSTATE "02444" SET
+ MESSAGE_TEXT = "RESIGNAL to a not found",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ drop table no_such_table;
+end $$
+
+--error 5555
+call test_resignal() $$
+show warnings $$
+drop procedure test_resignal $$
+
+create procedure test_resignal()
+begin
+ DECLARE CONTINUE HANDLER for sqlexception
+ begin
+ select "before RESIGNAL";
+ RESIGNAL SQLSTATE "44444" SET
+ MESSAGE_TEXT = "RESIGNAL to an error",
+ MYSQL_ERRNO = 5555 ;
+ select "after RESIGNAL";
+ end;
+
+ drop table no_such_table;
+end $$
+
+--error 5555
+call test_resignal() $$
+show warnings $$
+drop procedure test_resignal $$
+
+--echo #
+--echo # More complex cases
+--echo #
+
+--disable_warnings
+drop procedure if exists peter_p1 $$
+drop procedure if exists peter_p2 $$
+--enable_warnings
+
+CREATE PROCEDURE peter_p1 ()
+BEGIN
+ DECLARE x CONDITION FOR 1231;
+ DECLARE EXIT HANDLER FOR x
+ BEGIN
+ SELECT '2';
+ RESIGNAL SET MYSQL_ERRNO = 9999;
+ END;
+
+ BEGIN
+ DECLARE EXIT HANDLER FOR x
+ BEGIN
+ SELECT '1';
+ RESIGNAL SET SCHEMA_NAME = 'test';
+ END;
+ SET @@sql_mode=NULL;
+ END;
+END
+$$
+
+CREATE PROCEDURE peter_p2 ()
+BEGIN
+ DECLARE x CONDITION for 9999;
+ DECLARE EXIT HANDLER FOR x
+ BEGIN
+ SELECT '3';
+ RESIGNAL SET MESSAGE_TEXT = 'Hi, I am a useless error message';
+ END;
+ CALL peter_p1();
+END
+$$
+
+#
+# Here, RESIGNAL only modifies the condition caught,
+# so there is only 1 condition at the end
+# The final SQLSTATE is 42000 (it comes from the error 1231),
+# since the condition attributes are preserved.
+#
+--error 9999
+CALL peter_p2() $$
+show warnings $$
+
+drop procedure peter_p1 $$
+drop procedure peter_p2 $$
+
+CREATE PROCEDURE peter_p1 ()
+BEGIN
+ DECLARE x CONDITION FOR SQLSTATE '42000';
+ DECLARE EXIT HANDLER FOR x
+ BEGIN
+ SELECT '2';
+ RESIGNAL x SET MYSQL_ERRNO = 9999;
+ END;
+
+ BEGIN
+ DECLARE EXIT HANDLER FOR x
+ BEGIN
+ SELECT '1';
+ RESIGNAL x SET
+ SCHEMA_NAME = 'test',
+ MYSQL_ERRNO= 1231;
+ END;
+ /* Raises ER_WRONG_VALUE_FOR_VAR : 1231, SQLSTATE 42000 */
+ SET @@sql_mode=NULL;
+ END;
+END
+$$
+
+CREATE PROCEDURE peter_p2 ()
+BEGIN
+ DECLARE x CONDITION for SQLSTATE '42000';
+ DECLARE EXIT HANDLER FOR x
+ BEGIN
+ SELECT '3';
+ RESIGNAL x SET
+ MESSAGE_TEXT = 'Hi, I am a useless error message',
+ MYSQL_ERRNO = 9999;
+ END;
+ CALL peter_p1();
+END
+$$
+
+#
+# Here, "RESIGNAL <condition>" create a new condition in the diagnostics
+# area, so that there are 4 conditions at the end.
+#
+--error 9999
+CALL peter_p2() $$
+show warnings $$
+
+drop procedure peter_p1 $$
+drop procedure peter_p2 $$
+
+#
+# Test the value of MESSAGE_TEXT in RESIGNAL when no SET MESSAGE_TEXT clause
+# is provided (the expected result is the text from the SIGNALed condition)
+#
+
+drop procedure if exists peter_p3 $$
+
+create procedure peter_p3()
+begin
+ declare continue handler for sqlexception
+ resignal sqlstate '99002' set mysql_errno = 2;
+
+ signal sqlstate '99001' set mysql_errno = 1, message_text = "Original";
+end $$
+
+--error 2
+call peter_p3() $$
+
+# Expecting 2 conditions, both with the text "Original"
+show warnings $$
+
+drop procedure peter_p3 $$
+
+delimiter ;$$
+
+drop table t_warn;
+drop table t_cursor;
+
+--echo #
+--echo # Miscelaneous test cases
+--echo #
+
+delimiter $$;
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET MYSQL_ERRNO = 0x12; /* 18 */
+end $$
+
+-- error 18
+call test_signal $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET MYSQL_ERRNO = 0b00010010; /* 18 */
+end $$
+
+-- error 18
+call test_signal $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET MYSQL_ERRNO = '65'; /* 65 */
+end $$
+
+-- error 65
+call test_signal $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET MYSQL_ERRNO = 'A'; /* illegal */
+end $$
+
+-- error ER_WRONG_VALUE_FOR_VAR
+call test_signal $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET MYSQL_ERRNO = "65"; /* 65 */
+end $$
+
+-- error 65
+call test_signal $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET MYSQL_ERRNO = "A"; /* illegal */
+end $$
+
+-- error ER_WRONG_VALUE_FOR_VAR
+call test_signal $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET MYSQL_ERRNO = `65`; /* illegal */
+end $$
+
+-- error ER_BAD_FIELD_ERROR
+call test_signal $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET MYSQL_ERRNO = `A`; /* illegal */
+end $$
+
+-- error ER_BAD_FIELD_ERROR
+call test_signal $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET MYSQL_ERRNO = 3.141592; /* 3 */
+end $$
+
+-- error 3
+call test_signal $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET MYSQL_ERRNO = 1000,
+ MESSAGE_TEXT= 0x41; /* A */
+end $$
+
+-- error 1000
+call test_signal $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET MYSQL_ERRNO = 1000,
+ MESSAGE_TEXT= 0b01000001; /* A */
+end $$
+
+-- error 1000
+call test_signal $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET MYSQL_ERRNO = 1000,
+ MESSAGE_TEXT = "Hello";
+end $$
+
+-- error 1000
+call test_signal $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET MYSQL_ERRNO = 1000,
+ MESSAGE_TEXT = 'Hello';
+end $$
+
+-- error 1000
+call test_signal $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET MYSQL_ERRNO = 1000,
+ MESSAGE_TEXT = `Hello`;
+end $$
+
+-- error ER_BAD_FIELD_ERROR
+call test_signal $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL foo SET MYSQL_ERRNO = 1000,
+ MESSAGE_TEXT = 65.4321;
+end $$
+
+-- error 1000
+call test_signal $$
+drop procedure test_signal $$
+
+-- error ER_PARSE_ERROR
+create procedure test_signal()
+begin
+ DECLARE céèçà foo CONDITION FOR SQLSTATE '12345';
+ SIGNAL céèçà SET MYSQL_ERRNO = 1000;
+end $$
+
+-- error ER_PARSE_ERROR
+create procedure test_signal()
+begin
+ DECLARE "céèçà" CONDITION FOR SQLSTATE '12345';
+ SIGNAL "céèçà" SET MYSQL_ERRNO = 1000;
+end $$
+
+-- error ER_PARSE_ERROR
+create procedure test_signal()
+begin
+ DECLARE 'céèçà' CONDITION FOR SQLSTATE '12345';
+ SIGNAL 'céèçà' SET MYSQL_ERRNO = 1000;
+end $$
+
+create procedure test_signal()
+begin
+ DECLARE `céèçà` CONDITION FOR SQLSTATE '12345';
+ SIGNAL `céèçà` SET MYSQL_ERRNO = 1000;
+end $$
+
+-- error 1000
+call test_signal $$
+drop procedure test_signal $$
+
+create procedure test_signal()
+begin
+ SIGNAL SQLSTATE '77777' SET MYSQL_ERRNO = 1000, MESSAGE_TEXT='ÃÂÃÅÄ';
+end $$
+
+# Commented until WL#751 is implemented in this version
+# -- error 1000
+# call test_signal $$
+drop procedure test_signal $$
+
+delimiter ; $$
+
diff --git a/mysql-test/t/signal_code.test b/mysql-test/t/signal_code.test
new file mode 100644
index 00000000000..d2f65647c81
--- /dev/null
+++ b/mysql-test/t/signal_code.test
@@ -0,0 +1,57 @@
+# Copyright (C) 2008 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for SIGNAL and RESIGNAL
+
+-- source include/have_debug.inc
+
+use test;
+
+--disable_warnings
+drop procedure if exists signal_proc;
+drop function if exists signal_func;
+--enable_warnings
+
+delimiter $$;
+
+create procedure signal_proc()
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+
+ SIGNAL foo;
+ SIGNAL foo SET MESSAGE_TEXT = "This is an error message";
+ RESIGNAL foo;
+ RESIGNAL foo SET MESSAGE_TEXT = "This is an error message";
+end $$
+
+create function signal_func() returns int
+begin
+ DECLARE foo CONDITION FOR SQLSTATE '12345';
+
+ SIGNAL foo;
+ SIGNAL foo SET MESSAGE_TEXT = "This is an error message";
+ RESIGNAL foo;
+ RESIGNAL foo SET MESSAGE_TEXT = "This is an error message";
+ return 0;
+end $$
+
+delimiter ;$$
+
+show procedure code signal_proc;
+drop procedure signal_proc;
+
+show function code signal_func;
+drop function signal_func;
+
diff --git a/mysql-test/t/signal_demo1.test b/mysql-test/t/signal_demo1.test
new file mode 100644
index 00000000000..5de847ba0ba
--- /dev/null
+++ b/mysql-test/t/signal_demo1.test
@@ -0,0 +1,345 @@
+# Copyright (C) 2008 Sun Microsystems, Inc
+#
+# 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
+
+#
+# Demonstrate how SIGNAL can be used to enforce integrity constraints.
+#
+
+# Naming:
+# - PO: Purchase Order
+# - AB: Address Book
+# - IN: Inventory
+
+# Simplified schema:
+#
+# Relation 1:
+# PO_ORDER (PK: po_id) 1:1 <---> 0:N (FK: po_id) PO_ORDER_LINE
+#
+# Relation 2:
+# IN_INVENTORY (PK: item_id) 1:1 <---> 0:N (FK: item_id) PO_ORDER_LINE
+#
+# Relation 3:
+# +--> 0:1 (PK: person_id) AB_PHYSICAL_PERSON
+# PO_ORDER (FK: cust_id) 1:1 <--|
+# +--> 0:1 (PK: company_id) AB_MORAL_PERSON
+# This is an 'arc' relationship :)
+#
+
+
+--disable_warnings
+drop database if exists demo;
+--enable_warnings
+
+create database demo;
+
+use demo;
+
+create table ab_physical_person (
+ person_id integer,
+ first_name VARCHAR(50),
+ middle_initial CHAR,
+ last_name VARCHAR(50),
+ primary key (person_id));
+
+create table ab_moral_person (
+ company_id integer,
+ name VARCHAR(100),
+ primary key (company_id));
+
+create table in_inventory (
+ item_id integer,
+ descr VARCHAR(50),
+ stock integer,
+ primary key (item_id));
+
+create table po_order (
+ po_id integer auto_increment,
+ cust_type char, /* arc relationship, see cust_id */
+ cust_id integer, /* FK to ab_physical_person *OR* ab_moral_person */
+ primary key (po_id));
+
+create table po_order_line (
+ po_id integer, /* FK to po_order.po_id */
+ line_no integer,
+ item_id integer, /* FK to in_inventory.item_id */
+ qty integer);
+
+delimiter $$;
+
+--echo #
+--echo # Schema integrity enforcement
+--echo #
+
+create procedure check_pk_person(in person_type char, in id integer)
+begin
+ declare x integer;
+ declare msg varchar(128);
+
+ /*
+ Test integrity constraints for an 'arc' relationship.
+ Based on 'person_type', 'id' points to either a
+ physical person, or a moral person.
+ */
+ case person_type
+ when 'P' then
+ begin
+ select count(person_id) from ab_physical_person
+ where ab_physical_person.person_id = id
+ into x;
+
+ if (x != 1)
+ then
+ set msg= concat('No such physical person, PK:', id);
+ SIGNAL SQLSTATE '45000' SET
+ MESSAGE_TEXT = msg,
+ MYSQL_ERRNO = 10000;
+ end if;
+ end;
+
+ when 'M' then
+ begin
+ select count(company_id) from ab_moral_person
+ where ab_moral_person.company_id = id
+ into x;
+
+ if (x != 1)
+ then
+ set msg= concat('No such moral person, PK:', id);
+ SIGNAL SQLSTATE '45000' SET
+ MESSAGE_TEXT = msg,
+ MYSQL_ERRNO = 10000;
+ end if;
+ end;
+
+ else
+ begin
+ set msg= concat('No such person type:', person_type);
+ SIGNAL SQLSTATE '45000' SET
+ MESSAGE_TEXT = msg,
+ MYSQL_ERRNO = 20000;
+ end;
+ end case;
+end
+$$
+
+create procedure check_pk_inventory(in id integer)
+begin
+ declare x integer;
+ declare msg varchar(128);
+
+ select count(item_id) from in_inventory
+ where in_inventory.item_id = id
+ into x;
+
+ if (x != 1)
+ then
+ set msg= concat('Failed integrity constraint, table in_inventory, PK:',
+ id);
+ SIGNAL SQLSTATE '45000' SET
+ MESSAGE_TEXT = msg,
+ MYSQL_ERRNO = 10000;
+ end if;
+end
+$$
+
+create procedure check_pk_order(in id integer)
+begin
+ declare x integer;
+ declare msg varchar(128);
+
+ select count(po_id) from po_order
+ where po_order.po_id = id
+ into x;
+
+ if (x != 1)
+ then
+ set msg= concat('Failed integrity constraint, table po_order, PK:', id);
+ SIGNAL SQLSTATE '45000' SET
+ MESSAGE_TEXT = msg,
+ MYSQL_ERRNO = 10000;
+ end if;
+end
+$$
+
+create trigger po_order_bi before insert on po_order
+for each row
+begin
+ call check_pk_person(NEW.cust_type, NEW.cust_id);
+end
+$$
+
+create trigger po_order_bu before update on po_order
+for each row
+begin
+ call check_pk_person(NEW.cust_type, NEW.cust_id);
+end
+$$
+
+create trigger po_order_line_bi before insert on po_order_line
+for each row
+begin
+ call check_pk_order(NEW.po_id);
+ call check_pk_inventory(NEW.item_id);
+end
+$$
+
+create trigger po_order_line_bu before update on po_order_line
+for each row
+begin
+ call check_pk_order(NEW.po_id);
+ call check_pk_inventory(NEW.item_id);
+end
+$$
+
+--echo #
+--echo # Application helpers
+--echo #
+
+create procedure po_create_order(
+ in p_cust_type char,
+ in p_cust_id integer,
+ out id integer)
+begin
+ insert into po_order set cust_type = p_cust_type, cust_id = p_cust_id;
+ set id = last_insert_id();
+end
+$$
+
+create procedure po_add_order_line(
+ in po integer,
+ in line integer,
+ in item integer,
+ in q integer)
+begin
+ insert into po_order_line set
+ po_id = po, line_no = line, item_id = item, qty = q;
+end
+$$
+
+delimiter ;$$
+
+--echo #
+--echo # Create sample data
+--echo #
+
+insert into ab_physical_person values
+ ( 1, "John", "A", "Doe"),
+ ( 2, "Marry", "B", "Smith")
+;
+
+insert into ab_moral_person values
+ ( 3, "ACME real estate, INC"),
+ ( 4, "Local school")
+;
+
+insert into in_inventory values
+ ( 100, "Table, dinner", 5),
+ ( 101, "Chair", 20),
+ ( 200, "Table, coffee", 3),
+ ( 300, "School table", 25),
+ ( 301, "School chairs", 50)
+;
+
+select * from ab_physical_person order by person_id;
+select * from ab_moral_person order by company_id;
+select * from in_inventory order by item_id;
+
+--echo #
+--echo # Entering an order
+--echo #
+
+set @my_po = 0;
+
+/* John Doe wants 1 table and 4 chairs */
+call po_create_order("P", 1, @my_po);
+
+call po_add_order_line (@my_po, 1, 100, 1);
+call po_add_order_line (@my_po, 2, 101, 4);
+
+/* Marry Smith wants a coffee table */
+call po_create_order("P", 2, @my_po);
+
+call po_add_order_line (@my_po, 1, 200, 1);
+
+--echo #
+--echo # Entering bad data in an order
+--echo #
+
+# There is no item 999 in in_inventory
+--error 10000
+call po_add_order_line (@my_po, 1, 999, 1);
+
+--echo #
+--echo # Entering bad data in an unknown order
+--echo #
+
+# There is no order 99 in po_order
+--error 10000
+call po_add_order_line (99, 1, 100, 1);
+
+--echo #
+--echo # Entering an order for an unknown company
+--echo #
+
+# There is no moral person of id 7
+--error 10000
+call po_create_order("M", 7, @my_po);
+
+--echo #
+--echo # Entering an order for an unknown person type
+--echo #
+
+# There is no person of type X
+--error 20000
+call po_create_order("X", 1, @my_po);
+
+/* The local school wants 10 class tables and 20 chairs */
+call po_create_order("M", 4, @my_po);
+
+call po_add_order_line (@my_po, 1, 300, 10);
+call po_add_order_line (@my_po, 2, 301, 20);
+
+# Raw data
+select * from po_order;
+select * from po_order_line;
+
+# Creative reporting ...
+
+select po_id as "PO#",
+ ( case cust_type
+ when "P" then concat (pp.first_name,
+ " ",
+ pp.middle_initial,
+ " ",
+ pp.last_name)
+ when "M" then mp.name
+ end ) as "Sold to"
+ from po_order po
+ left join ab_physical_person pp on po.cust_id = pp.person_id
+ left join ab_moral_person mp on po.cust_id = company_id
+;
+
+select po_id as "PO#",
+ ol.line_no as "Line",
+ ol.item_id as "Item",
+ inv.descr as "Description",
+ ol.qty as "Quantity"
+ from po_order_line ol, in_inventory inv
+ where inv.item_id = ol.item_id
+ order by ol.item_id, ol.line_no;
+
+drop database demo;
+
+
diff --git a/mysql-test/t/signal_demo2.test b/mysql-test/t/signal_demo2.test
new file mode 100644
index 00000000000..fc909cb926c
--- /dev/null
+++ b/mysql-test/t/signal_demo2.test
@@ -0,0 +1,207 @@
+# Copyright (C) 2008 Sun Microsystems, Inc
+#
+# 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
+
+#
+# Demonstrate how RESIGNAL can be used to 'catch' and 're-throw' an error
+#
+
+--disable_warnings
+drop database if exists demo;
+--enable_warnings
+
+create database demo;
+
+use demo;
+
+delimiter $$;
+
+create procedure proc_top_a(p1 integer)
+begin
+ ## DECLARE CONTINUE HANDLER for SQLEXCEPTION, NOT FOUND
+ begin
+ end;
+
+ select "Starting ...";
+ call proc_middle_a(p1);
+ select "The end";
+end
+$$
+
+create procedure proc_middle_a(p1 integer)
+begin
+ DECLARE l integer;
+ # without RESIGNAL:
+ # Should be: DECLARE EXIT HANDLER for SQLEXCEPTION, NOT FOUND
+ DECLARE EXIT HANDLER for 1 /* not sure how to handle exceptions */
+ begin
+ select "Oops ... now what ?";
+ end;
+
+ select "In prod_middle()";
+
+ create temporary table t1(a integer, b integer);
+ select GET_LOCK("user_mutex", 10) into l;
+
+ insert into t1 set a = p1, b = p1;
+
+ call proc_bottom_a(p1);
+
+ select RELEASE_LOCK("user_mutex") into l;
+ drop temporary table t1;
+end
+$$
+
+create procedure proc_bottom_a(p1 integer)
+begin
+ select "In proc_bottom()";
+
+ if (p1 = 1) then
+ begin
+ select "Doing something that works ...";
+ select * from t1;
+ end;
+ end if;
+
+ if (p1 = 2) then
+ begin
+ select "Doing something that fail (simulate an error) ...";
+ drop table no_such_table;
+ end;
+ end if;
+
+ if (p1 = 3) then
+ begin
+ select "Doing something that *SHOULD* works ...";
+ select * from t1;
+ end;
+ end if;
+
+end
+$$
+
+delimiter ;$$
+
+#
+# Code without RESIGNAL:
+# errors are apparent to the caller,
+# but there is no cleanup code,
+# so that the environment (get_lock(), temporary table) is polluted ...
+#
+call proc_top_a(1);
+
+# Expected
+--error ER_BAD_TABLE_ERROR
+call proc_top_a(2);
+
+# Dirty state
+--error ER_TABLE_EXISTS_ERROR
+call proc_top_a(3);
+
+# Dirty state
+--error ER_TABLE_EXISTS_ERROR
+call proc_top_a(1);
+
+drop temporary table if exists t1;
+
+delimiter $$;
+
+create procedure proc_top_b(p1 integer)
+begin
+ select "Starting ...";
+ call proc_middle_b(p1);
+ select "The end";
+end
+$$
+
+create procedure proc_middle_b(p1 integer)
+begin
+ DECLARE l integer;
+ DECLARE EXIT HANDLER for SQLEXCEPTION, NOT FOUND
+ begin
+ begin
+ DECLARE CONTINUE HANDLER for SQLEXCEPTION, NOT FOUND
+ begin
+ /* Ignore errors from the cleanup code */
+ end;
+
+ select "Doing cleanup !";
+ select RELEASE_LOCK("user_mutex") into l;
+ drop temporary table t1;
+ end;
+
+ RESIGNAL;
+ end;
+
+ select "In prod_middle()";
+
+ create temporary table t1(a integer, b integer);
+ select GET_LOCK("user_mutex", 10) into l;
+
+ insert into t1 set a = p1, b = p1;
+
+ call proc_bottom_b(p1);
+
+ select RELEASE_LOCK("user_mutex") into l;
+ drop temporary table t1;
+end
+$$
+
+create procedure proc_bottom_b(p1 integer)
+begin
+ select "In proc_bottom()";
+
+ if (p1 = 1) then
+ begin
+ select "Doing something that works ...";
+ select * from t1;
+ end;
+ end if;
+
+ if (p1 = 2) then
+ begin
+ select "Doing something that fail (simulate an error) ...";
+ drop table no_such_table;
+ end;
+ end if;
+
+ if (p1 = 3) then
+ begin
+ select "Doing something that *SHOULD* works ...";
+ select * from t1;
+ end;
+ end if;
+
+end
+$$
+
+delimiter ;$$
+
+#
+# Code with RESIGNAL:
+# errors are apparent to the caller,
+# the but cleanup code did get a chance to act ...
+#
+
+call proc_top_b(1);
+
+--error ER_BAD_TABLE_ERROR
+call proc_top_b(2);
+
+call proc_top_b(3);
+
+call proc_top_b(1);
+
+drop database demo;
+
diff --git a/mysql-test/t/signal_demo3.test b/mysql-test/t/signal_demo3.test
new file mode 100644
index 00000000000..347f1b75a79
--- /dev/null
+++ b/mysql-test/t/signal_demo3.test
@@ -0,0 +1,159 @@
+# Copyright (C) 2008 Sun Microsystems, Inc
+#
+# 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
+
+#
+# Demonstrate how RESIGNAL can be used to print a stack trace
+#
+
+# Save defaults
+
+SET @start_global_value = @@global.max_error_count;
+SELECT @start_global_value;
+SET @start_session_value = @@session.max_error_count;
+SELECT @start_session_value;
+
+--disable_warnings
+drop database if exists demo;
+--enable_warnings
+
+create database demo;
+
+use demo;
+
+delimiter $$;
+
+create procedure proc_1()
+begin
+ declare exit handler for sqlexception
+ resignal sqlstate '45000' set message_text='Oops in proc_1';
+
+ call proc_2();
+end
+$$
+
+create procedure proc_2()
+begin
+ declare exit handler for sqlexception
+ resignal sqlstate '45000' set message_text='Oops in proc_2';
+
+ call proc_3();
+end
+$$
+
+create procedure proc_3()
+begin
+ declare exit handler for sqlexception
+ resignal sqlstate '45000' set message_text='Oops in proc_3';
+
+ call proc_4();
+end
+$$
+
+create procedure proc_4()
+begin
+ declare exit handler for sqlexception
+ resignal sqlstate '45000' set message_text='Oops in proc_4';
+
+ call proc_5();
+end
+$$
+
+create procedure proc_5()
+begin
+ declare exit handler for sqlexception
+ resignal sqlstate '45000' set message_text='Oops in proc_5';
+
+ call proc_6();
+end
+$$
+
+create procedure proc_6()
+begin
+ declare exit handler for sqlexception
+ resignal sqlstate '45000' set message_text='Oops in proc_6';
+
+ call proc_7();
+end
+$$
+
+create procedure proc_7()
+begin
+ declare exit handler for sqlexception
+ resignal sqlstate '45000' set message_text='Oops in proc_7';
+
+ call proc_8();
+end
+$$
+
+create procedure proc_8()
+begin
+ declare exit handler for sqlexception
+ resignal sqlstate '45000' set message_text='Oops in proc_8';
+
+ call proc_9();
+end
+$$
+
+create procedure proc_9()
+begin
+ declare exit handler for sqlexception
+ resignal sqlstate '45000' set message_text='Oops in proc_9';
+
+ ## Do something that fails, to see how errors are reported
+ drop table oops_it_is_not_here;
+end
+$$
+
+delimiter ;$$
+
+-- error ER_SIGNAL_EXCEPTION
+call proc_1();
+
+# This is the interesting part:
+# the complete call stack from the origin of failure (proc_9)
+# to the top level caller (proc_1) is available ...
+
+show warnings;
+
+SET @@session.max_error_count = 5;
+SELECT @@session.max_error_count;
+
+-- error ER_SIGNAL_EXCEPTION
+call proc_1();
+show warnings;
+
+SET @@session.max_error_count = 7;
+SELECT @@session.max_error_count;
+
+-- error ER_SIGNAL_EXCEPTION
+call proc_1();
+show warnings;
+
+SET @@session.max_error_count = 9;
+SELECT @@session.max_error_count;
+
+-- error ER_SIGNAL_EXCEPTION
+call proc_1();
+show warnings;
+
+drop database demo;
+
+# Restore defaults
+
+SET @@global.max_error_count = @start_global_value;
+SELECT @@global.max_error_count;
+SET @@session.max_error_count = @start_session_value;
+SELECT @@session.max_error_count;
+
diff --git a/mysql-test/t/signal_sqlmode.test b/mysql-test/t/signal_sqlmode.test
new file mode 100644
index 00000000000..860c145a361
--- /dev/null
+++ b/mysql-test/t/signal_sqlmode.test
@@ -0,0 +1,123 @@
+# Copyright (C) 2008 Sun Microsystems, Inc
+#
+# 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
+
+# Tests for SIGNAL, RESIGNAL and GET DIAGNOSTICS
+
+SET @save_sql_mode=@@sql_mode;
+
+SET sql_mode='';
+
+--disable_warnings
+drop procedure if exists p;
+drop procedure if exists p2;
+drop procedure if exists p3;
+--enable_warnings
+
+delimiter $$;
+
+create procedure p()
+begin
+ declare utf8_var VARCHAR(128) CHARACTER SET UTF8;
+ set utf8_var = concat(repeat('A', 128), 'X');
+ select length(utf8_var), utf8_var;
+end
+$$
+
+create procedure p2()
+begin
+ declare msg VARCHAR(129) CHARACTER SET UTF8;
+ set msg = concat(repeat('A', 128), 'X');
+ select length(msg), msg;
+
+ signal sqlstate '55555' set message_text = msg;
+end
+$$
+
+create procedure p3()
+begin
+ declare name VARCHAR(65) CHARACTER SET UTF8;
+ set name = concat(repeat('A', 64), 'X');
+ select length(name), name;
+
+ signal sqlstate '55555' set
+ message_text = 'Message',
+ table_name = name;
+end
+$$
+delimiter ;$$
+
+call p;
+
+--error ER_SIGNAL_EXCEPTION
+call p2;
+
+--error ER_SIGNAL_EXCEPTION
+call p3;
+
+drop procedure p;
+drop procedure p2;
+drop procedure p3;
+
+SET sql_mode='STRICT_ALL_TABLES';
+
+delimiter $$;
+
+create procedure p()
+begin
+ declare utf8_var VARCHAR(128) CHARACTER SET UTF8;
+ set utf8_var = concat(repeat('A', 128), 'X');
+ select length(utf8_var), utf8_var;
+end
+$$
+
+create procedure p2()
+begin
+ declare msg VARCHAR(129) CHARACTER SET UTF8;
+ set msg = concat(repeat('A', 128), 'X');
+ select length(msg), msg;
+
+ signal sqlstate '55555' set message_text = msg;
+end
+$$
+
+create procedure p3()
+begin
+ declare name VARCHAR(65) CHARACTER SET UTF8;
+ set name = concat(repeat('A', 64), 'X');
+ select length(name), name;
+
+ signal sqlstate '55555' set
+ message_text = 'Message',
+ table_name = name;
+end
+$$
+
+delimiter ;$$
+
+--error ER_DATA_TOO_LONG
+call p;
+
+--error ER_COND_ITEM_TOO_LONG
+call p2;
+
+--error ER_COND_ITEM_TOO_LONG
+call p3;
+
+drop procedure p;
+drop procedure p2;
+drop procedure p3;
+
+SET @@sql_mode=@save_sql_mode;
+
diff --git a/mysql-test/t/skip_name_resolve.test b/mysql-test/t/skip_name_resolve.test
index df010d15fa0..cd7ffe1690d 100644
--- a/mysql-test/t/skip_name_resolve.test
+++ b/mysql-test/t/skip_name_resolve.test
@@ -15,7 +15,7 @@ DROP USER mysqltest_1@'127.0.0.1/255.255.255.255';
# Bug#13407 Remote connecting crashes server
# Server crashed when one used USER() function in connection for which
# was impossible to obtain peer hostname.
-connect (con1, 127.0.0.1, root, , test, $MASTER_MYPORT, );
+connect (con1, localhost, root, , test, $MASTER_MYPORT, );
--replace_column 1 #
SELECT USER();
# We are only interested in the fact that statement below doesn't
diff --git a/mysql-test/t/sp-error.test b/mysql-test/t/sp-error.test
index 18a4a117939..e33adf56284 100644
--- a/mysql-test/t/sp-error.test
+++ b/mysql-test/t/sp-error.test
@@ -1325,11 +1325,6 @@ CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN DROP TRIGGER test1; EN
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
CREATE FUNCTION bug_13627_f() returns int BEGIN DROP TRIGGER test1; return 1; END |
--- error ER_SP_BADSTATEMENT
-CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN load table t1 from master; END |
--- error ER_SP_BADSTATEMENT
-CREATE FUNCTION bug_13627_f() returns int BEGIN load table t1 from master; return 1; END |
-
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create table t2 (a int); END |
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
@@ -1580,18 +1575,6 @@ BEGIN
REPAIR TABLE t1;
RETURN 1;
END|
---error ER_SP_NO_RETSET
-CREATE FUNCTION bug13012() RETURNS INT
-BEGIN
- BACKUP TABLE t1 TO '/tmp';
- RETURN 1;
-END|
---error ER_SP_NO_RETSET
-CREATE FUNCTION bug13012() RETURNS INT
-BEGIN
- RESTORE TABLE t1 FROM '/tmp';
- RETURN 1;
-END|
create table t1 (a int)|
CREATE PROCEDURE bug13012_1() REPAIR TABLE t1|
CREATE FUNCTION bug13012_2() RETURNS INT
@@ -2386,7 +2369,7 @@ drop procedure if exists p1;
delimiter |;
create procedure p1()
begin
- create table t1 (a int) type=MyISAM;
+ create table t1 (a int) engine=MyISAM;
drop table t1;
end|
delimiter ;|
@@ -2419,6 +2402,64 @@ end$$
delimiter ;$$
+#
+# Bug#36510 (Stored Procedures: mysql_error_code 0 should be illegal)
+#
+
+--disable_warnings
+drop procedure if exists proc_36510;
+--enable_warnings
+
+delimiter $$;
+
+--error ER_SP_BAD_SQLSTATE
+create procedure proc_36510()
+begin
+ declare should_be_illegal condition for sqlstate '00123';
+ declare continue handler for should_be_illegal set @x=0;
+end$$
+
+--error ER_SP_BAD_SQLSTATE
+create procedure proc_36510()
+begin
+ declare continue handler for sqlstate '00123' set @x=0;
+end$$
+
+--error ER_WRONG_VALUE
+create procedure proc_36510()
+begin
+ declare should_be_illegal condition for 0;
+ declare continue handler for should_be_illegal set @x=0;
+end$$
+
+--error ER_WRONG_VALUE
+create procedure proc_36510()
+begin
+ declare continue handler for 0 set @x=0;
+end$$
+delimiter ;$$
+
+#
+# Bug#15192: "fatal errors" are caught by handlers in stored procedures
+#
+
+--disable_warnings
+drop procedure if exists p1;
+--enable_warnings
+set @old_recursion_depth = @@max_sp_recursion_depth;
+set @@max_sp_recursion_depth = 255;
+delimiter |;
+create procedure p1(a int)
+begin
+ declare continue handler for 1436 -- ER_STACK_OVERRUN_NEED_MORE
+ select 'exception';
+ call p1(a+1);
+end|
+delimiter ;|
+--error 0,ER_STACK_OVERRUN_NEED_MORE,ER_SP_RECURSION_LIMIT
+call p1(1);
+set @@max_sp_recursion_depth = @old_recursion_depth;
+drop procedure p1;
#
# BUG#NNNN: New bug synopsis
diff --git a/mysql-test/t/sp-no-code.test b/mysql-test/t/sp-no-code.test
new file mode 100644
index 00000000000..ce16c32a270
--- /dev/null
+++ b/mysql-test/t/sp-no-code.test
@@ -0,0 +1,12 @@
+#
+# Test the debugging feature "show procedure/function code <name>"
+#
+
+-- source include/have_nodebug.inc
+
+--error ER_FEATURE_DISABLED
+show procedure code foo;
+
+--error ER_FEATURE_DISABLED
+show function code foo;
+
diff --git a/mysql-test/t/sp-ucs2.test b/mysql-test/t/sp-ucs2.test
index 7d6b62dfea0..f6f70c3c103 100644
--- a/mysql-test/t/sp-ucs2.test
+++ b/mysql-test/t/sp-ucs2.test
@@ -25,6 +25,126 @@ drop function bug17615|
drop table t3|
+#
+# Testing COLLATE clause in
+# - IN parameter
+# - RETURNS
+# - DELCARE
+#
+
+CREATE FUNCTION f(f1 VARCHAR(64) CHARACTER SET ucs2 COLLATE ucs2_unicode_ci)
+ RETURNS VARCHAR(64) CHARACTER SET ucs2 COLLATE ucs2_danish_ci
+BEGIN
+ DECLARE f2 VARCHAR(64) CHARACTER SET ucs2 COLLATE ucs2_swedish_ci;
+ DECLARE f3 VARCHAR(64) CHARACTER SET ucs2 COLLATE ucs2_bin;
+ SET f1= concat(collation(f1), ' ', collation(f2), ' ', collation(f3));
+ RETURN f1;
+END|
+SELECT f('a')|
+SELECT collation(f('a'))|
+DROP FUNCTION f|
+
+#
+# Testing keywords UNICODE + BINARY
+#
+CREATE FUNCTION f()
+ RETURNS VARCHAR(64) UNICODE BINARY
+BEGIN
+ RETURN '';
+END|
+SHOW CREATE FUNCTION f;
+DROP FUNCTION f;
+
+CREATE FUNCTION f()
+ RETURNS VARCHAR(64) BINARY UNICODE
+BEGIN
+ RETURN '';
+END|
+SHOW CREATE FUNCTION f;
+DROP FUNCTION f;
+
+
+#
+# Testing keywords ASCII + BINARY
+#
+CREATE FUNCTION f()
+ RETURNS VARCHAR(64) ASCII BINARY
+BEGIN
+ RETURN '';
+END|
+SHOW CREATE FUNCTION f;
+DROP FUNCTION f;
+
+CREATE FUNCTION f()
+ RETURNS VARCHAR(64) BINARY ASCII
+BEGIN
+ RETURN '';
+END|
+SHOW CREATE FUNCTION f;
+DROP FUNCTION f;
+
+#
+# Testing COLLATE in OUT parameter
+#
+
+CREATE PROCEDURE p1(IN f1 VARCHAR(64) CHARACTER SET ucs2 COLLATE ucs2_czech_ci,
+ OUT f2 VARCHAR(64) CHARACTER SET ucs2 COLLATE ucs2_polish_ci)
+BEGIN
+ SET f2= f1;
+ SET f2= concat(collation(f1), ' ', collation(f2));
+END|
+
+
+CREATE FUNCTION f1()
+ RETURNS VARCHAR(64) CHARACTER SET ucs2
+BEGIN
+ DECLARE f1 VARCHAR(64) CHARACTER SET ucs2;
+ DECLARE f2 VARCHAR(64) CHARACTER SET ucs2;
+ SET f1='str';
+ CALL p1(f1, f2);
+ RETURN f2;
+END|
+
+
+SELECT f1()|
+DROP PROCEDURE p1|
+DROP FUNCTION f1|
+
+
+#
+# COLLATE with no CHARACTER SET in IN param
+#
+--error ER_NOT_SUPPORTED_YET
+CREATE FUNCTION f(f1 VARCHAR(64) COLLATE ucs2_unicode_ci)
+ RETURNS VARCHAR(64) CHARACTER SET ucs2
+BEGIN
+ RETURN 'str';
+END|
+
+
+#
+# COLLATE with no CHARACTER SET in RETURNS
+#
+--error ER_NOT_SUPPORTED_YET
+CREATE FUNCTION f(f1 VARCHAR(64) CHARACTER SET ucs2)
+ RETURNS VARCHAR(64) COLLATE ucs2_unicode_ci
+BEGIN
+ RETURN 'str';
+END|
+
+
+#
+# COLLATE with no CHARACTER SET in DECLARE
+#
+--error ER_NOT_SUPPORTED_YET
+CREATE FUNCTION f(f1 VARCHAR(64) CHARACTER SET ucs2)
+ RETURNS VARCHAR(64) CHARACTER SET ucs2
+BEGIN
+ DECLARE f2 VARCHAR(64) COLLATE ucs2_unicode_ci;
+ RETURN 'str';
+END|
+
+
delimiter ;|
#
diff --git a/mysql-test/t/sp-vars.test b/mysql-test/t/sp-vars.test
index fe063889f81..2e7257cbcea 100644
--- a/mysql-test/t/sp-vars.test
+++ b/mysql-test/t/sp-vars.test
@@ -1448,3 +1448,42 @@ drop function f1;
drop table t1;
# End of 5.1 tests.
+
+###########################################################################
+#
+# Test case for BUG#28299: To-number conversion warnings work
+# differenly with CHAR and VARCHAR sp variables
+#
+###########################################################################
+
+--echo
+--echo ---------------------------------------------------------------
+--echo BUG#28299
+--echo ---------------------------------------------------------------
+--echo
+
+DELIMITER |;
+CREATE PROCEDURE ctest()
+BEGIN
+ DECLARE i CHAR(16);
+ DECLARE j INT;
+ SET i= 'string';
+ SET j= 1 + i;
+END|
+DELIMITER ;|
+
+CALL ctest();
+DROP PROCEDURE ctest;
+
+DELIMITER |;
+CREATE PROCEDURE vctest()
+BEGIN
+ DECLARE i VARCHAR(16);
+ DECLARE j INT;
+ SET i= 'string';
+ SET j= 1 + i;
+END|
+DELIMITER ;|
+
+CALL vctest();
+DROP PROCEDURE vctest;
diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test
index 5cf050146dd..8ec551227eb 100644
--- a/mysql-test/t/sp.test
+++ b/mysql-test/t/sp.test
@@ -2882,7 +2882,6 @@ create procedure bug4902()
begin
show charset like 'foo';
show collation like 'foo';
- show column types;
show create table t1;
show create database test;
show databases like 'foo';
@@ -3749,7 +3748,7 @@ begin
end|
set @qcs1 = @@query_cache_size|
-set global query_cache_size = 100000|
+set global query_cache_size = 102400|
set @x = 1|
insert into t1 values ("qc", 42)|
select bug9902() from t1|
@@ -4062,34 +4061,41 @@ drop procedure bug11529|
# BUG#6063: Stored procedure labels are subject to restrictions (partial)
# BUG#7088: Stored procedures: labels won't work if character set is utf8
#
+
+set character set utf8|
+
--disable_warnings
drop procedure if exists bug6063|
drop procedure if exists bug7088_1|
drop procedure if exists bug7088_2|
--enable_warnings
---disable_parsing # temporarily disabled until Bar fixes BUG#11986
create procedure bug6063()
- lâbel: begin end|
-call bug6063()|
-# QQ Known bug: this will not show the label correctly.
-show create procedure bug6063|
+begin
+ lâbel: begin end;
+ label: begin end;
+ label1: begin end;
+end|
-set character set utf8|
create procedure bug7088_1()
label1: begin end label1|
+
create procedure bug7088_2()
läbel1: begin end|
+
+call bug6063()|
call bug7088_1()|
call bug7088_2()|
+
set character set default|
+
+show create procedure bug6063|
show create procedure bug7088_1|
show create procedure bug7088_2|
drop procedure bug6063|
drop procedure bug7088_1|
drop procedure bug7088_2|
---enable_parsing
#
# BUG#9565: "Wrong locking in stored procedure if a sub-sequent procedure
@@ -5208,20 +5214,15 @@ drop procedure bug5967|
--disable_warnings
drop procedure if exists bug13012|
+--enable_warnings
# Disable warnings also for BACKUP/RESTORE: they are deprecated.
---replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
eval create procedure bug13012()
BEGIN
REPAIR TABLE t1;
- BACKUP TABLE t1 to '$backupdir';
- DROP TABLE t1;
- RESTORE TABLE t1 FROM '$backupdir';
END|
call bug13012()|
--enable_warnings
---remove_file $backupdir/t1.frm
---remove_file $backupdir/t1.MYD
drop procedure bug13012|
@@ -8203,14 +8204,13 @@ DROP FUNCTION f1;
drop procedure if exists p;
--enable_warnings
set @old_mode= @@sql_mode;
-set @@sql_mode= pow(2,32)-1;
+set @@sql_mode= cast(pow(2,32)-1 as unsigned integer);
select @@sql_mode into @full_mode;
create procedure p() begin end;
call p();
-select @@sql_mode;
set @@sql_mode= @old_mode;
# Rename SQL modes that differ in name between the server and the table definition.
-select replace(@full_mode, '?', 'NOT_USED') into @full_mode;
+select replace(@full_mode, ',,,', ',NOT_USED,') into @full_mode;
select replace(@full_mode, 'ALLOW_INVALID_DATES', 'INVALID_DATES') into @full_mode;
select name from mysql.proc where name = 'p' and sql_mode = @full_mode;
drop procedure p;
@@ -8353,3 +8353,166 @@ DROP PROCEDURE p5;
--echo # ------------------------------------------------------------------
--echo # -- End of 5.1 tests
--echo # ------------------------------------------------------------------
+
+#
+# Bug#39255: Stored procedures: crash if function references nonexistent table
+#
+
+--disable_warnings
+DROP FUNCTION IF EXISTS f1;
+DROP TABLE IF EXISTS t_non_existing;
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+
+delimiter |;
+CREATE FUNCTION f1() RETURNS INT
+BEGIN
+ DECLARE v INT;
+ SELECT a INTO v FROM t_non_existing;
+ RETURN 1;
+END|
+delimiter ;|
+
+CREATE TABLE t1 (a INT) ENGINE = myisam;
+INSERT INTO t1 VALUES (1);
+
+--error ER_NO_SUCH_TABLE
+SELECT * FROM t1 WHERE a = f1();
+
+DROP FUNCTION f1;
+DROP TABLE t1;
+
+#
+# Bug#36649: Condition area is not properly cleaned up after stored routine invocation
+#
+
+--disable_warnings
+DROP PROCEDURE IF EXISTS p1;
+--enable_warnings
+
+delimiter |;
+CREATE PROCEDURE p1(a INT, b CHAR)
+BEGIN
+ IF a > 0 THEN
+ CALL p1(a-1, 'ab');
+ ELSE
+ SELECT 1;
+ END IF;
+END|
+delimiter ;|
+
+SET @save_max_sp_recursion= @@max_sp_recursion_depth;
+SET @@max_sp_recursion_depth= 5;
+CALL p1(4, 'a');
+SET @@max_sp_recursion_depth= @save_max_sp_recursion;
+
+DROP PROCEDURE p1;
+
+#
+# Ensure that rules for message list clean up are being respected.
+#
+
+--disable_warnings
+DROP PROCEDURE IF EXISTS p1;
+--enable_warnings
+
+delimiter |;
+CREATE PROCEDURE p1(a CHAR)
+BEGIN
+ SELECT 1;
+ SELECT CAST('10 ' as UNSIGNED INTEGER);
+ SELECT 1;
+END|
+delimiter ;|
+
+CALL p1('data truncated parameter');
+
+DROP PROCEDURE p1;
+
+#
+# Cascading stored procedure/function calls.
+#
+
+--disable_warnings
+DROP PROCEDURE IF EXISTS p1;
+DROP PROCEDURE IF EXISTS p2;
+DROP PROCEDURE IF EXISTS p3;
+DROP PROCEDURE IF EXISTS p4;
+--enable_warnings
+
+delimiter |;
+CREATE PROCEDURE p1()
+ CALL p2()|
+CREATE PROCEDURE p2()
+ CALL p3()|
+CREATE PROCEDURE p3()
+ CALL p4()|
+CREATE PROCEDURE p4()
+BEGIN
+ SELECT 1;
+ SELECT CAST('10 ' as UNSIGNED INTEGER);
+ SELECT 2;
+END|
+delimiter ;|
+
+CALL p1();
+
+DROP PROCEDURE p1;
+DROP PROCEDURE p2;
+DROP PROCEDURE p3;
+DROP PROCEDURE p4;
+
+--disable_warnings
+DROP FUNCTION IF EXISTS f1;
+DROP FUNCTION IF EXISTS f2;
+DROP FUNCTION IF EXISTS f3;
+DROP FUNCTION IF EXISTS f4;
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+
+CREATE TABLE t1 (a CHAR(2));
+
+INSERT INTO t1 VALUES ('aa');
+
+delimiter |;
+CREATE FUNCTION f1() RETURNS CHAR
+ RETURN (SELECT f2())|
+CREATE FUNCTION f2() RETURNS CHAR
+ RETURN (SELECT f3())|
+CREATE FUNCTION f3() RETURNS CHAR
+ RETURN (SELECT f4())|
+CREATE FUNCTION f4() RETURNS CHAR
+BEGIN
+ RETURN (SELECT a FROM t1);
+END|
+delimiter ;|
+
+SELECT f1();
+
+DROP FUNCTION f1;
+DROP FUNCTION f2;
+DROP FUNCTION f3;
+DROP FUNCTION f4;
+DROP TABLE t1;
+
+--echo #
+--echo # Bug#34197: CREATE PROCEDURE fails when COMMENT truncated in non
+--echo # strict SQL mode
+--echo #
+
+--disable_warnings
+DROP PROCEDURE IF EXISTS p1;
+--enable_warnings
+
+CREATE PROCEDURE p1 ()
+COMMENT
+'12345678901234567890123456789012345678901234567890123456789012345678901234567890'
+BEGIN
+END;
+
+SELECT comment FROM mysql.proc WHERE name = "p1";
+
+SELECT routine_comment FROM information_schema.routines WHERE routine_name = "p1";
+
+DROP PROCEDURE p1;
+
diff --git a/mysql-test/t/sp_trans.test b/mysql-test/t/sp_trans.test
index 0b04b9d7668..db04f96154d 100644
--- a/mysql-test/t/sp_trans.test
+++ b/mysql-test/t/sp_trans.test
@@ -5,6 +5,10 @@
-- source include/have_log_bin.inc
-- source include/have_innodb.inc
+disable_query_log;
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
+enable_query_log;
+
--disable_warnings
drop table if exists t1, t2, t3;
--enable_warnings
@@ -527,7 +531,9 @@ begin
select count(*)*255 from t3 into table_size;
until table_size > max_table_size*2 end repeat;
end|
+--disable_warnings
call bug14210_fill_table()|
+--enable_warnings
drop procedure bug14210_fill_table|
create table t4 like t3|
@@ -565,7 +571,7 @@ use db_bug7787|
# Test.
CREATE PROCEDURE p1()
- SHOW INNODB STATUS; |
+ SHOW ENGINE INNODB STATUS; |
GRANT EXECUTE ON PROCEDURE p1 TO user_bug7787@localhost|
@@ -592,6 +598,44 @@ select distinct f1, bug13575(f1) from t3 order by f1|
drop function bug13575|
drop table t3|
+--echo #
+--echo # End of 5.1 tests
+--echo #
+
+--echo #
+--echo # Bug #35877 Update .. WHERE with function, constraint violation, crash
+--echo #
+
+--disable_warnings
+DROP TABLE IF EXISTS t1_aux|
+DROP TABLE IF EXISTS t1_not_null|
+DROP FUNCTION IF EXISTS f1_two_inserts|
+--enable_warnings
+
+-- echo # MyISAM test
+CREATE TABLE t1_not_null (f1 BIGINT, f2 BIGINT NOT NULL)|
+CREATE TABLE t1_aux (f1 BIGINT, f2 BIGINT)|
+INSERT INTO t1_aux VALUES (1,1)|
+
+CREATE FUNCTION f1_two_inserts() returns INTEGER
+BEGIN
+ INSERT INTO t1_not_null SET f1 = 10, f2 = NULL;
+ RETURN 1;
+END|
+
+-- error ER_BAD_NULL_ERROR
+UPDATE t1_aux SET f2 = 2 WHERE f1 = f1_two_inserts()|
+
+-- echo # InnoDB test
+ALTER TABLE t1_not_null ENGINE = InnoDB|
+ALTER TABLE t1_aux ENGINE = InnoDB|
+
+-- error ER_BAD_NULL_ERROR
+UPDATE t1_aux SET f2 = 2 WHERE f1 = f1_two_inserts()|
+
+DROP TABLE t1_aux, t1_not_null|
+DROP FUNCTION f1_two_inserts|
+
#
# BUG#NNNN: New bug synopsis
diff --git a/mysql-test/t/sp_trans_log.test b/mysql-test/t/sp_trans_log.test
index 2f2b84a9bef..68467f71ee1 100644
--- a/mysql-test/t/sp_trans_log.test
+++ b/mysql-test/t/sp_trans_log.test
@@ -35,7 +35,8 @@ 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 */|
+# the following must show there is (are) events after the query */
+source include/show_binlog_events.inc|
select count(*),@a from t1 /* must be 1,1 */|
delimiter ;|
diff --git a/mysql-test/t/sql_mode.test b/mysql-test/t/sql_mode.test
index 4a9f34443cb..27956bc8877 100644
--- a/mysql-test/t/sql_mode.test
+++ b/mysql-test/t/sql_mode.test
@@ -309,6 +309,21 @@ flush privileges;
--connection default
drop user mysqltest_32753@localhost;
+
+#
+# Bug#21099 MySQL 5.0.22 silently creates MyISAM tables even though
+# InnoDB specified.
+#
+
+SET @org_mode=@@sql_mode;
+SET @@sql_mode='traditional';
+
+# Agreed change was to add NO_ENGINE_SUBSTITUTION to TRADITIONAL sql mode.
+SELECT @@sql_mode LIKE '%NO_ENGINE_SUBSTITUTION%';
+
+SET sql_mode=@org_mode;
+
+
#
# Bug#45100: Incomplete DROP USER in case of SQL_MODE = 'PAD_CHAR_TO_FULL_LENGTH'
#
diff --git a/mysql-test/t/status.test b/mysql-test/t/status.test
index 5da210f5a69..f951218f5c8 100644
--- a/mysql-test/t/status.test
+++ b/mysql-test/t/status.test
@@ -353,6 +353,21 @@ DROP FUNCTION f1;
# End of 5.1 tests
+#
+# Bug#17954 Threads_connected > Threads_created
+#
+
+--disable_warnings
+DROP VIEW IF EXISTS v1;
+--enable_warnings
+
+CREATE VIEW v1 AS SELECT VARIABLE_NAME AS NAME, CONVERT(VARIABLE_VALUE, UNSIGNED) AS VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS;
+
+SELECT VALUE INTO @tc FROM v1 WHERE NAME = 'Threads_connected';
+SELECT NAME FROM v1 WHERE NAME = 'Threads_created' AND VALUE < @tc;
+
+DROP VIEW v1;
+
# Restore global concurrent_insert value. Keep in the end of the test file.
--connection default
set @@global.concurrent_insert= @old_concurrent_insert;
diff --git a/mysql-test/t/subselect.test b/mysql-test/t/subselect.test
index 027578fc6bd..bb4e7d623f8 100644
--- a/mysql-test/t/subselect.test
+++ b/mysql-test/t/subselect.test
@@ -2513,8 +2513,6 @@ DROP TABLE t1, t2;
CREATE TABLE t1 (i INT);
(SELECT i FROM t1) UNION (SELECT i FROM t1);
-#TODO:not supported
---error ER_PARSE_ERROR
SELECT sql_no_cache * FROM t1 WHERE NOT EXISTS
(
(SELECT i FROM t1) UNION
@@ -2531,8 +2529,6 @@ WHERE NOT EXISTS (((SELECT i FROM t1) UNION (SELECT i FROM t1)));
explain select ((select t11.i from t1 t11) union (select t12.i from t1 t12))
from t1;
-#TODO:not supported
---error ER_PARSE_ERROR
explain select * from t1 where not exists
((select t11.i from t1 t11) union (select t12.i from t1 t12));
@@ -3203,8 +3199,6 @@ EXPLAIN EXTENDED
SELECT 2 FROM t1 WHERE EXISTS ((SELECT 1 FROM t2 WHERE t1.a=t2.a));
-#TODO:not supported
---error ER_PARSE_ERROR
EXPLAIN EXTENDED
SELECT 2 FROM t1 WHERE EXISTS ((SELECT 1 FROM t2 WHERE t1.a=t2.a) UNION
(SELECT 1 FROM t2 WHERE t1.a = t2.a));
@@ -3570,6 +3564,232 @@ where v in(select v
where t1.g=t2.g) is unknown;
drop table t1, t2;
+-- echo #
+-- echo # Bug#33204: INTO is allowed in subselect, causing inconsistent results
+-- echo #
+CREATE TABLE t1( a INT );
+INSERT INTO t1 VALUES (1),(2);
+
+CREATE TABLE t2( a INT, b INT );
+
+--error ER_PARSE_ERROR
+SELECT *
+FROM (SELECT a INTO @var FROM t1 WHERE a = 2) t1a;
+--error ER_PARSE_ERROR
+SELECT *
+FROM (SELECT a INTO OUTFILE 'file' FROM t1 WHERE a = 2) t1a;
+--error ER_PARSE_ERROR
+SELECT *
+FROM (SELECT a INTO DUMPFILE 'file' FROM t1 WHERE a = 2) t1a;
+
+--error ER_PARSE_ERROR
+SELECT * FROM (
+ SELECT 1 a
+ UNION
+ SELECT a INTO @var FROM t1 WHERE a = 2
+) t1a;
+
+--error ER_PARSE_ERROR
+SELECT * FROM (
+ SELECT 1 a
+ UNION
+ SELECT a INTO OUTFILE 'file' FROM t1 WHERE a = 2
+) t1a;
+
+--error ER_PARSE_ERROR
+SELECT * FROM (
+ SELECT 1 a
+ UNION
+ SELECT a INTO DUMPFILE 'file' FROM t1 WHERE a = 2
+) t1a;
+
+SELECT * FROM (SELECT a FROM t1 WHERE a = 2) t1a;
+
+SELECT * FROM (
+ SELECT a FROM t1 WHERE a = 2
+ UNION
+ SELECT a FROM t1 WHERE a = 2
+) t1a;
+
+SELECT * FROM (
+ SELECT 1 a
+ UNION
+ SELECT a FROM t1 WHERE a = 2
+ UNION
+ SELECT a FROM t1 WHERE a = 2
+) t1a;
+
+# This was not allowed previously. Possibly, it should be allowed on the future.
+# For now, the intent is to keep the fix as non-intrusive as possible.
+--error ER_PARSE_ERROR
+SELECT * FROM ((SELECT 1 a) UNION SELECT 1 a);
+SELECT * FROM (SELECT 1 a UNION (SELECT 1 a)) alias;
+SELECT * FROM (SELECT 1 UNION SELECT 1) t1a;
+--error ER_PARSE_ERROR
+SELECT * FROM ((SELECT 1 a INTO @a)) t1a;
+--error ER_PARSE_ERROR
+SELECT * FROM ((SELECT 1 a INTO OUTFILE 'file' )) t1a;
+--error ER_PARSE_ERROR
+SELECT * FROM ((SELECT 1 a INTO DUMPFILE 'file' )) t1a;
+
+--error ER_PARSE_ERROR
+SELECT * FROM (SELECT 1 a UNION (SELECT 1 a INTO @a)) t1a;
+--error ER_PARSE_ERROR
+SELECT * FROM (SELECT 1 a UNION (SELECT 1 a INTO DUMPFILE 'file' )) t1a;
+--error ER_PARSE_ERROR
+SELECT * FROM (SELECT 1 a UNION (SELECT 1 a INTO OUTFILE 'file' )) t1a;
+
+--error ER_PARSE_ERROR
+SELECT * FROM (SELECT 1 a UNION ((SELECT 1 a INTO @a))) t1a;
+--error ER_PARSE_ERROR
+SELECT * FROM (SELECT 1 a UNION ((SELECT 1 a INTO DUMPFILE 'file' ))) t1a;
+--error ER_PARSE_ERROR
+SELECT * FROM (SELECT 1 a UNION ((SELECT 1 a INTO OUTFILE 'file' ))) t1a;
+
+SELECT * FROM (SELECT 1 a ORDER BY a) t1a;
+SELECT * FROM (SELECT 1 a UNION SELECT 1 a ORDER BY a) t1a;
+SELECT * FROM (SELECT 1 a UNION SELECT 1 a LIMIT 1) t1a;
+SELECT * FROM (SELECT 1 a UNION SELECT 1 a ORDER BY a LIMIT 1) t1a;
+
+# Test of rule
+# table_factor: '(' get_select_lex query_expression_body ')' opt_table_alias
+# UNION should not be allowed inside the parentheses, nor should
+# aliases after.
+#
+SELECT * FROM t1 JOIN (SELECT 1 UNION SELECT 1) alias ON 1;
+--error ER_PARSE_ERROR
+SELECT * FROM t1 JOIN ((SELECT 1 UNION SELECT 1)) ON 1;
+--error ER_PARSE_ERROR
+SELECT * FROM t1 JOIN (t1 t1a UNION SELECT 1) ON 1;
+--error ER_PARSE_ERROR
+SELECT * FROM t1 JOIN ((t1 t1a UNION SELECT 1)) ON 1;
+--error ER_PARSE_ERROR
+SELECT * FROM t1 JOIN (t1 t1a) t1a ON 1;
+--error ER_PARSE_ERROR
+SELECT * FROM t1 JOIN ((t1 t1a)) t1a ON 1;
+
+SELECT * FROM t1 JOIN (t1 t1a) ON 1;
+SELECT * FROM t1 JOIN ((t1 t1a)) ON 1;
+
+SELECT * FROM (t1 t1a);
+SELECT * FROM ((t1 t1a));
+
+SELECT * FROM t1 JOIN (SELECT 1 t1a) alias ON 1;
+SELECT * FROM t1 JOIN ((SELECT 1 t1a)) alias ON 1;
+
+SELECT * FROM t1 JOIN (SELECT 1 a) a ON 1;
+SELECT * FROM t1 JOIN ((SELECT 1 a)) a ON 1;
+
+# For the join, TABLE_LIST::select_lex == NULL
+# Check that we handle this.
+--error ER_PARSE_ERROR
+SELECT * FROM (t1 JOIN (SELECT 1) t1a1 ON 1) t1a2;
+
+SELECT * FROM t1 WHERE a = ALL ( SELECT 1 );
+SELECT * FROM t1 WHERE a = ALL ( SELECT 1 UNION SELECT 1 );
+SELECT * FROM t1 WHERE a = ANY ( SELECT 3 UNION SELECT 1 );
+
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE a = ANY ( SELECT 1 UNION SELECT 1 INTO @a);
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE a = ANY ( SELECT 1 UNION SELECT 1 INTO OUTFILE 'file' );
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE a = ANY ( SELECT 1 UNION SELECT 1 INTO DUMPFILE 'file' );
+
+SELECT * FROM t1 WHERE a = ( SELECT 1 );
+SELECT * FROM t1 WHERE a = ( SELECT 1 UNION SELECT 1 );
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE a = ( SELECT 1 INTO @a);
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE a = ( SELECT 1 INTO OUTFILE 'file' );
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE a = ( SELECT 1 INTO DUMPFILE 'file' );
+
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE a = ( SELECT 1 UNION SELECT 1 INTO @a);
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE a = ( SELECT 1 UNION SELECT 1 INTO OUTFILE 'file' );
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE a = ( SELECT 1 UNION SELECT 1 INTO DUMPFILE 'file' );
+
+--error ER_PARSE_ERROR
+SELECT ( SELECT 1 INTO @v );
+--error ER_PARSE_ERROR
+SELECT ( SELECT 1 INTO OUTFILE 'file' );
+--error ER_PARSE_ERROR
+SELECT ( SELECT 1 INTO DUMPFILE 'file' );
+
+--error ER_PARSE_ERROR
+SELECT ( SELECT 1 UNION SELECT 1 INTO @v );
+--error ER_PARSE_ERROR
+SELECT ( SELECT 1 UNION SELECT 1 INTO OUTFILE 'file' );
+--error ER_PARSE_ERROR
+SELECT ( SELECT 1 UNION SELECT 1 INTO DUMPFILE 'file' );
+
+# Make sure context is popped when we leave the nested select
+SELECT ( SELECT a FROM t1 WHERE a = 1 ), a FROM t1;
+SELECT ( SELECT a FROM t1 WHERE a = 1 UNION SELECT 1 ), a FROM t1;
+
+# Make sure we have feature F561 (see .yy file)
+SELECT * FROM t2 WHERE (a, b) IN (SELECT a, b FROM t2);
+
+# Make sure the parser does not allow nested UNIONs anywhere
+
+--error ER_PARSE_ERROR
+SELECT 1 UNION ( SELECT 1 UNION SELECT 1 );
+--error ER_PARSE_ERROR
+( SELECT 1 UNION SELECT 1 ) UNION SELECT 1;
+
+--error ER_PARSE_ERROR
+SELECT ( SELECT 1 UNION ( SELECT 1 UNION SELECT 1 ) );
+--error ER_PARSE_ERROR
+SELECT ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1;
+SELECT ( SELECT 1 UNION SELECT 1 UNION SELECT 1 );
+SELECT ((SELECT 1 UNION SELECT 1 UNION SELECT 1));
+
+--error ER_PARSE_ERROR
+SELECT * FROM ( SELECT 1 UNION ( SELECT 1 UNION SELECT 1 ) );
+--error ER_PARSE_ERROR
+SELECT * FROM ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 );
+SELECT * FROM ( SELECT 1 UNION SELECT 1 UNION SELECT 1 ) a;
+
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE a = ( SELECT 1 UNION ( SELECT 1 UNION SELECT 1 ) );
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE a = ALL ( SELECT 1 UNION ( SELECT 1 UNION SELECT 1 ) );
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE a = ANY ( SELECT 1 UNION ( SELECT 1 UNION SELECT 1 ) );
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE a IN ( SELECT 1 UNION ( SELECT 1 UNION SELECT 1 ) );
+
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE a = ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 );
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE a = ALL ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 );
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE a = ANY ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 );
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE a IN ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 );
+
+SELECT * FROM t1 WHERE a = ( SELECT 1 UNION SELECT 1 UNION SELECT 1 );
+SELECT * FROM t1 WHERE a = ALL ( SELECT 1 UNION SELECT 1 UNION SELECT 1 );
+SELECT * FROM t1 WHERE a = ANY ( SELECT 1 UNION SELECT 1 UNION SELECT 1 );
+SELECT * FROM t1 WHERE a IN ( SELECT 1 UNION SELECT 1 UNION SELECT 1 );
+
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE EXISTS ( SELECT 1 UNION SELECT 1 INTO @v );
+SELECT EXISTS(SELECT 1+1);
+--error ER_PARSE_ERROR
+SELECT EXISTS(SELECT 1+1 INTO @test);
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE a IN ( SELECT 1 UNION SELECT 1 INTO @v );
+
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE EXISTS ( SELECT 1 INTO @v );
+--error ER_PARSE_ERROR
+SELECT * FROM t1 WHERE a IN ( SELECT 1 INTO @v );
+
+DROP TABLE t1, t2;
#
# Bug #31157: Crash when select+order by the avg of some field within the
# group by
diff --git a/mysql-test/t/subselect3.test b/mysql-test/t/subselect3.test
index fab0a462157..39c97941031 100644
--- a/mysql-test/t/subselect3.test
+++ b/mysql-test/t/subselect3.test
@@ -794,3 +794,50 @@ SHOW STATUS LIKE '%Handler_read_rnd_next';
DROP TABLE t1,t2;
--echo End of 5.1 tests
+
+--echo #
+--echo # BUG#48920: COUNT DISTINCT returns 1 for NULL values when in a subquery
+--echo # in the select list
+--echo #
+
+--echo
+CREATE TABLE t1 (
+ i int(11) DEFAULT NULL,
+ v varchar(1) DEFAULT NULL
+);
+
+--echo
+INSERT INTO t1 VALUES (8,'v');
+INSERT INTO t1 VALUES (9,'r');
+INSERT INTO t1 VALUES (NULL,'y');
+
+--echo
+CREATE TABLE t2 (
+ i int(11) DEFAULT NULL,
+ v varchar(1) DEFAULT NULL,
+ KEY i_key (i)
+);
+
+--echo
+INSERT INTO t2 VALUES (NULL,'r');
+INSERT INTO t2 VALUES (0,'c');
+INSERT INTO t2 VALUES (0,'o');
+INSERT INTO t2 VALUES (2,'v');
+INSERT INTO t2 VALUES (7,'c');
+
+--echo
+SELECT i, v, (SELECT COUNT(DISTINCT i)
+ FROM t1
+ WHERE v = t2.v) as subsel
+FROM t2;
+
+--echo
+EXPLAIN EXTENDED
+SELECT i, v, (SELECT COUNT(DISTINCT i)
+ FROM t1
+ WHERE v = t2.v) as subsel
+FROM t2;
+
+DROP TABLE t1,t2;
+
+--echo End of 5.6 tests
diff --git a/mysql-test/t/system_mysql_db_fix40123.test b/mysql-test/t/system_mysql_db_fix40123.test
index 440fcc8aa8a..818993e5f27 100644
--- a/mysql-test/t/system_mysql_db_fix40123.test
+++ b/mysql-test/t/system_mysql_db_fix40123.test
@@ -26,7 +26,7 @@ use test;
# create system tables as in mysql-4.1.23
# created by executing "./mysql_create_system_tables real ."
-set table_type=myisam;
+set storage_engine=myisam;
CREATE TABLE db ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, PRIMARY KEY Host (Host,Db,User), KEY User (User) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Database privileges';
INSERT INTO db VALUES ('%','test','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y');
INSERT INTO db VALUES ('%','test\_%','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y');
@@ -41,8 +41,8 @@ INSERT INTO user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','
CREATE TABLE func ( name char(64) binary DEFAULT '' NOT NULL, ret tinyint(1) DEFAULT '0' NOT NULL, dl char(128) DEFAULT '' NOT NULL, type enum ('function','aggregate') COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='User defined functions';
-CREATE TABLE tables_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp(14), Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Table privileges';
-CREATE TABLE columns_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp(14), Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Column privileges';
+CREATE TABLE tables_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp, Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Table privileges';
+CREATE TABLE columns_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Column privileges';
CREATE TABLE help_topic ( help_topic_id int unsigned not null, name varchar(64) not null, help_category_id smallint unsigned not null, description text not null, example text not null, url varchar(128) not null, primary key (help_topic_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help topics';
CREATE TABLE help_category ( help_category_id smallint unsigned not null, name varchar(64) not null, parent_category_id smallint unsigned null, url varchar(128) not null, primary key (help_category_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help categories';
diff --git a/mysql-test/t/system_mysql_db_fix50030.test b/mysql-test/t/system_mysql_db_fix50030.test
index 4924c625d57..45084177570 100644
--- a/mysql-test/t/system_mysql_db_fix50030.test
+++ b/mysql-test/t/system_mysql_db_fix50030.test
@@ -26,7 +26,7 @@ use test;
# create system tables as in mysql-5.0.30
# created by executing "./mysql_create_system_tables real ."
-set table_type=myisam;
+set storage_engine=myisam;
CREATE TABLE db ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, PRIMARY KEY Host (Host,Db,User), KEY User (User) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Database privileges';
INSERT INTO db VALUES ('%','test','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','N','N');
INSERT INTO db VALUES ('%','test\_%','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','N','N');
@@ -39,9 +39,9 @@ INSERT INTO user VALUES ('localhost','','','Y','Y','Y','Y','Y','Y','Y','Y','Y','
CREATE TABLE func ( name char(64) binary DEFAULT '' NOT NULL, ret tinyint(1) DEFAULT '0' NOT NULL, dl char(128) DEFAULT '' NOT NULL, type enum ('function','aggregate') COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='User defined functions';
-CREATE TABLE tables_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp(14), Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Table privileges';
+CREATE TABLE tables_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp, Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Table privileges';
-CREATE TABLE columns_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp(14), Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Column privileges';
+CREATE TABLE columns_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Column privileges';
CREATE TABLE help_topic ( help_topic_id int unsigned not null, name char(64) not null, help_category_id smallint unsigned not null, description text not null, example text not null, url char(128) not null, primary key (help_topic_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help topics';
CREATE TABLE help_category ( help_category_id smallint unsigned not null, name char(64) not null, parent_category_id smallint unsigned null, url char(128) not null, primary key (help_category_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help categories';
@@ -60,7 +60,7 @@ CREATE TABLE time_zone_leap_second ( Transition_time bigint signed NOT NULL,
CREATE TABLE proc ( db char(64) collate utf8_bin DEFAULT '' NOT NULL, name char(64) DEFAULT '' NOT NULL, type enum('FUNCTION','PROCEDURE') NOT NULL, specific_name char(64) DEFAULT '' NOT NULL, language enum('SQL') DEFAULT 'SQL' NOT NULL, sql_data_access enum('CONTAINS_SQL', 'NO_SQL', 'READS_SQL_DATA', 'MODIFIES_SQL_DATA' ) DEFAULT 'CONTAINS_SQL' NOT NULL, is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL, security_type enum('INVOKER','DEFINER') DEFAULT 'DEFINER' NOT NULL, param_list blob DEFAULT '' NOT NULL, returns char(64) DEFAULT '' NOT NULL, body longblob DEFAULT '' NOT NULL, definer char(77) collate utf8_bin DEFAULT '' NOT NULL, created timestamp, modified timestamp, sql_mode set( 'REAL_AS_FLOAT', 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'NOT_USED', 'ONLY_FULL_GROUP_BY', 'NO_UNSIGNED_SUBTRACTION', 'NO_DIR_IN_CREATE', 'POSTGRESQL', 'ORACLE', 'MSSQL', 'DB2', 'MAXDB', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS', 'MYSQL323', 'MYSQL40', 'ANSI', 'NO_AUTO_VALUE_ON_ZERO', 'NO_BACKSLASH_ESCAPES', 'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'INVALID_DATES', 'ERROR_FOR_DIVISION_BY_ZERO', 'TRADITIONAL', 'NO_AUTO_CREATE_USER', 'HIGH_NOT_PRECEDENCE' ) DEFAULT '' NOT NULL, comment char(64) collate utf8_bin DEFAULT '' NOT NULL, PRIMARY KEY (db,name,type) ) engine=MyISAM character set utf8 comment='Stored Procedures';
-CREATE TABLE procs_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Routine_name char(64) binary DEFAULT '' NOT NULL, Routine_type enum('FUNCTION','PROCEDURE') NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Proc_priv set('Execute','Alter Routine','Grant') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Timestamp timestamp(14), PRIMARY KEY (Host,Db,User,Routine_name,Routine_type), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Procedure privileges';
+CREATE TABLE procs_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Routine_name char(64) binary DEFAULT '' NOT NULL, Routine_type enum('FUNCTION','PROCEDURE') NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Proc_priv set('Execute','Alter Routine','Grant') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Timestamp timestamp, PRIMARY KEY (Host,Db,User,Routine_name,Routine_type), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Procedure privileges';
CREATE TABLE servers ( Server_name char(64) NOT NULL DEFAULT '', Host char(64) NOT NULL DEFAULT '', Db char(64) NOT NULL DEFAULT '', Username char(64) NOT NULL DEFAULT '', Password char(64) NOT NULL DEFAULT '', Port INT(4) NOT NULL DEFAULT '0', Socket char(64) NOT NULL DEFAULT '', Wrapper char(64) NOT NULL DEFAULT '', Owner char(64) NOT NULL DEFAULT '', PRIMARY KEY (Server_name)) CHARACTER SET utf8 comment='MySQL Foreign Servers table';
diff --git a/mysql-test/t/system_mysql_db_fix50117.test b/mysql-test/t/system_mysql_db_fix50117.test
index d88c4edba93..bed00239081 100644
--- a/mysql-test/t/system_mysql_db_fix50117.test
+++ b/mysql-test/t/system_mysql_db_fix50117.test
@@ -44,9 +44,9 @@ CREATE TABLE IF NOT EXISTS plugin ( name char(64) binary DEFAULT '' NOT NULL, dl
CREATE TABLE IF NOT EXISTS servers ( Server_name char(64) NOT NULL DEFAULT '', Host char(64) NOT NULL DEFAULT '', Db char(64) NOT NULL DEFAULT '', Username char(64) NOT NULL DEFAULT '', Password char(64) NOT NULL DEFAULT '', Port INT(4) NOT NULL DEFAULT '0', Socket char(64) NOT NULL DEFAULT '', Wrapper char(64) NOT NULL DEFAULT '', Owner char(64) NOT NULL DEFAULT '', PRIMARY KEY (Server_name)) CHARACTER SET utf8 comment='MySQL Foreign Servers table';
-CREATE TABLE IF NOT EXISTS tables_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp(14), 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, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Table privileges';
+CREATE TABLE IF NOT EXISTS tables_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp, 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, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Table privileges';
-CREATE TABLE IF NOT EXISTS columns_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp(14), Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Column privileges';
+CREATE TABLE IF NOT EXISTS columns_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Column privileges';
CREATE TABLE IF NOT EXISTS help_topic ( help_topic_id int unsigned not null, name char(64) not null, help_category_id smallint unsigned not null, description text not null, example text not null, url char(128) not null, primary key (help_topic_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help topics';
@@ -79,7 +79,7 @@ CREATE TABLE IF NOT EXISTS time_zone_leap_second ( Transition_time bigint sign
CREATE TABLE IF NOT EXISTS proc ( db char(64) collate utf8_bin DEFAULT '' NOT NULL, name char(64) DEFAULT '' NOT NULL, type enum('FUNCTION','PROCEDURE') NOT NULL, specific_name char(64) DEFAULT '' NOT NULL, language enum('SQL') DEFAULT 'SQL' NOT NULL, sql_data_access enum('CONTAINS_SQL', 'NO_SQL', 'READS_SQL_DATA', 'MODIFIES_SQL_DATA' ) DEFAULT 'CONTAINS_SQL' NOT NULL, is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL, security_type enum('INVOKER','DEFINER') DEFAULT 'DEFINER' NOT NULL, param_list blob NOT NULL, returns char(64) DEFAULT '' NOT NULL, body longblob NOT NULL, definer char(77) collate utf8_bin DEFAULT '' NOT NULL, created timestamp, modified timestamp, sql_mode set( 'REAL_AS_FLOAT', 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'NOT_USED', 'ONLY_FULL_GROUP_BY', 'NO_UNSIGNED_SUBTRACTION', 'NO_DIR_IN_CREATE', 'POSTGRESQL', 'ORACLE', 'MSSQL', 'DB2', 'MAXDB', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS', 'MYSQL323', 'MYSQL40', 'ANSI', 'NO_AUTO_VALUE_ON_ZERO', 'NO_BACKSLASH_ESCAPES', 'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'INVALID_DATES', 'ERROR_FOR_DIVISION_BY_ZERO', 'TRADITIONAL', 'NO_AUTO_CREATE_USER', 'HIGH_NOT_PRECEDENCE' ) DEFAULT '' NOT NULL, comment char(64) collate utf8_bin DEFAULT '' NOT NULL, PRIMARY KEY (db,name,type) ) engine=MyISAM character set utf8 comment='Stored Procedures';
-CREATE TABLE IF NOT EXISTS procs_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Routine_name char(64) binary DEFAULT '' NOT NULL, Routine_type enum('FUNCTION','PROCEDURE') NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Proc_priv set('Execute','Alter Routine','Grant') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Timestamp timestamp(14), PRIMARY KEY (Host,Db,User,Routine_name,Routine_type), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Procedure privileges';
+CREATE TABLE IF NOT EXISTS procs_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Routine_name char(64) binary DEFAULT '' NOT NULL, Routine_type enum('FUNCTION','PROCEDURE') NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Proc_priv set('Execute','Alter Routine','Grant') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Timestamp timestamp, PRIMARY KEY (Host,Db,User,Routine_name,Routine_type), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Procedure privileges';
CREATE TABLE IF NOT EXISTS event ( db char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', name char(64) CHARACTER SET utf8 NOT NULL default '', body longblob NOT NULL, definer char(77) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', execute_at DATETIME default NULL, interval_value int(11) default NULL, interval_field ENUM('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') default NULL, created TIMESTAMP NOT NULL, modified TIMESTAMP NOT NULL, last_executed DATETIME default NULL, starts DATETIME default NULL, ends DATETIME default NULL, status ENUM('ENABLED','DISABLED') NOT NULL default 'ENABLED', on_completion ENUM('DROP','PRESERVE') NOT NULL default 'DROP', sql_mode set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') DEFAULT '' NOT NULL, comment char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', time_zone char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM', PRIMARY KEY (db, name) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT 'Events';
diff --git a/mysql-test/t/trigger.test b/mysql-test/t/trigger.test
index 1e55f9d5993..f3b9d6bb91e 100644
--- a/mysql-test/t/trigger.test
+++ b/mysql-test/t/trigger.test
@@ -2397,3 +2397,95 @@ SELECT * FROM t2;
DROP TABLE t1, t2;
--echo End of 5.1 tests.
+
+
+--echo #
+--echo # Bug#34453 Can't change size of file (Errcode: 1224)
+--echo #
+
+--disable_warnings
+DROP TRIGGER IF EXISTS t1_bi;
+DROP TRIGGER IF EXISTS t1_bd;
+DROP TABLE IF EXISTS t1;
+DROP TEMPORARY TABLE IF EXISTS t2;
+--enable_warnings
+
+CREATE TABLE t1 (s1 INT);
+CREATE TEMPORARY TABLE t2 (s1 INT);
+CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (0);
+CREATE TRIGGER t1_bd BEFORE DELETE ON t1 FOR EACH ROW DELETE FROM t2;
+INSERT INTO t1 VALUES (0);
+INSERT INTO t1 VALUES (0);
+SELECT * FROM t1;
+SELECT * FROM t2;
+-- echo # Reported to give ERROR 14 (HY000):
+-- echo # Can't change size of file (Errcode: 1224)
+-- echo # on Windows
+DELETE FROM t1;
+
+DROP TABLE t1;
+DROP TEMPORARY TABLE t2;
+
+#
+# Bug#36649: Condition area is not properly cleaned up after stored routine invocation
+#
+
+--disable_warnings
+DROP TRIGGER IF EXISTS trg1;
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+
+CREATE TABLE t1 (a INT);
+
+delimiter |;
+CREATE TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+ DECLARE a CHAR;
+ SELECT 'ab' INTO a;
+ SELECT 'ab' INTO a;
+ SELECT 'a' INTO a;
+END|
+delimiter ;|
+
+INSERT INTO t1 VALUES (1);
+
+DROP TRIGGER trg1;
+DROP TABLE t1;
+
+#
+# Successive trigger actuations
+#
+
+--disable_warnings
+DROP TRIGGER IF EXISTS trg1;
+DROP TRIGGER IF EXISTS trg2;
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+
+CREATE TABLE t1 (a INT);
+
+delimiter |;
+
+CREATE TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW
+BEGIN
+ DECLARE trg1 CHAR;
+ SELECT 'ab' INTO trg1;
+END|
+
+CREATE TRIGGER trg2 AFTER INSERT ON t1 FOR EACH ROW
+BEGIN
+ DECLARE trg2 CHAR;
+ SELECT 'ab' INTO trg2;
+END|
+
+delimiter ;|
+
+INSERT INTO t1 VALUES (0);
+SELECT * FROM t1;
+SHOW WARNINGS;
+INSERT INTO t1 VALUES (1),(2);
+
+DROP TRIGGER trg1;
+DROP TRIGGER trg2;
+DROP TABLE t1;
+
diff --git a/mysql-test/t/type_blob.test b/mysql-test/t/type_blob.test
index 460da1c1614..c06d8ac97e0 100644
--- a/mysql-test/t/type_blob.test
+++ b/mysql-test/t/type_blob.test
@@ -534,18 +534,6 @@ DROP TABLE b15776;
--error ER_PARSE_ERROR
CREATE TABLE b15776 (a year(-2));
-## For timestamp, we silently rewrite widths to 14 or 19.
-CREATE TABLE b15776 (a timestamp(4294967294));
-DROP TABLE b15776;
-CREATE TABLE b15776 (a timestamp(4294967295));
-DROP TABLE b15776;
---error ER_TOO_BIG_DISPLAYWIDTH
-CREATE TABLE b15776 (a timestamp(4294967296));
---error ER_PARSE_ERROR
-CREATE TABLE b15776 (a timestamp(-1));
---error ER_PARSE_ERROR
-CREATE TABLE b15776 (a timestamp(-2));
-
# We've already tested the case, but this should visually show that
# widths that are too large to be interpreted cause DISPLAYWIDTH errors.
@@ -555,8 +543,6 @@ CREATE TABLE b15776 (a int(99999999999999999999999999999999999999999999999999999
CREATE TABLE b15776 (a char(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
--error ER_TOO_BIG_DISPLAYWIDTH
CREATE TABLE b15776 (a year(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
---error ER_TOO_BIG_DISPLAYWIDTH
-CREATE TABLE b15776 (a timestamp(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
## Do not select, too much memory needed.
CREATE TABLE b15776 select cast(null as char(4294967295));
@@ -612,3 +598,23 @@ explain select convert(1, binary(4294967296));
explain select convert(1, binary(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
--echo End of 5.0 tests
+
+#
+# Bug #33969: Updating a text field via a left join
+#
+
+CREATE TABLE t1(id INT NOT NULL);
+CREATE TABLE t2(id INT NOT NULL, c TEXT NOT NULL);
+
+INSERT INTO t1 VALUES (1);
+INSERT INTO t2 VALUES (1, '');
+
+UPDATE t2 SET c = REPEAT('1', 70000);
+SELECT LENGTH(c) FROM t2;
+
+UPDATE t1 LEFT JOIN t2 USING(id) SET t2.c = REPEAT('1', 70000) WHERE t1.id = 1;
+SELECT LENGTH(c) FROM t2;
+
+DROP TABLE t1, t2;
+
+--echo End of 5.1 tests
diff --git a/mysql-test/t/type_date.test b/mysql-test/t/type_date.test
index aec60bc2dee..db273f90425 100644
--- a/mysql-test/t/type_date.test
+++ b/mysql-test/t/type_date.test
@@ -247,3 +247,21 @@ select * from t1 where a between '0000-00-01' and '0000-00-02';
drop table t1;
--echo End of 5.1 tests
+
+--echo #
+--echo # Bug #33629: last_day function can return null, but has 'not null'
+--echo # flag set for result
+--echo #
+
+SELECT 1 FROM (SELECT LAST_DAY('0')) a;
+SELECT 1 FROM (SELECT MAKEDATE(2011,0)) a;
+
+CREATE TABLE t1 AS
+ SELECT LAST_DAY('1970-01-01') AS f1,
+ MAKEDATE(1970, 1) AS f2;
+DESCRIBE t1;
+DROP TABLE t1;
+
+--echo #
+
+--echo End of 6.0 tests
diff --git a/mysql-test/t/type_decimal.test b/mysql-test/t/type_decimal.test
index 8a81908296f..5d9a2aaa5f4 100644
--- a/mysql-test/t/type_decimal.test
+++ b/mysql-test/t/type_decimal.test
@@ -8,13 +8,13 @@ SET SQL_WARNINGS=1;
CREATE TABLE t1 (
id int(11) NOT NULL auto_increment,
datatype_id int(11) DEFAULT '0' NOT NULL,
- minvalue decimal(20,10) DEFAULT '0.0000000000' NOT NULL,
- maxvalue decimal(20,10) DEFAULT '0.0000000000' NOT NULL,
+ min_value decimal(20,10) DEFAULT '0.0000000000' NOT NULL,
+ max_value decimal(20,10) DEFAULT '0.0000000000' NOT NULL,
valuename varchar(20),
forecolor int(11),
backcolor int(11),
PRIMARY KEY (id),
- UNIQUE datatype_id (datatype_id, minvalue, maxvalue)
+ UNIQUE datatype_id (datatype_id, min_value, max_value)
);
INSERT INTO t1 VALUES ( '1', '4', '0.0000000000', '0.0000000000', 'Ei saja', '0', '16776960');
INSERT INTO t1 VALUES ( '2', '4', '1.0000000000', '1.0000000000', 'Sajab', '16777215', '255');
@@ -148,8 +148,8 @@ INSERT INTO t1 VALUES ( '139', '21', '326.0000000000', '326.0000000000', 'Lumine
INSERT INTO t1 VALUES ( '143', '16', '-4.9000000000', '-0.1000000000', '', NULL, '15774720');
INSERT INTO t1 VALUES ( '145', '15', '0.0000000000', '1.9000000000', '', '0', '16769024');
INSERT INTO t1 VALUES ( '146', '16', '0.0000000000', '1.9000000000', '', '0', '16769024');
-select * from t1 where minvalue<=1 and maxvalue>=-1 and datatype_id=16;
-select * from t1 where minvalue<=-1 and maxvalue>=-1 and datatype_id=16;
+select * from t1 where min_value<=1 and max_value>=-1 and datatype_id=16;
+select * from t1 where min_value<=-1 and max_value>=-1 and datatype_id=16;
drop table t1;
#
@@ -410,6 +410,18 @@ SELECT ROUND(qty,3), dps, ROUND(qty,dps) FROM t1;
DROP TABLE t1;
#
+# Bug #24541: "Data truncated..." on decimal type columns without any good reason
+#
+
+create table t1 (c1 decimal(10,6));
+insert into t1 (c1) values (9.99e-4);
+insert into t1 (c1) values (9.98e-4);
+insert into t1 (c1) values (0.000999);
+insert into t1 (c1) values (cast(9.99e-4 as decimal(10,6)));
+select * from t1;
+drop table t1;
+
+#
# Bug#31019: MOD() function and operator crashes MySQL when
# divisor is very long and < 1
#
diff --git a/mysql-test/t/type_float.test b/mysql-test/t/type_float.test
index 3b7b30db6f8..45cf80aab5c 100644
--- a/mysql-test/t/type_float.test
+++ b/mysql-test/t/type_float.test
@@ -7,7 +7,7 @@ drop table if exists t1,t2;
--enable_warnings
SELECT 10,10.0,10.,.1e+2,100.0e-1;
-SELECT 6e-05, -6e-05, --6e-05, -6e-05+1.000000;
+SELECT 6e-16, -6e-16, --6e-16, -6e-16+1.000000;
SELECT 1e1,1.e1,1.0e1,1e+1,1.e+1,1.0e+1,1e-1,1.e-1,1.0e-1;
SELECT 0.001e+1,0.001e-1, -0.001e+01,-0.001e-01;
SELECT 123.23E+02,-123.23E-02,"123.23E+02"+0.0,"-123.23E-02"+0.0;
@@ -252,6 +252,37 @@ insert into t1 values (2e30), (-2e30);
select f1 + 0e0 from t1;
drop table t1;
+#
+# Bug #12860 "Difference in zero padding of exponent between Unix and Windows"
+#
+
+create table t1 (c char(6));
+insert into t1 values (2e6),(2e-5);
+select * from t1;
+drop table t1;
+
+#
+# Bug #21497 "DOUBLE truncated to unusable value"
+#
+
+CREATE TABLE d1 (d DOUBLE);
+INSERT INTO d1 VALUES (1.7976931348623157E+308);
+SELECT * FROM d1;
+--error ER_ILLEGAL_VALUE_FOR_TYPE
+INSERT INTO d1 VALUES (1.79769313486232e+308);
+SELECT * FROM d1;
+DROP TABLE d1;
+
+#
+# Bug #26788 "mysqld (debug) aborts when inserting specific numbers into char
+# fields"
+#
+
+create table t1 (a char(20));
+insert into t1 values (1.225e-05);
+select a+0 from t1;
+drop table t1;
+
#
# Bug #27483: Casting 'scientific notation type' to 'unsigned bigint' fails on
# windows.
diff --git a/mysql-test/t/type_newdecimal.test b/mysql-test/t/type_newdecimal.test
index 2cf7ab8fbdf..8af9d4c263e 100644
--- a/mysql-test/t/type_newdecimal.test
+++ b/mysql-test/t/type_newdecimal.test
@@ -1054,10 +1054,8 @@ while ($max_power)
}
SELECT my_float, my_double, my_varchar FROM t1;
-# Expected result 0.000000000011754943372854760000
-# On windows we get 0.000000000011754943372854770000
-# use replace_result to correct it
---replace_result 0.000000000011754943372854770000 0.000000000011754943372854760000
+# The following statement produces results with garbage past
+# the significant digits. Improving it is a part of the WL#3977.
SELECT CAST(my_float AS DECIMAL(65,30)), my_float FROM t1;
SELECT CAST(my_double AS DECIMAL(65,30)), my_double FROM t1;
SELECT CAST(my_varchar AS DECIMAL(65,30)), my_varchar FROM t1;
diff --git a/mysql-test/t/type_time.test b/mysql-test/t/type_time.test
index 5bb521601e5..3cec27d7782 100644
--- a/mysql-test/t/type_time.test
+++ b/mysql-test/t/type_time.test
@@ -39,7 +39,7 @@ drop table t1;
# SELECT CAST(0.2359591234567e+30 AS TIME);
# ##########################################################
-# End of 4.1 tests
+--echo End of 4.1 tests
#
# Bug#29555: Comparing time values as strings may lead to a wrong result.
@@ -90,3 +90,22 @@ DROP TABLE t1;
--echo End of 5.0 tests
+
+
+#
+# Bug#42664 - Sign ignored for TIME types when not comparing as longlong
+#
+
+CREATE TABLE t1 (f1 TIME);
+INSERT INTO t1 VALUES ('24:00:00');
+SELECT '24:00:00' = (SELECT f1 FROM t1);
+SELECT CAST('24:00:00' AS TIME) = (SELECT f1 FROM t1);
+SELECT CAST('-24:00:00' AS TIME) = (SELECT f1 FROM t1);
+TRUNCATE t1;
+INSERT INTO t1 VALUES ('-24:00:00');
+SELECT CAST('24:00:00' AS TIME) = (SELECT f1 FROM t1);
+SELECT CAST('-24:00:00' AS TIME) = (SELECT f1 FROM t1);
+SELECT '-24:00:00' = (SELECT f1 FROM t1);
+DROP TABLE t1;
+
+--echo End of 6.0 tests
diff --git a/mysql-test/t/type_timestamp.test b/mysql-test/t/type_timestamp.test
index e8374e0ebfc..2a49e0def1a 100644
--- a/mysql-test/t/type_timestamp.test
+++ b/mysql-test/t/type_timestamp.test
@@ -67,17 +67,6 @@ INSERT INTO t1 VALUES ("2030-01-01","2030-01-01 00:00:00",20300101000000);
SELECT * FROM t1;
drop table t1;
-create table t1 (t2 timestamp(2), t4 timestamp(4), t6 timestamp(6),
- t8 timestamp(8), t10 timestamp(10), t12 timestamp(12),
- t14 timestamp(14));
-insert t1 values (0,0,0,0,0,0,0),
-("1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59",
-"1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59",
-"1997-12-31 23:47:59");
-select * from t1;
-select * from t1;
-drop table t1;
-
#
# Let us check if we properly treat wrong datetimes and produce proper warnings
# (for both strings and numbers)
@@ -298,7 +287,7 @@ drop table t1;
# mode regardless of whether a display width is given.
#
set sql_mode='maxdb';
-create table t1 (a timestamp, b timestamp(19));
+create table t1 (a timestamp, b timestamp);
show create table t1;
# restore default mode
set sql_mode='';
diff --git a/mysql-test/t/type_varchar.test b/mysql-test/t/type_varchar.test
index 9098881e379..33b84266118 100644
--- a/mysql-test/t/type_varchar.test
+++ b/mysql-test/t/type_varchar.test
@@ -199,3 +199,21 @@ SELECT a,(a + 0) FROM t1 ORDER BY a;
SELECT a,(a DIV 2) FROM t1 ORDER BY a;
SELECT a,CAST(a AS SIGNED) FROM t1 ORDER BY a;
DROP TABLE t1;
+
+#
+# Bug #28299: To-number conversion warnings work differenly with CHAR
+# and VARCHAR sp variables
+#
+# * Verify that 'Truncated incorrect DOUBLE value' is shown for 's'
+# when using both CHAR and VARCHAR.
+#
+
+CREATE TABLE t1 (a VARCHAR(16));
+INSERT INTO t1 VALUES ('5'), ('s'), ('');
+SELECT 5 = a FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a CHAR(16));
+INSERT INTO t1 VALUES ('5'), ('s'), ('');
+SELECT 5 = a FROM t1;
+DROP TABLE t1;
diff --git a/mysql-test/t/udf.test b/mysql-test/t/udf.test
index 7bf252040e5..7e383ce69fa 100644
--- a/mysql-test/t/udf.test
+++ b/mysql-test/t/udf.test
@@ -449,3 +449,17 @@ SELECT IF( a = 1, a, a ) AS `b` FROM t1 ORDER BY field( `b`, 1 );
DROP TABLE t1;
--echo End of 5.0 tests.
+
+--echo #
+--echo # Bug#33546: Slowdown on re-evaluation of constant expressions.
+--echo #
+CREATE TABLE t1 (f1 INT);
+INSERT INTO t1 VALUES(1),(50);
+--replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
+eval CREATE FUNCTION myfunc_double RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB";
+EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE f1=1 + myfunc_double(1);
+DROP FUNCTION myfunc_double;
+DROP TABLE t1;
+--echo #
+--echo End of 5.1 tests.
+
diff --git a/mysql-test/t/union.test b/mysql-test/t/union.test
index c8d5ea0f8e5..ab2745ceeef 100644
--- a/mysql-test/t/union.test
+++ b/mysql-test/t/union.test
@@ -91,88 +91,6 @@ SELECT @a:=1 UNION SELECT @a:=@a+1;
(SELECT 1) UNION (SELECT 2) ORDER BY (SELECT a);
(SELECT 1,3) UNION (SELECT 2,1) ORDER BY (SELECT 2);
-
-#
-# Bug#32858: Erro: "Incorrect usage of UNION and INTO" does not take subselects
-# into account
-#
-CREATE TABLE t1 (a INT);
-INSERT INTO t1 VALUES (1);
-
-SELECT a INTO @v FROM (
- SELECT a FROM t1
- UNION
- SELECT a FROM t1
-) alias;
-
---let $outfile = $MYSQLTEST_VARDIR/tmp/union.out.file
---error 0,1
---remove_file $outfile
-
---replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
-eval SELECT a INTO OUTFILE '$outfile' FROM (
- SELECT a FROM t1
- UNION
- SELECT a FROM t1 WHERE 0
-) alias;
---remove_file $outfile
-
---replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
-eval SELECT a INTO DUMPFILE '$outfile' FROM (
- SELECT a FROM t1
- UNION
- SELECT a FROM t1 WHERE 0
-) alias;
---remove_file $outfile
-
-#
-# INTO will not be allowed in subqueries in version 5.1 and above.
-#
-SELECT a FROM (
- SELECT a FROM t1
- UNION
- SELECT a INTO @v FROM t1
-) alias;
-
---replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
-eval SELECT a FROM (
- SELECT a FROM t1
- UNION
- SELECT a INTO OUTFILE '$outfile' FROM t1
-) alias;
---remove_file $outfile
-
---replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
-eval SELECT a FROM (
- SELECT a FROM t1
- UNION
- SELECT a INTO DUMPFILE '$outfile' FROM t1
-) alias;
---remove_file $outfile
-
-SELECT a FROM t1 UNION SELECT a INTO @v FROM t1;
-
---replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
-eval SELECT a FROM t1 UNION SELECT a INTO OUTFILE '$outfile' FROM t1;
---remove_file $outfile
-
---replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
-eval SELECT a FROM t1 UNION SELECT a INTO DUMPFILE '$outfile' FROM t1;
---remove_file $outfile
-
---error ER_WRONG_USAGE
-SELECT a INTO @v FROM t1 UNION SELECT a FROM t1;
-
---replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
---error ER_WRONG_USAGE
-eval SELECT a INTO OUTFILE '$outfile' FROM t1 UNION SELECT a FROM t1;
-
---replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
---error ER_WRONG_USAGE
-eval SELECT a INTO DUMPFILE '$outfile' FROM t1 UNION SELECT a FROM t1;
-
-DROP TABLE t1;
-
#
# Test bug reported by joc@presence-pc.com
#
@@ -1102,6 +1020,48 @@ DROP TABLE t1;
--echo End of 5.0 tests
+-- echo #
+-- echo # Bug#32858: Error: "Incorrect usage of UNION and INTO" does not take
+-- echo # subselects into account
+-- echo #
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (1);
+
+-- echo # Tests fix in parser rule select_derived_union.
+SELECT a INTO @v FROM (
+ SELECT a FROM t1
+ UNION
+ SELECT a FROM t1
+) alias;
+
+SELECT a INTO OUTFILE 'union.out.file' FROM (
+ SELECT a FROM t1
+ UNION
+ SELECT a FROM t1 WHERE 0
+) alias;
+
+SELECT a INTO DUMPFILE 'union.out.file2' FROM (
+ SELECT a FROM t1
+ UNION
+ SELECT a FROM t1 WHERE 0
+) alias;
+
+SELECT a FROM t1 UNION SELECT a INTO @v FROM t1;
+SELECT a FROM t1 UNION SELECT a INTO OUTFILE 'union.out.file5' FROM t1;
+SELECT a FROM t1 UNION SELECT a INTO OUTFILE 'union.out.file6' FROM t1;
+--error ER_WRONG_USAGE
+SELECT a INTO @v FROM t1 UNION SELECT a FROM t1;
+--error ER_WRONG_USAGE
+SELECT a INTO OUTFILE 'union.out.file7' FROM t1 UNION SELECT a FROM t1;
+--error ER_WRONG_USAGE
+SELECT a INTO DUMPFILE 'union.out.file8' FROM t1 UNION SELECT a FROM t1;
+
+-- echo # Tests fix in parser rule query_expression_body.
+SELECT ( SELECT a UNION SELECT a ) INTO @v FROM t1;
+SELECT ( SELECT a UNION SELECT a ) INTO OUTFILE 'union.out.file3' FROM t1;
+SELECT ( SELECT a UNION SELECT a ) INTO DUMPFILE 'union.out.file4' FROM t1;
+
+DROP TABLE t1;
--echo #
diff --git a/mysql-test/t/user_limits.test b/mysql-test/t/user_limits.test
index 41af032b97e..1bf3f9a3103 100644
--- a/mysql-test/t/user_limits.test
+++ b/mysql-test/t/user_limits.test
@@ -132,7 +132,7 @@ drop user mysqltest_1@localhost;
select @@session.max_user_connections, @@global.max_user_connections;
# Local max_user_connections variable can't be set directly
# since this limit is per-account
---error ER_GLOBAL_VARIABLE
+--error ER_VARIABLE_IS_READONLY
set session max_user_connections= 2;
# But it is ok to set global max_user_connections
set global max_user_connections= 2;
diff --git a/mysql-test/t/user_var.test b/mysql-test/t/user_var.test
index b6b58e7bd46..5147b098ae0 100644
--- a/mysql-test/t/user_var.test
+++ b/mysql-test/t/user_var.test
@@ -122,8 +122,6 @@ select coercibility(@v1),coercibility(@v2),coercibility(@v3),coercibility(@v4);
#
--error 1064
set session @honk=99;
---error 1382
-set one_shot @honk=99;
#
# Bug #10724 @@local not preserved in column name of select
diff --git a/mysql-test/t/variables+c.test b/mysql-test/t/variables+c.test
index 0092d34133d..aa4bc6c631c 100644
--- a/mysql-test/t/variables+c.test
+++ b/mysql-test/t/variables+c.test
@@ -1,4 +1,4 @@
---source include/have_community_features.inc
+--source include/have_profiling.inc
#
# Bug#24822: Patch: uptime_since_flush_status
diff --git a/mysql-test/t/variables.test b/mysql-test/t/variables.test
index 6c9015a1bff..d4b88fc6f9c 100644
--- a/mysql-test/t/variables.test
+++ b/mysql-test/t/variables.test
@@ -33,7 +33,7 @@ set @my_query_cache_type =@@global.query_cache_type;
set @my_rpl_recovery_rank =@@global.rpl_recovery_rank;
set @my_server_id =@@global.server_id;
set @my_slow_launch_time =@@global.slow_launch_time;
-set @my_storage_engine =@@global.storage_engine;
+set @my_storage_engine =@@global.default_storage_engine;
set @my_thread_cache_size =@@global.thread_cache_size;
set @my_max_allowed_packet =@@global.max_allowed_packet;
set @my_join_buffer_size =@@global.join_buffer_size;
@@ -132,12 +132,12 @@ set global timed_mutexes=0;
show variables like 'timed_mutexes';
select * from information_schema.session_variables where variable_name like 'timed_mutexes';
-set storage_engine=MYISAM, storage_engine="HEAP", global storage_engine="MERGE";
-show local variables like 'storage_engine';
-select * from information_schema.session_variables where variable_name like 'storage_engine';
-show global variables like 'storage_engine';
-select * from information_schema.global_variables where variable_name like 'storage_engine';
-set GLOBAL query_cache_size=100000;
+set default_storage_engine=MYISAM, default_storage_engine="HEAP", global default_storage_engine="MERGE";
+show local variables like 'default_storage_engine';
+select * from information_schema.session_variables where variable_name like 'default_storage_engine';
+show global variables like 'default_storage_engine';
+select * from information_schema.global_variables where variable_name like 'default_storage_engine';
+set GLOBAL query_cache_size=102400;
set GLOBAL myisam_max_sort_file_size=2000000;
show global variables like 'myisam_max_sort_file_size';
@@ -213,7 +213,6 @@ set @@query_alloc_block_size=1024*17+2;
set @@query_prealloc_size=1024*18-1023;
set @@transaction_alloc_block_size=1024*20-1;
set @@transaction_prealloc_size=1024*21-1;
-select @@query_alloc_block_size;
--echo ==+ Check manipulated values ==+
SHOW VARIABLES WHERE variable_name IN ('range_alloc_block_size',
'query_alloc_block_size', 'query_prealloc_size',
@@ -250,14 +249,12 @@ set unknown_variable=1;
--error ER_WRONG_TYPE_FOR_VAR
set max_join_size="hello";
--error ER_UNKNOWN_STORAGE_ENGINE
-set storage_engine=UNKNOWN_TABLE_TYPE;
+set default_storage_engine=UNKNOWN_TABLE_TYPE;
--error ER_WRONG_VALUE_FOR_VAR
-set storage_engine=MERGE, big_tables=2;
-show local variables like 'storage_engine';
+set default_storage_engine=MERGE, big_tables=2;
+show local variables like 'default_storage_engine';
--error ER_GLOBAL_VARIABLE
set SESSION query_cache_size=10000;
---error ER_NO_DEFAULT
-set GLOBAL storage_engine=DEFAULT;
--error ER_UNKNOWN_CHARACTER_SET
set character_set_client=UNKNOWN_CHARACTER_SET;
--error ER_UNKNOWN_COLLATION
@@ -266,18 +263,12 @@ set collation_connection=UNKNOWN_COLLATION;
set character_set_client=NULL;
--error ER_WRONG_VALUE_FOR_VAR
set collation_connection=NULL;
---error ER_LOCAL_VARIABLE
-set global autocommit=1;
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
select @@global.timestamp;
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
set @@version='';
--error ER_GLOBAL_VARIABLE
set @@concurrent_insert=1;
---error ER_LOCAL_VARIABLE
-set @@global.sql_auto_is_null=1;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-select @@global.sql_auto_is_null;
--error ER_GLOBAL_VARIABLE
set myisam_max_sort_file_size=100;
--error ER_WRONG_VALUE_FOR_VAR
@@ -357,8 +348,6 @@ set sql_log_bin=1;
set sql_log_off=1;
set sql_log_update=1;
set sql_low_priority_updates=1;
-set sql_max_join_size=200;
-select @@sql_max_join_size,@@max_join_size;
set sql_quote_show_create=1;
set sql_safe_updates=1;
set sql_select_limit=1;
@@ -366,7 +355,7 @@ set sql_select_limit=1;
set sql_select_limit=default;
set sql_warnings=1;
set global table_open_cache=100;
-set storage_engine=myisam;
+set default_storage_engine=myisam;
set global thread_cache_size=100;
set timestamp=1, timestamp=default;
set tmp_table_size=100;
@@ -559,7 +548,7 @@ select @@lc_time_names;
--echo *** LC_TIME_NAMES: testing with string expressions
set lc_time_names=concat('de','_','DE');
select @@lc_time_names;
---error ER_UNKNOWN_ERROR
+--error ER_UNKNOWN_LOCALE
set lc_time_names=concat('de','+','DE');
select @@lc_time_names;
--echo LC_TIME_NAMES: testing with numeric expressions
@@ -572,15 +561,15 @@ set lc_time_names=en_US;
--echo LC_TIME_NAMES: testing NULL and a negative number:
--error ER_WRONG_VALUE_FOR_VAR
set lc_time_names=NULL;
---error ER_UNKNOWN_ERROR
+--error ER_UNKNOWN_LOCALE
set lc_time_names=-1;
select @@lc_time_names;
--echo LC_TIME_NAMES: testing locale with the last ID:
-set lc_time_names=108;
+set lc_time_names=109;
select @@lc_time_names;
--echo LC_TIME_NAMES: testing a number beyond the valid ID range:
---error ER_UNKNOWN_ERROR
-set lc_time_names=109;
+--error ER_UNKNOWN_LOCALE
+set lc_time_names=110;
select @@lc_time_names;
--echo LC_TIME_NAMES: testing that 0 is en_US:
set lc_time_names=0;
@@ -832,7 +821,7 @@ set global query_cache_type =@my_query_cache_type;
set global rpl_recovery_rank =@my_rpl_recovery_rank;
set global server_id =@my_server_id;
set global slow_launch_time =@my_slow_launch_time;
-set global storage_engine =@my_storage_engine;
+set global default_storage_engine =@my_storage_engine;
set global thread_cache_size =@my_thread_cache_size;
set global max_allowed_packet =@my_max_allowed_packet;
set global join_buffer_size =@my_join_buffer_size;
@@ -954,15 +943,15 @@ SET @@global.init_file= 'x';
#
--echo #
--replace_column 2 #
-SHOW VARIABLES like 'language';
+SHOW VARIABLES like 'lc_messages_dir';
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT @@session.language;
+SELECT @@session.lc_messages_dir;
--replace_column 1 #
-SELECT @@global.language;
+SELECT @@global.lc_messages_dir;
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SET @@session.language= 'x';
+SET @@session.lc_messages_dir= 'x';
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SET @@global.language= 'x';
+SET @@global.lc_messages_dir= 'x';
#
--echo #
--replace_column 2 #
@@ -1187,7 +1176,7 @@ SET GLOBAL auto_increment_offset=0;
#
--enable_metadata
-select @@storage_engine;
+select @@default_storage_engine;
--disable_metadata
#
@@ -1233,3 +1222,165 @@ SET GLOBAL max_binlog_cache_size = 5 * 1024 * 1024 * 1024;
SELECT @@GLOBAL.max_binlog_cache_size;
SET GLOBAL max_binlog_cache_size = @old_max_binlog_cache_size;
--echo End of 5.1 tests
+
+###########################################################################
+
+--echo
+--echo #
+--echo # Bug#34828: OF is taken as OFF and a value of 0 is set for variable SQL_notes.
+--echo #
+--echo
+
+--echo # Checking sql_notes...
+SET @sql_notes_saved = @@sql_notes;
+
+--echo
+SET @@sql_notes = ON;
+SELECT @@sql_notes;
+
+--echo
+--error ER_WRONG_VALUE_FOR_VAR
+SET @@sql_notes = OF;
+SELECT @@sql_notes;
+
+--echo
+SET @@sql_notes = OFF;
+SELECT @@sql_notes;
+
+--echo
+SET @@sql_notes = @sql_notes_saved;
+
+--echo
+--echo # Checking delay_key_write...
+SET @delay_key_write_saved = @@delay_key_write;
+
+--echo
+SET GLOBAL delay_key_write = ON;
+SELECT @@delay_key_write;
+
+--echo
+--error ER_WRONG_VALUE_FOR_VAR
+SET GLOBAL delay_key_write = OF;
+SELECT @@delay_key_write;
+
+--echo
+--error ER_WRONG_VALUE_FOR_VAR
+SET GLOBAL delay_key_write = AL;
+SELECT @@delay_key_write;
+
+--echo
+SET GLOBAL delay_key_write = OFF;
+SELECT @@delay_key_write;
+
+--echo
+SET GLOBAL delay_key_write = ALL;
+SELECT @@delay_key_write;
+
+--echo
+SET GLOBAL delay_key_write = @delay_key_write_saved;
+
+--echo
+--echo # Checking sql_safe_updates...
+SET @sql_safe_updates_saved = @@sql_safe_updates;
+
+--echo
+SET @@sql_safe_updates = ON;
+SELECT @@sql_safe_updates;
+
+--echo
+--error ER_WRONG_VALUE_FOR_VAR
+SET @@sql_safe_updates = OF;
+SELECT @@sql_safe_updates;
+
+--echo
+SET @@sql_safe_updates = OFF;
+SELECT @@sql_safe_updates;
+
+--echo
+SET @@sql_safe_updates = @sql_safe_updates_saved;
+
+--echo
+--echo # Checking foreign_key_checks...
+SET @foreign_key_checks_saved = @@foreign_key_checks;
+
+--echo
+SET @@foreign_key_checks = ON;
+SELECT @@foreign_key_checks;
+
+--echo
+--error ER_WRONG_VALUE_FOR_VAR
+SET @@foreign_key_checks = OF;
+SELECT @@foreign_key_checks;
+
+--echo
+SET @@foreign_key_checks = OFF;
+SELECT @@foreign_key_checks;
+
+--echo
+SET @@foreign_key_checks = @foreign_key_checks_saved;
+
+--echo
+--echo # Checking unique_checks...
+SET @unique_checks_saved = @@unique_checks;
+
+--echo
+SET @@unique_checks = ON;
+SELECT @@unique_checks;
+
+--echo
+--error ER_WRONG_VALUE_FOR_VAR
+SET @@unique_checks = OF;
+SELECT @@unique_checks;
+
+--echo
+SET @@unique_checks = OFF;
+SELECT @@unique_checks;
+
+--echo
+SET @@unique_checks = @unique_checks_saved;
+
+--echo
+--echo # Checking sql_buffer_result...
+SET @sql_buffer_result_saved = @@sql_buffer_result;
+
+--echo
+SET @@sql_buffer_result = ON;
+SELECT @@sql_buffer_result;
+
+--echo
+--error ER_WRONG_VALUE_FOR_VAR
+SET @@sql_buffer_result = OF;
+SELECT @@sql_buffer_result;
+
+--echo
+SET @@sql_buffer_result = OFF;
+SELECT @@sql_buffer_result;
+
+--echo
+SET @@sql_buffer_result = @sql_buffer_result_saved;
+
+--echo
+--echo # Checking sql_quote_show_create...
+SET @sql_quote_show_create_saved = @@sql_quote_show_create;
+
+--echo
+SET @@sql_quote_show_create = ON;
+SELECT @@sql_quote_show_create;
+
+--echo
+--error ER_WRONG_VALUE_FOR_VAR
+SET @@sql_quote_show_create = OF;
+SELECT @@sql_quote_show_create;
+
+--echo
+SET @@sql_quote_show_create = OFF;
+SELECT @@sql_quote_show_create;
+
+--echo
+SET @@sql_quote_show_create = @sql_quote_show_create_saved;
+
+--echo
+--echo # End of Bug#34828.
+--echo
+
+###########################################################################
diff --git a/mysql-test/t/view.test b/mysql-test/t/view.test
index a788b5ab41e..4515f26bc52 100644
--- a/mysql-test/t/view.test
+++ b/mysql-test/t/view.test
@@ -1017,6 +1017,9 @@ select * from v1;
-- error ER_TABLE_NOT_LOCKED
select * from t2;
drop view v1;
+--error ER_TABLE_NOT_LOCKED_FOR_WRITE
+drop table t1, t2;
+unlock tables;
drop table t1, t2;
#
@@ -3680,6 +3683,38 @@ SELECT * FROM v1 IGNORE INDEX (c2) WHERE c2=2;
DROP VIEW v1;
DROP TABLE t1;
+--echo #
+--echo # Bug #45806 crash when replacing into a view with a join!
+--echo #
+CREATE TABLE t1(a INT UNIQUE);
+CREATE VIEW v1 AS SELECT t1.a FROM t1, t1 AS a;
+INSERT INTO t1 VALUES (1), (2);
+
+REPLACE INTO v1(a) SELECT 1 FROM t1,t1 AS c;
+SELECT * FROM v1;
+REPLACE INTO v1(a) SELECT 3 FROM t1,t1 AS c;
+SELECT * FROM v1;
+DELETE FROM t1 WHERE a=3;
+INSERT INTO v1(a) SELECT 1 FROM t1,t1 AS c
+ON DUPLICATE KEY UPDATE `v1`.`a`= 1;
+SELECT * FROM v1;
+
+CREATE VIEW v2 AS SELECT t1.a FROM t1, v1 AS a;
+
+REPLACE INTO v2(a) SELECT 1 FROM t1,t1 AS c;
+SELECT * FROM v2;
+REPLACE INTO v2(a) SELECT 3 FROM t1,t1 AS c;
+SELECT * FROM v2;
+INSERT INTO v2(a) SELECT 1 FROM t1,t1 AS c
+ON DUPLICATE KEY UPDATE `v2`.`a`= 1;
+SELECT * FROM v2;
+
+DROP VIEW v1;
+DROP VIEW v2;
+DROP TABLE t1;
+
+--echo # -- End of test case for Bug#45806
+
--echo # -----------------------------------------------------------------
--echo # -- Bug#40825: Error 1356 while selecting from a view
--echo # -- with a "HAVING" clause though query works
@@ -3873,3 +3908,29 @@ DROP TABLE t1;
--echo # -----------------------------------------------------------------
--echo # -- End of 5.1 tests.
--echo # -----------------------------------------------------------------
+
+#
+# Bug#9801 (Views: imperfect error message)
+#
+
+--disable_warnings
+drop table if exists t_9801;
+drop view if exists v_9801;
+--enable_warnings
+
+create table t_9801 (s1 int);
+
+--error ER_VIEW_NONUPD_CHECK
+create view v_9801 as
+ select sum(s1) from t_9801 with check option;
+
+--error ER_VIEW_NONUPD_CHECK
+create view v_9801 as
+ select sum(s1) from t_9801 group by s1 with check option;
+
+ --error ER_VIEW_NONUPD_CHECK
+create view v_9801 as
+ select sum(s1) from t_9801 group by s1 with rollup with check option;
+
+drop table t_9801;
+
diff --git a/mysql-test/t/view_grant.test b/mysql-test/t/view_grant.test
index 175468db702..f01edb1e499 100644
--- a/mysql-test/t/view_grant.test
+++ b/mysql-test/t/view_grant.test
@@ -1072,12 +1072,12 @@ CREATE USER u29908_1@localhost;
CREATE DEFINER = u29908_1@localhost VIEW v1 AS SELECT f1 FROM t1;
CREATE DEFINER = u29908_1@localhost SQL SECURITY INVOKER VIEW v2 AS
SELECT f1 FROM t1;
-GRANT DROP, CREATE VIEW, SHOW VIEW ON mysqltest_29908.v1 TO u29908_1@localhost;
-GRANT DROP, CREATE VIEW, SHOW VIEW ON mysqltest_29908.v2 TO u29908_1@localhost;
+GRANT SELECT, DROP, CREATE VIEW, SHOW VIEW ON mysqltest_29908.v1 TO u29908_1@localhost;
+GRANT SELECT, DROP, CREATE VIEW, SHOW VIEW ON mysqltest_29908.v2 TO u29908_1@localhost;
GRANT SELECT ON mysqltest_29908.t1 TO u29908_1@localhost;
CREATE USER u29908_2@localhost;
-GRANT DROP, CREATE VIEW ON mysqltest_29908.v1 TO u29908_2@localhost;
-GRANT DROP, CREATE VIEW, SHOW VIEW ON mysqltest_29908.v2 TO u29908_2@localhost;
+GRANT SELECT, DROP, CREATE VIEW ON mysqltest_29908.v1 TO u29908_2@localhost;
+GRANT SELECT, DROP, CREATE VIEW, SHOW VIEW ON mysqltest_29908.v2 TO u29908_2@localhost;
GRANT SELECT ON mysqltest_29908.t1 TO u29908_2@localhost;
connect (u2,localhost,u29908_2,,mysqltest_29908);
diff --git a/mysql-test/t/warnings.test b/mysql-test/t/warnings.test
index 176f320e390..98e1db62d84 100644
--- a/mysql-test/t/warnings.test
+++ b/mysql-test/t/warnings.test
@@ -112,11 +112,6 @@ show variables like 'max_error_count';
drop table t1;
#
-# Test for deprecated table_type variable
-#
-set table_type=MYISAM;
-
-#
# Tests for show warnings limit a, b
#
create table t1 (a int);